気の向くままに辿るIT/ICT
webzoit.netウェブサイトホームページ
IoT・電子工作

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

ウェブ造ホーム前へ次へ
サイト内検索
カスタム検索
Arduinoって?

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

ESP8266用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を選択すると、これら回路を必要とせずともその辺を良きに計らってくれるという情報もあり、確認できる環境にはあるも自身は未確認。

 この回路に使ったのは、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個。

HiLetgo FTDI FT232RL 3.3V 5.5V USB to TTLシリアルコンバーター

Amazonベーシック USB2.0ケーブル 1.8m Aオス-miniBオス 7GUK

HiLetgo 6*6*7MM 縦型マイクロスイッチ(10個)

5pcs SY-170 ミニブレッドボード カラフルブレッドボード [並行輸入品]

HiLetgo ブレッドボード用ジャンパーワイヤ メス-オス 20cm(40本)

HiLetgo ESP8266 WIFI UARTモジュール

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

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

 ESP8266は入力電源仕様が3.3Vであるため、FTDIモジュールには3.3V用もしくは、3.3V/5V対応FTDIモジュールの3.3V(ジャンパピンによる手動切替 or 自動切替)を使用する。

 ESP8266のピンレイアウトは画像検索ででも、FTDIは実機で確認するものとして、要は、ESP8266のGPIO0ピンとRSTピンをそれぞれ個々のタクトスイッチのIN/INPUT/入力として接続、各タクトスイッチとESP8266のGNDはFTDIモジュールのGNDにまとめて(コモン)、ESP8266のVCCとCH_PDは、FTDIモジュールのVCCに、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モジュールも共にグルーガンで糊付け。

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