ESP8266モジュールは沢山あり、技適の問題にも前記事で触るところまで記事にした。
ESP-01でもESP-12EでもESP-WROOM-02でもESP8266シリーズであれば、ブートモードの設定などは同じなのでESP8266モジュールの括りで記事を書いていこうとおもう。主に参考にしたサイトは以下で、治具づくりのベースとなっている。
ESP8266のブートオプション
まず、ESP8266のブートオプションを確認する。
ESP8266のブートは3種類ある。
- 通常起動モード : 転送したスケッチを動作させるFlashメモリからの起動モード
- プログラム書込モード : スケッチの転送時に使うUARTモード
- SDカード起動モード : SDIOモードってことからラズパイとかと接続するときにのモード?調査中
SDIOモードは今回は利用しないのでGPIO15はLOW(GND)に接続しておけばよい。そしてGPIO2はHIGHに固定し、GPIO0にLOW/HIGH切替スイッチをつけておけばよいということになる。
次に、ESP8266をシリアル接続してスケッチの書き込みや実行をするための治具(jigの当て字って初めて知ったw)を作る。ブレッドボード上でもできるんだけどケーブル本数が多くなる。デバック時に接触不良なのかなんなのかよくわからなくなってくるので、一個作っておいたほうが楽とおもう。
ESP8266の治具の作成
上の出典はESP-01でI2Cを使う方法として提案させている回路。ESP-01は最小限のPINしか装備されておらずGPIO0とGPIO1でI2C接続を行う回路図である。これにリセットスイッチを加え、12VのACアダプタから電力供給するために、3.3Vと5Vをレギュレーターを加える。ESP8266の消費電力は大きいため、FT232からの電源供給だけではなく、別途で電源を用意すべきであると説明されている。USBシリアル変換器の電圧は3.3Vで設定している。
5Vのレギュレータはセンサーなど取り付け時、ロジックレベル5Vの機器を接続するピンヘッダ用であり必須ではない。レギュレーターのコンデンサは省略している。
またI2C(SDA・SDL)のラインは必要なければ330Ωの抵抗と共に不要。ESP-WROOM-02やESP-12でI2Cを利用するシーンならばGPIO0と2をわざわざ利用する必要もないし、別のGPIOピンを使えばいいかなと思う。けど、プルアップ抵抗の必要数が少なくなるのはメリットかなとも・・・
リセットスイッチはタクトスイッチ。プログラムスイッチはON-OFFできるスイッチを利用した。プルアップ抵抗はいろんなサイトでは10kΩが多かったが、うまくいかないこともあった。参考サイトのように3.3kΩにすると安定して動作したのでこうしている。
ESP-01つないでんじゃねーか!!
という突っ込みはあれとして・・・w。知らずに買ってしまったので、せめてブート動作確認に使わせてください…。見えにくいけどSCL・SDAはどこにもつながっていません。ESP8266には2×4、FT232には1×4のデュポンコネクタで接続しています。ちなみにESP-01はGPIO15が装備されていないところ見るとLOWに固定されているのでしょうね。
手元にESP-12Fも偶然wあったので、2×4デュポンコネクタからつなげるアダプタを作りつないでみました。GNDを熱収縮チューブの中で分岐させてGNDとGPIO15に接続です(GPIO15に3.3kΩ抵抗挟めたほうがよいかも)。あとのコードはシルク印刷通りにつなぎます。せっかくピンヘッダにつけたのに半田で固定していますが、接触不良でイラつくのを回避するためですw。
CH_PDはENと書いてあることもあります。というかENのほうが多いと思いますけど。次は接続確認です。
ESP8266の接続確認
まず接続確認するには起動時のログが表示できるか、ATコマンドが通るかですね。まず、プログラムスイッチを切(GPIO0=HIGH・起動モード)にして接続します。テラタームでもArduinoIDEのシリアルコンソールでもいいんで、FT232のCOMポートでボーレート74880bps、改行CR/LRにします。ESP8266モジュールには通電ランプがあるものもあればないものもあります。この状態でリセットボタンを押すとTxにつながっている青色LEDがチラチラっと光り、起動時ログがコンソールに出力されます。
左がESP-01で右がESP-12です。最後の文字化けはボーレートが115200bpsになるためです。ボーレートを115200bpsにして再度リセットをおしてATと送るとOKと帰ってくれば正しく接続できています。
ATコマンドを詳しく知りたい方は以下のリファレンスを読むとよいです。
後の記事にも記しますが、スケッチを一度書き込んでしまうと、ブート情報が書き換えられてしまうまで、このATコマンドで起動できなくなります。特に問題はないのですが、AruduinoとESP8266を接続してWifiにつなげる場合などブート情報をレストアしなければならないことがあります。このために、初期のブートファームウェアをバックアップしておいたほうがイイでしょう。
続きは、次回の記事で書いていきます。