ブロックを積みながら(70) Node-RED、rpi-gpio out ノード

Joseph Halfmoon

今回からRaspberry Pi上でNode-REDを走らせているときに使えるノードをいくつか実験して行きたいと思います。Raspberry Piの持つ拡張端子を直接操作していくものども。制約事項もままありますが、外部回路を接続できるので応用無限大?ホントか?

※「ブロックを積みながら」投稿順 index はこちら

今までも時折書いてきましたが、実験に使っているNode-REDサーバー機はRaspberry Pi 3 model B+です。ここまでNode-REDは「司令塔」か「交通整理」の役割でした。末端のマイコン共から上がってくる情報を処理したり、あるいはマイコンに指示するだけで自分で動くことはなかったです(マイコンとのコミュニケーションはMQTTプロトコルを使用。)

しかし今回はNode-RED自らハードウエアを操作します(といっても実は裏でPython上のRPi.GPIOライブラリを呼び出しているみたいなので下請けは存在するのでありますが。)

今回実験してみるノードは以下です。rpi -gpio out ノードです。拡張端子(初期型モデルを除き40ピン)のGPIO端子をデジタル出力として使えるもの。PWMとしても使えますが今回は単純GPIO使用であります。

RpiOUT

実験に使用した回路

ラズパイ3のSoCであるブロードコムBCM2837は立派な石で、GPIO端子に電流制限抵抗付きのLEDを直結しても点灯することができる程度の電流を流しだすことができます。でも多数ある端子の合計電流の制限考えれば

GPIOから直接電流を流さない

とするべきでしょう。今回は毎度使っていますDIP化ボード搭載済のN ch MOSFET、BSS138を使って電流を駆動することにいたします。駆動する対象は、

フォトカプラ

といたしました。実はラズパイ3機は手が届きにくい奥の方に押し込めてあるので、引き出した信号を手元でいろいろな回路に接続して実験しようとすると距離が長いです。また、直接の信号を引き延ばして手元で何か作業していて良からぬことが起こるとラズパイ3本体にまで影響が及ぶ可能性大。そこでフォトカプラを挟んで電気的には絶縁してしまうことにいたしました。実験回路はこんな感じ。

RpiOUT_circuit

点線の右側にはとりあえずLEDを取り付けて点灯、消灯で動作確認するつもりですが、自由に操作できるIOさえあれば夢が広がるっと。

Node-REDのフロー

実験用のフローが以下に。左側のOFF、ONという名称のInjectノードは、それぞれ数値0、数値1を送出するもの。msg.payloadに載って来た数値そのままが指定のGPIO端子に送信される、という単純明快なフローです。

RpiOUT_FLOW

さて、肝心のGPIO05_OUTと名付けた rpi-gpio out ノードの設定が以下に。端子の設定画面、ラズパイのGPIO端子そのままの配列で見やすいです。とっても嬉しいな。

RpiOUTsetting

GPIO05(拡張端子の端子番号でいうと29番)にMOSFETとフォトカプラをとりつけた様子は冒頭のアイキャッチ画像に。

動作確認

ONを押せば、「リモート」の独立電源に接続した青色LEDが点灯します。またOFFを押せば消灯と。こんな感じ。

RpiOUT_B1

簡単な回路だけれども、ラズパイの信号をダラダラ引き出して使えるようになったのでまあとりあえずOKかね。次回は、ラズパイに入力ですかな。やっぱり電気的にアイソレートだよねえ?

ブロックを積みながら(69) Node-RED、HTTP in / outノードその2 へ戻る

ブロックを積みながら(71) Node-RED、rpi-gpio in ノード へ進む