ことのおこり
1000円程度の格安WiFiモジュール。
用意するもの
[[]]
接続と設定
ハードウェアの接続は以下のとおり。USBシリアル変換モジュールの出力電圧はTTLレベル(RS232Cレベル=±12V ではない)
FT232RL | ESP-WROOM-02 |
GND | GND |
TXD | RX |
RXD | TX |
FT232RLモジュールは3.3VをVccとして出力できるが、ESP-WROOM-02は送信時(電源投入時も?)電流を食うらしいので、念のために外部電源を使用する。今回は3.3V1AのACアダプタを使用している。
ESP-WROOM-02
VCC | 3.3V ACアダプタ |
EN | HIGH |
/RST | HIGH |
IO15 | LOW |
IO0 | HIGH |
IO2 | HIGH |
{IO0, IO2, IO15} でモードの設定をする。
IO0 | IO2 | IO15 | 用途 |
GND | HIGH | GND | Flaah書き込み |
IO0がGNDでないと書き込めない。
また、書き込む前に、nRSTか EN をいったん GND にしてからでないと書き込みに失敗する。
nRSTは、物理的にタクトスイッチをつける。
ENは書き込み器 FT232RL に接続して、HIGH/LOW を制御したいところであるが、arduino IDE を使う前提だとFT232RLのGPIOの制御が難しそう。
なので。取り敢えずはリセットボタンをいったん押してから、arduino IDE の書き込みボタンを押す。
毎回コンパイルが走るのはいかがなものか。
調歩同期通信の設定
data | 8bit |
parity | none |
stop bit | 1 |
bps | 115200 |
ターミナルの設定
改行コード | CR+LF |
通信テスト
ESP-WROOM-02で使えるATコマンドはこちら。
使用例:
接続できているかの確認。
AT OK
ファームウェアのバージョンを表示。
AT+GMR AT version:0.25.0.0(Jun 24 2015 18:02:27) SDK version:1.1.2 compile time:Jun 24 2015 18:15:29 OK
再起動(リセット)。
AT+RST OK
ets Jan 8 2013,rst cause:1, boot mode:(3,0) load 0x40100000, len 1396, room 16 tail 4 chksum 0x89 load 0x3ffe8000, len 776, room 4 tail 4 chksum 0xe8 load 0x3ffe8308, len 540, room 4 tail 8 chksum 0xc0 csum 0xc0
2nd boot version : 1.4(b1) SPI Speed : 40MHz SPI Mode : QIO SPI Flash Size & Map: 8Mbit(512KB+512KB) jump to run user1 @ 1000
ru・ ready
WiFi の設定
うまくいっているみたいなので、WiFiの設定に入る。(SSIDとパスワードは実際の値を入力する)
AT+CWMODE=1 OK
MODE
1 | staitionモード |
2 | APモード |
3 | softAP+stationモード |
AT+CWJAP="WiFiルータのSSID","パスワード"
WIFI CONNECTED WIFI GOT IP OK
WiFiルータから割り振られたIPを表示。(IPとMACの値はWeb表示用のダミー)
AT+CIFSR +CIFSR:STAIP,"192.168.100.100" +CIFSR:STAMAC,"12:34:56:78:9a:bc" OK
ファームウェアのアップデート
間違えてファームウェアを壊したときに復旧することも考え、アップデート方法の調査。
ねむいさんの記事。多謝。
AT+GMR で、ATバージョンが0.25から0.50に更新できたことを確認した。
ファームウェアを更新した直後だと、アクセスポイント AP のIP設定できていたが、クライアント(station)のIPは設定されていなかった。(当然か)。
AT+CWJAP コマンドで、自宅のWiFiルータのSSIDとパスワードを設定したところ、stationとしてのIPが設定されていることを AT+CIFSR コマンドで確認できた。