如題,今天也不多廢話了,本日的目標就是使用DHT11溫濕度感測裝置並結合昨天
[Day 19]-【STM32系列】16 x 2 LCD 液晶顯示器 with I²C
沒錯!我們要將讀出的溫溼度顯示在LCD上
這樣才勉強算得上一個完整的設計吧!
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
(圖片取自datasheet)
一般來說,考慮到DHT-11的DATA線傳輸資料時在導線上的消耗
也就是導線如果小於20米時,會建議使用5K上拉電阻
如果導線長大於20米時,可能會需要找合適的上拉電阻彌補電壓的不足
在這裡距離都不太遠,我們就用4.7K的上拉電阻接VCC
DHT-11的DATA線作為雙向的資料傳輸,傳送一次data的時間約為4ms
一個完整的data共有40bit,從最高位元開始傳送依序為:
8bit濕度整數資料 + 8bit濕度小數資料 + 8bit溫度整數資料 + 8bit溫度小數資料 + 8bit校驗位
這顆DHT-11不會主動採集溫度,必須由我們MCU呼叫它才開始採集資料一次,其餘時間處於低功耗模式。
(圖片取自datasheet)
觸發的方式很簡單,我們必須先將資料線拉低大約 18ms後拉高等待,確保DHT11能夠接收到訊號,待DHT11收到訊號後會由 DHT11將拉低了80us接著拉高80us,這兩次80us拉高拉低都是由DHT11完成。初始化完成後,DHT-11將會開始傳送資料。
當DHT-11開始傳送40bit的資料,每1bit的資料先由50us低電瓶開始
隨後將由高電瓶的時間長度決定該bit為 0 或 1
一個完整的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
- STM32 Nucleo-64 boards (MB1136)資料手冊
https://www.st.com/resource/en/user_manual/dm00105823-stm32-nucleo-64-boards-mb1136-stmicroelectronics.pdf- STM32L053R8 datasheet
https://www.st.com/resource/en/datasheet/stm32l053r8.pdf- RM0367 Reference manual Ultra-low-power STM32L0x3 advanced Arm®-based 32-bit MCUs
https://www.st.com/resource/en/reference_manual/dm00095744-ultra-low-power-stm32l0x3-advanced-arm-based-32-bit-mcus-stmicroelectronics.pdf- ARM Mbed官網介紹 - NUCLEO-L053R8
https://os.mbed.com/platforms/ST-Nucleo-L053R8/- STM32 官網介紹 - STM32L053R8
https://www.st.com/en/microcontrollers-microprocessors/stm32l053r8.html#overview
- 此開發板售價在臺幣1000元以下,讀者可於以下網站購得:
https://www.mouser.tw/
https://www.digikey.tw/
ok的