本文使用的溫濕度感測元件是 DHT-11,可用來偵測週邊環境空氣中的溫度及濕度,感測元件本身會將溫度及濕度資訊以數位方式從資料 PIN 腳傳回。
DHT11 是用電阻方式感應濕度,並用 NTC 方式感應溫度,DHT 內本來就有一顆 8 位元MCU,MCU 的工作就是把感測到的溫度、濕度,以數位信號方式,透過 2 號腳位傳遞出去,所以其實那顆 MCU 也內建類比轉數位功效(ADC),而溫濕度感測後的相關校準與係數,其實就燒錄在 MCU 的程式內,不過也無法更改了,因為是 OTP(One Time Program),燒寫一次就不能再更動程式內容。
本文的範例程式使用兩個函數庫來簡化開發流程,範例程式利用序列埠監控視窗顯示傳感器回傳的溫濕度資訊。文末有 DHT11 傳感器的工作原理,有興趣的同學可以從函數庫中的 DHT11.cpp 去理解溫濕度是如何被取得的。
電路示意圖
傳感器規格
- 型號:DHT-11
- 量測範圍:20-90% RH 0-50℃
- 測濕精度:±5% RH
- 測溫精度:±2℃
- VCC:3.3V ~ 5V
- 偵測頻率:0.5Hz (大約是2秒一次)
引入函數庫
草稿碼 –> 匯入程式庫 –> 管理程式庫
分別安裝 Adafruit Unified Sensor 和 DHT sensor library
範例程式
DHT-11 傳感器工作原理
- Arduino 給 DHT11 輸出低電平 >18ms(此處單位為毫秒,其餘皆為微秒)
- Arduino 給 DHT11 輸出高電平 20~40μs
- DHT11 反饋低、高電平各 80μs
- DHT11 反饋低、高電平各 80μs
- DHT11 反饋低電平 50μs,標誌第一個 bit 馬上就要輸出了
- 如果高電平持續 26~28 μs,代表 ‘0’; 如果高電平持續 70μs,代表 ‘1’
- DHT11 反饋低電平 50μs,標誌第一個 bit 馬上就要輸出了
- 如果高電平持續 26~28 μs,代表 ‘0’; 如果高電平持續 70μs,代表 ‘1’
..(5,6,7,8 的動作一共會輸出 40 個 bit)..
Comments