このレッスンでは、NodeMCUを使用してMQTTクライアントから発行されたメッセージを受信し、これらのメッセージを1602 I2C LCDディスプレイに表示する方法を紹介します。
ハードウェア:
Software:
NodeMCU | I2C 1602 LCD |
---|---|
Vin | VCC |
GND | GND |
D1 | SCL |
D2 | SDA |
NodeMCUをUSBケーブルでパソコンに接続し、Arduino IDE(Version1.6.4+)でスケッチ を開きます:
この行について
LiquidCrystal_I2C lcd(0x27, 20, 4);
*0x27 は、この1602 I2C LCDディスプレイのアドレスを意味します。LCDが動作しない場合は、1602 I2C LCDディスプレイをNodeMCUに接続し、以下のコードをNodeMCUにアップロードしてください。シリアルモニタからI2Cアドレスが取得できます。1602 I2C LCDディスプレイの詳細については、次のリンクを参照してください: https://osoyoo.com/ja/2014/12/07/16×2-i2c-liquidcrystal-displaylcd/
WiFiとMQTTの設定に合わせて、以下のようにコードを編集します:
1)WiFiの設定:
const char* ssid = “your_hotspot_ssid”;
const char* password = “your_hotspot_password”;
上記のコード行を探し、そこに自分のssidとパスワードを記述します。
2)MQTTサーバーアドレスの設定
const char* mqtt_server = “broker.mqtt-dashboard.com”;
上記のmqtt_serverの値には、自分のMQTTブローカーのURLやIPアドレスを使うことができます。また、”broker.mqtt-dashboard.com”、”iot.eclipse.org “などの有名なフリーのMQTTサーバーを使用してプロジェクトをテストすることもできます。
3)MQTTクライアント設定
MQTTブローカーがclientID、ユーザー名、パスワード認証を必要とする場合は、次のように変更する必要があります。
if (client.connect(clientId.c_str()))
to
if (client.connect(clientId,userName,passWord)) //put your clientId/userName/passWord here
そうでなければ、デフォルトのままにしておく。
その後、以下のように対応するボード タイプとポート タイプを選択し、スケッチを NodeMCU にアップロードします。
MQTTクライアントの設定方法はこちらをご覧ください。
トピックの設定
アップロードが完了し、無線LANホットスポット名とパスワードの設定が問題なく、MQTTブローカーが接続されている場合、シリアルモニターを開くと、以下の結果が表示されます:
NodeMCUのシリアルモニターにIPアドレスと接続状況が表示され、”パブリッシュデータ “が表示されます。
スケッチから分かるように、初期データは1です。その後、「Payload」に他のメッセージを入力し、「Publish」ボタンをクリックすると、NodeMCUがデータを購読し、LCDに表示します:
DownLoad Url osoyoo.com