IoTクリスマスツリーの仕組み
IoTクリスマスツリーを制御する仕組みについて、大まかには以下の流れになります。
- ブラウザ上でWebアプリのボタンを押す【点灯/点滅/消灯】(MQTT Publisher)
- MQTT Brokerでメッセージを受け取る
- Raspberry Pi Zero Wでメッセージを受け取り(MQTT Subscriber)、LEDの制御をする(GPIO)
まずは、クリスマスツリー用のLEDを準備し、Raspberry Pi Zero Wに繋げます。そして、AzureのPaaSのサービスである「Azure App Service」でPHPをインストールし、PHPで動作するWebアプリを準備します。
Webアプリのボタンを押すことにより、メッセージ(データ)が送信されます。そのとき、MQTT(Message Queue Telemetry Transport)という通信プロトコルを使用し、メッセージはMQTT Brokerに送信されます。その後、Raspberry Pi Zero WでMQTT Brokerのメッセージを受け取り、LEDを【点灯/点滅/消灯】させます。
Azure App Serviceの詳細については、マイクロソフトの公式ドキュメントをご覧下さい
用意するもの
- Raspberry Pi Zero W
- ミニブレッドボード
- ジャンパワイヤ(オス~ワニクリップ)
- ジャンパワイヤ(オス~メス)
- LEDライト(4.5V 1m/20個)
- トランジスタ 1本
- 抵抗 1本
- クリスマスツリー
LEDライトについては、今回は電池ボックス付きのものを切断し、改造して使用する例を紹介します。
クリスマスツリーの飾り付け
まずはクリスマスツリーを飾り付けます。ぜひ、ご家族で楽しく飾り付けてみましょう。
LEDの下準備
LEDライトについては、「アキバLEDピカリ館)で購入したものを使用しています。
電池ボックス付きですが、電池は使用しないのでニッパーで切断します。
次の手順の配線でLEDのアノードとカソードを間違えないようにするため、アノード側にマジック等で目印を付けることをおすすめします。
配線
以下の図の通りに配線します。実際に使用するLEDライトは、並列接続のLED20球になります。
LEDをブレッドボードに配線するときは、ジャンパワイヤ(オス~ワニ口クリップ)を使用しました。
今回は2.5Ωの制限抵抗が必要でしたが、それだと明るすぎたのでLEDの4.7Ωにしています。
注意
制限抵抗を入れないとLEDが焦げて故障する恐れがありますので十分ご注意下さい。図解の制限抵抗4.7ΩはLEDが20本並列の場合を想定しています。LED1本のみで試したい場合の制限抵抗は300Ωにします。
なお、ブレッドボードのトランジスタの図解は2SC1815、2SC2120などのECB(エミッタ、コレクタ、ベース)のピン配置を想定しています。なお、トランジスタには、エミッタ(Emitter)、コレクタ(Collector)、ベース(Base)といった3つの電極があります。
点灯テスト
Raspberry Piの配線が問題無くできているか、以下のコマンドを実行してみましょう。LEDが点灯していたら成功です。
echo 17 > /sys/class/gpio/export echo out > /sys/class/gpio/gpio17/direction echo 1 > /sys/class/gpio/gpio17/value
点灯テストが終わったら、以下のコマンドでLEDを消灯させ、GPIO17番を無効化します。
echo 0 > /sys/class/gpio/gpio17/value echo 17 > /sys/class/gpio/unexport