iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 20
1
IoT

熟悉Arduino的Maker必看!30天帶你快速入門基於STM32嵌入式開發~系列 第 20

[Day 20]-【STM32系列】DHT11 溫溼度感測模組

如題,今天也不多廢話了,本日的目標就是使用DHT11溫濕度感測裝置並結合昨天
[Day 19]-【STM32系列】16 x 2 LCD 液晶顯示器 with I²C
沒錯!我們要將讀出的溫溼度顯示在LCD上
這樣才勉強算得上一個完整的設計吧!

DHT-11 模組數位溫濕度感測器!!!

https://ithelp.ithome.com.tw/upload/images/20201005/20120093GMqg18mHyw.png

DHT-11模組數位溫濕度感測器,是DHT家族中的基本款,其他還有像是DHT-22之類的兄弟姊妹喔
功能當然就是感測周遭環境的溫溼度啦~
那它的濕度測量範圍大約是:20%-95%,溫度測量範圍:0度-50度
資料傳送的方式是數位輸出,見上圖,從左到右的 pinout 分別是 VCC、DATA、NC、GND

VCC -> 接正電
DATA -> 資料線
NC -> 空接
GND -> 接地

有關 DHT-11 的資料手冊:
datasheet https://components101.com/sites/default/files/component_datasheet/DHT11-Temperature-Sensor.pdf

https://ithelp.ithome.com.tw/upload/images/20201005/20120093r5z6Np27aS.png
(圖片取自datasheet)

一般來說,考慮到DHT-11的DATA線傳輸資料時在導線上的消耗
也就是導線如果小於20米時,會建議使用5K上拉電阻
如果導線長大於20米時,可能會需要找合適的上拉電阻彌補電壓的不足
在這裡距離都不太遠,我們就用4.7K的上拉電阻接VCC

DHT-11 初始化

1.)資料格式

DHT-11的DATA線作為雙向的資料傳輸,傳送一次data的時間約為4ms
一個完整的data共有40bit,從最高位元開始傳送依序為:
8bit濕度整數資料 + 8bit濕度小數資料 + 8bit溫度整數資料 + 8bit溫度小數資料 + 8bit校驗位

2.)時序圖

這顆DHT-11不會主動採集溫度,必須由我們MCU呼叫它才開始採集資料一次,其餘時間處於低功耗模式。
https://ithelp.ithome.com.tw/upload/images/20201005/20120093UdAYXI0zLH.png
(圖片取自datasheet)

觸發的方式很簡單,我們必須先將資料線拉低大約 18ms後拉高等待,確保DHT11能夠接收到訊號,待DHT11收到訊號後會由 DHT11將拉低了80us接著拉高80us,這兩次80us拉高拉低都是由DHT11完成。初始化完成後,DHT-11將會開始傳送資料。

3.)資料傳輸

https://ithelp.ithome.com.tw/upload/images/20201006/201200935cd91XdOGd.jpg
https://ithelp.ithome.com.tw/upload/images/20201006/20120093EwgLYLKr6n.jpg

當DHT-11開始傳送40bit的資料,每1bit的資料先由50us低電瓶開始
隨後將由高電瓶的時間長度決定該bit為 0 或 1

  • 如果高電瓶持續 26us~28us ,該bit 為 1
  • 如果高電瓶持續 70us ,該bit 為 0
    https://ithelp.ithome.com.tw/upload/images/20201006/2012009389Kyde6lRS.jpg

一個完整的data共有40bit,從最高位元開始傳送依序為:
8bit濕度整數資料 + 8bit濕度小數資料 + 8bit溫度整數資料 + 8bit溫度小數資料 + 8bit校驗位

如果資料傳送正確,那麼8bit校驗位將會等於前面四筆8bit資料相加
Example:
8bit濕度整數資料:0011 0101
8bit濕度小數資料:0000 0000
8bit溫度整數資料:0001 1000
8bit溫度小數資料:0000 0000
8bit校驗位   :0100 1101

0011 0101 + 0000 0000 + 0001 1000 + 0000 0000 = 0100 1101(資料正確無誤)
濕度:0011 0101 = 35H = 53%RH
溫度:0001 1000 = 18H = 24°C


相關連結


結語

ok的


上一篇
[Day 19]-【STM32系列】16 x 2 LCD 液晶顯示器 with I²C
下一篇
[Day 21]-【STM32系列】HC-SR04 超音波測距感測模組
系列文
熟悉Arduino的Maker必看!30天帶你快速入門基於STM32嵌入式開發~30

尚未有邦友留言

立即登入留言