You are currently viewing ESP8266 Nodemcu MQTTクライアントとMosquitto MQTTブローカーを接続し、LM35温度センサーの測定値を公開する(Arduino IDE)

ESP8266 Nodemcu MQTTクライアントとMosquitto MQTTブローカーを接続し、LM35温度センサーの測定値を公開する(Arduino IDE)

MqttDesk MQTTクライアントMosquitto MQTTブローカーESP8266LM35温度センサー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

LM35とESP8266(Nodemcu)のインターフェース-MQTTクライアント-ioctrl技術
LM35とESP8266(Nodemcu)MQTTクライアントMqttDeskとのインターフェース

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センサーのピンを確認してください。

LM35
LM35 Pinout

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)にセットアップします。

  1. LM35のセンサーピンをESP8266(Nodemcu)マイコンに接続します。
  2. ESP8266(Nodemcu)マイコン用のArduinoソフトウェアIDEのセットアップ。
  3. ESP8266(Nodemcu)にアップロードするために、与えられたコードを使用します。
  4. MqttDesk MQTT ClientをPCにダウンロードし、MQTT Clientをセットアップします。
  5. MQTTクライアントをセットアップするために、Mosquittoブローカーのクレデンシャルを取得します。

1.LM35センサーとESP8266(Nodemcu)を接続します。

  • LM35のGNDをESP8266(Nodemcu)のGND端子に接続します。
  • LM35のVout端子とESP8266のADC(A0)端子を接続します。
  • VsをESP8266の3.3Vに接続します。
LM35温度センサ データシート
LM35 temperature sensor Pinout
ESP8266 Nodemcu Wifiモジュール
Nodemcu Pinout

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温度センサデータロギングまたはビジュアライズができるようになりました。このプロジェクトのビデオをご覧ください。

コメントを残す