Raspberry PiとNode-REDでLチカ
Amazon EchoからRaspberry Pi(以下ラズパイ)を操作できるようにしたいなぁと思っていろいろ調べてみたところ、”Node-RED”なるものが簡単そうだったので試してみることにしました。
追記:Echoからラズパイを操作する記事はこちら
はじめに
最終的にEchoに「アレクサ、LEDつけて」と話しかけるとラズパイからLEDをオンすることを目指します。
そのためには、Alexaのスキルからネットワーク経由でラズパイに指示を出し、GPIOを制御する必要があります。
(且つ、発話の自由さを考えるとスマートホームスキルが理想)
今回はまずラズパイ上でNode-REDを動かし、単独でLチカするところまでやってみます。
Node-REDとは?
GUIで簡単にWebサービスやハードウェアを接続するフローを書けるツールで、Node.jsで動きます。
Twitterで何かつぶやいたらLED光らせるとか、スイッチ押したらメールを送る、みたいなことがドラッグ&ドロップと少しのコードだけで簡単に実現できる優れものです。
画像は本家GitHubより引用(https://github.com/node-red/node-red)
1.Node-REDのセットアップ
実は最近のRaspbian JessieにはNode-REDがプリインストールされています。
セットアップについてはこちら
https://nodered.jp/docs/hardware/raspberrypi
しっかり解説されてるので、特に言うことはないです^^;
自分はAvahiでホスト名でのアクセスをできるようにしたラズパイ3でNode-REDを起動し、PCのブラウザから”http://raspberrypi.local:1880/”(設定による)にアクセスして作業しています。
2.Node-REDからLEDをオンしてみる
プリインストールされているだけあって、ラズパイを動かすノードが初めから用意されていました。
とりあえず練習として、ラズパイのマウスをクリックしたらLEDを点灯するようにしてみます。
まずラズパイとLEDを接続しておきます。例では7番ピン(GPIO4)に接続しておきました。
PCのブラウザでラズパイ上のNode-RED画面を開きます。
Raspberry Pi用ノードの一覧から”rpi mouse”と”rpi gpio”の出力(左側に結合部があるほう)をフローに配置して、連結します。
つづいて、それぞれの動作を設定します。
“rpi mouse”は、ボタン=左となっていたのでそのまま。
“rpi gpio”は、こちらのようにLEDを接続したピンを指定しておきます。
あとは”デプロイ”ボタンを押せば完了です。
これでラズパイにつないだマウスを左クリックすると、LEDが点灯するようになりました。
3.デバッグログを見てみる
流石に簡単すぎて意味不明なので、何が起きているのか見てみます。
“rpi mouse”を選択してinformationを見ると、マウスオン・オフに応じて、payloadに1, 0を出力するようなことが書かれています。
一方、”rpi gpio”のほうは、入力されたpayloadが1か0かによって、ピンにHigh, Lowを出力すると書かれています。
つまり、マウスを左クリックすると、”rpi mouse”から”payload=1″(リリース時は”0”)が出力され、それに応じて”rpi gpio”が指定したGPIOピンの出力のHigh/Lowを切り替えているようです。
先程のフローにデバッグノードを追加して覗いてみると、たしかにmsg.payloadなる値がクリックに合わせて1,0に変化していることがわかります。
4.injectノードを使ってみる
マウスより手軽な入力方法として、injectというノードがあります。
これは単純にフロー画面上でノードをタップしたときや、時間を指定して任意の出力を発行できるものです。
例えば、出力ペイロードを1および0としたinjectを繋ぐと、各ノードをタップするだけでLEDをオン・オフできます。
5.LEDをチカチカさせる
最後に、”Lチカ”すると言ったので、LEDのオン・オフを繰り返してチカチカさせてみます。
フローはこちら。
先程の”inject”ノードで、今度は1秒ごとに実行するようにしています。
そして、”rpi gpio”と”injet”の間に”trigger”を設置しました。
こちらは、指定したデータを送信後、一定時間でオフになるノードです。
“trigger”が1秒ごとにオンした後、500ミリ秒でオフになるように設定して、チカチカさせることができます。
おわりに
Node-REDを使って、プログラミング無しでLチカさせることができました。
今回は練習のためにマウスやinjectを入力としましたが、これをWebサービスなどに置き換えるだけで、外部からラズパイを操作できることになります。
次回はこれをAlexaから制御する方法について書きたいと思います。
それでは。
ピンバック: Node-Red セットアップ | hksn_blog