2017年2月25日土曜日

無線LANマイコンの決定版 ESP-WROOM-02 / ESP8266(1/2)

遅ればせながら、無線LANマイコンを使ってみた。
ArduinoのIDEで開発できるところが素晴らしい。
簡単に無線LANに接続し、マイコン⇒Raspberry PiへUDPのデータ送信ができた。
こんな強力なデバイスを個人が数百円で買えるなんてすごい時代だ。

本稿では、幾つかハマったところを中心に記録します。

<前半>
①買い物
②基板概要
③ATコマンド実行
④ファームウェア焼き直し

<後半:次記事へ>
⑤Arduino環境構築
⑥UDPクライアント
⑦UDPサーバ(Raspberry Pi+Ruby)

#####################

①買い物
スイッチサイエンスか、秋月でESP8266でググればOK。
自前でピッチ変換やUSB⇔シリアル変換やスイッチ実装できるなら、秋月だと割安。
(狭ピッチのマイコンのみで550円、ピッチ変換実装済で650円くらい)

スイッチサイエンスは秋月よりは高いが、開発ボードが優れている。
オススメは「ESPr Developer」で、必要なスイッチや抵抗やUSB⇔シリアル変換も実装済。
2017/2月時点で2,160円だが、お金や小型実装に拘らないならこれ一択。
少なくともH/Wでは困らないので、時間短縮できる。


②基板概略
・3.3V動作
・IEEE802.11a/b/g対応、技適OK!(日本国内で無線LANが合法利用できる)
・32bitマイコン(非ARM)
・UART/I2C/SPI等対応
・10bit ADC 1ch
・GPIO 9ch

ATコマンドだけで無線接続を構成できるので、親機Arduino+無線機ESP8266という構成も見かける。
これはESPのRAMを書き換えると技適に反する懸念があったためで、今は問題ない事を先人が確認してくれている。
スイッチサイエンス社の当該記事

ESP8266のIOで十分なら、わざわざ外部ボードを繋がなくてもよい。
もしくは、ESP8266を親とし、I2Cで周辺機器を繋げばよい。


③ATコマンド
ESP8266は、通常起動させるとシリアルでATコマンドを受け付けるモードになる。
Arduino IDEで書き込んで単体で動かすなら不要だが、初期不良のチェックも兼ねて一度はATコマンドで無線LANに繋いでおくほうがよい。

不用意にコマンドを打つと、シリアルで繋げなくなるので要注意。
どんな効力を持つコマンドかよく調べてから実行しないと危険。
そのときは④のファーム焼き直しへ。

シリアル設定は以下の通り。
・115200bps (最初のMessageは74800で送ってくるが、無視してよい)
・8bit
・パリティなし
・Stop bit = 1bit
・フロー制御なし

ESPr DeveloperならUSBでそのまま繋げる。
Arduino IDEのシリアルモニタを使うと楽。
うまくいかないときは、電源を指し直すかRESETスイッチを押すとよい。

ATのみもしくはAT+<COMMAND>という形式で制御する。

(1) AT
動作確認用。うまく認識できていれば、OKを返す。

(2) 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:22
 OK

(3) AT+CWMODE=1
無線LANのモードをクライアントにする。
これをやらないとAP設定受け付けない。
2にすると、APになる様子。


(4) AT+CWJAP=<SSID>,<PASSWORD>
無線LANのAP設定を書き込む。


(5) AT+CIFSR
今のIP等の設定を確認する。上のCWJAPがうまくできており、接続したAPでDHCPが動いていればIPが表示される。


検証のみなら(1)~(5)で事足りると思う。
他の機能が使いたければ、「ATコマンド」で調べるとよい。


④ファーム焼き直し
ここまでは順調だったが、以下のATコマンドを打ったらシリアルがうまくつながらなくなった。
・AT+UART_DEF=9600,8,1,0,0

以下のサイトを参考にし、ファームを元に戻せば復活した。
http://nemuisan.blog.bai.ne.jp/?eid=215341

ファームの書き込みは、ボードをSPI書き込みモードにする事で実行できる。
ESPr DeveloperならFLASHを押しながらリセットするとSPI書き込みモードになる
書き込みが始まるまではSWを押し続けないといけない。


続きは別投稿とします。


<以下、メモ>
Arduinoを対応させる
http://qiita.com/dz_/items/eb7c80d3caf4a5c84274

Arduino
最新の1.8.1をccから導入
zipがよい
http://arduino.esp8266.com/stable/package_esp8266com_index.json