2021年11月24日水曜日

[僕ガレリモートファクトリー計画第伍弾] ガレージ外部からPC,マイコン操作してみよう その1

どうも前回はネットワーク構築でやらかしたITシステム素人系,IoT担当のmath03です.

なんだかんだでネットワーク構築ができ,様々な機器を動かせる準備ができたので,今度は

①PCの電源ON/OFF操作をできるようにすること

②その他の機器をリレーやモーターなどで制御すること

を目指して色々とトライしてみました.


まず①PCの電源操作については,常に起動しているVPNサーバーを起点として,他のPCの電源を操作することにしました.

方法としては,シャットダウン状態のPCに対して,マジックパケットというデータを送り込むことで電源を入れることができます.昔,遠隔操作に興味があった時に知識として得たのですが,詳しい内容は不明だったので早速具体的な方法を調査.

どうやら,BIOS/UEFIの設定とOSの設定が必要ということで,ちゃちゃっと設定.

調べる過程で,マジックパケットをボタン一つで送ってくれるソフトnWOLを発見したので,早速VPNサーバーになってるPCにインストールしました.ソフトはこんな感じです.


これで画像の電源ボタンを押すと電源がONできる(Wake On LAN/WOL)ようになったのと,登録したネットワーク上の機器の電源ON/OFF状態も監視できるようになりました!すごい便利!

現状は有線LAN接続PCのみWOL対応しましたが,時間がある時に無線LAN接続PCも対応したいと思います(できるようですが,難易度が高いそうです).



次に②その他の機器をリレーやモーターなどで制御する場合,マイコンを使う必要があります.

まずは汎用的に使えるものとして,スイッチの電源を物理的にON/OFFする”Switchbot”のようなものを作りたい! と思い,PCから送信された情報を,無線でマイコンが受け取り,サーボモータを動かすような方法を調べました.

すると,NodeMCU(マイコン),SG90(サーボモータ)を組み合わせると1000円程度と非常に安価にスイッチ制御できる! ということが分かったので,早速購入.

なお,NodeMCUは以下の特徴があり,無線通信で機器を動かしたい場合,比較的容易に導入可能なため,今回のテストおよび実際の利用においてもうってつけでした.

  • 非常に安価
  • Wifi通信が可能
  • Arduino IDEが利用可能

次に通信方法をどうするかということで調査を行ったところ,

以下の特徴を持つMQTTという方式を導入することにしました.

  • 多数相手への通信が可能(1⇔多,多⇔多)
  • 通信が不安定な環境でも安定した処理が可能
  • 通信データ量が小さい 等


通信のイメージ図は次の通りです.

Publisherから情報を送信して,Brokerで一度情報を受け取り,そこからSubscriberで情報を受信するという手順になります.
例えば,①パソコンからの命令をマイコンが受信してモータを制御したり,②センサのデータ(温度等)をマイコンを通して,パソコンでその情報を確認したりすることができます.
もちろんすべてが同一ネットワーク上にある必要はなく,Brokerはクラウドサーバーのように外部のものを使うこともあります.

今回は,①についてすべて内部ネットワーク上で動作するか確認しました.

まず,BrokerをRaspberry pi上に作りました.方法はMosquittoというアプリをインストールするだけです.

次に,マイコン側に情報を送信するための方法が必要になります.調べたところ,MQTTBoxを使い,値を入力するとサーボモータが動くようになるそうです.

操作状況はこんな感じです.方法はOsoyooという会社が公開している内容を参考にしました.



ただ,MQTTBoxは実験には良さそうだけど,ぱっと見で使いにくそうだし,Webアプリか携帯アプリで分かりやすく操作できるとよいなぁ.と思い,そこでふと"○○を使えばできるんじゃないか"と思い出したところで,今回の話は終わり.

次は簡単にWebアプリを作って,モータの操作した内容を報告しようと思います.


※お金があって時間をかけずに,色々とリモート化をしたい人は,switchbotを使うとよいと思います.単に電源スイッチのON/OFFだけでなく,スマートスピーカーなどの遠隔操作もできるようになります.


EmoticonEmoticon