WeMosを使ってみる

UART-MQTT Converter


ESP8266を使って、ArduinoのUART出力をMQTTでPublishして、他のマシンで見れるようにしたいと考えていました。




こちらにUART- MQTTのブリッジが公開されていますが、双方向通信に対応した立派なものです。
欲しいのはUART→MQTTの一方通行だけでいいので新しく作りました。
こちらで 公開しています。

ESP8266のUART1をデバッグポートとして使っていますので、このポートを使ってデバッグ表示を行うことができます。
デバッグ表示を行うには、TTL-USB変換アダプタを以下のように接続します。
TTL-USB変換アダプタをWindowsPCのUSBポートに入れて、TeraTermでCOMポートを開きます。
COMポートのボーレートは115200bpsです。
ESP8266 TTL-USB変換アダプター
GPIO2 RX
GND GND

UARTからLFコード(0x0A)を受信したら、それまでの受信データをMQTTでPublishします。



MQTTでSubscribeしたデータをUARTに出力するブリッジを作りました。
ソースは同 じ場所で公開しています。
こちらも、ESP8266のUART1をデバッグポートとして使っていますので、このポートを使ってデバッグ表示を行うことができます。


ESP8266は起動時にシリアル(GPIO1)にハードウェアBootメッセージを出力します。
これが相手側に届くのを防ぐ方法は2つあります。

・シリアルポートをSWAPする
ESP8266のシリアルポートをSWAPすると、TXとRXはGPIO15とGPIO13に変わります。
ESP8266起動時のハードウェアBootメッセージはGPIO1に出力されますが、GPIO1は何処にも繋がっていないので、
相手側にはハードウェアBootメッセージが届くことは有りません。
ただし、GPIO15はブートモードを決定するピンで、相手がArduinoの場合、ESP8266が起動できなくなります。

・OR回路を追加する
この様なOR回路を追加すると、UNO_RXのレベルは常にHIGHとなり、全ての送信メッセージは相手に届かなくなります。
Setup()関数の中でGPIOのモードをOUTPUTに設定し、レベルをLOWにすると、送信メッセージが相手に届きます。
おそらくこれが一番確実な方法です。





次回はmNDSによる名前解決の方法を紹介ます。
mNDSを使うと、IPアドレスではなくローカルホスト名でWeMosにアクセスできるようになります。

続く....