ArduinoでESP8266(ESP-01)を制御+通信する #5

こんにちは、ばいろんです。

#1~#4までArduinoとESP8266をつないで通信する際の問題(ボーレート、電流、ソフトウェアシリアルの利用)について考えてきました。

それらを踏まえて私が行った対策を時系列順でまとめてみようと思います。

 

  • 問題1「ArduinoからESP8266へ供給できる電流が足りない」

ESP8266で必要な電流はmax360mA。しかし、Arduinoの3.3Vピンで供給できる電流は50mA。電流が足りないと通信が不安定になります。

対策としては流せる電流の容量が大きいArduino互換ボードを用います。

  • SainSmart製のArduino(3.3V : 150mA(仕様では50mA))
  • BUONO UNO R3(3.3V : 300mA)

私はリーズナブルなSainSmart製のArduinoを使用しましたが、財布に余裕があればBUONO UNO R3の利用をおすすめします。

 

  • ソフトウェアシリアルの使い方

ESP8266との通信でハードウェアシリアル(RX、TX)を使うと、デバッグがめんどうくさいのでソフトウェアシリアルを利用します。(これででスケッチをアップロードするときの0ピン、1ピンを抜き差しする動作からも解放されます)

スケッチの紹介

#include <SoftwareSerial.h>
SoftwareSerial mySerial(11,10); // RX, TX
void setup()
{
Serial.begin(115200);
mySerial.begin(115200);
}
void loop()
{
}

これで11ピンと10ピンをシリアル通信用のピンとして使うことができます。ただ、ソフトウェアシリアルは通常のRX、TXを使ったシリアル通信ほど通信速度が出ない点が注意です。

  • ボーレートの変更

ソフトウェアシリアルで使えるシリアル通信のボーレートは9600bpsと考えてよいです。ここで問題なのはESP8266のデフォルトのボーレートが115200bpsという点です。私はここでどうしてもソフトウェアシリアルが使いたかったのでESP8266のボーレートを下げる方法を紹介します。

まず配線です

ソフトウェアシリアルを利用するスケッチを参考に、ESP8266とArduinoを通信させるスケッチを作成しました。

#include <SoftwareSerial.h>
SoftwareSerial mySerial(11,10); // RX, TX
void setup()
{
  Serial.begin(115200);
  mySerial.begin(115200);
}
void loop()
{
  if(mySerial.available())
  Serial.write(mySerial.read());
  if (Serial.available())
  mySerial.write(Serial.read());
}

これでPCで入力した内容を(Arduino経由で)ESP8266に送信することができます。こういう点ではArduinoは非常に便利です。

これでシリアルモニタに次のように入力するとESP8266のボーレートを変更できます。シリアルモニタのボーレートは115200bps、CRおよびLFを右下のプルダウンメニューで選択しておいてください。

コマンド:AT+UART_DEF=9600,8,1,0,0

16_07_27_serial01

このコマンドが使えないESPのモジュールがあることも確認しています。もしもerrorが出た場合には次のコマンドを試してみてください。

コマンド:AT+CIOBAUD=9600

16_07_27_serial2

こちらは返り値がerrorとなりますが正常に動作します(ガバガバ)。

私の場合は、とりあえず基本的にはAT+UART_DEF=9600,8,1,0,0のコマンドを使用し、使えなかった場合はAT+CIOBAUD=9600を使いました。

 

今回はESP8266を使うために今まで行ったことをまとめてみました。

確実に使えるように保証するものではありませんが、私の環境ではこれで動作するようになりました。

次回はついにESP8266同士での通信です。

 

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Scroll to top