ESP32 チュートリアル 46/55 - HiveMQ MQTT を使用したリモート温度監視 | SunFounder の ESP32 キット
このチュートリアルでは、ESP32とMQTTプロトコルを使用してリモート温度監視システムを作成します。このプロジェクトでは、MQTTブローカーに温度データを公開し、ウェブインターフェースを使用してLEDをリモートで制御できます。ボタンを押すことで温度データをクラウドに送信でき、LEDをオンまたはオフにするコマンドを受信することもできます。
esp32-47-mqt-1
ESP32は、内蔵のWi-FiとBluetoothを備えた強力なマイクロコントローラーで、IoT(モノのインターネット)アプリケーションに最適です。このセットアップでは、温度を測定するためにNTCサーミスタを使用し、読み取りをトリガーするためのプッシュボタンと、ステータスを示すためのLEDを使用します。データは、人気のMQTTブローカーであるHiveMQに送信され、リモートでアクセスできます(動画の00:45で)。
esp32-47-mqt-2
ハードウェアの解説
このプロジェクトでは、次のコンポーネントを利用します:
- ESP32マイクロコントローラこのボードは中央処理ユニットとして機能し、Wi-Fi接続とMQTT通信を管理します。
- NTCサーミスタ:この温度センサーは、温度に基づいて抵抗を変えます。ESP32が現在の温度を把握するために読み取ることができるアナログ信号を提供します。
- LED:この発光ダイオードは、MQTTを介して受信したコマンドに基づいて状態を示すために使用されます。
- 押しボタン:このボタンを押すと、ESP32が温度を読み取り、MQTTブローカーに公開します。
データシートの詳細
| 製造者 |
サンファウンダー |
| 部品番号 |
ESP32 |
| 論理/入出力電圧 |
3.3 V |
| 供給電圧 |
5 V (USB経由) |
| 出力電流(チャンネルごと) |
最大12 mA |
| PWM周波数ガイダンス |
最大40 kHzまで |
| 入力ロジック閾値 |
0.3 V(低)、2.4 V(高) |
| 熱的限界 |
-40から85 °C |
| パッケージ |
ESP32-WROOM-32 |
- 適切な電圧レベルを維持して、損傷を避けてください。
- プッシュボタンにはプルアップ抵抗を使用して、安定した読み取りを確保してください。
- デカップリングコンデンサは電源を安定させるのに役立ちます。
- サーミスタの配線には注意して、不正確な測定を避けてください。
- MQTTブローカーの詳細を確認して、接続が成功するようにしてください。
配線指示
esp32-47-mqtt-wiringコンポーネントを配線するには、まずNTCサーミスタを接続します。サーミスタの1つの端子をESP32の3.3 V電源に接続します。もう1つの端子をESP32の36番ピンに接続し、さらに10 kΩの抵抗にも接続します。この抵抗はグラウンドにも接続されます。これにより、ESP32がサーミスタの抵抗を読み取ることができるボルテージディバイダが作成されます。
次に、LEDを接続します。LEDの長いピン(アノード)は、220 Ωの抵抗を介してESP32のピン4に接続し、短いピン(カソード)はグラウンドに接続します。押しボタンについては、一方の端を3.3 Vに接続し、もう一方の端をESP32のピン14に接続します。さらに、ボタンピンからグラウンドに10 kΩの抵抗を接続して、ボタンが押されていないときに安定したLOW状態を確保します。
必要なライブラリをインストールします
そのPubSubClientライブラリはここで使用されています。インストールするには、あなたはそれをから入手することができます。ライブラリマネージャー.
esp32-47-mqttライブラリ
コードの例とウォークスルー
セットアップでは、シリアル通信を初期化し、Wi-Fi接続を設定し、MQTTサーバーを構成します。以下はセットアップコードの一部です:
void setup() {
Serial.begin(115200);
setup_wifi();
client.setServer(mqtt_server, 1883);
client.setCallback(callback);
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
}
このコードの部分はWi-Fiネットワークへの接続を確立し、MQTTサーバーを設定します。ボタンとLEDのピンモードもここで構成されています。
ループ関数はボタンの状態を継続的にチェックし、押されたときに温度データを公開します。こちらがループからの重点的な抜粋です:
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
if (digitalRead(buttonPin)) {
long now = millis();
if (now - lastMsg > 5000) {
lastMsg = now;
char tempString[8];
dtostrf(thermistor(), 1, 2, tempString);
client.publish("SF/TEMP", tempString);
}
}
}
このループでは、ESP32がMQTTブローカーに接続されているかどうかを確認します。ボタンが押されると、サーミスタから温度を読み取り、5秒ごとにトピック「SF/TEMP」に公開します。
デモンストレーション / 期待すること
プロジェクトが設定されて動作を開始すると、ボタンを押すことで現在の温度がMQTTブrokerに公開されます。このデータは任意のMQTTクライアントから監視できます。さらに、LEDを制御するためのメッセージを送信することもできます。「on」を送信すると点灯し、「off」を送信すると消灯します。ボタンを押すたびに温度読み取り値が表示される15:30のビデオで期待される動作を確認してください。
ビデオのタイムスタンプ
- 00:00 開始
- 2:05 プロジェクトの紹介
- 7:06 無料HiveMQサービス
- 7:56 配線の説明
- 11:11 Arduinoコードの説明
- 18:46 Arduino IDEでESP32ボードとCOMポートを選択中
- 20:30 HiveMQ無料ブローカーのデモンストレーション
画像
esp32-47-mqt-1
esp32-47-mqt-2
esp32-47-mqtt-library
esp32-47-mqtt-wiring
847-ESP32 Tutorial 46/55- Arduino code for IoT Communication with MQTT
言語: C++