1、DHT11傳感器簡介
DHT11數(shù)字溫濕度傳感器是一款含有已校準數(shù)字信號輸出的溫濕度復合傳感器,它應用專用的數(shù)字模塊采集技術(shù)和溫濕度傳感技術(shù),確保產(chǎn)品具有極高的可靠性和卓越的長期穩(wěn)定性。傳感器包括一個電阻式感濕元件和一個NTC測溫元件,并與一個高性能8位單片機相連接。因此該產(chǎn)品具有品質(zhì)卓越、超快響應、抗干擾能力強、性價比極高等優(yōu)點。每個DHT11傳感器都在極為精確的濕度校驗室中進行校準。校準系數(shù)以程序的形式存在OTP內(nèi)存中,傳感器內(nèi)部在檢測型號的處理過程中要調(diào)用這些校準系數(shù)。單線制串行接口,使系統(tǒng)集成變得簡易快捷。超小的體積、極低的功耗,使其成為該類應用甚至最為苛刻的應用場合的最佳選擇。產(chǎn)品為4針單排引腳封裝,連接方便。
傳感器特性
供電電壓: 3.3~5.5V DC ; 輸 出: 單總線數(shù)字信號 ; 測量范圍: 濕度20-90%RH, 溫度0~50℃ ; 測量精度: 濕度+-5%RH, 溫度+-2℃; 分 辨 率: 濕度1%RH, 溫度1℃; 互 換 性: 可完全互換 ; 長期穩(wěn)定性: <±1%RH/年;
電氣特性
引腳說明
2、編程解讀
2.1、DHT11data數(shù)據(jù)格式: (高位先出)
一次傳輸40位數(shù)據(jù)=8bit濕度整數(shù)數(shù)據(jù) + 8bit濕度小數(shù)數(shù)據(jù) + 8bit溫度整數(shù)數(shù)據(jù) + 8bit溫度小數(shù)數(shù)據(jù) + 8bit校驗和。數(shù)據(jù)傳送正確時,校驗和數(shù)據(jù)等于“8bit濕度整數(shù)數(shù)據(jù)+8位濕度小數(shù)數(shù)據(jù)+8bit溫度整數(shù)數(shù)據(jù)+8bit溫度小數(shù)數(shù)據(jù)”所得結(jié)果的末8位。
用戶MCU發(fā)送一次開始信號后,DHT11從低功耗轉(zhuǎn)換到高速模式,等待主機開始信號結(jié)束后,DHT11發(fā)送響應信號,送出40bit的數(shù)據(jù),并觸發(fā)一次信號采集,用戶可選擇讀取部分數(shù)據(jù),從模式下,DHT11接收到開始信號觸發(fā)一次溫濕度采集,如果沒有接收到主機發(fā)送開始信號,DHT11不會主動進行溫濕度采集,采集數(shù)據(jù)后轉(zhuǎn)換到低速模式。
2.2、時序編程
起步時序
總線空閑狀態(tài)為高電平,主機把總線拉低等待DHT11響應,主機把總線拉低必須大于18毫秒,保證DHT11能檢測到起始信號。DHT11接收到主機的開始信號后,等待主機開始信號結(jié)束,然后發(fā)送80us低電平響應信號.主機發(fā)送開始信號結(jié)束后,延時等待20-40us后, 讀取DHT11的響應信號,主機發(fā)送開始信號后,可以切換到輸入模式,或者輸出高電平均可, 總線由上拉電阻拉高。
數(shù)據(jù)接收時序
總線為低電平,說明DHT11發(fā)送響應信號,DHT11發(fā)送響應信號后,再把總線拉高80us,準備發(fā)送數(shù)據(jù),每一bit數(shù)據(jù)都以50us低電平時隙開始,高電平的長短定了數(shù)據(jù)位是0還是1.格式見下面圖示.如果讀取響應信號為高電平,則DHT11沒有響應,請檢查線路是否連接正常.當最后一bit數(shù)據(jù)傳送完畢后,DHT11拉低總線50us,隨后總線由上拉電阻拉高進入空閑狀態(tài)。
數(shù)字0信號表示方法
數(shù)字1信號表示方法
3、DHT11通信流程及代碼
3.1、簡單通訊流程
第一步初始化IO口 完成起步時序 檢查DHT11是否存在
第二部主機信號線拉高準備接收數(shù)據(jù),依次接收40位
3.2主要程序部分
dht11.h部分代碼
#ifndef _dht11_h
#define _dht11_h
#include "system.h"
#include "SysTick.h"
#define DHT11 (GPIO_Pin_4) //PA4
#define GPIO_DHT11 GPIOA
#define DHT11_DQ_IN PAin(4) //輸入
#define DHT11_DQ_OUT PAout(4) //輸出
void DHT11_IO_OUT(void);
void DHT11_IO_IN(void);
u8 DHT11_Init(void);
void DHT11_Rst(void);
u8 DHT11_Check(void);
u8 DHT11_Read_Bit(void);
u8 DHT11_Read_Byte(void);
u8 DHT11_Read_Data(u8 *temp,u8 *humi);
#endif
dht11.c部分代碼
#include "stm32f10x.h" // Device header
#include "dht11.h"
/*******************************************************************************
* 函 數(shù) 名 : DHT11_Init()
* 函數(shù)功能 : DHT11初始化
* 引 腳 : PA4
* 輸 出 : 返回0:初始化成功,1:失敗
*******************************************************************************/
u8 DHT11_Init()
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO_InitStructure.GPIO_Pin=DHT11;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIO_DHT11,&GPIO_InitStructure);
GPIO_SetBits(GPIO_DHT11,DHT11); //拉高
DHT11_Rst();
return DHT11_Check();
}
/*******************************************************************************
* 函 數(shù) 名 : DHT11_Rst(),DHT11_Check()
* 函數(shù)功能 : 復位DHT11,檢測DHT11
* 引 腳 : PA4
* 輸 出 ://返回1:未檢測到DHT11的存在,返回0:存在
*******************************************************************************/
void DHT11_Rst()
{
DHT11_IO_OUT(); //配置io口為輸出模式
DHT11_DQ_OUT=0; //拉低DQ
delay_ms(20); //拉低至少18ms
DHT11_DQ_OUT=1; //DQ=1
delay_us(30); //主機拉高20~40us
}
u8 DHT11_Check()
{
u8 retry=0;
DHT11_IO_IN();//配置io口為輸入模式
while (DHT11_DQ_IN&&retry<100)//高電平循環(huán),低電平跳出
{
retry++;
delay_us(1);
};
if(retry>=100)return 1;
else retry=0;
while (!DHT11_DQ_IN&&retry<100)//DHT11拉低后會再次拉高40~50us
{
retry++;
delay_us(1);
};
if(retry>=100)return 1;
return 0;
}
/*******************************************************************************
* 函 數(shù) 名 : DHT11_Read_Bit(void)
* 函數(shù)功能 : 從DHT11讀取一個位
* 引 腳 : PA4
* 輸 出 :返回值:1/0
*******************************************************************************/
u8 DHT11_Read_Bit(void)
{
u8 retry=0;
while(DHT11_DQ_IN&&retry<100)//等待變?yōu)榈碗娖?12-14us 開始
{
retry++;
delay_us(1);
}
retry=0;
while(!DHT11_DQ_IN&&retry<100)//等待變高電平 26-28us表示0,116-118us表示1
{
retry++;
delay_us(1);
}
delay_us(40);//等待40us
if(DHT11_DQ_IN)return 1;
else return 0;
}
/*******************************************************************************
* 函 數(shù) 名 : DHT11_Read_Byte(void)
* 函數(shù)功能 : 從DHT11讀取一個字節(jié)
* 引 腳 : PA4
* 輸 出 :返回值:讀到的數(shù)據(jù)
*******************************************************************************/
u8 DHT11_Read_Byte(void)
{
u8 i,dat;
dat=0;
for (i=0;i<8;i++)
{
dat<<=1;
dat|=DHT11_Read_Bit();
}
return dat;
}
/*******************************************************************************
* 函 數(shù) 名 : DHT11_Read_Data(u8 *temp,u8 *humi)
* 函數(shù)功能 : 從DHT11讀取一次數(shù)據(jù)
* 引 腳 : PA4
* 輸 出 :返回值:0,正常;1,讀取失敗
*******************************************************************************/
u8 DHT11_Read_Data(u8 *temp,u8 *humi)
{
u8 buf[5];
u8 i;
DHT11_Rst();
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;
}
//DHT11輸出模式配置
void DHT11_IO_OUT()
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin=DHT11;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //推挽輸出
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIO_DHT11,&GPIO_InitStructure);
}
//DHT11輸入模式配置
void DHT11_IO_IN()
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin=DHT11;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU; //上拉輸入模式
GPIO_Init(GPIO_DHT11,&GPIO_InitStructure);
}
mian.c代碼
#include #include #include "system.h" #include "usart1.h" #include "dht11.h" int main() { u8 temperature; u8 humidity; u8 rx_buf[5]; SysTick_Init(72); //系統(tǒng)時鐘初始化 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中斷優(yōu)先級分組 分2組 USART1_Init(9600); //串口初始化PA9,PA10 DHT11_Init(); //DHT11初始化 引腳PA4PA6-MISO PA7-MOSI while(1) { DHT11_Read_Data(&temperature,&humidity); rx_buf[0]=temperature; rx_buf[1]=humidity; printf("temp=%d,humi=%d",rx_buf[0],rx_buf[1]); delay_ms(20); } } 總結(jié)一下DHT11總體來說挺簡單的 只要清楚理解它的時序,就可以快速上手這款傳感器
上一篇:基于STM32兩輪自平衡小車
下一篇:STM32F103C8T6+溫濕度傳感器DHT11實現(xiàn)溫濕度采集
推薦閱讀
史海拾趣
在市場競爭日益激烈的背景下,川晶科技始終堅持創(chuàng)新驅(qū)動的發(fā)展戰(zhàn)略。公司不斷加大產(chǎn)品創(chuàng)新和自主研發(fā)的力度,推動產(chǎn)品向微型化、低耗能方向發(fā)展。通過引入新技術(shù)、新工藝,川晶科技成功開發(fā)出了一系列具有競爭力的新產(chǎn)品,滿足了市場的多樣化需求。同時,公司還積極探索新的應用領(lǐng)域,努力拓展市場空間,為公司的持續(xù)發(fā)展注入了新的動力。
隨著公司業(yè)務(wù)的不斷擴展,AUK Contractors Co Ltd意識到單一市場已無法滿足其增長需求。于是,公司積極尋求國際合作,與多個國家的電子企業(yè)建立了戰(zhàn)略伙伴關(guān)系。通過技術(shù)交流和資源共享,公司成功打開了新的市場,實現(xiàn)了業(yè)務(wù)的快速增長。
1998年,Epic Games發(fā)布了一款名為“虛幻”的3D第一人稱射擊游戲。這款游戲不僅游戲內(nèi)容新穎,更引人注目的是它背后完全自主開發(fā)的3D游戲引擎。這個引擎后來被稱為“虛幻引擎”,并成為了Epic Games的核心技術(shù)之一。隨著游戲的成功,虛幻引擎也逐漸受到了業(yè)界的關(guān)注。許多其他游戲開發(fā)商開始采用這款引擎來開發(fā)自己的游戲,從而使得Epic Games在游戲引擎領(lǐng)域取得了顯著的商業(yè)成功。
品質(zhì)是企業(yè)的生命線。BusBoard公司深知這一點,因此從原材料采購到生產(chǎn)加工再到產(chǎn)品出廠,每一個環(huán)節(jié)都嚴格把控品質(zhì)。公司建立了完善的品質(zhì)管理體系,對每一道工序都進行嚴格的檢驗和測試。同時,公司還注重員工品質(zhì)意識的培養(yǎng)和提升,確保每一個員工都能以高度的責任心對待自己的工作。這種對品質(zhì)的執(zhí)著追求使得BusBoard公司的產(chǎn)品在市場上贏得了良好的口碑。
我用useradd -G root -g root -d/home/arm arm添加一個arm用戶, 設(shè)置環(huán)境變量后重新以arm用戶登陸,為什么提示符還是$, 怎么可以變成 [arm@localhost arm]#… 查看全部問答∨ |
各位: 我現(xiàn)在的問題如下: 我現(xiàn)在手上有模擬輸入板卡,用的是研華的2718。準備用程序觸發(fā)的輪詢方式讀取板卡數(shù)據(jù)。 速率要求不高,一秒讀一次。過程是:程序向 ...… 查看全部問答∨ |
誰有mcu_ideV3.0,(裝上去之后自帶工具鏈,如keil c51,一共四種,就是有2KB代碼限制的哪個版本) 官網(wǎng)上下的沒有工具鏈,… 查看全部問答∨ |
|
幫我調(diào)下ARM+DS18b20時序,我調(diào)了半天調(diào)不出來。晶振11.0592??刂破鱈PC2131,串口和中斷不用看了。謝謝! 程序: #include "..\\\\basescr\\\\config.h" #include "stdio.h" #define DS1820_DQ 1<<7 //DQ腳接P0.2 #define ...… 查看全部問答∨ |
問下 白紙黑字的單頁 實驗產(chǎn)品免責聲明 關(guān)于 第三個 方框中 要求 3 個工作日內(nèi) 交回的簽名 , 可以給個該頁的中文簡介? 我不能夠 無歧義 的 完整的理解 它。基本意思 有點懂。… 查看全部問答∨ |
如果用來檢測外部500V對應到an0口的電壓是1V,如果電壓的基準是5V,ad是10位的話,那么他的精度就是500V/(1024/5)對嗎?如果我把送到AN0的1V電壓在程序中放大5倍,是不是精度就變了呢?是提高5倍還是不變?請解答,謝謝… 查看全部問答∨ |
《運算放大器噪聲優(yōu)化手冊》閱讀【Ⅴ】 運放內(nèi)部噪聲 本帖最后由 dontium 于 2015-1-23 11:13 編輯 運放內(nèi)部噪聲是指運放自身具有的噪聲,與外圍電路無關(guān)。本章主要寫怎么分析運放內(nèi)部噪聲。運放內(nèi)部噪聲跟運放的輸入級有很大關(guān)系。雙極性與Jfet,cmos等差別很大。本章得出了一些結(jié)論性的文字, ...… 查看全部問答∨ |
設(shè)計資源 培訓 開發(fā)板 精華推薦
- 基于GPS自動授時的無線智能控制器的設(shè)計
- 基于PTR2000的無線氣象信息采集系統(tǒng)設(shè)計
- Microchip推出MEC175xB系列器件,為嵌入式控制器引入硬件 抗量子攻擊能力
- 無人飛行器機載穩(wěn)定云臺控制系統(tǒng)的設(shè)計
- 匠芯創(chuàng)推出面向具身智能高性能實時處理器M7000
- 基于HW2181B的航模無線遙控通信系統(tǒng)設(shè)計與實現(xiàn)
- 應對機器人“四高”,極海推出全球首款雙核Cortex-M52 MCU G32R501
- 非道路移動機械透射式煙度計研究與實現(xiàn)
- 基于STM32F103的角磨機開關(guān)磁阻電機控制器的設(shè)計
- 大眾汽車宣布明年起其所有電動車型全面轉(zhuǎn)向磷酸鐵鋰電池,升級至MEB Plus平臺
- 總產(chǎn)值破2000億,深圳要做“機器人第一城”?
- 鴻道Intewell操作系統(tǒng) 人形機器人底層操作系統(tǒng)
- 如何定位國產(chǎn)智駕芯片的終局價值?
- 新一代車規(guī)級數(shù)字功放電感VSAD-T系列 為汽車音響注入高保真基因
- 蜂巢能源快充電池突破:15分鐘充至滿電,提升30%效率
- 整車操作系統(tǒng)何以躋身智能汽車三大件?
- 人形機器人如何做到“手眼”協(xié)同+“大小腦”協(xié)同?
- 中國電池公司獲英國政府10億英鎊支持!
- 從游戲到智能駕駛,英偉達有哪些技術(shù)升級?
- 鴻蒙系統(tǒng)支持第三方手機,開源開放毫無保留
- 小米8周年紀念版曝光 將采用3D結(jié)構(gòu)光技術(shù)
- 功耗僅為藍牙1%的無線芯片面世
- 周鴻祎:特斯拉出一款無人駕駛汽車 我就能劫持
- ST再發(fā)漲價函 6月1日全線漲價
- 速騰聚創(chuàng)聯(lián)手地平線、菜鳥等發(fā)布Smart Sensor System戰(zhàn)略體系
- 輪式巡檢機器人 “能吃苦”、“不怕事”
- 核設(shè)施應急搶險太高危?讓“葫蘆娃”上
- 這家虧損885萬的機器人企業(yè)何以登上央視?
- 博力實:并聯(lián)機器人行業(yè)領(lǐng)導者 分揀設(shè)備提供商