前回の記事ESP8266 (ESP-WROOM-02)を使う でESP-WROOM-02とシリアル通信でATコマンドを送りアクセスポイントへのアクセスまで行いました。次にArduinoとの接続を行います。ArduinoとはSoftware Serialで繋ぐ事にします。Arduinoの標準通信ポートはプログラムの時に使うので他のポートでESP-WROOM-02と通信した方がデバッグが簡単になります。しかし、ここで一つ問題があります。ESP-WROOM-02の標準通信速度は115200bpsです。ArduinoのSoftware Serialは115200bpsでは通信出来ないようです。
SoftwareSerial: begin(speed)を見ると115200bpsでも通信できると書いてありますが、試した所できませんでした…
そこで、ESP-WROOM-02の通信速度を9600bpsまで落とします。57600bpsとかでも良さそうですが、ESP-WROOM-02の旧バージョンのFirmwareでは9600bpsだったのでそれに合わせます。
通信速度の設定は以下のコマンドで行います。
AT+UART_DEF=9600,8,1,0,0
通信速度を変えるコマンドにAT+IPRがありますが、こちらは使ってはいけません。これを使うとESP-WROOM-02が反応しなくなります。古い資料にはこのコマンドが出ているので注意してください。この状態になるとFirmwareの書き直しとかが必要なようです。(私はやったことないのですが)
ATコマンドの詳細はESP8266 AT Instruction Setにあります。
AT+UART_DEFは13ページにあります。
AT+UART_DEF=<baudrate>, <databits>,<stopbits>, <parity>,<flow control>
<baudrate> UARTbaudrate
<databits> data bits
5: 5 bits data
6: 6 bits data
7: 7 bits data
8: 8 bits data
<stopbits> stop bits
1: 1 bit stop bit
2: 1.5 bit stop bit
3: 2 bit stop bit
<parity> parity
0: None 1: Odd 2: EVEN
<flow control> flow control
0: disable flow control
1: enable RTS
2: enable CTS
3: enable both RTS and CTS
AT+UART_DEF=9600,8,1,0,0は通信速度9600bps、8ビットデータ長、ストップビット1、パリティ無し、フローコントロール無し、という設定になります。