18video性欧美19sex,欧美高清videosddfsexhd,性少妇videosexfreexxx片中国,激情五月激情综合五月看花,亚洲人成网77777色在线播放

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

DHT11驅(qū)動(dòng)的編寫

9GxC_IoTMaker ? 來源:機(jī)智云開發(fā)者 ? 作者:機(jī)智云開發(fā)者 ? 2022-04-25 14:40 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

本項(xiàng)目主要通過使用STM32F103C8T6作為主控MCU,ESP8266作為數(shù)據(jù)透?jìng)髂K,接入機(jī)智云AIoT云平臺(tái),通過在線智能產(chǎn)品,實(shí)現(xiàn)了遠(yuǎn)程聯(lián)網(wǎng)、溫濕度監(jiān)測(cè)、APP控制等功能。

在上文中,主要介紹了“創(chuàng)建云端產(chǎn)品,燒錄Gagent”,以便讓設(shè)備能夠聯(lián)網(wǎng),當(dāng)然其中也備注了ESP8266燒寫Gagent固件時(shí)的注意事項(xiàng),說明定義數(shù)據(jù)點(diǎn)的作用。

在本文中,從原理開始講解,闡述DHT11驅(qū)動(dòng)的編寫。

進(jìn)入正文

1、DHT11 簡(jiǎn)要介紹

DHT11 器件采用簡(jiǎn)化的單總線通信,DATA 引腳用于微處理器與 DHT11 之間的通訊和同步,一次傳送 40 位數(shù)據(jù),高位先出。

833bcd1a-c44c-11ec-bce3-dac502259ad0.png

舉例:

8357a026-c44c-11ec-bce3-dac502259ad0.png

2、時(shí)序分析(附代碼)

用戶主機(jī)(MCU)發(fā)送一次開始信號(hào)后,DHT11 從低功耗模式轉(zhuǎn)換到高速模式,待主機(jī)開始信號(hào)結(jié)束后,DHT11 發(fā)送響應(yīng)信號(hào),送出 40bit 的數(shù)據(jù),信號(hào)發(fā)送如圖所示。

836d13ca-c44c-11ec-bce3-dac502259ad0.png

注意:主機(jī)(MCU)從 DHT11 讀取的溫濕度數(shù)據(jù)總是前一次的測(cè)量值。

總線空閑:

DHT11 的 DATA 數(shù)據(jù)線由上拉電阻拉高一直保持高電平,此時(shí) DHT11 的DATA 引腳處于輸入狀態(tài),時(shí)刻檢測(cè)外部信號(hào)。

MCU 發(fā)出請(qǐng)求信號(hào):

MCU I/O 設(shè)置為輸出同時(shí)輸出低電平,且低電平保持時(shí)間不能小于 18ms,然后MCU I/O設(shè)置為輸入狀態(tài)。由于上拉電阻,MCU I/O 即 DHT11 的 DATA 數(shù)據(jù)線也隨之變高,之后等待 DHT11 作出回答信號(hào)。

DHT11 發(fā)出應(yīng)答信號(hào):

當(dāng) DHT11 的 DATA 引腳檢測(cè)到外部信號(hào)有低電平時(shí),等待外部信號(hào)低電平結(jié)束,延遲后 DHT11 的 DATA引腳處于輸出狀態(tài),輸出 80us的低電平作為應(yīng)答信號(hào),緊接著輸出 80us 的高電平通知 MCU 準(zhǔn)備接收數(shù)據(jù),MCU I/O 此時(shí)處于輸入狀態(tài),檢測(cè)到 DHT11 回應(yīng)信號(hào)后,等待 80us 的高電平后的數(shù)據(jù)接收。

838da5ea-c44c-11ec-bce3-dac502259ad0.png

MCU 接收 40 位數(shù)據(jù)

由 DHT11 的 DATA 引腳輸出 40 位數(shù)據(jù),MCU 根據(jù) I/O 電平的變化來判斷是 “0” 還是 “1” 。

位數(shù)據(jù) “0” 的格式為:

50us 的低電平和 26-28us的高電平。

83c1a412-c44c-11ec-bce3-dac502259ad0.png

位數(shù)據(jù) “1” 的格式為:

50us 的低電平加 70us 的高電平。

83df9896-c44c-11ec-bce3-dac502259ad0.png

DHT11 發(fā)出結(jié)束信號(hào)

DHT11 的 DATA 引腳輸出 40 位數(shù)據(jù)后,繼續(xù)輸出低電平 50us 后轉(zhuǎn)為輸入狀態(tài),由于上拉電阻存在,變?yōu)楦唠娖健?/p>

// 本驅(qū)動(dòng)采用 HAL 庫,us 級(jí)延時(shí)使用通用定時(shí)器實(shí)現(xiàn),對(duì) IO 引腳的狀態(tài)的改變采用位操作以及直接寄存器操作

// 復(fù)位DHT11void DHT11_Rst(void){

                     
DHT11_IO_OUT();   

//設(shè)置為輸出  DHT11_DQ_OUT = 0;   

//拉低  HAL_Delay_ms(20);   

//拉低至少18ms  DHT11_DQ_OUT = 1;   

//拉高   HAL_Delay_us(30);  

 //主機(jī)拉高20~40us}

//等待DHT11的回應(yīng)//返回1:未檢測(cè)到DHT11的存在//返回0:存在uint8_t DHT11_Check(void)      

{   

uint8_t retry = 0;  DHT11_IO_IN();      

//設(shè)置為輸入   

while(DHT11_DQ_IN && retry < 100)  

//DHT11會(huì)拉低40~80us  

{    

retry++;   

 HAL_Delay_us(1);  

}   

if(retry >= 100)return 1;else    

retry = 0;

while(!DHT11_DQ_IN && retry < 100)  

//DHT11拉低后會(huì)再次拉高40~80us  

{    

retry++;    

HAL_Delay_us(1);  

}if(retry >= 100)return 1;      

return 0;}

//從DHT11讀取一個(gè)位//返回值:1/0uint8_t DHT11_Read_Bit(void)        

{uint8_t retry = 0;while(DHT11_DQ_IN && retry < 100)//等待變?yōu)榈碗娖? 

{    

retry++;    

HAL_Delay_us(1);  

}  

retry = 0;while(!DHT11_DQ_IN && retry < 100)//等待變高電平  

{    

retry++;    

HAL_Delay_us(1);  

}  

delay_us(40);//等待40usif(DHT11_DQ_IN)return 1;elsereturn 0;       

}


//從DHT11讀取一個(gè)字節(jié)//返回值:讀到的數(shù)據(jù)uint8_t DHT11_Read_Byte(void)    

{        

uint8_t i,dat;  dat = 0;for (i=0;i<8;i++)   

{      

dat <<= 1;       

dat |= DHT11_Read_Bit();  

}                

return dat;}


//從DHT11讀取一次數(shù)據(jù)//temp:溫度值(范圍:0~50°)//humi:濕度值(范圍:20%~90%)//返回值:0,正常;1,讀取失敗;2,校驗(yàn)和錯(cuò)誤uint8_t DHT11_Read_Data(uint8_t *temp, uint8_t *humi)    

{        

uint8_t buf[5];uint8_t 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];    

}elsereturn 2;  

// 校驗(yàn)和錯(cuò)誤  

}elsereturn 1;return 0;      

}
//初始化DHT11的 IO口, 同時(shí)檢測(cè)DHT11的存在//返回1:不存在//返回0:存在        

uint8_t DHT11_Init(void){  DHT11_GPIO_Init();


  DHT11_Rst();return DHT11_Check();}

3、使用串口觀察數(shù)據(jù)

將 printf 函數(shù)重定向至與 PC 相連的串口上。由于重定向相關(guān)函數(shù)已經(jīng)包含在機(jī)智云生成的代碼中(gizwits_product.c),我們直接使用 printf 進(jìn)行數(shù)據(jù)打印即可。

#ifdef __GNUC__/* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf     

set to 'Yes') calls __io_putchar() */#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)#else#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)#endif /* __GNUC__ *//**  

* @brief  

Retargets the C library printf function to the USART.  

* @param  None  

* @retval None  

*/PUTCHAR_PROTOTYPE{/* Place your implementation of fputc here *//* e.g. write a character to the USART1 and Loop until the end of transmission */  

HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);


return ch;}

以下為相關(guān)測(cè)試代碼:

state = DHT11_Read_Data(&temperature, &humidity);if(state == 2){printf("the checksum is error


");}else if(!state){printf("temp = %d , humi = %d


", temperature, humidity);}else{printf("DHT11 is not answer


");}


若采集到的數(shù)據(jù)沒有問題,即可將機(jī)智云協(xié)議相關(guān)代碼移植進(jìn)工程中。

本文結(jié)束。

審核編輯 :李倩

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

    關(guān)注

    147

    文章

    18419

    瀏覽量

    380639
  • 微處理器
    +關(guān)注

    關(guān)注

    11

    文章

    2408

    瀏覽量

    85100
  • DHT11
    +關(guān)注

    關(guān)注

    19

    文章

    277

    瀏覽量

    59094

原文標(biāo)題:基于物聯(lián)網(wǎng)的遠(yuǎn)程溫濕度監(jiān)測(cè)系統(tǒng)(2)編寫 DHT11 驅(qū)動(dòng)

文章出處:【微信號(hào):IoTMaker,微信公眾號(hào):機(jī)智云開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    【RA4E2開發(fā)板評(píng)測(cè)】OLED顯示DHT11溫度測(cè)評(píng)

    , BSP_IO_DIRECTION_INPUT); 編寫DHT11讀取程序如下: typedef struct { uint8_t humi_high8bit; uint8_t humi_low8bit; uint8_t
    發(fā)表于 09-21 21:28

    RA-Eco-RA6M4部分功能測(cè)評(píng)2

    初始化等基礎(chǔ)配置,核心步驟如下: 1. 項(xiàng)目結(jié)構(gòu)規(guī)劃 在原有“串口+OLED”項(xiàng)目基礎(chǔ)上,新增DHT11相關(guān)驅(qū)動(dòng)文件,形成模塊化結(jié)構(gòu),便于維護(hù): DHT11_demo/ ├─ src/ │├─
    發(fā)表于 09-05 20:42

    【RA-Eco-RA6M4開發(fā)板評(píng)測(cè)】DHT11溫濕度傳感器獲取+OLED 屏幕顯示

    圖形引擎。RA6T1 系列器件帶有用于電機(jī)控制的增強(qiáng)型外 設(shè),如高分辨率 PWM 定時(shí)器或高級(jí)模擬模塊。 RA8 系列 – 更高性能、人機(jī)界面、物聯(lián)網(wǎng)和邊緣計(jì)算 【溫濕度模塊】 DHT11是一款有已
    發(fā)表于 08-26 00:10

    【RA-Eco-RA6M4開發(fā)板評(píng)測(cè)】uart+OLED+DHT11

    繼上一篇調(diào)通串口和OLED后,這次我們開始加傳感器,這次的傳感器是溫濕度傳感器DHT11。 DHT11 器件采用簡(jiǎn)化的單總線通信。單總線即只有一根數(shù)據(jù)線,系統(tǒng)中的數(shù)據(jù)交換、控制均由單總線完成。設(shè)備
    發(fā)表于 07-27 17:21

    【RA4L1-SENSOR】DHT11測(cè)溫濕度OLED顯示

    為I2C接口,開漏輸出 P107 設(shè)置為 DHT11 單總線接口 OLED 驅(qū)動(dòng)代碼如下: void OLED_SSD1306_Init(void) { u8 i
    發(fā)表于 06-12 11:02

    STM32項(xiàng)目分享:智能鞋柜

    01—項(xiàng)目簡(jiǎn)介1.功能詳解STM32智能鞋柜功能如下:DHT11檢測(cè)鞋柜溫濕度,溫度低于閾值開啟加熱,濕度高于閾值開啟加熱和通風(fēng);P
    的頭像 發(fā)表于 05-27 18:04 ?592次閱讀
    STM32項(xiàng)目分享:智能鞋柜

    用樹莓派RP2350 DIY 桌面動(dòng)態(tài)溫濕度計(jì)

    桌面動(dòng)態(tài)溫濕度計(jì)本文介紹了DFrobotBeetleRP2350開發(fā)板結(jié)合DHT11模塊、鋰電池模塊、隨機(jī)眨眼動(dòng)畫,實(shí)現(xiàn)OLED顯示的桌面動(dòng)態(tài)溫濕度計(jì)的項(xiàng)目設(shè)計(jì)。一、項(xiàng)目介紹本項(xiàng)目包括工作原理:ADC電壓采集與電量轉(zhuǎn)換工程調(diào)試:電量獲取
    的頭像 發(fā)表于 05-27 08:05 ?539次閱讀
    用樹莓派RP2350 DIY 桌面動(dòng)態(tài)溫濕度計(jì)

    【RA-Eco-RA4M2開發(fā)板評(píng)測(cè)】DHT11測(cè)溫濕度OLED顯示

    DHT11 單總線接口 OLED 驅(qū)動(dòng)代碼如下: void OLED_SSD1306_Init(void) { u8 i; OLED_SSD1306_IIC_Init(); for (i=0
    發(fā)表于 05-11 13:53

    急急急在線等

    求一張stm32物聯(lián)網(wǎng)智能家居環(huán)境監(jiān)測(cè)系統(tǒng)總電路圖,含DHT11,BH1750,MQ-2煙霧傳感器,OLED顯示屏,聲光報(bào)警器,ESP8266等
    發(fā)表于 04-28 23:20

    畢業(yè)設(shè)計(jì)實(shí)物章節(jié)補(bǔ)充!有償!

    本人的畢業(yè)設(shè)計(jì)是STM32智能風(fēng)扇系統(tǒng),運(yùn)用到的模塊有DHT11、L298N和HC-05,我沒有做實(shí)物,導(dǎo)致仿真以及實(shí)物測(cè)試章節(jié)沒辦法寫,初稿就要交了,想找個(gè)大佬提供資料,有償感謝。
    發(fā)表于 02-27 21:05

    迅為RK3568開發(fā)板SPI驅(qū)動(dòng)指南-mcp2515驅(qū)動(dòng)編寫:讀寄存器函數(shù)

    迅為RK3568開發(fā)板SPI驅(qū)動(dòng)指南-mcp2515驅(qū)動(dòng)編寫:讀寄存器函數(shù)
    的頭像 發(fā)表于 01-20 14:43 ?1356次閱讀
    迅為RK3568開發(fā)板SPI<b class='flag-5'>驅(qū)動(dòng)</b>指南-mcp2515<b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>編寫</b>:讀寄存器函數(shù)

    【正點(diǎn)原子STM32H7R3開發(fā)套件試用體驗(yàn)】DS18B20、DHT11溫濕度采集

    【正點(diǎn)原子STM32H7R3開發(fā)套件試用體驗(yàn)】DS18B20、DHT11溫濕度采集 本文主要分為兩部分,分別介紹了使用正點(diǎn)原子STM32H7R3開發(fā)套件,通過 DS18B20、DHT11 傳感器采集
    發(fā)表于 01-01 11:16

    《DNESP32S3使用指南-IDF版_V1.6》第三十章 DHT11數(shù)字溫濕度傳感器

    函數(shù)。因此,有關(guān)GPIO的API函數(shù)介紹,請(qǐng)讀者回顧此前的第十章的內(nèi)容。接下來,筆者將直接介紹DHT11驅(qū)動(dòng)代碼。30.3.3 DHT11驅(qū)動(dòng)解析在IDF版20_
    發(fā)表于 12-26 09:26

    STM32項(xiàng)目分享:機(jī)智云智慧農(nóng)業(yè)系統(tǒng)

    01—項(xiàng)目簡(jiǎn)介1.功能詳解基于STM32的機(jī)智云智慧農(nóng)業(yè)系統(tǒng)。功能如下:溫濕度采集:使用DHT11溫濕度傳感器采集環(huán)境溫濕度土壤濕度
    的頭像 發(fā)表于 12-19 18:40 ?1763次閱讀
    STM32項(xiàng)目分享:機(jī)智云智慧農(nóng)業(yè)系統(tǒng)

    Linux,IIO驅(qū)動(dòng)完結(jié)有感

    的核心要素與體驗(yàn)02.2_增加iio_buffer并體驗(yàn)sysfs02.3_實(shí)現(xiàn)iio_buffer的寫入03.1_iio_trigger的引入與體驗(yàn)03.2_iio_trigger內(nèi)部機(jī)制03.3_iio-trig-hrtimer分析03.4_修改DHT11驅(qū)動(dòng)使用ii
    的頭像 發(fā)表于 12-06 09:45 ?983次閱讀
    Linux,IIO<b class='flag-5'>驅(qū)動(dòng)</b>完結(jié)有感