# 匯入所需的函式庫
from machine import Pin, ADC # 從 machine 模組引入 Pin 和 ADC 類別
from umqtt.robust import MQTTClient # 從 umqtt.robust 模組引入 MQTTClient 類別
import network, urequests, ujson # 引入 network、urequests、ujson模組
import dht # 引入 dht 模組
import time # 引入 time 模組
# 連接到 Wi-Fi 網絡
sta = network.WLAN(network.STA_IF) # 建立Wi-Fi station(STA)物件
sta.active(True) # 啟用Wi-Fi介面
sta.connect('Wokwi-GUEST','') # 連接到指定的Wi-Fi網絡,請替換成你的Wi-Fi SSID和密碼
while not sta.isconnected(): # 等待直到連接成功
pass
# 設置 Thingspeak 讀取所需的主機地址、通道ID和API密鑰
Read_host = 'http://api.thingspeak.com/channels/' # Thingspeak API 主機地址
Read_ChannelID = '2493946' # Thingspeak 通道 ID
Read_api_key = 'GWV7STHOYKR79YBS' # Thingspeak API 密鑰
# 初始化用於控制 LED 和讀取 ADC 值的引腳
LED_ADC = Pin(21, Pin.OUT) # 創建Pin物件,將GPIO21設定為輸出腳,並給定別名為LED_ADC
LED_Temp = Pin(20, Pin.OUT) # 創建Pin物件,將GPIO20設定為輸出腳,並給定別名為LED_Temp
LED_Hum = Pin(19, Pin.OUT) # 創建Pin物件,將GPIO19設定為輸出腳,並給定別名為LED_Hum
LED_ADC.value(0) # 初始時將 ADC LED 關閉
LED_Temp.value(0) # 初始時將溫度 LED 關閉
LED_Hum.value(0) # 初始時將濕度 LED 關閉
'
while True:
res = urequests.get("%s%s/feeds/last.json?api_key=%s"%(Read_host,Read_ChannelID,Read_api_key))
# 向 Thingspeak API 發送 GET 請求
data = ujson.loads(res.text) # 解析 JSON 格式的響應數據
ADC = float(data['field1']) # 從響應數據中獲取 ADC 值
Temp = float(data['field2']) # 從響應數據中獲取溫度值
Hum = float(data['field3']) # 從響應數據中獲取濕度值
print('ADC =', ADC, 'V', 'Temp =', Temp, 'C', 'Hum =', Hum, '%') # 打印讀取的數據到控制台
# 根據 ADC 值和溫濕度設置 LED 的狀態
if (ADC < 1.25): # 如果 ADC 值小於 1.25
LED_ADC.value(1) # 將 ADC LED 打開
else:
LED_ADC.value(0) # 將 ADC LED 關閉
if (Temp > 40): # 如果溫度值大於 40
LED_Temp.value(1) # 將溫度 LED 打開
else:
LED_Temp.value(0) # 將溫度 LED 關閉
if (Hum > 60): # 如果濕度值大於 60
LED_Hum.value(1) # 將濕度 LED 打開
else:
LED_Hum.value(0) # 將濕度 LED 關閉
time.sleep(3) # 延遲3秒