RTC in Esp32 With MicroPython
ESP32 has a RTC which is an independent clock keeps tracks of the date and time.
RTC setup and read the details
from machine import RTC
import time
rtc = RTC()
rtc.init((2022,12,27,2,10,23,0,0))
while True:
date=rtc.datetime()
print(date)
time.sleep(1)
The RTC info will be reset after power-off or reset, so we may need to try one of below to have the correct datetime
- Make sure it always has power
- Connect with another RTC, for example DS3231
- Sync time with NTP
Sync time with NTP
In this exercise, we will try to sync the time with NTP on each boot.
- boot.py
def do_connect():
import network
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
if not wlan.isconnected():
print('connecting to network...')
wlan.connect('<WIFI SID>', '<WIFI Password>')
while not wlan.isconnected():
pass
print('network config:', wlan.ifconfig())
do_connect()
def settime():
import machine
import utime
from ntptime import time
t = time()
print ("GMT: ",t)
t = t + 11 * 60 * 60 # the time returned is GMT, so added extra hours for timezone.
print ("Local",t)
tm = utime.localtime(t)
tm = tm[0:3] + (0,) + tm[3:6] + (0,)
machine.RTC().datetime(tm)
settime()
- main.py
from machine import RTC
import time
rtc = RTC()
while True:
date=rtc.datetime()
print(date)
time.sleep(1)