最近専門外の技術にも挑戦する意欲が湧いてきたmath03です.
前回はサーボモータの制御をするために,内部ネットワーク上のRaspberry pi上にMQTT Broker(サーバー)を立ち上げ,MQTTBoxを使って制御するところまで行ないました.
一方で分かりやすく操作できる方法を模索していて少し考えていたところ,ふと以前にMr.H氏から「Node-REDというツールを使って,機器を制御したい」と言われたことを思い出しました.
もしかしてNode-REDでできるんじゃないかと思い調べたところ,MQTT通信を簡単に実装でき,さらにUIを簡単に作れることが判明しました.これで携帯からアプリ的に操作できそうだということで早速導入してみました.
Raspberry pi上にNode-REDをインストールし,早速以下の図のように作成しました.プロトタイプとして,スイッチON/OFFでサーボモーターを180度回転,また細かい制御もできるか確認するため,0~180度まで少しずつ動かせるような機能を入れてみました.
(ノンプログラムで簡単にUIを作成できるので,使えるようになるまでに1日とかかりませんでした)
次にマイコンですが,様々な位置に制御機器やセンサ等を取り付けるため,無線通信でデータを送受信する必要があります.前回の記事で説明したようにWifi通信が可能でローコストなESP8266を使いました.
Arduino IDEを使い,サーボモーターを動かすプログラミングをしてコンパイル.
さあシステム構築が終わり,いざ通信...
Arduino モニターを見ると,内部ネットワークからの通信はうまくできてそうだが,入力した値と異なる値がモニターに.”0”の送信で”48”を受信していました.いろいろと調べてみると,ASCIIの0→10進数の48となっており,どうやらNode-REDから数値を送信しても,マイコン上では文字列として認識しているようでした.
そこで,ON,OFF以外の受信した”文字列”を数値に変換するようにプログラムを書き換え,再度コンパイル.
いざ通信...
どうやら今回はうまくいってそう!
モーターをマイコンのピンにつなげて,ついでに外部ネットワークからVPN経由でRaspberrypi上のNodered UIにアクセスして,システム全体で動くか確認しましょう.
見事に外部ネットワークからPCで僕らのガレージにあるサーボモータが動きました!
(角度を0~180に設定してるのに,まだうまく動いてません.調べるとサーボモータの偽造品に引っかかると,正しく動かないことがあるようなので,ご注意下さい...)
これにより,Mr.H氏が開発した3Dプリンタディスチャージャをリモートで動かせる準備ができたので,リモートでモノをバンバン生産する準備が整いました!
その記事はまた次ということで...
※MQTT通信とサーボ動作の基本的な部分は以下のOsoyooという会社のKitを購入して,チュートリアルを参考にしています.
EmoticonEmoticon