(二) 空品溫濕度與風扇
溫度監控裝置
空氣品質資料擷取、資料上傳手機
高溫啟動散熱設定
材料與軟體準備:
硬體:開發板WeMos D1 mini,像小電腦一樣可以寫入指令,串聯感應器與反應裝置。
軟體:Thonny 是適用「初學者」的Python開發環境 ,我們參考了幾本書籍後,決定以此為開發環境。
感應器:溫濕度傳感器使用DHT11。
溫溼度控制器: VCC接正(5V);GND接負,紅燈亮;DATA接D1mini的D7(13) 之pin孔。
Thonny 軟體下載:https://thonny.org/
CH341SER_EXE 驅動程式下載
溫溼度感應器連接:VCC接正(5V);GND接負,紅燈亮;DATA接D1mini的D7(13) 之pin孔
Thonny 軟體下載:https://thonny.org/
安裝 Thonny 開發環境: 下載後請雙按執行thonny-4.0.1.exe
下載讓Thonny連線D1mini的驅動程式https://www.wch.cn/downloads/CH341SER_EXE.html: 下載後請雙按執行CH341SER_EXE
在Thonny寫出指令如下:
from machine import Pin
import time, network, urequests
import dht
import BlynkLib
from BlynkTimer import BlynkTimer
sta_if=network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.connect("網路名稱", "網路密碼")
while not sta_if.isconnected():
pass
print('wifi connect') //網路連線會顯示wifi connect
token="在Blynk網站上申請的金鑰"
blynk=BlynkLib.Blynk(token)
# temp D7 //溫度控制器安裝位置D7
temp = dht.DHT11(Pin(13))
def timer_handler():
res = urequests.get("https://api.waqi.info/feed/taiwan/sanchong/?token=在api網站上申請的金鑰")
j=res.json()
print(j['data']['city']['name'],'空污指數',j['data']['aqi'])
blynk.virtual_write(1, j['data']['aqi'])
res.close() //寫出空污指數
try:
temp.measure()
print('溫度 濕度',temp.temperature(),temp.humidity())
blynk.virtual_write(2, temp.temperature())
blynk.virtual_write(3, temp.humidity()) //寫出溫溼度監測資料
except OSError as e:
print("尚未更新溫濕度")
timer = BlynkTimer()
timer.set_interval(5, timer_handler)
while True :
blynk.run()
timer.run()
由空污網站取得金鑰:空污監測資料來源取自https://aqicn.org/city/taiwan/sanchong/ 選擇自己的城市,可以看到空氣品質當前與歷史資料,由https://aqicn.org/api/ 取得權杖,就可把資料應用在智慧農場的裝置中。
由Blynk網站https://blynk.io/ 取得金鑰:Blynk網站可以讓手機顯示溫溼度和空污監測資料。
上傳Thonny程式後,可以在電腦、手機看到溫溼度、空氣品質資料
3. 高溫啟動散熱設定
散熱扇、220歐姆電阻、電晶體連接、 可以依照修改啟動電扇的條件,如溫度>30度;濕度>80等。上傳程式如下圖表:
上傳程式如下:
from machine import Pin
import time,dht
fan=Pin(0,Pin.OUT) # fan D3
fan.value(1)
temp = dht.DHT11(Pin(13)) # temp D7
while True :
try:
temp.measure()
print('溫度',temp.temperature())
#'溫度',temp.temperature '濕度',temp.humidit
if temp.temperature()>30: #依照季節修改啟動電扇的條件
fan.value(1)
else :
fan.value(0)
except OSError as e:
print("尚未更新溫濕度")
time.sleep(5)
參考資料:
黃昕暐。用Python學物聯網。 旗標科技公司。 https://max543.com/debugger/class/python02/FM617A/Lab/用Python學物聯網.pdf #有基礎概念介紹到範例說明
施威銘研究室(2021)。用 Python 蓋出物聯網智慧屋。旗標科技股份有限公司。
https://www.flag.com.tw/maker/FM628A
《用 Python 蓋出物聯網智慧屋》補充資源
https://hackmd.io/H7cu-XuVQMitflGqGyX44g#Blynk-新版《用-Python-蓋出物聯網智慧屋》
[Blynk 新版]《物聯網感測器大應用》https://hackmd.io/mRgLJvVpT1ulk_bdPHeUuA
《物聯網感測器大應用》補充資源 Lab05 智慧盆栽 https://hackmd.io/@flagmaker/HJVQITaPc#%E3%80%8A%E7%89%A9%E8%81%AF%E7%B6%B2%E6%84%9F%E6%B8%AC%E5%99%A8%E5%A4%A7%E6%87%89%E7%94%A8%E3%80%8B%E8%A3%9C%E5%85%85%E8%B3%87%E6%BA%90