from machine import Pin
import network
import dht
import time
import urequests
import utime
# === WiFi 設定 ===
sta = network.WLAN(network.STA_IF)
sta.active(True)
sta.connect('Wokwi-GUEST','') # 使用您提供的Wi-Fi名稱和密碼
while not sta.isconnected():
print(".", end="")
time.sleep(0.1)
print("✅ WiFi Connected!")
# === 裝置設定 ===
sensor = dht.DHT11(Pin(12)) # DHT11溫濕度感測器接GPIO12
led_red = Pin(25, Pin.OUT) # 紅色LED接GPIO25
led_blue = Pin(26, Pin.OUT) # 藍色LED接GPIO26
sw1 = Pin(33, Pin.IN, Pin.PULL_UP) # 誤觸偵測按鍵SW1接GPIO33
# === ThingSpeak 設定 ===
API_KEY = "795VKPTBAXIYU4VJ" # 您的API密鑰
URL = "https://api.thingspeak.com/update"
# === 紀錄設定 ===
record_count = 0
temp_sum = 0
hum_sum = 0
start_time = utime.time()
# === 函式:紅藍 LED 交錯閃爍 ===
def flash_leds():
for _ in range(5):
led_red.value(1)
led_blue.value(0)
time.sleep(0.1)
led_red.value(0)
led_blue.value(1)
time.sleep(0.1)
# === 主程式迴圈 ===
while True:
# 讀取溫濕度資料
sensor.measure()
temp = sensor.temperature()
hum = sensor.humidity()
print('Temperature: ', temp, '°C', 'Humidity: ', hum, '%')
# 上傳資料至 ThingSpeak
url = f"{URL}?api_key={API_KEY}&field1={temp}&field2={hum}"
urequests.get(url)
# 環境資料紀錄與計算平均值
temp_sum += temp
hum_sum += hum
record_count += 1
if record_count == 10: # 每10次紀錄後顯示平均值
avg_temp = temp_sum / 10
avg_hum = hum_sum / 10
print(f"Average Temperature: {avg_temp} °C")
print(f"Average Humidity: {avg_hum} %")
# 重置計數器
record_count = 0
temp_sum = 0
hum_sum = 0
# 誤觸偵測
if not sw1.value(): # 如果按鍵SW1被按下
print("Warning! SW Touched!")
flash_leds() # 紅藍交替閃爍
# 每15秒紀錄一次
time.sleep(15) # 讓每次上傳間隔15秒