ESP8266が不安定だったけど解決した

CH_ENを使って外部からESP8266を起動させていて、動作が不安定な場合はハードウェアユーザーガイドを参照し、RC遅延回路を追加すること

ESP-WROOM-02を使って、インターネットから加工された画像を取得して、メモリ液晶
みんなのラボのブレークアウト基板を使ってテスト中)に表示させたい。インターネットから取得するときだけ、ESP8266を起動して、それ以外の時の液晶のリフレッシュや極性反転はLPC810で行う予定。LPC810ひとつだと、ESP8266の画像取得終了を検知出来ないので、2個のLPC810を使って、ひとつは液晶の駆動、もうひとつは液晶駆動LPC810から信号を受け取って、ESP8266の起動を行い、ESP8266の終了の検知をして、液晶駆動しているLPC810を再開させることにしている。
最初は、終了の検知を出来なくてもいいやと思って、LPC810ひとつでやっていたが、いまいち不安定だった。多分、リセットを行っていないからだろうと思っていたが、違った。電源が使いかけの乾電池だったから、電圧が足りないと思い、昇圧コンバーターを通してみた。そうしたら、多少安定した気がするが、やはり数回に一回はESP8266が起動しない。オシロスコープで観察したところ、電圧降下や発振が見られた。友人にこのことを聞いてみたら、昇圧コンバーターは発振することがあるらしいことが判明した。少し高い電圧に昇圧して、シリーズレギュレーターを通したらどうだろうとアドバイスをもらい、似たようなことをやってみた。9Vの電源を元に三端子レギュレーターでESP8266とLPC810の3.3Vを得て、液晶駆動用の5Vも別の三端子レギュレーターで得てみた。しかし、ダメだった。角形な9Vの電池を使ったから、これでは電流が足りないのかなと思って、単三電池6本の電池ケースを発注したり、9Vからシリーズレギュレーターで3.3Vを得るのは効率が悪すぎるので、DC/DCコンバータも発注してみた。いろいろ合わせて1万円弱を秋月に発注してしまった。発注したものは、ほとんど使わないで放置することになりそうだ。OSコンとかインダクタとかDC/DC制御ICとか。使わない気がするが、スキルをつけるために動かしてみるか…。データシート通り組んで終了だけど、放置よりは良いだろう。
なお、秋月から届いた部品は今のところ、ほぼ放置している。
ESP8266のフラッシュ書き込みのために使っているブレッドボード上でも3.3Vと5Vが得られるので、それでも試してみた。なんとなく、一番安定しているような気がするが、やはり何回かに1度は起動に失敗する。オシロスコープで観察する限りでは、一番安定していた気がする。が、ダメだった。
長くなってしまったが、疑った原因は次の二つだけだ。

  • リセット信号のタイミング
  • 電源

結局、両方とも原因では無かった。

[Document list 0A-0D] ESP8266 Hardware Guide - ESP8266 Developer Zone
原因は、ESP8266のHardware User Guideに次のように書かれていた

Note: If the power management IC is connected with the power-on enable pin CHIP_EN, it can control the power on-and-off of ESP8266EX by output high and low voltage through its GPIOs. However, pulsed current might be produced at the same time. In order to delay the transmission of pulsed signal and avoid unstable current of CHIP_EN, a RC time-delay circuit (R=1kΩ, C=100nF) is needed. There is an internal pull-up in the CHIP_EN pin, so no external pull-up is needed.

そう。
RC遅延回路を組めば良かった。

発注していなかったが、幸い、1kΩの抵抗と、0.1μFのコンデンサが家に転がっていたので利用した。
そしたら、かなり安定して動作するようになった。20回近く電源を入れ直してみたが、動作しないことは全く無かった。
そういえば、RSTピンは浮かせてはならない的な事が書かれてあった気がするが、接続忘れていても確か普通に動作した。あとでプルアップするか3.3Vに接続するかしておかねば。
RC遅延回路をユニバーサル基板に組んだ際、CH_ENに接続するところを間違えてRSTに接続してしまったり、RSTから抵抗を切り離そうとしたら、銅のパターンごと取れてしまったので最初から作り直したりして、結構時間がかかった。作り直したときも裏面だと左右か上下が反転するが、そのことで混乱して左右逆に抵抗を実装して抵抗を取るのも面倒なので1から作り直したりした。
没作が2枚出来てしまった…。

ともかく、今のところ、安定して動くので、いろいろ試してみよう。
昇圧コンバーターによる動作も行えるか試してみなければ。
あるいは、9Vからシリーズレギュレーターで電源を得た場合とかも。
乾電池で何日持つんだろう。