「ゼロワン」シリーズ。「ゼロワン」シリーズ。Piどうしを通信させ、二つ以上の製品を組み合わせてシステムを構築、IoT的に活用することが出来ます。Pi間の通信を行ってゼロワンシリーズを連携させてみます。その前に、まずはNode-REDとMQTTのお話しをさせてください。Node-RED/MQTTとはNode-REDは、画面上に”ノード”と呼ばれる処理ブロックを配置し、ノードの間を結線しデータの流れ(フロー)を作成することで、簡単にデータ処理・マシン制御システムを構築できる開発環境です。Piと周辺機器の制御が可能です。MQTTとはMQTTとは、発信機器(パブリッシャ/Pub)と受信機器(サブスクライバ/Sub)、その間でデータを仲介するサーバー(ブローカ/broker)から成り立つ、インターネット経由で遠隔地間の情報をやり取りする通信プロトコルです。特性、成り立ちから、主にセンサの情報を収集し、シンプルな機械を制御するといったIoTシステムの通信プロトコルとして広く利用されています。3と搭載されているSoCのコアのバージョンが異なります。Zeroに移し替えると、ソフトウェアが正常に動作しない可能性が高いです。Zero上で行ってください。HDMI端子が装備されています。通常規格のUSB、HDMIは非対応となるので、あらかじめminiHDMI-MDMI変換アダプタ、USB-OTGケーブル、USBハブを準備してください。Pi公式ダウンロードページより”NOOBS”をダウンロードします。NOOBSを用いることでRaspbianのインストールを簡単に行うことができます。NOOBSのサイズは1.3GBと大きく、ダウンロードに時間がかかりますので、その間にSDカードをフォーマットします。この時、Windows標準のフォーマットツールではなくSDアソシエーションの提供するSDカードフォーマッターを使用しましょう。ダウンロードし、PCにインストールしてください。フォーマットオプションは、念のため上書きフォーマットを選択しましょう。※用意するSDカードの容量は8GBをお勧めします。Piで使用できない可能性があります。NOOBSのダウンロード、SDカードのフォーマットが終わったら、ダウンロードしたNOOBSのZipの中身を全てSDカードにコピーします。これもしばらく時間が掛かります。ZeroにSDカード、miniHDMIケーブル(もしくはアダプタ)、USBキーボード/マウスを接続し、電源を投入します。待つと、インストールするOSを選択する画面が出てきます。SSIDを選択し、パスキーを入力してインターネットに接続してください。有線接続の場合は、USB-Ethernetアダプタを接続しLANケーブルを接続するだけで完了です。Raspbianの設定Raspbianをインストールしたら、各種インターフェースの有効化を行います。選択して、SSHとI2CをEnable(有効化)します。ダイアログと共にYes/Noの選択が出てくるので、Yesを選択してください。これで、外部からのリモートログインとGPIOのI2C通信バスが利用できるようになります。Raspbianのデスクトップ環境はCPUへの負荷が大きいため、無効化しコマンドラインのみの操作に切り替えることをお勧めします。以上の設定が終わったら、EscキーでRaspi-configを終了します。コマンドでIPアドレスを確認します。ifconfigで見た時のIPアドレスは、"inet"の後に続く4つの数字の組(xxx.xxx.xxx.xxx)で、基本的には192.168.x.y(x,yは1桁から3桁の数字)となります。このアドレスはNode-REDにアクセスするために必要になります。メモ帳などに保存しておきましょう。Zeroを操作できます。”raspberry”(デフォルト)と入力すればリモートログインが行えます。このユーザ名とパスワードは変更できるので、デフォルトではセキュリティ的に不安があるという方は変更し、設定を行ってください。行い、アプリのアップデートを行います。これも時間が掛かるので気長に待ちましょう。ここまでの操作が終わったら、システムを再起動しゼロワンシリーズ拡張基板を取り付けます。入力し、基板上のLEDが点滅しなくなったら電源ケーブルを抜いてください。ここでゼロワンシリーズ拡張基板を取り付け、再度電源を接続し起動します。Node-REDのアップデートNode-REDはRaspbianにプリインストールされていますが、バージョンが古いためアップデートします。以下のコマンドを実行してください。Zeroの場合、前述のコアバージョンの違いから失敗する可能性があります。Piこれで最新の安定版Node.jsとNode-REDがインストールされます。Node-REDの使い方では、Node-REDにアクセスしてみましょう。すると、画像のようなページに飛びます。これがNode-REDのコンソールとなります。Piやゼロワン拡張基板を制御します。各ノードは全て左側が入力、右側が出力となっています。最初に、ゼロワン制御基板に搭載されている動作確認用LEDを点滅させるフローを作ってみます。左側から”inject”ノードを引っ張ってきます。配置したら、ダブルクリックで設定画面を開きます。”繰り返し”を”指定した時間間隔”に設定し、時間間隔を2秒に設定し、”完了”をクリックします。次に左側のパレットの”機能”グループより”trigger”ノードを配置し、ダブルクリックで設定画面を開きます。”送信後の処理”の時間間隔を1秒に設定します。Piのロゴマークがある出力ノードを配置し、ダブルクリックで設定を開きます。37”に入れ、”端子の状態を初期化”にチェックを入れて初期レベルを”Low(0)”にします。ノードを配置したら結線をします。順番に結線してください。結線が終わったら、右上の”デプロイ”をクリックしてください。Piに反映され、ノードが動き出します。ゼロワン拡張基板の”STATUS”ランプを確認してください。1秒ごとに点滅を繰り返していたら成功です。同様にして、ゼロワン拡張基板上のシャットダウンスイッチを機能させるノードを作ってみます。gpio”入力ノードを、”機能”グループより”exec”ノードを配置し、結線します。”exec”ノードは、任意のbashコマンドを実行できるノードです。halt”と入力します。あとはデプロイをすれば、基板上のシャットダウンスイッチでラズパイZeroをシャットダウンできます。brokerサービスの”beebotte”を利用します。beebotteホームページ無料プランでは1アカウントにつき一日当たり5万メッセージまで処理でき、暗号化通信にも対応しています。アカウントはメールアドレスと、設定したいユーザ名/パスワードを入力するだけで作成できます。登録したメールアドレスにメールが届くので、メールのURLにアクセスすると認証が通りアカウント作成完了となります。この時点でログインが可能になります。アカウントを作成しログインすると、画像のような画面が表示されます。アカウントを作成して最初のログインの時点では”test”チャンネルのみが作成されているはずです。チャンネル/リソースの作り方beebotteでは、”チャンネル”の下に”リソース”が格納され、メッセージはリソースに格納されます。リソースは一つのチャンネルに複数作成できます。Publisher/Subscriberはチャンネルごとに発行される”トークン”を目印にメッセージをやり取りするため、一つのシステムに一つのチャンネルを割り当てるとよいでしょう。New”ボタンをクリックすると、新しいチャンネルを作成できます。チャンネル/リソースの名前と説明を入力します。Resource”をクリックしてリソース欄を増やします。channnel”をクリックしてチャンネルを作成します。作成するとチャンネル一覧ページに飛び、新しいチャンネルが追加されていることがわかります。チャンネル名をクリックし、詳細情報を見てみます。Token”が、このチャンネルにアクセスするために必要な目印となります。brokerの情報を登録する)Node-REDにはMQTTにアクセスしデータをやり取りするノードが標準で装備されています。今回はこのノードに必要な情報をセットし、ブローカと通信します。MQTTからのデータを受け付けるフローを作成します。左側のパレットの”入力”グループより、”MQTT”ノードを配置しダブルクリックして設定画面を開きます。mqtt-brokerを追加”の右にあるボタンから、MQTTブローカの設定に入ります。今回は以下のように設定します。サーバ:mqtt.beebotte.comポート:8883SSL/TLS接続を使用:チェックするまた、”セキュリティ”タブを開き、”ユーザー名”の欄にtoken:token_(ブローカのチャンネル設定で取得したトークン文字列)の形式で入力します。ここまで完了したら右上の”追加”ボタンをクリックし、ノードの設定画面に戻ります。形式でデータの受信先を設定します。以上で入力ノードの設定は終了です。ここでデプロイを行い、画像のようにノードの左下に緑色の四角と”接続済”の文字が見えれば、設定成功です。次に出力ノードを配置します。右側のパレットの”出力”グループより”MQTT”ノードを配置してください。この時、ブローカ関連の設定は共有され、既に設定済みとなっています。ダブルクリックし、トピック欄に入力ノードと同様にデータの出力先を設定すれば設定完了です。データを通信してみるでは、MQTTを経由してデータをやり取りしてみます。MQTT出力ノードには、injectノードを接続しデータを送信します。injectノードは、デフォルトでは左側のトグルをクリックするとタイムスタンプ(’70年1月1日0時丁度からの累計ミリ秒時間)を送信するようになっています。MQTT入力ノードからのデータは、”debug”ノードを使って観察します。左側のパレットの”出力”グループからdebugノードを配置してください。このノードには特別な設定は不要で、配置し結線してすぐに使えます。以下のようなフローになります。debugノードに流れ込んだデータは、フローの右側にある情報欄の”デバッグ”タブに出力されます。ここに、injectノードからのデータが表示されれば成功です。デプロイを行い、injectノード左側のトグルをクリックしてください。このように、クリックした回数分の出力がデバッグタブに表示されます。実際にinjectノードの出力値を観察し、通信したデータが正しいか確認したいときは、injectノードからdebugノードへ直接結線します。この状態でinjectノードのトグルを入れると、一回のクリックでデバッグ欄にデータが二つ現れます。データの表現方式が異なってきますが、中身の値は一緒であることがわかります。いろいろなデータを流してみるinjectノードからは、様々な種類・内容のデータを発信することができます。先ほど作成したフローを範囲選択とCtrl+Cでコピーし、Ctrl+Vで貼り付けて下さい。リソースを1つしか作成していない場合は、beebotteのコンソールよりチャンネルを編集しリソースを追加しましょう。リソースを編集したら、injectノードを編集します。injectノードをダブルクリックし、設定画面を開いてください。“ペイロード”の欄をクリックし、”文字列”を選択してください。すると、右側の欄に任意の文字列を入力可能になります。ノードから出力させたい文字列を入力してください。設定が終了したらデプロイを行い、文字列を設定したinjectノードのトグルを入れます。設定した文字列が直接、MQTT経由の2通りで正しく通信されていることが確認できました。以上がNode-RED/MQTTの基本的な使い方となります。Pi間でデータをやり取りすることができます。次回はNode-RED/MQTTとゼロワンシリーズ拡張基板を使い、クラウド経由で遠隔操作を行うシステムを構築してみます。ゼロワンシリーズを使ってブービートラップを作ってみた。IoTを始めよう!ゼロワンシリーズで遠隔地と連絡!「テレビ電話呼び出しボタン」を作成!関連記事2014.11.14USB2BTのケースを作ってみよう!2018.09.21IoTを始めよう!ジャイロと赤外線リモコンでLEDストラップを操作してみた2019.08.02格ゲーでいろいろアレなヤツを作ってみる。ゼロワンシリーズを使ってブービートラップを作ってみた。USBCableChecker2開発者にマイプロダクトサービスについて伺ってみました。reserved.ページ上部へ戻る。