MqttDesk MQTTクライアント、Mosquitto MQTTブローカー、ESP8266、LM35温度センサー、Arduinoによるリアルタイム温度監視ダッシュボードの開始。これは、ESP8266、LM35、MQTT、Mosquitto、Arduino IDEを使用したIoT(Internet of things)プロジェクトで、LM35温度データロガーの設定に最適な例である。
LM35温度センサをESP8266(Nodemcu) Wi-Fiモジュールに接続し、Arduino IDEで温度センサの読み取り値をMosquitto MQTT Brokerで公開するよう設定し、Mosquittoが温度をMqttDesk MQTTクライアントまたはその他のMQTTクライアントに公開する例です。
IoTプロジェクトで使用するもの
1. MQTTクライアント
2.LM35センサー
3.ESP8266(ノードエムシーユー)
4.Mosquitto(モスキート
5.アルドゥイーノIDE
1.MqttDesk MQTTクライアント
MqttDeskは、モノのインターネット(IoT)プロジェクトのためのリアルタイムIoTダッシュボード用のMQTTクライアントです。MqttDeskでダッシュボードとMQTTクライアントをセットアップする方法については、セットアップと設定の例を示したリンクを参照してください。LM35の測定値を表示するために、値ウィジェットとチャートを使用します。Arduino IDEを通じて、LM35の温度測定値をMqttDesk MQTT Clientとmosquitto mqtt brokerに送信します。MqttDesk MQTT Client は、MQTT プロトコルアーキテクチャの一部です。
2.LM35温度センサー
LM35は温度を測定するためのアナログセンサです。ESP8266のボードにVcc/GND/OUTピンを接続した温度センサーです。
LM35はサーミスタより優れています。その出力電圧は測定された摂氏温度に10.0mv/℃で比例します。校正の必要がなく、+-1/4℃の精度を提供します。
ここでは、TO-92プラスチックトランジスタパッケージで提供されるLM35 DZを使用しています。0℃から100℃の範囲で測定します。LM35 は、アナログ信号をデジタル信号に変換する ESP8266 モジュールの ADC ピンに接続されます。LM35 のデータシートで、正確な仕様とモデル番号を確認してください。
下の画像で、LM35センサーのピンを確認してください。
3.ESP8266/Nodemcu
ESP8266は、Espressif Systems社が製造する多くのInternet of things(IoT)およびその他のホームオートメーションアプリケーションで使用されているWi-Fi機能付きの小型でインテリジェントなマイクロコントローラです。Arduino IDEでESP8266 Wi-Fiモジュールをセットアップし、Mosquittoを介してMqttDesk MQTTクライアントにLM35センサーの読み取り値を公開するコードを数行記述してください。
LM35 は ESP8266 Wi-Fi モジュールの ADC ピンに接続されています。ESP8266 のピン配列の下図を参考に接続します。LM35のOUTピンはESP8266(Nodemcu)のA0ピンに接続し、LM35のGNDとVsはESP8266ボードのそれぞれのピンに接続されています。
4.Mosquitto MQTTブローカー
Mosquittoは、MQTTプロトコルのパブリッシュ/サブスクライブモデルで使用されるオープンソースのMQTTブローカーです。そのアップデート版は MQTT v5.0 で動作します。Mosquitto Brokerのインスタンスは数分の設定で実行でき、MQTTクライアント用のメッセージングプロトコルとして使用されます。
このプロジェクトでは、独自のインスタンスを使用することもできますし、Mosquittoが公開しているブローカーを無料で使用することもできます。
5.ArduinoソフトウェアIDE
ArduinoソフトウェアIDEは、ArduinoやEspressifコントローラなど、市販されている多くのマイコンにコードを書き込んでアップロードするために使用されているオープンソースのIDEです。
ESP8266 Wi-Fiモジュール用のArduino IDEをセットアップして、コードの書き込みとアップロードを行います。ESP8266 WIFIモジュール用に多くのライブラリが用意されています。
LM35とNodemcu ESP8266 WIFIモジュール、MqttDesk MQTTクライアントおよびMosquittoとの連動
LM35温度センサーをESP8266(Nodemcu)にセットアップします。
- LM35のセンサーピンをESP8266(Nodemcu)マイコンに接続します。
- ESP8266(Nodemcu)マイコン用のArduinoソフトウェアIDEのセットアップ。
- ESP8266(Nodemcu)にアップロードするために、与えられたコードを使用します。
- MqttDesk MQTT ClientをPCにダウンロードし、MQTT Clientをセットアップします。
- MQTTクライアントをセットアップするために、Mosquittoブローカーのクレデンシャルを取得します。
1.LM35センサーとESP8266(Nodemcu)を接続します。
- LM35のGNDをESP8266(Nodemcu)のGND端子に接続します。
- LM35のVout端子とESP8266のADC(A0)端子を接続します。
- VsをESP8266の3.3Vに接続します。
2.マイコンESP8266(Nodemcu)用ArduinoソフトウェアIDEセットアップ
- ESP8266無線LANモジュールを使ってArduino IDEで初めて作業する場合は、ESP8266ソースを設定します。
- マイコン(ESP8266 Nodemcu)とIDEとボード間の通信に使用するCOMポートを選択します。
- コードをコピーし、ESP8266ボードにアップロードします。
- シリアルモニターを開き、MQTTトピックがMQTTブローカーに温度データをパブリッシュしていることを確認します。
3.指定されたコードでESP8266(Nodemcu)にアップロードします。
#include
#include
const char* ssid = “Your wifi”;
const char* password = “password”;
const char* mqtt_server = “broker.emqx.io”;// Your server IP address
const char* mqtt_user = “ioctrl”;
const char* mqtt_password = “1234”;
WiFiClient espClient;
PubSubClient client(espClient);
long lastMsg = 0;
char msg[50];
int value = 0;
void setup() {
pinMode(LED_BUILTIN, OUTPUT); // Initialize the BUILTIN_LED pin as an output
Serial.begin(115200);
setup_wifi();
client.setServer(mqtt_server, 1883);
client.setCallback(callback);
}
void setup_wifi() {
delay(10);
Serial.println();
Serial.print(“Connecting to “);
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(“.”);
}
Serial.println(“”);
Serial.println(“WiFi connected”);
Serial.println(“IP address: “);
Serial.println(WiFi.localIP());
}
void callback(char* topic, byte* payload, unsigned int length) {
Serial.print(“Message arrived [“);
Serial.print(topic);
Serial.print(“] “);
for (int i = 0; i < length; i++) {
Serial.print((char)payload[i]);
}
Serial.println();
if ((char)payload[0] == ‘1’) {
digitalWrite(BUILTIN_LED, LOW);
} else {
digitalWrite(BUILTIN_LED, HIGH);
}
}
void reconnect() {
// Loop until we’re reconnected
while (!client.connected()) {
Serial.print(“Attempting MQTT connection…”);
if (client.connect(“ESP8266Client”, mqtt_user , mqtt_password)) {
Serial.println(“connected”);
client.subscribe(“led_topic”);
} else {
Serial.print(“failed, rc=”);
Serial.print(client.state());
Serial.println(” try again in 5 seconds”);
delay(5000);
}
}
}
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
long now = millis();
if (now – lastMsg > 2000) {
lastMsg = now;
value=analogRead(A0);
snprintf (msg, 1000, “%ld”, value/10);
Serial.print(“Publish message: “);
Serial.println(msg);
client.publish(“sensor_data”, msg);
}
}
- シリアルモニターを開き、ESP8266との無線LAN接続を確認します。
- MQTT Brokerとのブローカー接続とESP8266の接続を確認します。
- 指定したTopicでMQTT Brokerへのメッセージパブリッシングが正しく行われていることを確認します。
4.MqttDesk MQTT ClientをPCにダウンロードし、MQTT Clientをセットアップします。
MqttDesk MQTTクライアントは、モノのインターネット(IoT)および産業用IoT(IIoT)アプリケーション向けのクロスプラットフォームMQTTクライアントです。ホームオートメーション、スマートシティ、産業用PLC、その他の産業機器監視など、さまざまなアプリケーションに対応するフリーランサーや企業向けの低コストでコード不要のアプリケーションです。 MqttDeskは、ARM32/ARM64マイクロコントローラ上のLinux/macOS/Windows/SnapLinux/RaspberryPiでダウンロードできます。25以上のウィジェットが、n数のMQTTクライアント用のダッシュボードで使用可能です。
- www.ja.ioctrl.com にアクセスし、Linux/macOS/Windows/Snap などのマシン用の MqttDesk MQTT クライアントをダウンロードします。
- ビデオで使用したMqttDesk MQTT ClientアプリをWindowsで開きます。
- MQTTブローカーの詳細とMQTTクライアントを作成し、ダッシュボードとウィジェットを追加し、MqttDesk MQTTクライアントでセンサーデータをリアルタイムで視覚化するためのトピックを追加します。
- MqttDesk MQTT ClientでMQTT Brokerおよびウィジェットを作成または追加する方法については、このリンクを使用してください。
5.MQTTクライアントをセットアップするために、Mosquittoブローカーの資格情報を取得します。
Mosquittoは、オープンソースでオープンなMQTTブローカーで、 “test.mosquitto.org” で一般向けにホストされています。誰でも自分のアプリケーションにこのホストされたブローカーを使用することができます。MqttDesk MQTTクライアントアプリで以下の設定を使用して、ダッシュボードとウィジェット用のMQTTクライアント設定を作成します。
MQTT ブローカー – test.mosquitto.org
ポート – 1883
プロトコル – TCP
MQTT ClientがLM35センサデータをMosquitto Broker/Serverにパブリッシュし、MosquittoがそれをMqttDesk MQTT Clientにパブリッシュするので、ESP8266 Wifiモジュールを使ってMqttDesk MQTT ClientとMosquitto BrokerでLM35温度センサデータロギングまたはビジュアライズができるようになりました。このプロジェクトのビデオをご覧ください。