【目的】配置wifi,并连到路由器,获取NTP时间,更新RTC时间,并获取当前的日期与时间。
1、打开Thonny连接到开发板。
2、新建wificonnect.py。这个文件主要的功能是开wlan。配置wifi的SSID与PWD,连接到wifi后打印出ip信息。
from network import WLAN
from network import STA_IF
from time import time
from time import sleep_ms
from gc import mem_free
SSID = "HONOR 30S"
PWD = "12345678@@@"
def wifi_connect():
print("\nAvailable memory: %s Byte" % str(mem_free()))
wlan = WLAN(STA_IF)
wlan.active(True)
start_time = time()
if not wlan.isconnected():
print("\nThe current device is not networked and is connecting ....")
wlan.connect(SSID, PWD)
while not wlan.isconnected():
sleep_ms(500)
if time() - start_time > 10:
print("\nFail !!!")
break
if wlan.isconnected():
IP_info = wlan.ifconfig()
print("Wifi is connected with the following information:")
print(" IP address : " + IP_info[0])
print("Subnet mask : " + IP_info[1])
print(" Gateway : " + IP_info[2])
print(" DNS : " + IP_info[3])
wifi_connect()
3、新建datetime.py,这个函数主要的功能是获取NTP时间,更新RTC。获取RTC的日期以及时间。代码如下:
# datetime.py
from ntptime import settime
from utime import localtime
from utime import time
from machine import RTC
def set_time():
print("\nTime being calibrated...")
settime()
rtc=RTC()
tampon1=time()
tampon2=tampon1+28800
rtc.datetime (localtime(tampon2)[0:3]+(0,)+localtime(tampon2)[3:6] + (0,))
print("OK!\n")
def date_now():
a = localtime()
print(str(a[0])+'-'+str(a[1])+'-'+str(a[2]))
def time_now():
a = localtime()
print(str(a[3])+':'+str(a[4])+':'+str(a[5])+'\n')
4、新建main.py代码如下
# datetime.py
from ntptime import settime
from utime import localtime
from utime import time
from machine import RTC
def set_time():
print("\nTime being calibrated...")
settime()
rtc=RTC()
tampon1=time()
tampon2=tampon1+28800
rtc.datetime (localtime(tampon2)[0:3]+(0,)+localtime(tampon2)[3:6] + (0,))
print("OK!\n")
def date_now():
a = localtime()
print(str(a[0])+'-'+str(a[1])+'-'+str(a[2]))
def time_now():
a = localtime()
print(str(a[3])+':'+str(a[4])+':'+str(a[5])+'\n')
运行后效果如下图:
【总结】
micropython给esp32提供了很多好用的库,实现起来非常容易。
【注意】
如果使用网络,USB的线材质量一定要好。要不会在开启网络连接时报错。
|