気の向くままに辿るIT/ICT/IoT
IoT・電子工作

ESP-01用GPIO0/リセットボタン付き簡易回路を作る

ホーム前へ次へ
ESP8266って?

ESP-01用GPIO0/リセットボタン付き簡易回路を作る

ESP-01用GPIO0/リセットボタン付き簡易回路を作る

2017/06/30

 Wi-Fi(wifi)モジュールESP8266はArduinoボードがなくてもESP8266自体にスケッチを書き込むことができるマイコンを搭載しているので機能は限定されるとはいえ、Wifi搭載ArduinoボードとしてArduino IDEからスケッチを書き込むことができるスグレモノ。

 ただ、ESP8266には、いろんな種類があり、スケッチ書き込みにあたっては、USBポートがないため、FTDIなどのモジュールを使うことになり、リセットボタンがないものは、スケッチをアップロードする前に一瞬、GPIO0ピンとRESETピンのON/OFFをなんらかの方法により時間差で切り替える必要があり、そのための簡易回路があると便利なので自作してみたという話。

 リセットボタンがないESP8266でもFTDIモジュールにRTS/CTS、DTRなどの端子があれば、RTSとRST、DTRとGPOI0を接続すればとか、Arduino IDEの[ツール]メニューでESP8266ボードを選んでReset Methodにnodemcuを選択すると、これら回路を必要とせずともその辺を良きに計らってくれるという情報もあり、確認できる環境にはあるも自身は未確認。

[2018/06/30]

 今更ながら...この回路を作る必要もなく、ESP-01のGPIO0/RSTと手持ちのFTDI232系のシリアルUSB変換モジュールのDTR/RTSのピンホールを接続すれば、自動アップロード可能であることを確認...。

 この回路に使ったのは、245円の3.3V/5V対応USBシリアル変換モジュール(FTDI)1個、100円ショップSeriaにもあるUSB(Aオス-ミニBオス)ケーブル、5個200円のミニブレッドボード1個、10個150円のタクタイルスイッチ2個、40ピンで105〜120円のジャンパワイヤ(オス-メス)計10本、任意のスケッチを書き込む今回は、278円のESP8266(ESP-01互換?)1個。

 書き込まれるESP8266を入れても約730円、ESP8266を除いて書き込み装置の試作品としてみると約450円...激安品を使って単価割りするとこんな感じ。

[2018/06/28]訂正・追記

 当時はまだ理解不足でFTDIなどシリアルUSB変換モジュールから電源をとっていて書き込みもできるにはできたし、そう書いていましたが、訂正...。

 Arduinoのピン出力は最大でも40mA前後、ESP8266は、200mAに留まらず、300mAを超えることもあるとされる為、書き込み時はともかく、実行時には、入力電圧3.3Vは、単独の別電源5Vから負荷過渡応答特性に優れた電圧レギュレータで作るのがよさ気(そうでないと瞬間的に著しい電圧降下に見舞われ、ESP8266のリセットがかかり、挙動が不安定になる要因になる模様)。

 検証においては、ブレッドボード用の電源モジュール(入力電圧:DC6.5-12V or USB 5V/出力電圧:DC3.3V/5V)を使うと良いでしょう。

 電源としては、概ね電流1A以上の9Vや12VなどのAC/DCアダプタでも良いし、9V/006P電池+DCプラグ付き電池スナップやケースでも良いでしょう。

ESP8266用GPIO0/RESETボタン付き簡易回路

 ESP8266は入力電源仕様が3.3Vであるため、ブレッドボード用電源モジュールの3.3V(ジャンパピン or スイッチによる切り替え)と3.3V/5V対応FTDIモジュールの3.3V(ジャンパピンによる手動切替 or 自動切替)、もしくは、3.3V専用FTDIモジュールを使用します。

 ESP8266のピンレイアウトは画像検索ででも、FTDIは実機で確認するものとして、要は、ESP8266のGPIO0ピンとRSTピンをそれぞれ個々のタクトスイッチのIN/INPUT/入力として接続、各タクトスイッチとESP8266のGNDFTDIモジュールのGNDにまとめては、電源モジュール・ブレッドボードのマイナスへ、ESP8266のVCCとCH_PDは、FTDIモジュールのVCCは、電源モジュール・ブレッドボードのプラス(3.3V)へ、ESP8266のTX/RXはFTDIモジュールのRX/TXに互い違いに接続・配線するだけ。

 書き込まれる側を差し替えることを考慮してジャンパワイヤを分けているため、配線本数が増えてしまい、ごちゃごちゃしていますが、実際には、かなりシンプルな回路。

 もちろん、ユニバーサルボードにはんだ付けすれば、もっとシンプルで小型に...。

 手順は、以下の通り。

  1. esp8266/Arduino後段の説明を参照、Arduino IDEのボードマネージャを使うなどしてESP8266ボードを登録
  2. ESP8266ボードを[ツール] => [ボード]メニューから、シリアルポートを[ツール] => [シリアルポート]メニューから選択・確認

 続いて任意のスケッチを選択、必要に応じて編集、もしくは新規作成の上、コンパイル&アップロードするわけですが、次のようなちょっとしたテクニックを要します。

  1. アップロード開始直後に簡易回路のリセットとGPIO0に当たるボタンを同時に押し、ちょっとしてから、まず、GPIO0のボタンリセットボタンだけを放し、更にちょっとしたらリセットボタンGPIO0も放す

 これをアップロード中の短時間の間に行なうという思いの外、タイミングが重要な、まるで冗談のような小技を使えば(タイミングさえ合えば)、ESP8266にスケッチへの書き込みが完了します。

 そのための簡易回路がこれというわけです。

ESP8266アップローダ回路兼用ケース
[2017/09/16]

 常備しておくことにしたESP8266書き込み簡易回路を100円ショップSeriaで買った『約100枚収納可能トレーディングカードケース』に収納してみました。

 フタにある突起は、GPIO0とRST/RESET用のボタンスイッチ(間に挟まれた1個は飾りという名の失敗の名残)で加工作業用にしている100均で買った30Wのハンダゴテで穴を空け、やはり、100円ショップで買った80個108円のプッシュピン(押しピン・画鋲)をはめ、100均のグルーガンで固定、タクトスイッチに届くようにサイズ合わせして切った100均で買ったMDF材をプッシュピンに挿し、フタの柔軟性でスイッチを押せる仕組み。

 失敗の名残については、黄色いボタンを付ける位置が端過ぎて微妙にフタの弾力を利用しづらいこと、2つのボタンを近くに並べると一方のボタン押下で他のボタンも押されてしまわないようにする調整が結構面倒だったこと、それでも黃ではなく、青ピン位置を変えるのが、最も近道に(手抜きができると)思えたことなどから、黄色はそのまま使うこととし、直近、隣の青の押しピンを外すのもなんなのでダミーの木片を挿し、タクトスイッチの位置を変更、黄色スイッチと離れたところにした次第。

 必要な配線を外に出せるように2箇所容器に切り込みを入れ、8本あるESP8266の足の内、1本は使いませんが、1つのコネクタっぽくするため、線を抜いたジャンパワイヤのメスピンを1個持ってきてはめ、カプトンテープでグルグル巻にし、7本のケーブルの根元付近を結束バンド(インシュロック)で固定、ESP8266をより手軽に差し替えられるようにしてみました。

 ただ、このケースESP8266への書き込み簡易回路だけを収めるには有り余る、複数つなげることも想定して凹凸のあるミニブレッドボードを長手方向に2個接続したら、このケースにピッタリだったので同じミニブレッドボードを使ったArduinoISPを併設、USBポートは、これと2個並ぶ格好で反対側に穴あけをし、接続できるようにしてあります。(ケース側面の黒いマーキングは結果反対側になってしまったFTDIモジュールのUSBポート用のもの。)

 とはいえ、2つまとめてみたところでWifi自体のチャネル数や無線親機やアクセスポイントの対応端末数などもあって、そんなに次から次へとESP8266を買うわけでも、同じESP8266のスケッチをとっかえひっかえアップロードしまくるわけでもないし、ArduinoISPも頻繁に使うものでもありませんが...。

 ブレッドボード自体は、元々付いている両面テープで貼っただけ、なんならグルーガンで補強してもよいかとも思っており、FTDIモジュールは、100均で買った木製クリップ(洗濯バサミ?)を分解、片方だけを容器底に、木片とFTDIモジュールも共にグルーガンで糊付け。

 まぁ、なんだ、全てにおいて雑の極みですが、使えればよし、ということで。

ホーム前へ次へ