from machine import Pin, ADC
import network
import dht
import time
import urequests
DHTPIN = Pin(20, Pin.IN) #溫溼度感應器DHT22輸入接腳(GPIO.20),定義為DHTPIN
DHT = dht.DHT22(DHTPIN) #定義溫溼度感應器型號,以確定資料型態
LED_Temp = Pin(16, Pin.OUT) #led輸出接腳(GPIO.16),定義為LED_Temp
LED_Hum = Pin(15, Pin.OUT) #led輸出接腳(GPIO.15),定義為LED_Hum
ADC1_3 = ADC(3) #GPIO.3設定為ADC接腳,定義名稱:ADC1_3
"""
名稱:read_adc
功能說明:將選定之ADC接口做讀值並於SHELL上做顯示
細項:
ADC_channel將使用此函式時指定之ADC接口做指向,當ADC接口多時可重複使用此功能,
因PWM的Duty Cycle只接受0~1023,但ADC接口最大到4095,但又因運算子:/為無條件捨去,在此可直接除4轉至0~1023,
後將讀出數值顯示在SHELL上並回傳數值。
"""
def ADC_Read(ADC_channel):
value = ADC_channel.read()
value = int(value/4)
print("Now read ADC Voltage is,", str(value))
return value
#連線
sta=network.WLAN(network.STA_IF)
sta.active(True)
sta.connect('Wokwi-GUEST','')
while not sta.isconnected() :
pass
host='http://api.thingspeak.com'
api_key='NPHISP8YJOMYNGY2'
#主程式
while True:
h=t=0
for i in range(5):
DHT.measure() #測量當前溫度、濕度
t+=DHT.temperature() #調取溫度進入溫度加總值中
h+=DHT.humidity() #調取濕度進入濕度加總值中
ADC_Read(ADC1_3)
time.sleep(3)
h=h/5
t=t/5
#顯示溫度、濕度的平均值,上傳當前資訊
url='%s/update?api_key=%s&field2=%s&field3=%s' %(host, api_key, h, t)
print('Temperature=', t, 'C', 'Humidity=', h, '%')
#print('url=', url)
r=urequests.get(url)
print('response=', r.text)
#當溫度超過40度時,亮提示燈,反之不亮
if(t > 40):
LED_Temp.value(1)
else:
LED_Temp.value(0)
#當濕度超過60時,亮提示燈,反之不亮
if(h > 60):
LED_Hum.value(1)
else:
LED_Hum.value(0)
time.sleep(0.5)Loading
esp32-s3-devkitc-1
esp32-s3-devkitc-1