齢寿天任せ

写真付きで日記や趣味を書くならgooブログ

Seeed Studio XIAO ESP32C3でWifiによる時刻設定が可能な時計の製作

2023-03-04 16:23:32 | 電子工作

Seeed Studio XIAO ESP32C3はESP32互換でWifiが利用できるMCU(マイクロコントローラ)である。外形はSeeed Studio XIAOと同じ大きさ、超小型である。スイッチサイエンスから購入(送料200円)した。Wifiのアンテナが付属していて、I-PEXコネクタで本体に接続するタイプである。余談だが、I-PEXコネクタが極小で、接続に苦労した。

試しに何かWifiを利用したものを作ってみようと考え、NTP(タイムサーバー)から時刻と日付を参照し、XIAOのRTC(リアルタイムクロック)に設定する時計を製作した。

いままで、RTCを内蔵したMCUをいくつか利用してきたが、時刻設定の機能をHW、SWで実現するのが手間な上に、電源OFFの度に設定が必要になるので、時計として利用しようとは思わなかった。それが、インターネットに接続してNTPから時刻と日付を参照できればことは簡単である。時刻を利用した作り物にも展開できる。

NTPから時刻を設定する方法はこちらのサイトを参考にさせて頂いた(感謝)。時刻関係のライブラリ(Timelib.h)はこちら。表示は定番のSSD1306のOLED、ライブラリはライブラリ管理から検索可能(Adafruit版)。

Wifiは、2つのWifiステーションのうち、電波の強い方を自動で選択できるように、WiFiMulti.hライブリを利用した(一つしかない場合は一方を適当に指定すればよい)。

I2Cの接続はデフォールト(SDA:4、SCK:5)でよい。

XIAO ESP32C3にはSleep機能があるので、時刻の更新時以外はスリープさせると、使用電力(十数mA)を節約できる。ただし、スリープさせるとArudionoIDEからスケッチの書き込みができなくなるので要注意である。スリープを有効にするのは、最後の書き込み時のみにする必要がある。なお、スリープを有効にしてしまった後は以下の手順で復旧できる。これは、スケッチの誤りで、XIAO ESP32C3がリセットを繰り返すような場合にも利用できるので覚えておく価値があると思う。

  1. USBを抜く
  2. BOOTボタンを押したままUSBを挿す、押したまま
  3. IDEからスケッチを書き込む
  4. 書き込みが完了したら、BOOTボタンを離す
  5. RESETボタンを押す

本記事のスケッチはこちらを参照のこと。

帆のように見えるのはWifiのアンテナである。シールになっていて貼付けることができる。右側の基板はアンテナの台として利用、XIAOには未接続である。