MicroPython连接WIFI,关闭WIFI,NTP同步时间,MAC获取函数,目前在ESP32-S3上测试可用,理论上来说有WIFI模块的并刷了MicroPython固件的都能通用。
import network
import time
import ntptime
# RTC相关,如需要可以保留
# from machine import RTC
# 同步NTP时间
def sync_time():
try:
# NTP服务器
ntptime.host = 'ntp.aliyun.com'
ntptime.settime()
# 时间偏移
tm = time.localtime(time.time() + 8 * 3600)
# 设置RTC时间,如果需要可以保留
# rtc = RTC()
# rtc.datetime((tm[0], tm[1], tm[2], 0, tm[3], tm[4], tm[5], 0))
return True
except Exception as e:
print("时间同步失败:", e)
return False
# 连接到 WiFi 网络
def connect_to_wifi(ssid, password, timeout=30):
wlan = network.WLAN(network.STA_IF) # 创建 WLAN 对象
wlan.active(True) # 激活 WLAN 接口
# 检查是否已经连接到 WiFi
if wlan.isconnected():
print('已经连接到 WiFi 网络')
print('网络信息:', wlan.ifconfig())
sync_time()
return True
wlan.connect(ssid, password) # 尝试连接到 WiFi 网络
start_time = time.time() # 记录开始时间
# 循环等待连接成功或超时
while not wlan.isconnected():
current_time = time.time()
elapsed_time = current_time - start_time
if elapsed_time > timeout: # 超时判断
print('连接 WiFi 超时')
wlan.active(False) # 关闭 WIFI
return False
print(f'正在连接到 WiFi... 已耗时: {elapsed_time:.1f}秒')
time.sleep(1) # 每秒钟检查一次连接状态
# 连接成功后打印网络信息
print('成功连接到WiFi网络')
print('网络信息:', wlan.ifconfig())
# 连接成功后同步NTP时间
time.sleep(1)
sync_time()
return True
#关闭wifi
def off_wifi():
wlan = network.WLAN(network.STA_IF)
if wlan.active():
wlan.active(False)
return True
return True
#获取MAC地址
def mac():
mac = ':'.join(['{:02X}'.format(b) for b in network.WLAN().config('mac')])
return mac
假如上述代码保存在同路径下的 wifi.py
文件
#引入wifi.py
import wifi
#连接wifi
wifi.connect_to_wifi("WIFI名", "密码",)
#连接WIFI的函数内部已经做了同步NTP时间的处理,如果没同步到也可以手动同步一遍
wifi.sync_time()
#关闭WIFI
wifi.off_wifi()
#获取mac地址
print(wifi.mac())
至此。
本网站所载信息和资料仅供一般性研究参考,本网站有部分内容来自互联网,如该等内容无意中侵犯了某相关方合法拥有的知识产权等法律权利,请来电或致函告知并提供相关证明材料,本网站会在核实无误后进行删除。
评论 (0)