今回は「MQTTを利用して、スマホからの操作でデバイスを制御する」というテーマで、Arduinoに接続されたLEDの無線ON/OFF操作を行います。QoSやセキュリティを考慮しない簡易的なものですが、「MQTTを使ったIoTデバイス製作」の端緒となる内容です。
いよいよ今回でこの連載「MQTTで始めるIoTデバイスづくり」も最終回です。今回はマイコンのArduinoとWi-FiモジュールのESP8266をサブスクライバーとすることで、「スマホからの操作でデバイスを制御する(Arduinoに接続されたLEDをON/OFFする)」というテーマに取り組んで締めくくりたいと思います。
次の図は今回の実験環境を示したシステム構成図です。
今回もWindows PCがMQTTのブローカー(仲介者)になります。連載第4回(ArduinoをMQTTブローカーに接続)と同様、MQTTブローカーソフトウェアのmosquittoが動作しています。ポート番号は1883です。Arduino+ESP8266がMQTTのサブスクライバー(購読者)として動作します。
今回はAndroidスマートフォンが、ブローカーにメッセージを送信するパブリッシャー(出版者)の役割をします。スマートフォンにはIoT MQTT Dashboardがインストールされています。
これらの3つのノードはWi-Fiでルーターに接続されており、ステーションモードとして動作します。また各ノードのIPアドレスは無線ルーターのDHCPサーバにより図のように付与されたものとします。
次の図がESP8266とArduino、そして今回ON/OFFさせる発光ダイオードを組み合わせた配線図です。
今回初めて登場するのが発光ダイオード(LED)です。それ以外の配線は前回までと変わりません。連載第4回ないし第5回の記事を参考にしてください。
発光ダイオードは電流を流すと光る半導体デバイスです。発光ダイオードに2本のリード線があり、それらには極性があります。リード線の長い方を「アノード」、もう一方の短い方を「カソード」と呼びます。
アノードからカソードに電流は流れますが、カソードからアノードには電流は流れません。発光ダイオードを光らせるためにはアノードからカソードに電流を流す必要があります。しかし発光ダイオードに電流を流しすぎると中が焼き切れてしまいますので、適切な電流に調整する必要があります。
その電流を調整する機能を持つのが抵抗です。抵抗はオーム(Ω)という単位で値を表します。抵抗値が大きいほど電流の流れは抑制され少なくなります。また抵抗値が小さいと電流はたくさん流れます。ですから発光ダイオードを点灯させる場合、大きな値の抵抗をつけると暗くしか光りませんし、値の小さな抵抗をつけると明るく輝きます。この値は発光ダイオードが許容する電流の量と供給できる電流の量を考慮し、適切な値を決める必要があります。
このあたりの話になると、オームの法則と発光ダイオードのデーターシートとのにらめっこになりますので、その議論は割愛して大体220Ω〜1KΩの間で抵抗値を選んで頂ければ問題ないでしょう。
抵抗の一端は発光ダイオードのアノードに接続し、もう一端はArduinoのD2に接続します。また発光ダイオードのカソードはGNDに接続します。ArduinoのD2をプログラムから「1」にすればD2の出力電圧は5Vになり、抵抗を介して発光ダイオードのアノードからカソードに電流が流れ、発光ダイオードは点灯します。
次の画像がこれらの回路をブレッドボードに実装した例です。
ESP8266のブレークアウトボードに隠れたところの配線もありますが、過去の記事を参考にしてください。
Copyright © ITmedia, Inc. All Rights Reserved.