秋葉原の秋月電子の店頭で何気なくWIO NODEを見かけて、その場でスマホを取り出し仕様をチェックしたときには「これで、Raspberry Piよりずっと安くコンパクトにIoT機器が作れる!」っと喜び勇んでいました。
しかし、Arduino IDEでプログラミングして機器に組み込んで運用してみると...、取り付け時は動作しているのに時間が経つと動かなくなっている...。
最初はプログラミングの問題でメモリリーク的な事が発生しているのかと思ったのですが、トラ技に載っていた「ESPスタータ・キットXブレッドボードボードで作るIoT実験ボード」では問題が起きない...。WIO NODEでいったい何が起きているのだろう...。
そんなある時、ESP8266 core for Arduinoのドキュメントを眺めていたらESP-specific APIsという項目に前回のリセット理由を返すESP.getResetReason()を見つけました。
早速setup()の中に記述してみると...
記述例
Serial.println("/r/nReset Reason: " + ESP.getResetReason());
表示例
Reset Reason: Power on
「Power on ???」そう言えばトラ技の記事には電源に47μFのデカイ電解コンデンサが付いているのに、不安定な場合は470μFってカッコ書きがあった...。
手持ちのUSB電源アダプタ4種類では、リセット頻度が変わるだけで全滅でした。
試しに千石電商で購入していたリチウムイオンポリマー電池を繋げてみると...リセットが起きない!マジですかっ!!!
組み込もうとしていたIoT機器は常時動作している必要があってしかもAC電源がある場所であったため、電源にUSB電源アダプタを選択していました。
結局、USB電源アダプタとリチウムイオンポリマー電池の両方を繋げてバッテリーを充電する状態にしても安定して動作することがわかったので、費用がかさむのですがバッテリー交換を無くしてメンテナンスフリーにできる方法を選ぶことにしました。