おもちゃ、家電、もろもろの修理の足跡と備忘録

色々と忘れるので。趣味のメモ

ESP8266/NodeMCUのdeep sleepとonboard Reset Switchの共存方法

古い話です。2019年頃、ESP8266/NodeMCUをLUAで制御して、よくある気温/湿度/気圧をambientに送るのをやっていました。そのハードウェアの部分の修正の話です。 これですね。

ESP8266DEVkit, nodeMCU, LUAで温度と気圧をInternetで送る(ハードウェア編)

久しぶりに湿度のトレンドを見たくなり、引っ張り出してきたのですが、なんと何を思ったかambient側の設定を消去してしまっており、再度ambient側を立ち上げても、ESP8266のLUA側の設定を変えないとデータ受信できない状態であることがわかりました。で、過去ログを見ながら設定をして、再度動くようになりました。そこまではよし。

で、その途中で、ESP8266のonboard Reset Switchを押したのだけれど、Resetが効かない。あれ?Switchの接点が酸化しちゃったかな、位に思っていたのだけれど、Switchをチェックするとふつーにmakeするので、???。

色々と確認をしてみると、onboardのReset Switchを押すとRST端子の電圧が1.6V位になっているので、これじゃlow判定されないのでResetが掛からないことが判明。ほぉ。 多分、D0側、onboard Reset Switch側、どちらにもPull Up抵抗がついていて、onboard Reset Switchをmakeしてもlow に判定される電圧までに落ちないのだろう、と推測。(2019年に作ったときからそうだったんでしょうね、、、)

色々考えた結果、D0がhigh(deep sleep状態)のときはonboard Reset Switch側のPull Upがあるので、D0がlowになった時にのみ効くようにすれば良いか、ということで、下図の様にRST端子とD0端子の間にダイオードをD0側がカソードになるように入れてやることで解決しました。

もう、この先ESP8266 を触ることはないとは思いますが、WEBを漁っても明確な対処が見つけられなかったのでどなたかのお役に立てば。