ESP32 時計まわり

ESP32をWi-Fiにてネットワークにつなぎましたので、次は時計まわりを整備します。

ESP32にはリアルタイムクロック(RTC)が実装されていますので、まずはどのような反応が出るか見ます。

>>> from machine import RTC
>>> rtc=RTC()
>>> rtc.datetime()
(2000, 1, 1, 5, 0, 2, 41, 237515)

2000年1月1日ですね。これでは時計として使えませんので、NTPサーバーに接続して現在時刻(UTC)に合わせます。

>>> import ntptime
>>> ntptime.settime()
>>> rtc.datetime()
(2021, 2, 22, 0, 22, 6, 52, 654317)

2021年2月22日22時6分52秒ですか、4個目の0は多分曜日を表しており月曜日、654317は・・・

>>> import utime
>>> utime.localtime()
(2021, 2, 22, 22, 16, 34, 0, 53)

utimeでローカルタイム表示で見てみましょう。

2021年2月22日22時16分34秒月曜日、年内の通算日数53日目(31+22=53)これはUTCですので、JSTに合わせます。

>>> utime.mktime(utime.localtime())
667355194
>>> utime.mktime(utime.localtime())+(9*3600)
667387595
>>> utime.localtime(utime.mktime(utime.localtime())+(9*3600))
(2021, 2, 23, 9, 26, 38, 1, 54)

9時間進めますutime.mktime()関数でローカルタイムを秒数の整数に戻します。この整数にJSTは9時間進んでいますので9時間×3600秒を足してあげます。この整数をutime.localtime()関数で時間に戻します。すると2021年2月23日9時26分38秒火曜日54日経過と日本時間に変更できました。

全体のプログラムです

実行経過です。

C:\Users\>ampy -p com4 run c:\micropython\timetest1.py
network config: ('192.168.11.25', '255.255.255.0', '192.168.11.1', '192.168.11.1')
2021/2/23 9:39:41

Follow me!

ESP32

前の記事

ESP32 ネットワーク接続