気の向くままに辿るIT/ICT/IoT
webzoit.net
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個。

Rasbee ESP8266 ESP-01 LWIP AP+STA シリアル WIFI無線モジュール

Rasbeeオリジナル FT232RL互換 3.3V/5V FTDI/USB/TTL変換アダプタ

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

SODIAL(R) モーメンタリ タクトスイッチ 6x6x7mm 100個

Rasbee 400穴 ブレッドボード 8.5*5.5cm 1個

HiLetgo 400穴 ブレッドボード 8.5*5.5cm 5個セット

HiLetgo 400穴 ブレッドボード 8.5*5.5cm 10個セット

Rasbee SY-170 ミニブレッドボード カラフルブレッドボード 5個

HiLetgo 金属皮膜抵抗 1/4W 41種類x20=820個

HiLetgo ジャンパーワイヤー(オス-オス) 20cmx40本 5セット

Rasbee ジャンパーワイヤー(オス-オス) 各種長さx65本

Rasbee デュポン ジャンパーワイヤー(オス-メス) 2.54mm 長さ20cm 40ピンx1

EasyWordMall 3.3V 5V MB102ブレッドボード用 電源モジュール パワーモジュール

KKHMF MB102ブレッドボード電源モジュール3.3V 5V Arduino Boardハンダ無しブレッドボード用

9V 電池ボックス DCケース5.5*2.1  スイッチ&背面カバーとプラグイン

uxcell バッテリコネクタ 5.5x2.1mm 9Vバッテリー用 接続バッテリー 4個入り

アルカリ乾電池 9V 1本 6LR61/B1P/V

SUCCUL ACアダプター 12V 1A センタープラス スイッチング式 最大出力12W 出力プラグ外径5.5mm(内径2.1mm)PSE取得品

 書き込まれる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モジュールも共にグルーガンで糊付け。

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

関連リンク

ウェブ造ホーム前へ次へ