NodeMCUについて

NodeMCUはAP,STA,AP+STAの3つのモードが搭載している非常に人気あるマイクロコントローラです。ESP8266搭載 -Arduino IDEに完備対応し、安くて良質なチップです。ArduinoIDEに熟練者の場合、簡単にプログラムしできます。

目的

このプロジェクトでは、NodeMCUを使って、DHT11温湿度センサーからの温湿度データを確認して、MQTT brokerを通じで、他のインタネット設備に送信します。MQTTは非常に人気あるIOTプロトコルとして、インタネットを通じで、異なるのディバイス間の通信が実現できます。デバイス間のブリッジがMQTTブローカーと呼ばれています。各ディバイスはMQTTブローカーからメッセージを簡単に申し込む(獲得)しできますし、MQTTブローカーへメッセージを簡単にパブリッシュ(送信)しできます。

必要なパーツ

NodeMCU ボードx 1

DHT11 温湿度センサー x 1

Breadboard x 1

ジャンプワイヤー

配線表

NodeMCUボード DHT11 センサー
3.3v VCC
D3 DATA
GND Ground

nodemcu-dht11

プログラム前の準備:

Arduino IDEの設定について:

Libraryのインストール:

MQTT brokerと通信のため、ArduinoIDEにMQTT クライアントlibrary をインストールして下さい。DHT11センサーと接続のため、DHT
library もインストール必要です。

上記のリンクでのZIPファイルをダウンロードして、解凍したフォルダをArduino IDE library フォルダに移動して下さい。

次のリンクでサンプルコードをダウンロードして下さい。

http://osoyoo.com/wp-content/uploads/samplecode/dht11-esp8266.txt
 コードをArduino IDEにコーピーして、 ロードの前に、下記のように編集して下さい。

1)Line 19 と20:

const char* ssid = “your_hotspot_ssid

const char* password = “your_hotspot_password

赤字の部分をお宅のルーターのSSIDとルーターのパスワードを切り替えして下さい。

2)Line 21

const char* mqtt_server = “broker.mqtt-dashboard.com“;

赤字も部分はお客様自弁のMQTT broker URLやIPアドレスも切り替えすることはできます。他の無料なMQTTサーバーもお勧めます:“broker.mqtt-dashboard.com” ”iot.eclipse.org”

お客様自弁のMQTT brokerサーバーをUbuntu Linuxにインストールしたいの場合、次の文章をご参照下さい:http://osoyoo.com/ja/2016/09/07/how-to-install-mosquitto-mqtt-server-on-linux

3)もし、お客様のMQTTサーバーはユーザー名とパスワードが必要の場合、Line86の内容を変更して下さい。

コードをロードして下さい

コードをロード完了しましたら、Arduino IDEのserialモニター窓を開けて下さい。

お客様のルーターのSSIDとパスワードが正しく入力されたとMQTT brokerに接続済みの場合、次のように表示します:

starting_nodemcu

NodeMCUボードは6秒1回にリアルタイム環境の温度と湿度をMQTTサーバーに発表します。MQTT クライアントソフトを使って、”Osoyoo”
というtopicのメッセージを購読しできます。

MQTT client ソフトを使って、「OsoyooCommand」というトピック、内容は「1」や「0」のMQTTメッセージを送信したら、NodeMCUボードはコマンドを従って動作します。サンプルコードでは、「0」の意味はNodeMCU
ボードが湿度数値をプリントします。「1」の意味はNodeMCU ボードが温度数値をプリントします。

下記の画像のように:

nodemcu-mqtt-result

上記の手順でLinux mosquitto MQTT clientというソフトを使用しました。次のリンクの文章でUbuntuでmosquitto-clientsのインストールをご参照下さい。 http://osoyoo.com/ja/2016/09/26/2610

GOOGLEでwindows,iOS or AndroidのMQTT client ソフトも沢山あります。