STM32 模塊篇-溫溼度傳感器模塊(DHT11)實驗

2020-12-25 電子工程世界網

5.03 溫溼度傳感器模塊實驗

5.03.1 概述

DHT11 數字溫溼度傳感器是一款含有已校準數位訊號輸出的溫溼度複合傳感器。它應用專用的數字模塊採集技術和溫溼度傳感技術,確保產品具有極高的可靠性與卓越的長期穩定性。傳感器包括一個電阻式感溼元件和一個NTC測溫元件,並與一個高性能8 位單片機相連接。因此該產品具有品質卓越、超快響應、抗幹擾能力強、性價比極高等優點。每個DHT11 傳感器都在極為精確的溼度校驗室中進行校準。校準係數以程序的形式儲存在OTP 內存中,傳感器內部在檢測信號的處理過程中要調用這些校準係數。單線制串行接口,使系統集成變得簡易快捷。超小的體積、極低的功耗,信號傳輸距離可達20 米以上,使其成為各類應用甚至最為苛刻的應用場合的最佳選則。

 


DHT11 數字溫溼度傳感器模塊為4 針PH2.0 封裝。連接方便。如右圖所示。

5.03.1.1 性能描述

1. 供電電壓:3-5.5V

2. 供電電流:最大2.5mA

3. 溫度範圍:0-50℃ 誤差±2℃

4. 溼度範圍:20-90%RH 誤差±5%RH

5. 響應時間: 1/e(63%) 6-30s

6. 測量解析度分別為 8bit(溫度)、8bit(溼度)

7. 採樣周期間隔不得低於1 秒鐘

8. 模塊尺寸:30x20mm 

 


注釋:建議連接線長度短於20米時使用5K上拉電阻,大於20米時根據實際情況使用合適的上拉電阻。

5.03.1.2 傳感器時序

DATA 用於微處理器與 DHT11之間的通訊和同步,採用單總線數據格式,一次通訊時間4ms左右,數據分小數部分和整數部分,具體格式在下面說明,當前小數部分用於以後擴展,現讀出為零.操作流程如下:

一次完整的數據傳輸為40bit,高位先出。

數據格式:

8bit溼度整數數據+8bit溼度小數數據

+8bi溫度整數數據+8bit溫度小數數據

+8bit校驗和

數據傳送正確時校驗和數據等於「8bit溼度整數數據+8bit溼度小數數據+8bi溫度整數數據+8bit溫度小數數據」所得結果的末8位。

用戶MCU發送一次開始信號後,DHT11從低功耗模式轉換到高速模式,等待主機開始信號結束後,DHT11發送響應信號,送出40bit的數據,並觸發一次信號採集,用戶可選擇讀取部分數據.從模式下,DHT11接收到開始信號觸發一次溫溼度採集,如果沒有接收到主機發送開始信號,DHT11不會主動進行溫溼度採集.採集數據後轉換到低速模式。

通訊過程如圖

 

 


    總線空閒狀態為高電平,主機把總線拉低等待DHT11響應,主機把總線拉低必須大於18毫秒,保證DHT11能檢測到起始信號。DHT11接收到主機的開始信號後,等待主機開始信號結束,然後發送80us低電平響應信號.主機發送開始信號結束後,延時等待20-40us後, 讀取DHT11的響應信號,主機發送開始信號後,可以切換到輸入模式,或者輸出高電平均可, 總線由上拉電阻拉高。

 


    總線為低電平,說明DHT11發送響應信號,DHT11發送響應信號後,再把總線拉高80us,準備發送數據,每一bit數據都以50us低電平時隙開始,高電平的長短定了數據位是0還是1.格式見下面圖示.如果讀取響應信號為高電平,則DHT11沒有響應,請檢查線路是否連接正常.當最後一bit數據傳送完畢後,DHT11拉低總線50us,隨後總線由上拉電阻拉高進入空閒狀態。 

5.03.2 實驗目的

1. 掌握溫度採集模塊DHT11的工作原理; 

2. 掌握單片機實現溫度採集模塊DHT11數據採集的基本方法,其中包括硬體和軟體實現兩部分;     

3. 熟悉單片機數據採集系統中,溫度採集模塊DHT11作為傳感器對象的系統設計方法。

5.03.3 硬體設計

選用大黃蜂實驗板,溫度採集模塊DHT11是成品模塊,直接插接到實驗板上即可。硬體設計見「圖5.03.5  溫度採集模塊DHT11連線圖」。

 



5.03.4 軟體設計

5.03.4.1 軟體設計說明

    溫度採集模塊DHT11是成品模塊,直接插接到實驗板上即可。按照上一章介紹的工作原理,我們就可以按照工作時序編寫出數據採集程序。我們還是採用庫函數的方式進行程序設計。

在這節程序設計中,用到了外部中斷函數;prinif 重定向列印輸出函數; USART串口通訊函數;定時器函數。

5.03.4.2 STM32庫函數文件

?

   本節實驗及以後的實驗我們都是用到庫文件,其中 stm32f10x_gpio.h頭文件包含了GPIO埠的定義。stm32f10x_rcc.h 頭文件包含了系統時鐘配置函數以及相關的外設時鐘使能函數,所以我們要把這兩個頭文件對應的stm32f10x_gpio.c和stm32f10x_rcc.c加到工程中;Misc.c庫函數主要包含了中斷優先級的設置,stm32f10x_exti.c 庫函數主要包含了外部中斷設置參數,tm32f10x_tim.c庫函數主要包含定時器設置,tm32f10x_usart.c庫函數主要包含串行通訊設置,這些函數也要添加到函數庫中。以上庫文件包含了本次實驗所有要用到的函數使用功能。

5.03.4.3 自定義頭文件

                                        

    我們在每個工程設計中都要創建了兩個公共的文件,這兩個文件主要存放我們自定義的公共函數和全局變量,以方便以後每個功能模塊(函數)之間傳遞參數。

5.03.4.4 pbdata.h文件裡的內容是

   

           

語句 #ifndef、#endif是為了防止pbdata.h文件被多個文件調用時出現錯誤提示。如果不加這兩條語句,當兩個文件同時調用pbdata文件時,會提示重複調用錯誤。 

5.03.4.5 pbdata.c文件裡的內容是

下面是pbdata.c文件詳細內容,在文件開始還是引用「pbdata.h」文件。


 5.03.5  STM32系統時鐘配置SystemInit()

在每個工程中必須在開始時配置並啟動STM32系統時鐘,這是基礎,這次也不例外。

5.03.6  GPIO引腳時鐘使能



 

5.03.7  GPIO管腳電平控制函數


    在主程序中採用while(1)循環語句,採用查詢方式不停的讀取溫溼度數據,然後直接通過串口送列印輸出到屏幕。



  while(1)

   {

  DHT11_Read_Data(&wd,&sd);//讀取溫溼度值    

  printf("當前環境溫度: %d ℃rn",wd);    

  printf("當前環境溼度: %d %%rn",sd);    

  delay_ms(1000);

  delay_ms(1000);

   }



 


5.03.8  stm32f10x_it.c文件裡的內容是


在中斷處理stm32f10x_it.c文件裡中僅串口1子函數非空,進入中斷處理函數後,只有串口1有參數輸出。



#include "stm32f10x_it.h" 

#include "stm32f10x_exti.h"

#include "stm32f10x_rcc.h"

#include "misc.h"

#include "pbdata.h"

 

void NMI_Handler(void)

{

}

 

void USART1_IRQHandler(void)

{

   if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)

   {

USART_SendData(USART1,USART_ReceiveData(USART1));

while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);

   }

}

 

 



5.03.9  dht11.h文件裡的內容是


函數dht11.h在這裡是為符合溫溼度模塊功能自定義的專用功能函數,dht11.h的內容如下:


#ifndef __DHT11_H

#define __DHT11_H 

#include "pbdata.h"

 

#define IO_DHT11 GPIO_Pin_4 //引入中間變量,方便移植

#define GPIO_DHT11 GPIOE //引入中間變量,方便移植

 

#define DHT11_DQ_High GPIO_SetBits(GPIO_DHT11,IO_DHT11) 

#define DHT11_DQ_Low  GPIO_ResetBits(GPIO_DHT11,IO_DHT11)

 

void DHT11_IO_OUT(void);//溫溼度模塊輸出函數

void DHT11_IO_IN(void); //溫溼度模塊輸入函數

void DHT11_Init(void);  //初始化DHT11

u8   DHT11_Read_Data(u8 *temp,u8 *humi);//讀取溫溼度

u8   DHT11_Read_Byte(void);             //讀出一個字節

u8   DHT11_Read_Bit(void);              //讀出一個位

u8   DHT11_Check(void);                 //檢測是否存在DHT11

void DHT11_Rst(void);                   //復位DHT11    

#endif

5.03.10  dht11.c文件裡的內容是


 


自定義函數dht11.c的內容如下:


#include "pbdata.h"

 

void DHT11_IO_IN(void)//溫溼度模塊輸入函數

{

GPIO_InitTypeDef GPIO_InitStructure;

 

GPIO_InitStructure.GPIO_Pin=IO_DHT11;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;

GPIO_Init(GPIO_DHT11,&GPIO_InitStructure);

}

 

void DHT11_IO_OUT(void)//溫溼度模塊輸出函數

{

GPIO_InitTypeDef GPIO_InitStructure;

 

GPIO_InitStructure.GPIO_Pin=IO_DHT11;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;

GPIO_Init(GPIO_DHT11,&GPIO_InitStructure);

}

 

//復位DHT11

void DHT11_Rst(void)   

{                 

   DHT11_IO_OUT(); //SET OUTPUT

    DHT11_DQ_Low; //DQ=0

    delay_ms(20);    //拉低至少18ms

    DHT11_DQ_High; //DQ=1 

 delay_us(30);     //主機拉高20~40us

}

 

//等待DHT11的回應

//返回1:未檢測到DHT11的存在

//返回0:存在

u8 DHT11_Check(void)    

{   

u8 retry=0;//定義臨時變量

DHT11_IO_IN();//SET INPUT 

while ((GPIO_Rea

[

1

] [

2

]

關鍵字:STM32  溫溼度傳感器模塊  DHT11 編輯:什麼魚 引用地址:http://news.eeworld.com.cn/mcu/ic467479.html

推薦閱讀

STM32項目(三)——通用LIN控制器

需求:LIN馬達控制器:AFS(DHL+AFL)——彎道輔助照明系統DHL:上極限,下極限,零位,馬達老化循環;AFL:左極限,右極限,零位,馬達老化循環;所有參數可配置:上極限,下極限,零位,左極限,右極限,馬達循環上極限,馬達循環下極限,馬達循環次數,馬達循環等待時間;保存至少30款產品的配置,配置界面需要有添加,讀取,查找,刪除功能。方案:STM32 + LIN + 串口(使用NXP的串口屏,TJA系列的LIN晶片)STM32的LIN接口作為主節點,馬達作為從節點。系統設計:RTX多任務設計,串口處理任務,顯示屏處理任務,LIN發送任務;(1)、串口處理任務:點擊串口屏會獲取到點擊的坐標值,串口中斷接受到數據加入到隊列;任務

發表於 2020-12-09

STM32項目(二) —— 車燈測試臺架

需求:(1)、點燈控制器:在線節拍,離線節拍;(2)、PWM控制盒:在線PWM,離線PWM;(3)、電流測試模塊:檢測車燈電流校準係數;方案:點燈控制器:STM32 + CAN + GPIO節拍:比如亮多長時間,滅多長時間;大節拍中嵌套多個小節拍,每個燈對應相同或者不同的節拍。上位機下發控制指令,表明此時是在線還是離線。(離線跑的節拍是在在線模式下下載的)在線模式:如果是直接輸出,按照指定格式下發CAN消息,MCU接受消息並解析,切繼電器點燈;如果是存儲節拍,MCU內部Flash存儲上位機通過CAN下發的點燈節拍。離線模式:從內部Flash中讀取節拍,並控制繼電器點燈;模式切換按鈕:不僅可以通過上位機控制在線/離線模式,還可

發表於 2020-12-09

STM32項目(一) —— 展示車座椅

功能:模擬人開車時,ACR和ABL的變化。 主控制器:STM32(CAN,串口,網口,輸入,輸出)上位機:LibView ACR:卷收器(座椅上面的安全帶)ABL:電機(座椅右下角接安全帶的插孔)PUMA:控制器發送CAN給PUMA,PUMA控制ACR和ABL(DBC文件的解析);ACR通過CAN控制,ABL通過PWM控制電機。 STM32硬體接口:按鍵盒8路輸入,網口與工控機軟體通信,CAN1直接控制ACR,CAN2給PUMA信號控制ACR,串口與上位機軟體通信(控制方向盤震動)。 主要有兩塊功能:靜態模式和遊戲模式。 靜態模式:UC-WinRoad沒工作時,STM32檢測

發表於 2020-12-09

STM32——GPIO(2)

, GPIO_InitTypeDef* GPIO_InitStruct){  uint32_t currentmode = 0x00, currentpin = 0x00, pinpos = 0x00, pos = 0x00;  uint32_t tmpreg = 0x00, pinmask = 0x00;  /* 斷言,用於檢查輸入的參數是否正確 */  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));  assert_param(IS_GPIO_MODE(GPIO_InitStruct->GPIO_Mode));  assert

發表於 2020-12-09

Octonion全新AI工業狀態監測擴展軟體包可在STM32 MCU完美運行

專業開發工業設備診斷邊緣人工智慧(AI)的深度技術軟體公司Octonion 發布了一個STM32Cube擴展軟體包。該軟體包是針對來自橫跨多重電子應用領域的全球領先的半導體供應商意法半導體(STMicroelectronics,簡稱ST;紐約證券交易所代碼:STM)的工業級STM32L4 +微控制器開發板的優化過的狀態監測解決方案。 Octonions的新軟體包支持意法半導體在快速增長的工業狀態監測和預測性維護市場上發起的使用STM32微控制器和微處理器開發人工智慧應用的市場活動。Octonion的I-CUBE-OCTMI 軟體包是一個運行在STM32 超低功耗MCU上的自我維護系統,系統

發表於 2020-12-09

STM32——流水燈

stm32f10x_conf.h:打開stm32f10x_gpio.h和stm32f10x_rcc.h;stm32f10x_gpio.c 和 stm32f10x_rcc.c加入工程模板中,只說重點。【stm32f10x_rcc.c用於配置系統時鐘 和外設時鐘,由於每個外設都要配置時鐘,所以它是每個外設都需要用到的庫文件。】// 新建led.h  led.c#ifndef  _LED_H_#define  _LED_H_ #include "stm32f10x.h" #define ON  0#define OFF 1 #define LED1

發表於 2020-12-08

相關焦點

  • STM32之光敏電阻傳感器模塊的使用
    本實驗配合2.2寸TFT液晶屏顯示,當光弱的時候顯示「昏暗」,光強時顯示「明亮」。本文引用地址:http://www.eepw.com.cn/article/201807/384517.htm實驗使用的是下圖所示的3線光敏電阻傳感器模塊,用途:光線亮度檢測,光線亮度傳感器,智能小車尋光模塊。
  • dht11溫溼度傳感器中文資料(dht11工作原理特性參數及應用電路)
    打開APP dht11溫溼度傳感器中文資料(dht11工作原理特性參數及應用電路) 發表於 2018-03-16 10:16:44
  • 煙霧傳感器模塊實驗,精彩內容別錯過,值得看,上海民熔
    優選ABS材料,有良好的防火阻燃性可拆卸底座設計,方便固定和取下真材實料用的放心簡單又方便,迅速作出反饋 本文將會介紹關於民熔煙霧傳感器模塊實驗,感覺這篇文章對你有幫助的話,可以關注下小編
  • 基於arduino的dht11溫溼度傳感器的使用
    DHT11溫溼度傳感器簡介   DHT11是一款有已校準數位訊號輸出的溫溼度傳感器。 其精度溼度+-5%RH, 溫度+-2℃,量程溼度20-90%RH, 溫度0~50℃。   DHT11數字溫溼度傳感器是一款含有已校準數位訊號輸出的溫溼度複合傳感器,它應用專用的數字模塊採集技術和溫溼度傳感技術,確保產品具有極高的可靠性和卓越的長期穩定性。傳感器包括一個電阻式感溼元件和一個NTC測溫元件,並與一個高性能8位單片機相連接。因此該產品具有品質卓越、超快響應、抗幹擾能力強、性價比極高等優點。每個DHT11傳感器都在極為精確的溼度校驗室中進行校準。
  • DHT11的使用注意事項
    DHT11數字溫度傳感器是一款含有已校準數位訊號輸出的溫溼度複合傳感器。它應用專用的數字模塊採集技術和溫溼度傳感技術,確保產品具有極高的可靠性與卓越的長期穩定性。傳感器包括一個電阻式感溼元件和一個NTC測溫元件,並與一個8位單片機相連接。該產品具有通信便捷、超快響應、抗幹擾能力強等優點。
  • 用於機器人的超聲波傳感器模塊
    打開APP 用於機器人的超聲波傳感器模塊 佚名 發表於 2018-05-24 09:10:00 可見傳感器為推動中國機器人產業快速有序發展立下了汗馬功勞。在機器人中使用的超聲波傳感器是一個電子模塊,測量距離在3cm到400cm之間。它可以用於幫助機器人避開障礙物,或用於其他相關項目的距離測量和避障工程。傳感器可謂是用來檢測機器人自身的工作狀態,以及機器人智能探測外部工作環境和對象狀態的核心部件。
  • 正點原子-戰艦V3第三十六章 DHT11 數字溫溼度傳感器實驗
    上一章,我們介紹了數字溫度傳感器 DS18B20 的使用,本章我們將介紹數字溫溼度傳感器DHT11 的使用,該傳感器不但能測溫度,還能測溼度。本章我們將向大家介紹如何使用 STM32F1來讀取 DHT11 數字溫溼度傳感器,從而得到環境溫度和溼度等信息,並把從溫溼度值顯示在TFTLCD 模塊上。
  • 紅外避障傳感器原理圖_紅外傳感器避障模塊電路圖
    LM393紅外避障傳感器模塊電原理圖   模塊描述   該傳感器模塊對環境光線適應能力強,其具有一對紅外線發射與接收管,發射管發射出頻率的紅外線,當檢測方向遇到障礙物(反射面)時,紅外線反射回來被接收管接收,經過比較器電路處理之後,綠色指示燈會亮起,同時信號輸出接口輸出數位訊號(一個低電平信號),可通過電位器旋鈕調節檢測距離,有效距離範圍2~30cm
  • 汽車輪胎壓力監視系統TPMS傳感器模塊技術解析
    TPMS的輪胎壓力監測模塊由五個部分組成:具有壓力、溫度、加速度、電壓檢測和後信號處理ASIC晶片組合的智慧傳感器SoC;4-8位單片機(MCU);RF射頻發射晶片;鋰亞電池;天線。 加速度傳感器可使發射模塊具有自動喚醒功能,SP12/30和NPX2系列的智能傳感器都包含了加速度傳感器,加速度傳感器利用其質量塊對運動的敏感性,實現汽車移動實時開機,進入系統自檢、自動喚醒,汽車高速行駛時按運動速度自動智能確定檢測時間周期,用軟體設定安全期、敏感期和危險期,以逐漸縮短巡迴檢測周期和提高預警能力、節省電能等功能。
  • 甲烷傳感器模塊用於下水道甲烷等可燃氣體檢測
    導讀 甲烷檢測儀,定期對廚房下水道甲烷氣體進行檢測,甲烷檢測儀通過內部的甲烷傳感器模塊以及可燃氣體元件能夠準確的監測空氣中甲烷含量
  • 必創科技:公司的MEMS傳感器主要產品為壓力傳感器晶片及其測量模塊
    同花順(300033)財經4月29日訊,有投資者向必創科技(300667)提問,公司MEMS傳感器有哪些市場布局?公司回答表示,公司的MEMS傳感器主要產品為壓力傳感器晶片及其測量模塊。現在的壓力傳感器晶片和模塊主要面向汽車歧管壓力傳感器,是其核心部件。公司近期將開展差壓壓力傳感器晶片及其模塊的研發,繼續深耕燃油汽車市場。在新能源汽車領域,公司也將開展隔離膜壓力芯體研製項目,希望為新能源汽車提供抗腐蝕、小體積的壓力傳感器。公司的MEMS傳感器還包含測量加速度、振動、衝擊等的傳感器晶片,這也是公司面向物聯網等需求而提前儲備的技術。謝謝!
  • 智能手錶中的傳感器與相關模塊原理分析
    智能手錶中的傳感器與相關模塊原理分析 工程師周亮 發表於 2018-09-05 09:44:33 拋開時尚的外殼 智能手錶本質上是一個依賴各種傳感器的產品
  • STM32實例-DS18B20溫度傳感器實驗②-DS18B20讀取溫度
    硬體設計    本實驗使用到硬體資源如下:(1)D1 指示燈(2)串口 1(3)DS18B20 溫度傳感器    D1指示燈、串口 1 電路在前面章節都介紹過,這裡就不多說,DS18B20溫度傳感器模塊電路如下圖所示:
  • 全球體積最小的數字紅外接近傳感器模塊為開發更小、更輕、始終...
    全球領先的高性能傳感器解決方案供應商艾邁斯半導體(ams AG,瑞士股票交易所股票代碼:AMS)宣布今日推出了全球體積最小的數字接近傳感器模塊——TMD2635,其超小封裝體積僅為1mm3
  • STM32 ESP8266的WIFI TFT自動校時天氣預報 (含AD設計 燒錄文件 DIY030)
    本設計使用stm32作為主控,採用esp8266作為網絡接入模組,可實現自動校準時間以及獲取天氣信息等功能!該項目成本低廉,主要功能為自動校時與天氣預報,改方案解決了現有電子時鐘走時偏差的問題(可降低時鐘部分硬體要求),具備本地溫溼度測量、天氣預報數據獲取功能,可擴展實現節氣提醒,自動報時,鬧鐘等功能。
  • NDIR CO2傳感器和模塊市場在預測期內將以最高複合年增長率增長
    打開APP NDIR CO2傳感器和模塊市場在預測期內將以最高複合年增長率增長 新思界網 發表於 2020-12-12 09:32:48
  • 我們發現一個攝像頭模塊與VivoNEX3上的攝像頭模塊非常相似
    移動到手機背面,我們發現一個攝像頭模塊與Vivo NEX 3上的攝像頭模塊非常相似。該攝像頭模塊似乎只包含兩個傳感器,根據以前的傳言,該攝像頭模塊包括一個內置雲臺的主攝像頭和一個攝像頭。令人難以置信的圖像穩定。當輔助傳感器與潛望鏡鏡頭配對時,可實現更長的變焦。就其他規格而言,Vivo APEX 2020應該配備顯示屏指紋掃描儀。
  • STM32單片機的PSAM卡驅動模塊設計
    硬體設計  2.1 PSAM卡電路設計  2.1.1 PSAM卡電源切換模塊  ISO7816 協議裡規定2種使用較多的,PSAM卡的類別(A類、B類),A類需要提供5 V電壓,B類需要提供3V電壓,為了保證對於兩種類別卡的兼容性,要求設計的讀寫器,可以提供選擇5V或者3 V的電壓。於是本論文設計了如圖2所示的電源切換模塊。
  • 2.4G無線模塊有什麼特點?
    2.4G無線模塊(RF無線模塊)是數字廣播電臺(DGITADIO)的模塊化產品,是通過DSP技術和無線技術實現的高性能專業數據廣播電臺模塊。 那麼,2.4G無線模塊有什麼特點呢?
  • 智能照明模塊配電箱接線圖
    很多客戶因為沒有用過智能照明控制系統, 本文詳細對智能照明控制系統的常見問題處理、智能照明模塊、智能照明控制器的配電箱接線圖做解析:智能照明控制系統是一種面向建築電氣設備的成套電氣控制裝置,它採用先進的計算機嵌入技術,可實現各種復 雜控制方式