このレッスンでは、MQTTクライアント(ここではMQTTBox)を使用してNodeMCUに桁数のMQTTメッセージを送信する方法を紹介します。NodeMCUは対応するパブリッシュトピックをサブスクライブし、サブスクリプションメッセージを4桁の7セグメントLEDデバイスに表示します。
ハードウェア:
Software:
NodeMCU | 4デジタルディスプレイ |
---|---|
3.3V | VCC |
GND | GND |
D2 | CLK |
D3 | DIO |
NodeMCUをUSBケーブルでパソコンに接続し、Arduino IDE(Version1.6.4+)でスケッチを開きます:
次の操作のように、独自の 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ホットスポット名とパスワードの設定がOKで、MQTTブローカーが接続されている場合、シリアルモニターを開くと、次のような結果が表示されます:
NodeMCUのシリアルポートにIPアドレスと接続状況が表示され、MQTTクライアントからのコマンドが表示されます。
Open the MQTTBox and publish different number(0~191) to the broker,
The 4 digital LED display will show as below :
The Serial Monitor output as below:
DownLoad Url osoyoo.com
You must be logged in to post a comment.
I would like to display an MQTT message that has a decimal point in it, for example 3.3 or 19.1
I note that the TM1637Display library has showNumberDecEx() as another display setting which should support this, but I cannot make this work – I can make it show the colon, but the value of the MQTT reading is always truncated at the decimal, eg. 3.3 comes out as 3, 19.1 comes out as 19
I also cannot position the start segment of the number – the value “The position least significant digit” means nothing to me!
Can anyone suggest a code modification that uses that display setting and will show an MQTT value of this nature, with the value either side of the colon representing the decimal point? Thanks!