上海のESPRESSIF社が開発したESP8266EXというコントローラに32Mbit(=4MByte)のSPIフラッシュメモリが搭載されたものです。現在は16Mbit(2MByte)に変更になっています。(2017/09/25)ArduinoIDE以外の環境で開発する際は、ESPRESSIF社のドキュメントなどをよく参照する必要があります。逆に言えば、ArduinoIDEでの開発は、あまり細かいところは気にせず使いはじめることができます。以下の記事は、2016/09/04現在ものものです。最新版ではリンクやドキュメントが変更されている可能性があります。Wi-FiシールドはWi-Fi通信機能のないArduinoボード(その他Arduinoピン互換のボード)にWi-Fi通信機能を付加するボードです。Wi-Fiシールドを制御します。Wi-Fiシールド上のスライドスイッチを切り替えることで、Arduinoとのシリアル通信をハードウェアシリアルで行うか、ソフトウェアシリアルで行うか選択することができます。シリアル通信の電圧がJP2のジャンパソケットで切り替えられるようになっていますので、5V系・3.3V系どちらのArduinoボードとも接続可能です。ATコマンドを使ってWiFIアクセスポイントにアクセスする以下に、アクセスポイントに接続する再のATコマンドの利用例を示します。実際に利用したコマンドの説明も軽く行います。2.0.0に即しています。送信レスポンス:OKこの設定はフラッシュに書き込まれません。設定を保存したい場合はAT+CWMODE_DEFを使ってください。送信アクセス可能なアクセスポイントをリストアップします。周波数オフセット用のキャリブレーションAT+CWDHCP_CUR=1,1の送信モジュールのモードおよびDHCPによるIPアドレス振り当てを有効にします。DHCP有効レスポンスOKこの設定はフラッシュに書き込まれません。設定を保存したい場合はAT+CWDHCP_DEFを使ってください。接続先アクセスポイントのSSIDとパスワードを設定し、接続します。IPこの設定はフラッシュに書き込まれません。設定を保存したい場合はAT+CWJAP_DEFFを使ってください。AT+CIPSTA_CUR?の送信ESP-WROOM-O2に割り当てられたIPアドレスを確認します。レスポンス(例)+CIPSTA:ip:"192.168.11.27"+CIPSTA:gateway:"192.168.11.1"+CIPSTA:netmask:"255.255.255.0"OK以上の流れを、例えばSSIDがmyAP、パスワードがmypasswordのアクセスポイントに対して接続する場合で示すと以下のようになります。IPOKAT+CIPSTA_CUR?+CIPSTA_CUR:ip:"192.168.43.40"+CIPSTA_CUR:gateway:"192.168.43.1"+CIPSTA_CUR:netmask:"255.255.255.0"OK最小限のコマンドは、AT+CWMODEでモードを変更するAT+CWJAPでアクセス先を指定するの二段階です。ATコマンドでIP通信ができることを確認するせっかくなのでHTTPプロトコルにのっとってWEBページのデータを持ってこようと思います。今回はパソコンにpythonで簡易HTTPサーバーを立てて、そこにESP-WROOM-02でアクセスします。SimpleHTTPServerを利用しHTTPサーバーを立てます。3系や他の言語の場合、それに従ってください。今回は、ポート8000、パソコンのローカルIPアドレスは192.168.0.9とします。シリアルモニタはArduinoIDE付属のものを利用しています。通信速度は115200bps、改行はCR+LF。自分の管理外のサーバーに対してアクセスをする際は最大限の注意を払ってください。以下の情報を利用することで発生したいかなる損害等に対しても責任を負いません。送信し、クライアントモードを有効にします。送信し、アクセスポイントにアクセスします。送信し、192.168.0.9:8000にTCP接続します。送信し、送信するデータの準備に入ります。空白のままEnterを押します。5.と合わせて送信データが合計18文字になるので、自動的に送信されます。ここまでが正しく行われている場合、サーバー側に以下のデータが送られます。HTTP/1.1<CR><LF><CR><LF>よって、サーバー側のアプリケーション(今回はpyhtonのSimpleHTTPServer)は所定の動作を行うはずです。今回は以下の様な応答がありました。/</h2><hr><ul>(中略)</ul><hr></body></html>CLOSED簡素な通信内容ですが、TCP/IP関連の動作が確認できます。ATモード用にFlashを書き直すArduinoIDEやLuaScprit用にESP-WROOM-02モージュールを設定すると、以降は基本的にその使い方をする他ありません。ここでは、ESP-WROOM-02にATコマンド用のファームウエアを書き込む方法を解説します。これにより、ATコマンド用ファームウェアのアップデートや、一旦Arduinoとして使ったモジュールのATコマンド用の変更ができます。Flashの容量が2MByteになっています。以下の記述は記事執筆時点のものですので、2MByte版をお使いでファームウェアを書き換える際には各項の追記をご参照ください。TOOLを開き、DonwloadPathConfigに書き込むbinファイルと書き込み先アドレスを指定してください。SDKのディレクトリ)\bin\at\readme.txtに記載されている設定の中の32Mbit-C1の項目を利用します。(2017/09/25)\bin\boot_v1.6.bin0x00000\bin\at\1024*1024\user1.2048.new.5.bin0x01000\bin\esp_init_data_default.bin0x3fc000\bin\blank.bin0xfe000\bin\blank.bin0x3fe000左のチェックボックスをチェックし、パスとアドレスが緑になっていることを確認してください。SpiFlashConfigは、以下のように設定してください。USBシリアル変換アダプターでPCとシリアル接続します。USBシリアル変換アダプターと接続が可能です。STARTを押し、書き込みを開始します。当モジュールは書き込みの際は書き込みモードで起動しなければなりません。IO0をLOWにしておくことで、書き込みモードで起動することができます。基板上のFLASHボタンを押すことでIO0はLOWになります。当モジュールは書き込みモードで起動します。後はSTARTを押して書き込みを開始します。下部のプログレスバーがいっぱいになり、FINISHと緑色の画像が表示されれば書き込みは終了です。ArduinoIDEなどシリアルモニタからATと送信しOKと返答があれば書き込みは正常に行われています。改行コードはCR*LF、レートは115200bpsにしてください。.スイッチサイエンス・ウェブショップhttp://www.switch-science.com/。