LoginSignup
46

More than 5 years have passed since last update.

ESP-WROOM-02 の配線

Last updated at Posted at 2016-02-08

最近 ESP-WROOM-02 弄るときはスイッチサイエンスの ESP-WROOM-02開発ボード ばっかり使っていて楽していたら、素の ESP-WROOM-02 を弄ったとの配線でアレどうするんだっけ、となったのでメモ。

何を参考にすべきか

回路図読めるなら

見るのが一番すんなりと理解出来ると。

  • 3V3
    • 直接 3.3V 電源へ。なおUSBシリアル変換チップ経由で 3.3V とると電流不足で WiFi 有効時に安定しないので注意。
  • GND
    • GND へ
  • EN
    • プルアップ用の10k抵抗はさんで3.3V電源へ
  • IO2
    • プルアップ用の10k抵抗はさんで3.3V電源へ
  • IO15
    • プルダウン用の10k抵抗はさんでGNDへ
  • IO0
    • 通常起動(ファームウェア読み込んで立ち上げ)時はHIGH、ファームウェア書き込み時にLOWに
    • なので、通常はプルアップ用に10k抵抗はさんで3.3Vへ(HIGHに)、スイッチやジャンパピンで一時的にGNDに繋いでLOWにできる回路にする
  • RST
    • Active Low構成
    • 通常はプルアップ用10k抵抗で3.3Vに繋ぎHIGHを保ち、リセット時にスイッチが押されGNDに繋がることでLOWになりリセットがかかる。
  • TXとRX
    • RXとTXへ

ファームウェア書き込み時だけ、書き込みモードでリセットをかけたい

面倒なのが、ファームウェア書き込み時に IO0 を LOW にしつつ RST でリセットが必要なことなんだけど、ESP-WROOM-02開発ボードでは、特に何も考えずファームウェア書き込み&そのファームウェアから起動ができる。

回路図を見るとRS232C側のDTRとRTSをうまく使い、ファームウェア書き込み時にIO0がLOWになった状態でRSTがLOWになりリセットがかかるようしている。

230228a8-f28f-4035-94b7-544322c37567.png

ESP8266 へのファームウェア書き込みツールの一つ、esptool.py のコードを見ると

            # RTS = either CH_PD or nRESET (both active low = chip in reset)
            # DTR = GPIO0 (active low = boot to flasher)
            self._port.setDTR(False)
            self._port.setRTS(True)
            time.sleep(0.05)
            self._port.setDTR(True)
            self._port.setRTS(False)
            time.sleep(0.05)
            self._port.setDTR(False)

なので、最初に RTS が HIGH になり TR2 のエミッタ -> コミッタへ電流が流れ IO0 が LOW (DTRに流れる、たぶん…) になりファームウェア書き込みモードになる。その後 DTR が HIGH になりリセットがかかり、RTS も同時に LOW に戻す。

これでうまく動くんだけど、RTSが先にHIGHになりDTRを後でHIGHにしたときに、リセットのタイミングがうまくいくのかよくわかってない…。タイミングによってはIO0が先にHIGHに戻ってしまいそうな気もするんだけど、問題ないのは何故なのだろうか…。解る人居たら教えて下さい…><!

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
46