宜蘭縣教育支援平台 會員登入 會員註冊 我的i教書

« 上一篇 | 下一篇 »

使用新DiFi內建的DHT11溫溼度感測器,偵測環境溫度超簡單的。

DHT11是一個結合溫、濕度感測元件的感測器,內建處理器將所量測到的溫、濕度資料轉換為數位訊號,再送出資料(註1)。

一、基本測試

接線圖:

使用Jump直接將D1和[DHT](DHT11溫溼度感測器)接上。

 

先製做[攝氏溫度]、[華氏溫度]、[濕度]等3個變數,儲存資料

[腳位1模式設為INPUT],設定數位腳D1為輸入訊號。

重複執行下面的動作。

[溫溼度感測器(11)在腳位(1)],設定數位腳D1接收來自DHT11的訊號

[等待1秒],因為DHT11需要做資料轉換,每筆資料的抓取時間不能太快。(註1)

[設定變數(攝氏溫度)為(讀取感測器DHT參數°C)],將攝氏溫度存為變數[攝氏溫度]

[設定變數(華氏溫度)為(讀取感測器DHT參數°F)],將華氏溫度存為變數[華氏溫度]

[設定變數(濕度)為(讀取感測器DHT參數濕度)],將濕度存為變數[濕度]

在螢幕上就可以看到變數顯示現在的溫濕度。 

程式下載:溫溼度.sb2

延伸:

新DiFi學習板接上電源線(或行動電源),就可以放在遠端,透過無線WiFi連線,將遠端的溫溼度資料直接顯示在電腦上面。例如:放在戶外,可以在室內監看戶外的溫溼度了。
PS:無線WiFi連線請參考:第16課無線連接(http://blog.ilc.edu.tw/blog/blog/868/post/104089/678445)

二、說出溫度

使用[說...]積木,將測量值真的用電腦喇叭說出來

目前只有Mac 和 Win10系統才可以說中文,無網路也可以使用。

主要程式跟上面一樣,增加[說...]積木,將溫溼度測量結果用電腦喇叭說出來。

使用[合併....和...],增加口語效果。

加上[等待....秒],讓語音能夠說完。最後的[等待10秒],避免連續說,造成困擾。

程式下載:溫濕度(說).sb2

延伸:

加上舵機(伺服馬達)做成指針式溫度計

舵機(伺服馬達)請參考:WFduino第十一課(伺服馬達)

http://blog.ilc.edu.tw/blog/blog/868/post/97509/639094

將伺服馬達的三條線,電源(紅色)接5V、接地(黑或棕色)接GND、訊號線(白色)接數位腳D7。

注意:

因為伺服馬達需要較大的供電,如果已經連線後,直接插上去時有可能會造成程式連接中斷,如果接上後程式沒有反應,請關掉WFduino 重新再啟動連接。

主要程式跟上面一樣。

增加[伺服馬達為腳位(7)轉動角度為(攝氏溫度)度]積木,讓舵機(伺服馬達)依溫度轉動。

就成了指針式溫度計。

程式下載:指針式溫度計

三、溫度換算

老師講解溫、濕度的意義,說明溫度換算公式(註2),學生練習寫出換算程式,比較換算結果是否正確。

華氏 = 攝氏*(9/5)+32

攝氏 = (華氏-32)*5/9

主要程式跟上面一樣,使用[說...]及[合併....和...]積木,將轉換結果顯示在螢幕上。 

請學生將轉換後的結果和變數顯示的數值相比較,看看是否正確?

如果有錯誤,請修正程式。

程式下載:溫度轉換.sb2

延伸:

示範程式是將攝氏溫度轉換為華氏溫度,學生練習將華氏溫度轉換為攝氏溫度。

四、畫出溫、濕度變化曲線圖

在讀取溫溼度的積木程式下面再加上畫圖程式,將讀取的溫濕度值畫成折線圖,方便判讀。

有[溫度]、[濕度]共2項資料,因此使用2個腳色,用2種顏色來表示。

溫度程式:

為了測試方便,主程式每1秒讀取一次溫溼度值,實際使用可以延長時間。

使用變數N來控制X座標位置,為了測試方便,每次改變10,實際使用可以改變少一點。

Y座標為攝氏溫度值乘以3,這樣變化幅幅度比較大,畫出來比較看得清楚。

使用[廣播(畫圖)],呼叫畫出濕度折線圖。

濕度程式:

[當我接收到(清除濕度筆跡)]的廣播,就把之前化的軌跡折現圖清除。

[當我接收到(畫圖)]的廣播,就把濕度值乘以3畫出來,這樣變化幅幅度比較大,畫出來比較看得清楚。

範例程式只是簡單的示範折線圖畫法。

程式下載:畫曲線圖.sb2

延伸:

請加上標題、座標標籤、圖例,做成像下面的時間變化關係圖

圖片來源:http://airmap.g0v.asper.tw/site#LASS-WF_12977044

五、清單紀錄

使用scratch清單功能將測量結果記錄下來。

先製做[攝氏溫度]、[濕度]等2個變數,儲存資料

[腳位1模式設為INPUT],設定數位腳D1為輸入訊號。

製作[T]、[H]清單來存放測量資料。

使用[delete(全部)of(T)],將原來(T)溫度清單裡的資料刪除。[H]濕度也是同樣刪除資料。

[重複執行],重複將測量資料做紀錄

[溫溼度感測器(11)在腳位(1)],設定數位腳D1接收來自DHT11的訊號

[等待1秒],因為DHT11需要做資料轉換,每筆資料的抓取時間不能太快。(註1)

[設定變數(攝氏溫度)為(讀取感測器DHT參數°C)],將攝氏溫度存為變數[攝氏溫度]

[將(攝氏溫度)加到(T)],將溫度測量值記錄到[T]溫度清單。

[設定變數(濕度)為(讀取感測器DHT參數濕度)],將濕度存為變數[濕度]

[將(濕度)加到(H)],將濕度測量值記錄到[H]濕度清單。

為了測試程式方便,每1秒讀取一次溫溼度值,實際使用可以延長時間。

程式下載:清單紀錄.sb2

六、資料儲存成檔案

當scratch程式關閉後,原來測量的資料也跟著不見了,資料無法的保存實在可惜。

運用擴充積木裡的檔案存取積木,可以將資料存在本機電腦中。

先製做[攝氏溫度]、[時間]、[濕度]等3個變數,儲存資料。

製作[time]、[T]、[H]清單來存放測量資料。

[腳位1模式設為INPUT],設定數位腳D1為輸入訊號。

使用[delete(全部)of(T)],將原來(T)溫度清單裡的資料刪除。[H]濕度、[time]也是同樣刪除資料。

[將資料(......存檔標頭.....)加到檔案(..檔案名稱.......)模式(Write) ],將準備存入資料的檔案先寫入標頭,方便以後檢視。

注意:

模式(Write)會把相同檔名內存放的資料清除掉,每次執行前請記得修改檔名,以免之前的紀錄被刪除了。

[重複執行],重複將測量資料做紀錄

[溫溼度感測器(11)在腳位(1)],設定數位腳D1接收來自DHT11的訊號

[等待1秒],因為DHT11需要做資料轉換,每筆資料的抓取時間不能太快。(註1)

[設定變數(時間)為(合併...月份.......)],將目前的時間記錄下來。

[將(時間)加到(time)],將時間記錄到[time]時間清單。

[設定變數(攝氏溫度)為(讀取感測器DHT參數°C)],將攝氏溫度存為變數[攝氏溫度]

[將(攝氏溫度)加到(T)],將溫度測量值記錄到[T]溫度清單。

[設定變數(濕度)為(讀取感測器DHT參數濕度)],將濕度存為變數[濕度]

[將(濕度)加到(H)],將濕度測量值記錄到[H]濕度清單。

[將資料(...合併......)加到檔案(....檔案名稱.......)模式(Append)],將[時間]、[攝氏溫度]、[濕度]等資料存入檔案。

注意:

1.寫入一次資料,就換一行。每一行有[時間]、[攝氏溫度]、[濕度]3種資料,要寫在同一列,資料中間需要加上 [ , ] 來做區隔,下次讀取資料時才能分辨。

2.為了測試程式方便,每1秒讀取一次溫溼度值,實際使用可以延長時間。

3.清單是為了方便觀察測量結果,如果只是單純的存檔紀錄,有關清單的程式可以省略。

程式下載:儲存資料.sb2

七、讀取、分析資料

可以使用擴充積木讀取儲存在本機的資料,用scratch來處理資料。

也可以將文字檔案轉換成試算表檔案,可以利用試算表的附加功能做出統計圖表或做其他的資料處理。

請參考WFduino第二十六課資料存取

http://blog.ilc.edu.tw/blog/blog/868/post/97509/657968

八、自動監測警示系統

依據測量結果,自動發出警告。

有[溫度]、[濕度]共2項資料,因此使用2個腳色來呈現。

下圖為了顯示成果,設定較低條件就顯示,實際執行時視實際條件調整。

濕度腳色:

先製做[攝氏溫度]、[濕度]等2個變數,儲存資料

[腳位1模式設為INPUT],設定數位腳D1為輸入訊號。

重複執行下面的動作。

[溫溼度感測器(11)在腳位(1)],設定數位腳D1接收來自DHT11的訊號

[等待1秒],因為DHT11需要做資料轉換,每筆資料的抓取時間不能太快。(註1)

[設定變數(攝氏溫度)為(讀取感測器DHT參數°C)],將攝氏溫度存為變數[攝氏溫度]

[設定變數(濕度)為(讀取感測器DHT參數濕度)],將濕度存為變數[濕度]

在螢幕上就可以看到變數顯示現在的溫濕度。 

增加[說...]積木,將溫溼度測量結果用電腦喇叭說出來。

使用[合併....和...],增加口語效果。

加上[等待....秒],讓語音能夠說完。

[如果(濕度)大於(90)就...],判斷如果溼度大於90%以上就要說(顯示)及真正地說出來,[濕氣大,請關窗,開除濕機](註3)

等待說完再廣播[溫度]判斷程式。

溫度腳色:

如果溫度高於35度,就說[天氣熱,減少戶外活動]

程式下載:自動監測警示系統.sb2

九、自動化智慧家庭控制

依據測量結果,自動發出警告,並控制家電做動作。

例如:如果溫度高於28度,就自動開啟風扇;如果濕度大於90%就自動關窗,開除濕機。

注意:

實際使用前,線路接好後,因為110V電流會經過繼電器(板子),所以DiFi板子必須做好絕緣措施,避免觸電。家電用品使用須注意用電安全,此裝置僅限小電流家電使用,請小心使用。

新Difi接線圖:

使用Jump直接將D1和[DHT]D5和LEDB、D6和LEDR、D7和LEDG兩兩接上。

[繼電器]:COM、常開,接外部要控制的電器,這裡接[家電控制插座](註4)。

實際接線照片

 

使用D5、D6D7控制RGB LED的顏色,色代表色代表色代表溫度適中

繼電器(D0)控制 [ 家電控制插座 ] 是否通電,控制除溼機或電扇啟動,當需要啟動時,蜂鳴器(D8)也會發出聲音提醒。

A、自動化智慧控制系統(溫度控制)

因為電扇控制動作不明顯,這裡使用LED燈代替電扇動作。

有[溫度]、[濕度]共2項資料,因此使用2個腳色來呈現。

下圖為了顯示成果,設定較低條件就顯示,實際執行時視實際條件調整。

A1、濕度腳色:

同前面自動警示程式。

A2、溫度腳色:

依據不同溫度讓RGB LED 亮不同的顏色,D7是綠色(舒適)、D6是紅色(炎熱)、D5是藍色(冷)。

並且依據不同溫度說出不同的警告。

當溫度高於28度時,D0輸出1(高電位)啟動[繼電器]讓風扇開動,D8(蜂鳴器)重複發出警告bi聲。

程式下載:自動化智慧控制系統(溫度).sb2

B、自動化智慧控制系統(濕度控制)

因為除溼機控制動作不明顯,這裡使用LED燈代替除溼機動作。

有[溫度]、[濕度]共2項資料,因此使用2個腳色來呈現。

下圖為了顯示成果,設定較低條件就顯示,實際執行時視實際條件調整。

B1、濕度腳色:

主要部分同前面自動警示程式。

如果濕度高於90%,就說[濕氣大,請關窗,開除濕機],D0輸出1(高電位)啟動[繼電器]讓除濕機開動(註3),D8(蜂鳴器)重複發出警告bi聲。

A2、溫度腳色:

依據不同溫度讓RGB LED 亮不同的顏色,D7是綠色(舒適)、D6是紅色(炎熱)、D5是藍色(冷)。

並且依據不同溫度說出不同的警告。

程式下載:自動化智慧控制系統(濕度).sb2

十、自動化智慧家庭控制(遠端遙控)

如果想要自動化控制的地點不方便操作電腦,可以參考(DiFi第十六課無線連接),設定電腦用無線來連接控制。(http://blog.ilc.edu.tw/blog/blog/868/post/97509/662793)

可以將外接電源線接上DiFi的變壓器,直接由插座供電。

---------------------------------------

註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://makerpro.cc/2015/05/know-more-about-dht11-temperature-sensor/
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/

註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:

地板一直出水?「反潮」時趕快關窗戶,再開除濕機

http://blog.ilc.edu.tw/blog/blog/868/post/2172/155866

註4:

[繼電器]:COM、常開,接外部要控制的電器,這裡接[家電控制插座]。製作方法請參考:新DiFi第13課繼電器http://blog.ilc.edu.tw/blog/blog/868/post/104089/678442

-----------------------------

相關連結:

新DiFi課程目錄
http://blog.ilc.edu.tw/blog/blog/868/post/104089/678192

DiFi課程目錄
http://blog.ilc.edu.tw/blog/blog/868/post/100870/660551

WFduino(Arduino)課程目錄
http://blog.ilc.edu.tw/blog/blog/868/post/97509/641433 

WFduino第二十四課PM2.5環境監測超簡單
http://blog.ilc.edu.tw/blog/blog/868/post/97509/652136




 
 
 
用LINE傳送