ESP8266をWifiモデムとして使う

ESP8266モジュールの初期設定


ファームウエアの書き込みが終わったらUARTポートを使って、ESP8266モジュールの動作確認と初期設定を行います。
TTL-USB変換モジュールをESP8266に接続後、TelaTermを起動して、シリアルポートを指定します。
TeraTermメニューの設定→端末→改行コードで送信改行コードをCR+LFに変更しないとコマンドを受け付けません。


ESP8266の初期設定を行うための結線は以下のようになります。
こちらの回路のGPIO0(水色のライン)をGND→PullUp に変更するだけで す。
リセットSWを押してOKと表示されればファームは正しく書き込めています。


OKと表示されないときは以下のいずれかの原因です。
・ファームが正しく書き込まれていない
・TeraTermのボーレートが正しくない
・TeraTermの送信改行コードがCR+LFになっていない
・配線が正しくない


以下の手順で初期設定を行います。

@AT+RST:モジュールリセット
AT+RST
OK

ずらずらと表示される
ほとんどの場合、文字化けしていますが気にすることは有りません
初期化シーケンス中はボーレートが変化します

ready

AAT+GMR:バージョン表示
AT+GMR
AT version:1.3.0.0(Jul 14 2016 18:54:01)
SDK version:2.0.0(656edbf)
compile time:Jul 19 2016 18:44:44
OK

BAT+CIPSTAMAC?:MACアドレス表示
AT+CIPSTAMAC?
+CIPSTAMAC:"60:01:94:0e:5b:28"

OK

CAT+CWMODE?:現在のWifiモード表示(初期値は2のSoftAp Mode)
AT+CWMODE?
+CWMODE:2

OK

DAT+CWMODE=1:Station Modeへ変更
AT+CWMODE=1

OK

EAT+CWLAP:アクセスポイントの一覧を表示
AT+CWLAP
+CWLAP:(4,"aterm-e625c0-g",-53,"c0:25:a2:ac:cb:ba",3,11,0)
+CWLAP:(1,"aterm-e625c0-gw",-53,"c2:25:a2:ac:cb:ba",3,11,0)
+CWLAP:(0,"ESP_011834",-51,"62:01:94:01:18:34",3,28,0)
+CWLAP:(0,"AI-THINKER_0D944E",-33,"62:01:94:0d:94:4e",3,30,0)
+CWLAP:(0,"ESP_1B06BB",-51,"5e:cf:7f:1b:06:bb",3,15,-40)
+CWLAP:(3,"ap-wpsG-a8bf10",-56,"1a:fe:34:de:9f:ac",3,8,-40)
+CWLAP:(4,"W02_DCEE061392A6",-77,"dc:ee:06:13:92:a6",11,33,0)

OK

FAT+CWJAP="SSID","Password":アクセスポイントへ接続
AT+CWJAP="aterm-e625c0-g","APのPassword"
WIFI CONNECTED
WIFI GOT IP

OK

GAT+CIPSTA?:IPアドレス表示
AT+CIPSTA?
+CIPSTA:ip:"192.168.10.127"
+CIPSTA:gateway:"192.168.10.1"
+CIPSTA:netmask:"255.255.255.0"

OK

HAT+CWQAP:アクセスポイント切断
AT+CWQAP

OK
WIFI DISCONNECT

ESP-01をWifiモデムとして使う場合、ArduinoとESP-01の間はUARTで通信します。
UNOには1系統のハードウェアUARTが有りますが、ハードウェアUARTで通信すると、 デバッグが何かと厄介です。
そこで、ESP-01とはソフトウェアUARTで通信することにして、ボーレートは安全を見て4800Bpsに変更します。

IAT+UART_DEF:UARTのフレーミング(通信速度など)設定
AT+UART_DEF=4800,8,1,0,0

OK

このコマンドを実行するとボーレートが変わるので、一切のコマンドを受け付けなくなります。
TeraTermメニューの設定→シリアルポートでボーレートを4800bpsに変更します。

再びモジュールリセットを行うと最後に接続したAPに自動的に接続します。
また、電源を入れただけでも最後に接続したAPに接続します。
この機能を使えば、一度正しいAPに接続してしまえば、それ以降APの情報は必要ありません。
「AT+CWAUTOCONN」で有効/無効を切り替えることができます。
AT+RST

OK
WIFI DISCONNECT
DP(ニjヨ,(トV?I#Vd・
ready
WIFI CONNECTED
WIFI GOT IP
AT+CWJAP?
+CWJAP:"aterm-e625c0-g","c0:25:a2:ac:cb:ba",3,-52

OK

ESP8266の設定については、以下のページを大いに参考にさせていただきました。ありがとうございます。
ESP8266 (ESP-WROOM-02)を使う
ESP-WROOM-02の通信速度の設定
ESP-WROOM-02とArduino UNOでhttp通信

ATコマンドの詳細はATコマンドリファレンスに記載されていますが、このドキュメントは頻繁に更新されています。
最新版は「ESP8266 AT Instruction Set」で検索してください。

書き込みと動作確認はGPIO0の扱いが違うだけです。
そこで、以下の様なボードにすると、スライドSWの切り替えだけで、ファームの書き込みと動作確認を行う事ができます。





このようなボードを作ってみました。
ESP-01の横のスライドSWで書き込み/確認を切り替える事ができます。




このようなESP-01専用アダプターを見つけました。
5V→3.3Vのレギュレータが載っていて、UNOの5Vから直接給電できます。
GPIO0はPullUpに固定されているので、ファームを書き込むことはできません。
ATファーム実行専用です。Aliで100円以下で買えます。


ESP-01を取り付けるとこのようになります。



このアダプターのschematicが公開されていました。
ESP8266のTTLレベルは3.3.Vですが、BSS138を使ってTXとRXを双方向にレベルシフトしています。






このボードはSTM32F103の開発ボードですが、直接ESP01をマウントすることができます。
ESP01とはUARTで通信します。




AT-FirmwareのREADME.mdを見ていたら、ファームウェアの自動アップデートのやり方が書かれていまし た。
そこで、本当に自動アップデートできるのかどうか試してみました。
まず、最初にこ ちらからv2.0.0(AT version1.3.0.0)のファームを落として書き込みます。
以下は自動アップデートのログです。
ファームの更新が終わるとAPを切断し、リセットが掛かります。
リセット後に確認するとv2.0.0→v3.0.5に更新されています。
AT+GMR
AT version:1.3.0.0(Jul 14 2016 18:54:01)
SDK version:2.0.0(656edbf)
compile time:Jul 19 2016 18:44:44
OK
AT+CWMODE=1

OK
AT+CWJAP="aterm-e625c0-g","xxxxxxxxxx"
WIFI CONNECTED
WIFI GOT IP

OK
AT+CIFSR
+CIFSR:APIP,"192.168.4.1"
+CIFSR:APMAC,"62:01:94:0e:5b:28"
+CIFSR:STAIP,"192.168.10.108"
+CIFSR:STAMAC,"60:01:94:0e:5b:28"

OK
AT+CIUPDATE
+CIPUPDATE:1
+CIPUPDATE:2
+CIPUPDATE:3
+CIPUPDATE:4

OK
WIFI DISCONNECT

 ets Jan  8 2013,rst cause:2, boot mode:(3,6)

load 0x40100000, len 816, room 16
tail 0
chksum 0x8d
load 0x3ffe8000, len 788, room 8
tail 12
chksum 0xcf
ho 0 tail 12 room 4
load 0x3ffe8314, len 288, room 12
tail 4
chksum 0xcf
csum 0xcf

2nd boot version : 1.2
  SPI Speed      : 40MHz
  SPI Mode       : QIO
  SPI Flash Size : 8Mbit
jump to run user2

ready
WIFI CONNECTED
WIFI GOT IP
AT+GMR
AT version:1.7.5.0(Oct 20 2021 19:14:04)
SDK version:3.0.5(b29dcd3)
compile time:Oct 24 2017 15:48:04
Bin version(Wroom 02):1.5.1
OK

次回からはATコマンドを使ったネットワーク通信を紹介 します。