最近,WiFiモジュールのESP-WROOM-02にハマっています。Arduino IDEでESP-WROOM-02のプログラムを書いてアップロードできるのは便利です。ESP-WROOM-02にstandardFirmata.wifiを書き込んでおいて,Node.js + johnny-fiveでESP-WROOM-02に接続したデバイスをコントロールすれば簡単にIoTの実験ができます。
ESP-WROOM-02のプログラムを作るときスイッチサイエンスのESPr Developer(ESP-WROOM-02開発ボード)を便利に利用しています。Arduino IDEからプログラムのアップロード時には自動的にESP-WROOM-02がプログラム書込みモードに遷移します。

ESPr Developerがどのようにしてプログラム書込みモードに遷移させるのか興味があったので回路図を見ると,USB-SerialからのDTR,RTSでトランジスタ2個で構成した回路(EX-NOR?)を叩き,その出力でESP-WROOM-02のIO0とRESETをON-OFFして遷移させていることがわかりました。
ESPr_devESPr Developerと同様なモノにNodeMCUがあります。(WiFiモジュールにはESP-12を使っています。ESP-12の内部コアはESP-WROOM-02と同じESP8266コアです)
NodeMCUもArduino IDEから利用することができます。当然,自動的に書込みモードに遷移します。
NodeMCUの基板を見るとドランジスタ構成の回路は見当たりません。
回路を見るとやはりDTRとRTSでIO0とRESET信号を制御する回路はありません。
USB-SerialのDTRはIO0にRTSはCH_PDに直結されています。
nodemcu_schESP-WROOM-02,ESP-12とも内部はESP8266コアを使っていますので,ESP-WROOM-02もNodoMCUと同じ方法で書込みモードに遷移させることができるのではないかと考えました。ESP-12のCH_PDというピンはESP-WROOM-02にはありません。が,同等のピンが備えられているだろうと予想しました。EPS-12を使った色々な回路を眺めているとESP-WROOM-02のENがCH_PDだろうと予想が付きました。双方のデータシートを見比べればESP-WROOM-02のCH_PD同等のピンを確定できると思いますが,とりあえず実験して見ます。

USB-SerialのDTRをESP-WROOM-02のIO0にRTSはENに直結します。
Arduino IDEのボード設定でReset Methodをnodemcuにしてプログラムのアップロードを行うと自動的に書込みモードに遷移しました。
test_ESP

双方のマニュアルを見比べてCH_PDとENについて調べました。CH_PDとENはコアチップESP-8266EXのCHIP_ENに接続されています。

【注意】

DTR–IO0,RTS–ENを接続した状態でArduino IDE のシリアルモニタを開くとRTS–ENがLOWになり,ESP-WROOM-02はLow-Powerモードに入り動作が止まります。
シリアルモニタするときはRTSとENの接続を切ってENをHighにプルアップしておく必要があります

ESPr Developerのトランジスタ回路はDTRとRTSがともにLowのときIO0,RESETはHighを保ちます。従ってシリアルモニタを開いてもリセットはかからず動作継続するのでシリアルモニタが可能になります。

修正:2016.08.31 19:00
初校:2016.08.31 13:40