ESP32 チュートリアル 47/55 - インターネット経由の MQTT を使用した WS2812 CheerLights | SunFounder の ESP32 IoT キット
このチュートリアルでは、ESP32とWS2812 LEDを使用して、MQTTを介してリモートで制御可能な同期照明システムを作成します。このシステムでは、複数のユーザーが同時にライトの色を変更でき、場所を問わず接続された体験を提供します。このプロジェクトは、Wi-Fi機能を備えた強力なマイクロコントローラを含むSunFounderのESP32 IoTキットを利用しており、IoTアプリケーションに最適です。
WS2812_strip.ON
ビデオ全体を通して、この効果を得るために必要なセットアップ、配線、およびコードの実装を説明します。詳細な説明が必要な場合は、特定のタイムスタンプ(ビデオで mm:ss)でビデオを確認してください。
ハードウェアの解説
このプロジェクトの主な構成要素は、ESP32マイクロコントローラー、WS2812 LEDストリップ、MQTTブローカーです。ESP32は、内蔵のWi-FiとBluetooth機能を備えた多用途のマイクロコントローラーであり、インターネットに簡単に接続できます。これは私たちのプロジェクトの頭脳として機能し、通信を処理しLEDストリップを制御します。
WS2812 LEDストリップは、個別にアドレス指定可能なRGB LEDで構成されており、さまざまな色を表示するように制御できます。各LEDはオンまたはオフにでき、単一のデータラインを使用して任意の色に設定できるため、動的な照明効果に最適です。MQTTブローカーは、異なるクライアント間の通信を容易にし、ユーザーはLEDの色を制御するトピックに公開および購読できます。
データシートの詳細
| メーカー |
アダフルーツ |
| 部品番号 |
WS2812B |
| 論理/入出力電圧 |
3.5 - 5.5 V |
| 供給電圧 |
5 V |
| 出力電流(チャネルあたり) |
20 mA |
| チャネルあたりのピーク電流 |
60 mA |
| PWM周波数ガイダンス |
400ヘルツ |
| 入力論理閾値 |
0.2Vcc(ロー)、0.7Vcc(ハイ) |
| 電圧降下 / RDS(on)/ 飽和度 |
0.5 V |
| 熱的限界 |
動作温度: -25 ~ 85 °C |
| パッケージ |
個別5050 SMD |
| ノート / バリアント |
さまざまな長さと構成で利用可能 |
- WS2812ストリップの電圧降下を避けるために、十分な電源供給を確保してください。
- ESP32とLEDストリップの間に共通のグランドを使用してください。
- データラインは短く保って、信号の劣化を防ぎます。
- 電源の間にコンデンサー(1000μF)を使用して電圧スパイクを緩和することを検討してください。
- データラインに適切な抵抗器を使用して、信号の反射を防ぎます。
- LEDストリップの総電流を考慮し、必要に応じて外部電源を使用してください。
配線指示
ESP32をWS2812 LEDストリップに配線するには、まず電源を接続します。LEDストリップの赤いワイヤーを5V電源に接続し、黒いワイヤーをグラウンドに接続します。次に、WS2812ストリップのデータライン(黄色いワイヤー)をESP32の14ピンに接続します。ESP32がLEDストリップと同じグラウンドに接続されていることを確認して、共通の基準を維持します。
電源とデータ接続を設定した後、プログラミングのためにマイクロUSBケーブルを使用してESP32をコンピュータに接続します。プログラミング中に接続を確立するためにESP32の電源がオンになっていることを確認する必要があります。配線が完了したら、コードをアップロードしてセットアップをテストすることができます。
esp32-47-cheer-light-wiringコード例とウォークスルー
コードは、Wi-FiおよびMQTT機能に必要なライブラリをインクルードすることから始まります。識別子ssidそしてpasswordWi-Fiの資格情報を保存するために使用されますが、mqtt_serverMQTTブローカーのアドレスを保持します。
const char* ssid = "SSID";
const char* password = "PASSWORD";
const char* mqtt_server = "mqtt.cheerlights.com";
次に、サポートされているCheerLightsの色とそれに対応するRGB値を配列を使用して定義します。これにより、プログラムはユーザー入力に基づいて色設定に簡単にアクセスできるようになります。
String colorName[] = {"red", "pink", "green", "blue", "cyan", "white", "warmwhite", "oldlace", "purple", "magenta", "yellow", "orange"};
int colorRGB[][3] = { 255, 0, 0, // "red"
255, 192, 203, // "pink" ...};
そのsetup()関数はシリアル通信を初期化し、Wi-Fi接続を設定し、MQTTクライアントを準備します。また、LEDストリップを開始します。
void setup() {
Serial.begin(115200);
setup_wifi();
client.setServer(mqtt_server, 1883);
pixels.begin();
pixels.show();
}
メインループは、MQTT接続を継続的にチェックし、LEDの色を制御する受信メッセージを処理します。callback()関数は、購読されたトピックでメッセージが受信されたときにトリガーされます。
デモンストレーション / 期待すること
すべての設定が完了し、コードがアップロードされると、MQTTトピックにメッセージを送信することでWS2812 LEDの色を変更できるようになります。別のユーザーが色を変更すると、すべての接続デバイスが同時にその変更を反映します。極性の逆転や不適切な接続といった潜在的な問題に注意してください。これによりLEDが正常に機能しなくなる可能性があります(動画ではmm:ssで表示)。
動画のタイムスタンプ
- 00:00 開始
- 2:00 イントロダクション
- 3:48 ドキュメンテーションページ
- 6:33 配線の説明
- 7:35 Arduinoコードの説明
- 15:03 Arduino IDEでESP32ボードとCOMPポートを選択する
- 16:46 CheerLighs デモンストレーション
画像
WS2812_strip.ON
esp32-47-cheer-light-wiring
esp32-47-cheer-light-wiring
848-ESP32 Tutorial 47/55- Arduino code for cheer light
言語: C++