iL學習板第17課DHT11溫濕度感測器
每天上學都要測額溫,為什麼?
一、溫溼度測量
iL學習板內建DHT11 ,已經接好線路。
只要使用Jump直接將D7和DHT連接上就可以使用數位腳位D7來接收溫溼度資料。
先製做[攝氏溫度]、[華氏溫度]、[濕度]等3個變數,儲存資料
[腳位7模式設為INPUT],設定數位腳D7為輸入訊號。
重複無限次下面的動作。
[溫溼度感測器(11)在腳位(7)],設定數位腳D7接收來自DHT11的訊號
[等待2秒],因為DHT11需要做資料轉換,每筆資料的抓取時間不能太快。(註1)
[設定變數(攝氏溫度)為(讀取感測器DHT參數°C)],將攝氏溫度存為變數[攝氏溫度]
[設定變數(華氏溫度)為(讀取感測器DHT參數°F)],將華氏溫度存為變數[華氏溫度]
[設定變數(濕度)為(讀取感測器DHT參數濕度)],將濕度存為變數[濕度]
在螢幕上就可以看到變數顯示現在的溫濕度。
注意:
DHT-11 較不精密與準確且溫濕度量測範圍不大,所以測量結果僅供參考。
延伸:
上課時可以準備一根水銀溫度計,讓學生做儀器校準的[歸零]程式。
二、說出溫度
使用[說…]積木,將測量值真的用電腦喇叭說出來。
主要程式跟上面一樣,增加[說…]積木,將溫溼度測量結果用電腦喇叭說出來。
使用[合併….和…],增加口語效果。
加上[等待….秒],讓語音能夠說完。
三、指針式溫度計
加上舵機(伺服馬達)做成指針式溫度計
舵機(伺服馬達)請參考:Arduino第十一課(伺服馬達)
https://2blog.ilc.edu.tw/868/44347/
將伺服馬達的三條線,電源(紅色)接5V、接地(黑或棕色)接GND、訊號線(白色)接數位腳D3。
注意:
因為伺服馬達需要較大的供電,如果已經連線後,直接插上去時有可能會造成程式連接中斷,如果接上後程式沒有反應,請關掉Arduino 重新再啟動連接。
主要程式跟上面一樣。
增加[伺服馬達為腳位(3)轉動角度為(攝氏溫度)度]積木,讓舵機(伺服馬達)依溫度轉動。
就成了指針式溫度計。
四、溫度換算
老師講解溫、濕度的意義,說明溫度換算公式(註2),學生練習寫出換算程式,比較換算結果是否正確。
華氏 = 攝氏*(9/5)+32
攝氏 = (華氏-32)*5/9
華氏105度=攝氏40.56度
主要程式跟上面一樣,使用[說…]及[合併….和…]積木,將轉換結果顯示在螢幕上。
請學生將轉換後的結果和變數顯示的數值相比較,看看是否正確?
延伸:
示範程式是將攝氏溫度轉換為華氏溫度,請學生練習將華氏溫度轉換為攝氏溫度。
五、畫出溫、濕度變化曲線圖
在讀取溫溼度的積木程式下面再加上畫圖程式,將讀取的溫濕度值畫成折線圖,方便判讀。
有[溫度]、[濕度]共2項資料,因此使用2個腳色,用2種顏色來表示。
溫度程式:
為了測試方便,主程式每2秒讀取一次溫溼度值,實際使用可以延長時間。
使用變數N來控制X座標位置,為了測試方便,每次改變10,實際使用可以改變少一點。
Y座標為攝氏溫度值乘以3,這樣變化幅幅度比較大,畫出來比較看得清楚。
使用[廣播(畫圖)],呼叫畫出濕度折線圖。
濕度程式:
[當我接收到(清除濕度筆跡)]的廣播,就把之前化的軌跡折現圖清除。
[當我接收到(畫圖)]的廣播,就把濕度值乘以3畫出來,這樣變化幅幅度比較大,畫出來比較看得清楚。
延伸:
請加上標題、座標標籤、圖例,做成像下面的時間變化關係圖
圖片來源:http://airmap.g0v.asper.tw/site#LASS-WF_12977044
六、清單紀錄
使用scratch清單功能將測量結果記錄下來。
先製做[攝氏溫度]、[濕度]等2個變數,儲存資料
[製作[T]、[H]清單來存放測量資料。
[腳位7模式設為INPUT],設定數位腳D7為輸入訊號。
使用[delete(全部)of(T)],將原來(T)溫度清單裡的資料刪除。[H]濕度也是同樣刪除資料。
[重複執行],重複將測量資料做紀錄
[溫溼度感測器(11)在腳位(7)],設定數位腳D7接收來自DHT11的訊號
[等待2秒],因為DHT11需要做資料轉換,每筆資料的抓取時間不能太快。(註1)
[設定變數(攝氏溫度)為(讀取感測器DHT參數°C)],將攝氏溫度存為變數[攝氏溫度]
[將(攝氏溫度)加到(T)],將溫度測量值記錄到[T]溫度清單。
[設定變數(濕度)為(讀取感測器DHT參數濕度)],將濕度存為變數[濕度]
[將(濕度)加到(H)],將濕度測量值記錄到[H]濕度清單。
為了測試程式方便,每2秒讀取一次溫溼度值,實際使用可以延長時間。
七、資料儲存到雲端
當scratch程式關閉後,原來測量的資料也跟著不見了,資料無法的保存實在可惜。
請參考:
新增Google表單雲端寫入(OSEP)
https://2blog.ilc.edu.tw/868/45027/
先製做[攝氏溫度]、[時間]、[濕度]等3個變數,儲存資料。
製作[time]、[T]、[H]清單來存放測量資料。
[腳位7模式設為INPUT],設定數位腳D7為輸入訊號。
使用[delete(全部)of(T)],將原來(T)溫度清單裡的資料刪除。[H]濕度、[time]也是同樣刪除資料。
[將資料(……存檔標頭…..)加到檔案(..檔案名稱…….)模式(Write) ],將準備存入資料的檔案先寫入標頭,方便以後檢視。
注意:
[重複執行],重複將測量資料做紀錄
[溫溼度感測器(11)在腳位(7)],設定數位腳D7接收來自DHT11的訊號
[等待2秒],因為DHT11需要做資料轉換,每筆資料的抓取時間不能太快。(註1)
[設定變數(時間)為(合併…月份…….)],將目前的時間記錄下來。
[將(時間)加到(time)],將時間記錄到[time]時間清單。
[設定變數(攝氏溫度)為(讀取感測器DHT參數°C)],將攝氏溫度存為變數[攝氏溫度]
[將(攝氏溫度)加到(T)],將溫度測量值記錄到[T]溫度清單。
[設定變數(濕度)為(讀取感測器DHT參數濕度)],將濕度存為變數[濕度]
[將(濕度)加到(H)],將濕度測量值記錄到[H]濕度清單。
[將資料(…合併……)加到檔案(….檔案名稱…….)模式(Append)],將[時間]、[攝氏溫度]、[濕度]等資料存入檔案。
注意:
1.寫入一次資料,就換一行。每一行有[時間]、[攝氏溫度]、[濕度]3種資料,要寫在同一列,資料中間需要加上 [ , ] 來做區隔,下次讀取資料時才能分辨。
2.為了測試程式方便,每2秒讀取一次溫溼度值,實際使用可以延長時間。
3.清單是為了方便觀察測量結果,如果只是單純的存檔紀錄,有關清單的程式可以省略。
九、自動監測警示系統
依據測量結果,自動發出警告。
有[溫度]、[濕度]共2項資料,因此使用2個腳色來呈現。
下圖為了顯示成果,設定較低條件就顯示,實際執行時視實際條件調整。
濕度腳色:
先製做[攝氏溫度]、[濕度]等2個變數,儲存資料
[腳位7模式設為INPUT],設定數位腳D7為輸入訊號。
重複執行下面的動作。
[溫溼度感測器(11)在腳位(7)],設定數位腳D7接收來自DHT11的訊號
[等待2秒],因為DHT11需要做資料轉換,每筆資料的抓取時間不能太快。(註1)
[設定變數(攝氏溫度)為(讀取感測器DHT參數°C)],將攝氏溫度存為變數[攝氏溫度]
[設定變數(濕度)為(讀取感測器DHT參數濕度)],將濕度存為變數[濕度]
在螢幕上就可以看到變數顯示現在的溫濕度。
增加[說…]積木,將溫溼度測量結果用電腦喇叭說出來。
使用[合併….和…],增加口語效果。
加上[等待….秒],讓語音能夠說完。
[如果(濕度)大於(90)就…],判斷如果溼度大於90%以上就要說(顯示)及真正地說出來,[濕氣大,請關窗,開除濕機](註4)
等待說完再廣播[溫度]判斷程式。
溫度腳色:
十、自動化智慧家庭控制
依據測量結果,自動發出警告,並控制家電做動作。
例如:如果溫度高於28度,就自動開啟風扇;如果濕度大於90%就自動關窗,開除濕機。
注意:
實際使用前,線路接好後,因為110V電流會經過繼電器,所以必須做好絕緣措施,避免觸電。家電用品使用須注意用電安全,此裝置僅限小電流家電使用,請小心使用。
—————————————
註1:
以下摘自:http://ming-shian.blogspot.tw/2014/05/arduino19dht11.html
DHT-11 是一個結合濕度計和測溫元件量測週遭空氣環境,並與一個高性能8位元單晶片相連接,將所量測到的溫、濕度資料拆解成為數位訊號,再由 data pin腳將資料送出。使用上很簡單,但是抓取資料時必須要特別注意時間的掌控,而且每筆資料的抓取時間間隔要1~2秒鐘,不能太快。與 DHT-22 比較,DHT-11 較不精密與準確且溫濕度量測範圍不大,雖然如此,但對於學習與熟悉溫、濕度感測卻是綽綽有餘,傳輸的距離又可長達20m以上,而且比 DHT-22 較小且便宜許多,是十分方便的簡易測試元件。
接線:DHT11共有四隻腳,左邊第一隻腳接+5V,第二隻腳接Arduino Pin2,第四隻腳接地,比較特別的是第一、二隻腳還要用一個4.7K的電阻連接。
http://atceiling.blogspot.tw/2013/04/arduinodht11lcd.html#.WAnQRuh96Uk
http://iot.ttu.edu.tw/2015/11/16/dht11%E6%BA%AB%E6%BF%95%E5%BA%A6%E6%84%9F%E6%B8%AC%E5%99%A8%E4%BB%8B%E7%B4%B9/
接線圖:
DHT11溫溼度感測器市面上有兩種包裝,一個是直接單顆裝,另一種是廠商將線路接好的模組。
註2:
https://zh.wikipedia.org/wiki/%E6%B8%A9%E5%BA%A6%E5%8D%95%E4%BD%8D%E6%8D%A2%E7%AE%97
https://zh.wikipedia.org/wiki/%E6%B9%BF%E5%BA%A6
註3:
【物理科普】歌词里的【105度的水】,可以用物理解释吗?
https://www.sohu.com/a/473130985_472787
註4:
地板一直出水?「反潮」時趕快關窗戶,再開除濕機
http://blog.ilc.edu.tw/blog/blog/868/post/2172/155866
很多人看到地板一直出水,就打開窗戶,開電風扇,想要把水氣吹乾。
地板怎麼會出水?這些水其實是空氣中的水蒸氣,遇到較冷的地面和牆壁凝結成小水珠。當外面的暖濕空氣進到屋內,遇冷更易形成所謂的「反潮現象」。打開窗戶,開電風扇,只會讓外面的潮溼空氣進來更多,地板出水就會更嚴重。
正確的做法應該是:趕快關閉門窗,阻止外面的潮濕溫暖的水蒸氣進來屋裡,然後打開除濕機,將已經進來的水蒸氣除去。
參考資料來源:財團法人氣象應用推廣基金會
http://www.metapp.org.tw/index.php?searchword=%E5%8F%8D%E6%BD%AE&ordering=&searchphrase=all&option=com_search
當持續下雨多日或空氣中水汽普遍很多時,外面濕空氣不斷進入,使屋內空氣中水汽不斷增加,相對濕度到了95%~100%,近乎飽和情形,所以水汽會凝結在屋內的粗糙面上,如地板、桌子或椅子或走廊上乃造成反潮現象。
為什麼會反潮?