Node-REDとmicro:bitを接続する(1)
Raspberry Pi OSにインストールしたNode-REDと、micro:bit間でシリアル通信を行い、データーを送受信する手順を紹介します。
12-11-1.動作の概要
Raspberry Pi OSにインストールしたNode-REDと、micro:bit間でシリアル通信を行い、データーを送受信する手順を紹介します。本記事で紹介する送受信の動作は次のようなものです。
- micro:bitのボタンAを押すと「温度」がmicro:bitからNode-REDへ送信される
- Node-REDのフローを実行すると「タイムスタンプ」がNode-REDからmicro:bitへ送信される
Raspberry Pi本体とmicro:bitをUSBケーブルで接続した後、micro:bitのプログラミングとNode-REDのフロー作成を行い、動作を確認します。
12-11-2.Raspberry Pi本体とmicro:bitを接続する
Raspberry Pi本体とmicro:bitをUSBケーブルで接続します。接続後、ターミナル(端末)を起動して、次のコマンドを入力します。
このコマンドは、接続されているシリアルポートを調べるものです。コマンドの出力結果(右端)に表示されているシリアルポートの名前をメモしておきます。この例の場合「ttyACM0」となります。
12-11-3.micro:bitのプログラミング
MakeCode for micro:bitへアクセスしてプログラミングします。プログラムの内容は次のようなものです。
- シリアル通信に関する初期設定を行う
- ボタンAが押されたとき、温度を文字列に変換して、シリアル通信で1行書き出す
- シリアル通信で受信したとき、受信した文字列をLED画面に表示する
プログラミング
図12-11-3-1のプログラムを作成します。プログラムが完成したら、micro:bitへダウンロードしてください。
以上で、micro:bitのプログラミングは完了です。
12-11-4.Node-REDのフロー作成
Node-REDのエディターへアクセスしてフローを作成します。フローの内容は次のようなものです。
- シリアル通信で受信した文字列を、デバッグメッセージとして出力する
- injectノードのボタンを押したとき、タイムスタンプをシリアル通信で送信する
ノードを配置する
使用するノードは「inject」ノード・「debug」ノード・「serial in」ノード・「serial out」ノードの4つです。これらのノードを、図12-11-4-1のように配置して、ワイヤーでつなぎます。「serial in」ノード・「serial out」ノードはパレットのネットワークカテゴリーにあります。
シリアル通信を設定する
シリアル通信を設定します。「serial in」ノードをダブルクリックしてプロパティを表示します。次に、鉛筆マークをクリックします。
メモしたシリアルポートの名前を選択します。ボーレート「115200」を選択します。「出力メッセージに分割文字を追加する」で「\n」を入力します。「追加」ボタンをクリックします。
「完了」ボタンをクリックします。
「serial out」ノードをダブルクリックしてプロパティを表示します。シリアル通信の設定は「serial in」ノードと共通なので、ここでの設定は不要です。シリアルポートの名前を確認して「完了」ボタンをクリックします。
フローをデプロイする
「serial in」ノード・「serial out」ノードの表示がシリアルポートの名前になっていることを確認して、デプロイします。
デプロイが成功すると「serial in」ノード・「serial out」ノードの下に「接続済」と表示されます。
以上で、Node-REDのフロー作成は完了です。
12-11-5.動作を確認する
Raspberry Pi OSにインストールしたNode-REDと、micro:bit間でシリアル通信を使って、データーを送受信する準備が整いました。動作を確認しましょう。
- micro:bitのボタンAを押すと「温度」がmicro:bitからNode-REDへ送信される
- Node-REDのフローを実行すると「タイムスタンプ」がNode-REDからmicro:bitへ送信される
micro:bitからNode-REDへの送信
micro:bitのボタンAを押してみましょう。正しく動作すれば、サイドバーの表示ウィンドウにmicro:bitから送信された温度が表示されます。
Node-REDからmicro:bitへの送信
Node-REDからmicro:bitへタイムスタンプを送信するには「inject」ノードの左側にあるボタンをクリックします。
タイムスタンプは「serial out」ノードと同時に「debug」ノードへ送られるので、サイドバーの表示ウィンドウにタイムスタンプの値が表示されます。正しく動作すれば、この値と同じものがmicro:bitのLED画面に表示されます。
いかがでしょうか。簡単なmicro:bitのプログラムとNode-REDのフローだけで、シリアル通信を使ったデーターの送受信を行うことができました。micro:bitに搭載されたセンサー(明るさ・温度・加速度・地磁気)の値を取得できるので、いろいろ応用できそうですね。
おすすめ品
はじめてのNode‐RED 改訂版
「Node‐RED」は、IBMが2013年に開発した、オープンソースの「IoTアプリ/Webアプリ」向けの開発環境。「PC上」のデータも、「センサ」で取得したデータも、「Web上」のデータも、「クラウド上」のデータも、データーを加工してやり取りするのに必要なのは、「ノード」と呼ばれる「ブロック」をつなぐだけ。本書では、この「Node‐RED」の基本的な操作からはじめ、実例による活用方法まで、具体的に学べるように解説しています。
実践Node-RED活用マニュアル
ビジュアルプログラミング用開発ツール「Node‐RED」6年間の開発と88回の更新を経て、ついに正式版「ver.1.0」リリース(2019年9月30日)。「Node‐REDユーザーグループ」有志が多彩で具体的な活用事例を解説!