WROOM と Arduino UNO のシリアル ( UART )通信で注意すること

記事公開日:2015年7月30日

こんばんは。
今、ESP-WROOM-02(ESP8266)と格闘しておりますが、Arduino UNOとシリアル通信(UART)で、文字化けが解消されたのでご報告します。
結論から言うと、
Arduino UNOのソフトウェアシリアル(SoftwareSerial)は通信速度115200bpsは対応できていないということです。
WROOMが悪いのか、ロジックレベル変換モジュールがいけないのか、といろいろ調査しました。
やっぱりArduinoは問題ないだろうと、それ以外を疑っていろいろ調べたり、ネットでググったり、Google+の電子工作部コミュニティーに質問したりしました。
そしたら、意外や意外、Arduino側のSoftwareSerialが問題だったことが解ったのです。

スポンサーリンク


Arduino UNOはハードウエアシリアルが1つしかなくて、シリアルモニターと連動してますので、なかなか使えないんです。
MEGAなら複数ありますが。
でも、何とかしてUNOで動作させたいと思い、いろいろ実験してみました。
結果、ESP-WROOM-02のシリアルUARTのTX(送信)信号をロジックレベル変換せずに、そのままArduino の0番ピンに接続し、プログラムスケッチを書き換えたら、バッチリ文字化けしなくなりました。
ソフトウェアシリアル信号と、ハードウェアシリアル信号を同一のロジックレベル変換モジュールへ通すと、ソフトウェアシリアルとハードウェアシリアルの通信速度が微妙に違うせいか、うまく同期しないようです。 どうしても文字化けします。
ですから、Arduinoからの送信信号だけをレベル変換して3.3Vに降圧して、受信は電圧が低い分には問題ないので、WROOM(ESP8266)からの3.3Vをそのままレベル変換せずに受信します。
また、プログラムを書き換えないといけないので、前回のソースコードは使えません。 ご注意ください。
あと、115200bps はかなり速いので、WROOM(ESP8266)側からの文字の取りこぼしが起きます。
ブラウザから、ボタンを押すとLEDが点灯するプログラムを作っているんですが、文字振り分けをしているとプログラム速度が遅くなって、ブラウザから返って来る文字を取りこぼします。
取りこぼしをしない方法を考えないといけません。(9600は楽だったなぁ・・・)
それと、ESP-WROOM-02(ESP8266)のファームウェアアップデートはArduino のソフトウェアシリアルでは115200bpsでは無理です。
私は、何度もArduino UNOでやろうとして、どうしてもできなくて、結局USB-シリアル通信モジュールを別途で使用してやったら問題なくアップデートできました。
「工作と小物のがらくた部屋」というブログの いしわたさんサイトをかなり参考にさせていただきました。。

因みに、私の場合はシリアルターミナルソフトはTeraTermというフリーソフトを利用しました。
こういうことを記事にしていただけていることはとても助かります。ほんとうにありがとうございます。
と、いうことで、みなさん、Arduino UNO のソフトウェアシリアルは速度に気を付けてください。
あと、もう一つ。
WROOM が再起動しないということがあると思います。
前回の記事で取り上げてますが、 実はロジックレベル変換モジュールの浮遊電圧ではなくて、Arduino側にUSBで刺した場合と、アダプターを挿した場合で、起動状態が変わるようなのです。
出力ピンの電圧を測りながら、Arduino側のUSBやアダプターを抜き差しするとおかしな挙動をすることが解ると思います。
いろいろ試してみてください。
因みに、WROOMのTXピンをUSB-シリアル変換でモニターするといいと思います。
電源を入れるとWROOMはちゃんと起動していました。
以上、新しいデバイスで安いので、何かと疑ってしまいますが、ちゃんと詳細に調べてみるといろいろわかってきますね。
やっぱり測定器は必要ですね。
では、まだちゃんとした報告をするに至ってないので、今回はこれくらいにします。
また何かできましたらご報告します。

(→かなり解決し、報告するに至りました。こちらの記事をご覧ください)
ではまた・・・。

スポンサーリンク



Amazon.co.jp 当ブログのおすすめ
Amazon.co.jp
M5Stack Basic
スイッチサイエンス
Amazon.co.jp
ESPr Developer 32
スイッチサイエンス(Switch Science)
Amazon.co.jp
Amazon.co.jp

(関連記事)
Wi-Fiリアルタイムストリーミング電圧計を作りました(ブラウザのServer-Sent Events使用)
Wi-Fi LEDスイッチがようやくできました。(ESP-WROOM-02とArduinoとAndroidブラウザ使用)
ESP-WROOM-02(ESP8266)でブラウザにHello World を表示させてみました。(Arduino Android Wi-Fi接続)
ESP-WROOM-02(ESP8266)とArduinoでWi-Fi通信がやっとできました

[ホーム(home)]

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください