ともかつの日記

仕事や日常で扱った PIC などのマイコンや Raspberry Pi、パソコンについて書き残していきます。

ESP-WROOM-02 を使ったネットワーク時計

ESP-WROOM-02 のネットワーク機能を使ったサンプルを作ろうと考えたものの、よいアイディアがなかったので、以下の URL にあったものを拡張して、ネットワーク時計(NTPサーバーによる自動補正機能付き)を作ってみました。

f:id:VEJ00675:20180112094023j:plain

元にしたページ

ベースになったのは、以下の URL の内容です。もともとは、現在時刻を NTP で取得して、シリアルコンソールに表示するプログラムでしたが、パソコンと接続していなくても動作が確認できるように、LCD に表示するようにしました。

qiita.com

ハードウェア

今回のハードウェアは、安価に ESP-WROOM-02 を使おうと秋月電子通商の「Wi-Fiモジュール ESP-WROOM-02 DIP化キット [AE_ESP-WROOM-02]」(写真左側の青い基板)を、「ESP-WROOM-02開発ボード [AE-ESP-WROOM02-DEV]」のように使えるようにした書込基板(写真上の基板)と、文字を表示するための「I2C接続小型キャラクタLCDモジュール 8x2行 [AQM0802A-RN-GBW]」を実装した LCD 基板を組み合わせて実現しています。

f:id:VEJ00675:20180110202049j:plain f:id:VEJ00675:20180110202105j:plain

基板のパターンは、下図のような感じです。回路的には「ESP-WROOM-02開発ボード [AE-ESP-WROOM02-DEV]」と同等のものとなっています。「Wi-Fiモジュール ESP-WROOM-02 DIP化キット [AE_ESP-WROOM-02]」は IC ソケットで接続するようにして、その IC ソケットにピンソケットを並べてあるので、ブレッドボードなどを併用することで各種の動作確認が行えます。

f:id:VEJ00675:20180112144703p:plain

下の写真のように、組み合わせて使用します。今回のような別のハードウェアを必要としないものであれば、このまま実行できますが、別のハードウェアが必要な場合には、実行する基板に ESP-WROOM-02 を差し替えることを想定しています。実行環境には、必ずしもパソコンと接続するためのシリアルーUSB変換は必要ありませんから…

f:id:VEJ00675:20180110202129j:plain f:id:VEJ00675:20180110202156j:plain

ソフトウェア

元にしたプログラムと同様に、NTP サーバーとのやりとりには「GitHub - PaulStoffregen/Time: Time library for Arduino」と「GitHub - exabugs/sketchLibraryNTP」を使用しています。また、I2C接続のキャラクタ液晶 「I2C接続小型キャラクタLCDモジュール 8x2行 [AQM0802A-RN-GBW]」のために「GitHub - tomozh/arduino_ST7032: ST7032.cpp - Arduino LiquidCrystal compatible library」も使っています。

感じたこと

こんな風に見ると、いろいろとカスタマイズしてあるものの、プログラムの大筋はもとのままだったりします... (^-^;

苦労したのは次のような点でした。

  • ESP-WROOM-02 の動作には予想以上の電力が必要で、プログラムの書き込みは USB からの供給で行えるものの、書き込んだプログラムの実行、となると USB からの供給では足りなくなる。使用する三端子レギュレータにも注意が必要!
  • どこかに原因があるのだろうが、Arduino IDE にインストールされた「Arduino core for ESP8266」のバージョンを 2.4.0 にアップグレードすると、Wi-Fi のアクセスポイントに接続できなくなる現象が発生した。2.3.0 にダウングレードすることで、同じプログラムのままで正常に動作するので、バージョンアップによって何かしらの不具合か仕様変更が発生したのだと思われる。
    プログラム中に、妙に Wi-Fi の接続部分にデバッグ表示が行われているのはそのためです。(-_-;