ESP8266-01の接続(その3)

Arduino Pro Mini 3.3V, 8MHz から、EASP8266-01を経由してWiFiに接続するにあたって、いくつかの条件を満たしたいと考えていました。

  1. Arduino Pro Miniと、ESP8266との間は、デフォルトのまま、115200 baudのシリアル通信速度で通信したい。
  2. この本来のシリアル通信の他に、FTDI経由で Arduino Pro Miniに色々なコマンドを打ち込んだりして、ESP8266との通信(WiFi通信)をインタラクティブに実験したい。そのため、2つめのシリアル通信ポートをSoftwareSerialのライブラリを使って実現したい。
  3. Arduino Pro Miniの本来のシリアル通信は、ATmega328Pのデバイスに搭載されているハードを使っているので、115200 baud以上の通信でも問題ないが、SoftwareSerialのライブラリのシリアル通信では、このスピードが出ないという記事が沢山投稿されている。せいぜい9600baud程度が実用的な速度という記事もあり(8MHz のArduinoに於いて)、とても 115200 baudを期待することはできそうにも無い。
  4. FTDI経由のWiFi実験用、インタラクティブな操作(シリアル入出力)は、9600baud程度でも問題ないと思われる。
  5. Arduinoにプログラムを書き込むときには、FTDIから高速で書き込みたい。

このような条件を、Arduinoへのプログラム時と、プログラム後の実行時で、FTDIの接続を変更することにより実現することにしました。

【Arduinoへのプログラム時】

接続は、下図の通り、FTDIのTXをProMiniのRXI, FTDIのRXをProMiniのTXOに接続し、USBからの電源は、FTDIへの電源供給のみとして、Pro Miniは、ESP8266との接続を考慮して、別電源の3.3Vから取っています。(もちろん、GNDはFTDIとPro Miniの間で接続しておく必要があります)

Pro Miniの基板端には、FTDIのピン配列に合わせたピンが出ていますが、下の写真のように、プロとボードの接続を使いたかったため、このFTDI用のピンは使わず、側面にあるTXO端子(D0), RXI端子(D1)のピンにジャンパーで接続しています。

なお、FTDIからのDTR信号をProMiniのDTRピン(GRNピン)に接続した場合、Pro Miniの基板内で、下記のように 0.1uFを経由してリセット端子に接続される事により、ATmegaへの書き込み時に自動的にリセットが掛かるようになっています。うまく考えられているなぁ、と感心します。

ただ、ArduinoのIDEからスケッチが書き込まれる直前(コンパイルが終わった直後)に、タイミング良く、Pro Miniに搭載されているリセットスイッチを、チョンと押してやると、書き込みは正常にできますので、このDTRの接続は必須ではないです。(チョン・・のタイミングは、ちょっと気を使いますが・・・)

imageDSC09727

これで、FTDI経由でPro Miniのプログラミングが出来ることを確認できました。

次は、SoftwareSerialライブラリを使った、二つ目のシリアルポートを構築したスケッチを用意して、プログラムが終わった時点で、FTDIの接続を変更して、二つ目のシリアルポートを、「シリアルモニタ」に繋いでみようと思います。

この切替えを、少しでも楽にするために、最小限の接続 (TXとRXだけ)で、FTDIをつなぎたかった訳です。 (残念ながら、手元にFTDI が一つしか無いため・・・。もう一つ、買う必要あり・・・)

【二つ目のシリアルポートを構成する】