0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

【GD32F303紅楓派開發(fā)板使用手冊】第二十四講 DHT11溫濕度傳感器檢測實驗

聚沃科技 ? 2024-06-24 10:03 ? 次閱讀
wKgaomZVdiiAfR9BAB3mDFhHnZc972.png

24.1實驗內容

通過本實驗主要學習以下內容:

  • DHT11操作原理
  • 單總線GPIO模擬操作原理

24.2實驗原理

HT11是一款已校準數(shù)字信號輸出的溫濕度一體化數(shù)字傳感器。該產(chǎn)品具有品質卓越、超快響應、抗干擾能力強、性價比極高等優(yōu)點信號,傳輸距離可達20米以上。

其具體參數(shù)如下:

  • 工作電壓:3.3V-5.5V
  • 工作電流:0.5mA
  • 控制方式:單總線
  • 輸出方式:數(shù)字量
  • 濕度精度:±5%
  • 溫度精度:±2℃
  • 濕度量程:5%~95%
  • 溫度量程:-20℃~+60℃
    DHT11引腳定義和封裝如下圖所示
wKgZomZ402KADlFPAAFamDCAOm4443.png

DHT11采用單總線的方式進行數(shù)據(jù)傳輸,下面對其通信時序以及傳輸數(shù)據(jù)構成進行介紹。

DHT11通信時序可分為:建立連接、數(shù)據(jù)接收兩部分。

建立連接部分時序如下圖所示,共包括:主機動作和從機響應兩部分。主機動作:DHT11溫濕度傳感器上電后,數(shù)據(jù)線處于空閑狀態(tài)(配置數(shù)據(jù)線空閑狀態(tài)為高電平)。主機發(fā)送建立連接動作,動作內容為:拉低數(shù)據(jù)線再拉高數(shù)據(jù)線(數(shù)據(jù)線拉低時間>18ms、拉高時間在20-40us之間)然后釋放總線。從機響應:從機接收到主句發(fā)送的建立連接動作后,先拉低數(shù)據(jù)線,再拉高數(shù)據(jù)線,表示連接建立成功(拉低數(shù)據(jù)線40-50us,拉高數(shù)據(jù)線40-50us)。

wKgaomZ4026AOeBMAAGDlDp8F4o462.png

在連接成功建立后,從機發(fā)送數(shù)據(jù),主機進行數(shù)據(jù)的接收。數(shù)據(jù)接收:每一bit數(shù)據(jù)都以50us低電平開始,通過判斷低電平后的高電平時間來決定接收數(shù)據(jù)的種類。接收高電平時間為26us-28us表示0,接收高電平為70us表示1。當最后一bit數(shù)據(jù)傳送完畢后,從機拉低數(shù)據(jù)線50us,隨后從機釋放總線,總線進入空閑狀態(tài)(高電平)。

wKgaomZ403qAe0R3AATWJovsvko911.png

主機一次接收40bit數(shù)據(jù),共5字節(jié),每個字節(jié)的含義如下圖所示。從高到低依次為:濕度整數(shù)h(0)、濕度小數(shù)h(1)、溫度整數(shù)h(2)、溫度小數(shù)h(3)、校驗和h(4)。檢驗和等于前四字節(jié)數(shù)據(jù)之和。在一次數(shù)據(jù)接收完成后,驗證h(4)是否等于h(1)+h(2)+h(3)+h(4)。若等式成立則表示數(shù)據(jù)成功接收,然后進行數(shù)據(jù)更新,否則不進行數(shù)據(jù)更新。

wKgaomZ404aATrZXAABfQIMhC6U316.png

DHT11數(shù)據(jù)格式舉例如下。

wKgZomZ404-AXqtHAAJ6I9d_3Z0170.png

24.3硬件設計

DHT11硬件電路圖如下所示。DHT11為單信號線通信,因而僅使用了一個IO進行數(shù)據(jù)通信,且該IO使用了RC進行濾波并采用4.7K進行上拉,保證了數(shù)據(jù)通信的穩(wěn)定性,電源地通過100nf電容濾波。

wKgaomZ405mABLgjAADA3bvezno928.png

24.4代碼解析

24.4.1DHT11初始化

DHT11初始化函數(shù)實現(xiàn)如下,主要包括DHT11數(shù)據(jù)通信引腳的初始化以及DHT11 reset和check操作。

C
uint8_t dht11_init(void)
{
driver_gpio_general_init(&DHT11_DA);
/* DHT11_DQ引腳模式設置,開漏輸出,上拉, 這樣就不用再設置IO方向了, 開漏輸出的時候(=1), 也可以讀取外部信號的高低電平 */
dht11_reset();
return dht11_check();
}

在該函數(shù)中,將DHT11數(shù)據(jù)引腳配置為開漏模式,使用上可以不用切換引腳模式以及方向,使用比較方便。

dht11_reset()為復位DHT11操作函數(shù),其實現(xiàn)如下,如原理中介紹,首先拉低數(shù)據(jù)引腳20ms,之后拉高30us,實現(xiàn)對DHT11的復位操作。

C
static void dht11_reset(void)
{
DHT11_DA_OUT(0); /* 拉低DQ */
delay_ms(20); /* 拉低至少18ms */
DHT11_DA_OUT(1); /* DQ=1 */
delay_us(30); /* 主機拉高10~35us */
}

dht11_check()為check DHT11是否正常連接以及工作,其實現(xiàn)如下,其主要通過判斷DHT11是否能夠響應主機的復位請求操作來判斷DHT11是否連接以及工作正常,如果工作正常,該函數(shù)返回值為0,否則返回1.

C
uint8_t dht11_check(void)
{
uint8_t retry = 0;
uint8_t rval = 0;

while (DHT11_DA_IN && retry < 100) ?/* DHT11會拉低83us */
{
retry++;
delay_us(1);
}

if (retry >= 100)
{
rval = 1;
}
else
{
retry = 0;

while (!DHT11_DA_IN && retry < 100) /* DHT11拉低后會再次拉高87us */
{
retry++;
delay_us(1);
}
if (retry >= 100) rval = 1;
}

return rval;
}

24.4.2DHT11溫濕度讀取

DHT11溫濕度讀取函數(shù)如下,通過該函數(shù)將會連續(xù)讀取5個字節(jié)數(shù)據(jù),前兩個為濕度數(shù)據(jù),之后兩個為溫度數(shù)據(jù),最后一個數(shù)據(jù)為校驗和。讀取正確且校驗完成后相關濕度數(shù)據(jù)將會放在對應的形參指定的變量內,該函數(shù)將會返回0.

C
uint8_t dht11_read_data(uint8_t *temp, uint8_t *humi)
{
uint8_t buf[5];
uint8_t i;
dht11_reset();

if (dht11_check() == 0)
{
for (i = 0; i < 5; i++) ??? /* 讀取40位數(shù)據(jù) */
{
buf[i] = dht11_read_byte();
}

if ((buf[0] + buf[1] + buf[2] + buf[3]) == buf[4])
{
*humi = buf[0];
*temp = buf[2];
}
}
else
{
return 1;
}

return 0;
}

24.4.3主函數(shù)

DHT11溫濕度檢測實驗主函數(shù)如下所示,首先對systick延遲函數(shù)進行初始化,之后對DHT11初始化,最后在主循環(huán)中沒間隔1s讀取一次溫濕度數(shù)據(jù)。

C
int main(void)
{
uint8_t temperature;
uint8_t humidity;

delay_init();

while (dht11_init()) /* DHT11初始化 */
{
}

while (1)
{
dht11_read_data(&temperature, &humidity); /* 讀取溫濕度值 */
delay_ms(1000);
}
}

24.5實驗結果

將DHT11溫濕度讀取實驗燒錄到紅楓派開發(fā)板中,并連接串口,運行程序會,將會每秒鐘打印一次溫濕度數(shù)據(jù)。向著DHT11吹口熱氣,將會觀察到打印的溫濕度數(shù)值都將會增加。

wKgZomZ406mAew3cAABOgz4Dx9k925.png

教程GD32 MCU方案商聚沃科技原創(chuàng)發(fā)布,了解更多GD32 MCU教程,關注聚沃科技官網(wǎng)

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6037

    文章

    44558

    瀏覽量

    635213
  • 開發(fā)板
    +關注

    關注

    25

    文章

    5050

    瀏覽量

    97456
  • 溫度器
    +關注

    關注

    0

    文章

    3

    瀏覽量

    8572
  • GD32
    +關注

    關注

    7

    文章

    403

    瀏覽量

    24351
  • DH11
    +關注

    關注

    0

    文章

    3

    瀏覽量

    2497
收藏 人收藏

    評論

    相關推薦

    基于arduino的dht11溫濕度傳感器的使用

    本文介紹了DHT11溫濕度傳感器電氣特性、DHT11封裝形式及接口說明與典型應用電路,其次介紹了DHT11
    發(fā)表于 01-22 15:50 ?4.5w次閱讀
    基于arduino的<b class='flag-5'>dht11</b><b class='flag-5'>溫濕度</b><b class='flag-5'>傳感器</b>的使用

    【眾拳】基于STM8的DHT11溫濕度傳感器實驗 附代碼

    ~50us)時間,作為響應信號,然后DHT11拉高數(shù)據(jù)線,保持t4(40~50us)時間后,開始輸出數(shù)據(jù)。DHT11 溫濕度傳感器時序圖【眾拳】劍齒虎STM8
    發(fā)表于 12-07 09:14

    GD32330C-START開發(fā)板試用體驗】DHT11溫濕度測量

    實驗目的: 在GD32330C-START開發(fā)板上通過DHT11模塊測量環(huán)境溫濕度并在OLED屏上顯示
    發(fā)表于 09-24 15:01

    「正點原子NANO STM32F103開發(fā)板資料連載」第二十七章 DHT11 數(shù)字溫濕度傳感器實驗

    七章 DHT11 數(shù)字溫濕度傳感器實驗上一章,我們介紹了數(shù)字溫度傳感器 DS18B20 的使用,本章我們將介紹數(shù)字
    發(fā)表于 05-06 15:25

    Arduino開發(fā)板使用DHT11溫濕度傳感器的方法 精選資料分享

    在本篇文章中,我們將DHT11溫濕度傳感器與Arduino開發(fā)板和LCD顯示屏連接,設計一種能夠測量室溫和環(huán)境濕度的設備。簡單地說,我們將使
    發(fā)表于 07-13 09:35

    Arduino開發(fā)板使用DHT11溫濕度傳感器的方法 精選資料分享

    在本篇文章中,我們將DHT11溫濕度傳感器與Arduino開發(fā)板和LCD顯示屏連接,設計一種能夠測量室溫和環(huán)境濕度的設備。簡單地說,我們將使
    發(fā)表于 07-13 06:58

    使用DHT11溫濕度傳感器

    STM32F407ZGT6開發(fā)板進行項目開發(fā),選用的傳感器為常見通用的DHT11溫濕度
    發(fā)表于 08-10 06:14

    DHT11溫濕度傳感器

    一、實驗目的采用ARM結構中最為代表的Cortex-M4系列的芯片,選用STM32F407ZGT6開發(fā)板進行項目開發(fā),選用的傳感器為常見通用
    發(fā)表于 08-10 07:36

    基于STM32開發(fā)板實現(xiàn)傳感數(shù)據(jù)采集-DHT11溫濕度采集

    STM32F407ZGT6開發(fā)板進行項目開發(fā),選用的傳感器為常見通用的DHT11溫濕度
    發(fā)表于 08-10 07:41

    如何使用nodemcu開發(fā)板DHT11溫濕度傳感器獲取溫濕度數(shù)值?

    如何使用nodemcu開發(fā)板DHT11溫濕度傳感器獲取溫濕度數(shù)值?
    發(fā)表于 10-28 06:12

    如何使用STM32F4來讀取DHT11數(shù)字溫濕度傳感器

    1)實驗平臺:alientek NANO STM32F411 V1開發(fā)板2)摘自《正點原子STM32F4 開發(fā)指南(HAL 庫版》關注官方微
    發(fā)表于 02-09 07:50

    DHT11溫濕度傳感器簡介

    DHT11溫濕度傳感器1、DHT11簡介DHT11數(shù)字溫濕度
    發(fā)表于 02-16 06:55

    DHT11溫濕度傳感器使用手冊電子版下載

    DHT11溫濕度傳感器使用手冊電子版下載
    發(fā)表于 03-27 11:20 ?0次下載
    <b class='flag-5'>DHT11</b><b class='flag-5'>溫濕度</b><b class='flag-5'>傳感器使用手冊</b>電子版下載

    stm32溫濕度傳感器報告_「正點原子NANO STM32開發(fā)板資料連載」第二十八章 DHT11 數(shù)字溫濕度傳感器實驗...

    1)實驗平臺:alientek NANO STM32F411 V1開發(fā)板2)摘自《正點原子STM32F4 開發(fā)指南(HAL 庫版》關注官方微
    發(fā)表于 12-05 16:36 ?14次下載
    stm32<b class='flag-5'>溫濕度</b><b class='flag-5'>傳感器</b>報告_「正點原子NANO STM32<b class='flag-5'>開發(fā)板</b>資料連載」<b class='flag-5'>第二十</b>八章  <b class='flag-5'>DHT11</b> 數(shù)字<b class='flag-5'>溫濕度</b><b class='flag-5'>傳感器</b><b class='flag-5'>實驗</b>...

    GD32F303紅楓開發(fā)板使用手冊第二十講 SPI-SPI NAND FLASH讀寫實驗

    通過本實驗主要學習以下內容: ?SPI通信協(xié)議,參考19.2.1東方紅開發(fā)板使用手冊 ?GD32F303 SPI操作方式,參考19.2.2東方紅
    的頭像 發(fā)表于 06-20 09:50 ?903次閱讀
    【<b class='flag-5'>GD32F303</b><b class='flag-5'>紅楓</b><b class='flag-5'>派</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>使用手冊</b>】<b class='flag-5'>第二十</b>講 SPI-SPI NAND FLASH讀寫<b class='flag-5'>實驗</b>