You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Pico W在开机时自动设置正确时间

Pico W 开机自动同步网络时间(MicroPython实现)

核心需求

Pico W使用电池供电时,内部时钟默认从2021-01-01 00:00:00启动,需要实现开机自动完成:

  • 联网获取当前标准时间
  • 将内部芯片时间同步为该时间,确保utime库返回正确时间

成熟实现方案

以下代码包含WiFi连接重试、NTP时间同步、时区调整逻辑,适配大多数低功耗场景:

import network
import ntptime
import utime
import machine

# WiFi配置信息
WIFI_SSID = "你的WiFi名称"
WIFI_PASSWORD = "你的WiFi密码"
# 时区偏移(东八区为8*3600,按需修改)
TIME_ZONE_OFFSET = 8 * 3600

def connect_wifi():
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    if not wlan.isconnected():
        print("正在连接WiFi...")
        wlan.connect(WIFI_SSID, WIFI_PASSWORD)
        # 最多重试10次,避免无限等待
        retry_count = 0
        while not wlan.isconnected() and retry_count < 10:
            utime.sleep(1)
            retry_count += 1
            print(f"重试连接 {retry_count}/10")
        if wlan.isconnected():
            print(f"WiFi连接成功,IP: {wlan.ifconfig()[0]}")
        else:
            print("WiFi连接失败,进入深度睡眠")
            machine.deepsleep()
    return wlan

def sync_ntp_time():
    try:
        # 使用国内NTP服务器提升同步速度
        ntptime.host = "cn.pool.ntp.org"
        ntptime.settime()
        print("NTP时间同步完成")
        # 转换为本地时区时间并设置到RTC
        utc_time = utime.time()
        local_time = utc_time + TIME_ZONE_OFFSET
        machine.RTC().datetime(utime.localtime(local_time) + (0,))
        print(f"本地时间已设置: {utime.localtime(local_time)}")
    except Exception as e:
        print(f"NTP同步失败: {e}")
        machine.deepsleep()

# 开机执行主逻辑
if __name__ == "__main__":
    wlan = connect_wifi()
    if wlan.isconnected():
        sync_ntp_time()
        # 同步完成后断开WiFi,降低功耗
        wlan.disconnect()
        wlan.active(False)
    # 后续业务逻辑可在此添加

关键细节说明

  • WiFi重试机制:针对信号不稳定场景设置10次重试上限,失败后进入深度睡眠节省电池
  • 时区适配:NTP返回UTC时间,通过偏移量转换为本地时间,直接写入RTC确保utime返回正确本地时间
  • 低功耗优化:时间同步完成后主动关闭WiFi,适合电池供电的便携场景
  • 异常容错:捕获同步异常避免程序卡死,失败后触发深度睡眠减少无效功耗

使用注意事项

  1. 确保Pico W刷入官方最新版MicroPython固件(已内置network和ntptime模块)
  2. 替换代码中的WIFI_SSID和WIFI_PASSWORD为实际WiFi信息
  3. 不需要时区转换时,可移除TIME_ZONE_OFFSET相关逻辑,直接使用UTC时间

内容的提问来源于stack exchange,提问作者Flood

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 11:24:24