ESP32定时控制GPIO2灯
作者:xzb | 分类:开发板 | 浏览:7 | 日期:2026年04月21日直接在 Thonny 里运行、ESP32 可用、每天 7:30 自动点亮 GPIO2 灯 1 分钟后关闭的完整 MicroPython 代码。
功能说明
每天 7:30 自动打开 GPIO2(开发板板载 LED)
保持 1 分钟 后自动关闭
自带网络同步时间(不用手动设时间)
掉电/重启后依然能自动运行
完整可直接复制代码(MicroPython)
import machine
import network
import ntptime
import time
# ===================== 配置区 =====================
WIFI_SSID = "你的WiFi名称" # 改成你的WiFi
WIFI_PASSWORD = "你的WiFi密码" # 改成你的WiFi密码
TARGET_HOUR = 7 # 几点
TARGET_MINUTE = 30 # 几分
DURATION_SECONDS = 60 # 持续时间(秒)
LED_PIN = 2 # 板载LED引脚(大部分ESP32是2)
# ==================================================
# 初始化LED
led = machine.Pin(LED_PIN, machine.Pin.OUT)
led.value(0) # 初始关闭
# 连接WiFi
def connect_wifi():
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
if not wlan.isconnected():
print("正在连接WiFi...")
wlan.connect(WIFI_SSID, WIFI_PASSWORD)
while not wlan.isconnected():
time.sleep(0.5)
print("WiFi连接成功!IP:", wlan.ifconfig()[0])
# 同步网络时间(NTP)
def sync_time():
try:
ntptime.settime()
print("时间同步成功!")
# 东八区偏移 +8小时
tm = time.localtime(time.time() + 8 * 3600)
print("当前时间:%04d-%02d-%02d %02d:%02d:%02d" % tm[0:6])
except:
print("时间同步失败,稍后重试")
# 主循环:每天定时开关灯
def main_loop():
while True:
# 获取东八区时间
now = time.time() + 8 * 3600
tm = time.localtime(now)
current_hour = tm[3]
current_minute = tm[4]
current_second = tm[5]
# 打印时间(每秒一次)
print("当前时间:%02d:%02d:%02d" % (current_hour, current_minute, current_second))
# 判断是否到 7:30:00
if current_hour == TARGET_HOUR and current_minute == TARGET_MINUTE and current_second == 0:
print("=== 到达设定时间,开灯!===")
led.value(1) # 开灯
time.sleep(DURATION_SECONDS) # 保持设定时长
led.value(0) # 关灯
print("=== 时间到,关灯!===")
time.sleep(50) # 防止重复触发
time.sleep(1)
# 启动
print("===== ESP32 定时开灯程序 =====")
connect_wifi()
sync_time()
main_loop()使用方法
打开 Thonny
把 ESP32 连接电脑
复制上面代码
修改 WiFi 名称和密码
点击运行
效果
每天 7:30:00 GPIO2 输出高电平 → 灯亮
持续 60 秒
自动关闭
每天重复执行
常见问题
灯不亮?
部分 ESP32 板载 LED 是 低电平点亮
把代码里的 led.value(1) 和 led.value(0) 互换即可
时间不准?
代码已经用了 NTP 网络对时
确保 WiFi 能上网
总结
代码实现每天 7:30 自动开灯 1 分钟
自带 WiFi 对时,无需手动设置时间
直接在 Thonny 运行,无需额外库
稳定、掉电重启后自动继续运行

