CherryLight¶
CheerLightsは、誰でも制御できるグローバルな同期ライトのネットワークです。 @CheerLights - Twitter のLEDカラーチェンジコミュニティに参加し、世界中のLEDを同時に色を変えられるようにしましょう。オフィスの片隅にLEDを置いて、自分が一人でないことを思い出しましょう。
このケースでは、MQTTを使用しますが、自分のメッセージを公開する代わりに、「cheerlights」というトピックにサブスクライブします。これにより、他の人が「cheerlights」トピックに送信したメッセージを受信し、その情報を使用してLEDストリップの色を変更することができます。
必要なコンポーネント
このプロジェクトには以下のコンポーネントが必要です。
全体のキットを購入すると便利です。こちらがリンクです:
名称 |
このキットのアイテム数 |
リンク |
---|---|---|
Elite Explorer Kit |
300+ |
以下のリンクから別々に購入することもできます。
コンポーネント紹介 |
購入リンク |
---|---|
- |
|
配線図
回路図
ライブラリのインストール
ライブラリをインストールするには、Arduinoライブラリマネージャーを使用し、「ArduinoMqttClient」と「FastLED」を検索してインストールしてください。
ArduinoMqttClient.h
:MQTT通信用に使用します。
FastLED.h
:RGB LEDストリップのドライブに使用します。
コードの実行
注釈
ファイル
05_cheerlight.ino
をelite-explorer-kit-main\iot_project\05_cheerlight
のパスから直接開くことができます。または、このコードをArduino IDEにコピーしてください。
注釈
コード内で、SSIDとパスワードは arduino_secrets.h
に格納されています。この例をアップロードする前に、自分のWiFiの認証情報でそれらを修正する必要があります。さらに、コードを共有または保存する際には、この情報を機密に保つためのセキュリティ対策を講じてください。
グローバルな@CheerLightsデバイスを制御する
Discord Server に参加し、
/CheerLights
ボットを利用して色を設定します。 CheerLights Discord Server の任意のチャンネルで「/cheerlights」と入力してボットをアクティブにします。ボットが提供する指示に従って色を設定します。これにより、グローバルにCheerLightsデバイスを制御できます。
どのように動作するのか?
こちらはコードの主要部分とその機能の説明です:
必要なライブラリを含む:
WiFiS3.h
:Wi-Fi接続の処理に使用します。ArduinoMqttClient.h
:MQTT接続の処理に使用します。FastLED.h
:NeoPixel LEDストリップの制御に使用します。
いくつかの定数を定義する:
NUM_LEDS
:LEDストリップ上のLEDの数。DATA_PIN
:LEDストリップを制御するためにArduinoに接続されているデータピン。arduino_secrets.h
:Wi-Fiネットワーク名とパスワードを含むヘッダーファイルで、機密情報を保護します。broker
:MQTTサーバーのアドレス。port
:MQTTサーバーのポート。topic
:サブスクライブするMQTTトピック。
いくつかのグローバル変数を定義する:
CRGB leds[NUM_LEDS]
:LEDの色データを格納するための配列。colorName
:CheerLightsプロジェクトでサポートされている色名の配列。colorRGB
:色名に対応するRGBカラーコードの配列。
setup()
関数:シリアル通信を初期化します。
Wi-Fiモジュールが存在するかを確認し、そのファームウェアバージョンを出力します。
Wi-Fiネットワークに接続を試み、失敗した場合は10秒待って再試行します。
接続に成功したら、MQTTブローカー(サーバー)に接続し、指定されたトピックにサブスクライブします。
NeoPixel LEDストリップを初期化します。
loop()
関数:定期的に
mqttClient.poll()
関数を呼び出して、MQTTメッセージを受信し、MQTTのキープアライブ信号を送信します。継続的な接続を避けるために5秒の遅延を追加します。
printWifiData()
およびprintCurrentNet()
関数は、Wi-Fiネットワークおよび接続情報を出力するために使用されます。printMacAddress()
関数は、MACアドレスを16進数形式で印刷するために使用されます。onMqttMessage()
関数は、MQTTメッセージが受信されたときにトリガーされるコールバック関数です。受信したトピックとメッセージ内容を出力し、メッセージ内容を小文字に変換します。トピックが「cheerlights」の場合、setColor()
関数を呼び出して、LEDストリップの色を設定します。setColor()
関数は、色名をパラメータとして取り、colorName
配列で一致する色を探します。一致する色が見つかった場合、LEDストリップの色を対応するRGB値に設定し、FastLED.show()
関数を使用してLEDストリップの色を更新します。