PR

 安価なマイコンボード「Arduino」とLinuxサーバーを組み合わせ、家電を制御しまてみましょう。出先でスマートフォンなどから手動でエアコンをON/OFFしたり、部屋の気温が高くなったとき自動でエアコンをつけたりします。ECサイトの特売情報もチェックして、目覚ましを鳴らします。前々回はマイコンボード、前回はLinuxサーバーを構築しました。今回はArdinoの制御プログラムを制作します。

 Arduinoでは、フォルダー(3)の「HomePortal.ino」を動かしてください。その仕組みを簡単に説明しましょう。

 HomePortal.inoは4つのモードを持ちます(図14)。初期状態の「接続待ち(MODE_CONNECT)」でWebサーバー接続を開始し、「コマンド待ち(MODE_CMD_WAIT)」に移行します(図15)。

図14●Arduinoプログラムの4つのモード
図14●Arduinoプログラムの4つのモード
[画像のクリックで拡大表示]
図15●4つのモードを行き来する手順<br>上記の処理を無限でループで実行します。
図15●4つのモードを行き来する手順
上記の処理を無限でループで実行します。
[画像のクリックで拡大表示]

 次に、Webサーバーが前述の「CMD:」で始まるコマンドを返してきたら、「コマンド読み込み(MODE_CMD_READ)」モードに入ります。

 受け取ったコマンド文字列は、別の配列へ先頭から保存していきます(addCmdStr関数)。各コマンドの末尾は必ずスペースなので、スペースを検出したら「parseCmdStr」関数を実行します。次にまた別のコマンドが指定されていたら、コマンドを繰り返し実行します。

 parseCmdStr関数では、CMD:に続く文字列を解析してコマンド番号を取り出し、execCmd関数を呼び出して実際のコマンドを実行します。ここでエアコンをつけたり、ブザーを鳴らしたりします。 

 Webサーバーから改行文字を受け取ったら、Webサーバーからの通信は終了です。「切断(MODE_DISCONNECT)」モードにして通信を切断した上で、一定時間(通常60秒)待機してから「接続待ち」モードに戻します。