女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

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

STM32+DHT11監(jiān)測環(huán)境的溫濕度

DS小龍哥-嵌入式技術(shù) ? 來源:DS小龍哥-嵌入式技術(shù) ? 作者:DS小龍哥-嵌入式技 ? 2023-05-17 09:22 ? 次閱讀

【1】DHT11傳感器

DHT11是一種數(shù)字溫濕度傳感器,能夠通過數(shù)字信號輸出當(dāng)前環(huán)境的溫度和濕度值。DHT11可以通過一條數(shù)據(jù)信號線連接到微控制器或其他外設(shè),從而實(shí)現(xiàn)溫濕度的實(shí)時測量和數(shù)據(jù)讀取。

DHT11采用單總線通信協(xié)議,只需要連接一個數(shù)字信號線和兩個電源線,即可實(shí)現(xiàn)傳感器的數(shù)據(jù)讀取。傳感器本身具有一定的溫度和濕度校準(zhǔn)能力,因此輸出的數(shù)據(jù)比較可靠。

DHT11傳感器的測量范圍為0~50°C的溫度和20%~90%的相對濕度,測量精度為±2°C和±5%RH。

【2】通信協(xié)議

DHT11采用單總線通信協(xié)議,使用一條數(shù)據(jù)信號線來傳輸數(shù)據(jù),其中包括起始信號、數(shù)據(jù)位和校驗(yàn)位。通信協(xié)議如下:

  1. 主機(jī)發(fā)送一個開始信號給DHT11,即將數(shù)據(jù)信號線拉低至少18ms以上。
  2. 主機(jī)發(fā)出啟動信號之后,拉低數(shù)據(jù)線至少80us,在這個過程中,DHT11將會檢測到主機(jī)發(fā)送的啟動信號,并做出回應(yīng)。
  3. DHT11響應(yīng)主機(jī)發(fā)出的啟動信號后,會拉高數(shù)據(jù)信號線至少80us,表示傳輸數(shù)據(jù)前的“準(zhǔn)備工作”已經(jīng)完成。
  4. DHT11開始向主機(jī)發(fā)送數(shù)據(jù),每個數(shù)據(jù)包包含40個位,高位先傳輸。在數(shù)據(jù)傳輸?shù)倪^程中,DHT11會將數(shù)據(jù)信號線從低電平轉(zhuǎn)換為高電平,表示1的開始,持續(xù)時間2628us,然后將數(shù)據(jù)線拉低,表示0的開始,持續(xù)時間70us。
  5. 在發(fā)送完40位數(shù)據(jù)后,DHT11會發(fā)送一個校驗(yàn)位。校驗(yàn)位的計算方法是將前四個字節(jié)數(shù)據(jù)相加,求出一個8位校驗(yàn)碼,將此校驗(yàn)碼與第五個字節(jié)進(jìn)行比較,如果相等,則數(shù)據(jù)傳輸成功,否則需要重傳數(shù)據(jù)。
  6. 主機(jī)接收到數(shù)據(jù)后,需要將數(shù)據(jù)信號線拉高,以結(jié)束傳輸。

【3】讀取DHT11溫濕度數(shù)據(jù)

以下是一個讀取DHT11傳感器的溫度和濕度示例代碼:

Copy Code#include "stm32f10x.h"
#include "dht11.h"
?
#define DHT11_GPIO_PORT GPIOB
#define DHT11_GPIO_PIN GPIO_Pin_12
?
void delay_us(uint32_t us)
{
  us *= (SystemCoreClock / 1000000) / 5;
  while (--us);
}
?
void dht11_start(void)
{
  GPIO_InitTypeDef GPIO_InitStruct;
?
  GPIO_InitStruct.GPIO_Pin = DHT11_GPIO_PIN;
  GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
?
  GPIO_Init(DHT11_GPIO_PORT, &GPIO_InitStruct);
?
  /* 發(fā)送開始信號 */
  GPIO_ResetBits(DHT11_GPIO_PORT, DHT11_GPIO_PIN);
  delay_us(18000);
?
  GPIO_SetBits(DHT11_GPIO_PORT, DHT11_GPIO_PIN);
  delay_us(40);
?
  GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
?
  GPIO_Init(DHT11_GPIO_PORT, &GPIO_InitStruct);
}
?
uint16_t dht11_read_bit(void)
{
  uint16_t retry = 0;
?
  while (GPIO_ReadInputDataBit(DHT11_GPIO_PORT, DHT11_GPIO_PIN) == RESET) {
    retry++;
    if (retry > 1000) {
      return 0;
     }
    delay_us(1);
   }
?
  retry = 0;
?
  while (GPIO_ReadInputDataBit(DHT11_GPIO_PORT, DHT11_GPIO_PIN) == SET) {
    retry++;
    if (retry > 1000) {
      return 0;
     }
    delay_us(1);
   }
?
  if (retry < 30) {
? ? ? ? ?return 0;
? ?  } else {
? ? ? ? ?return 1;
? ?  }
?}
??
?uint8_t dht11_read_byte(void)
?{
? ? ?uint8_t i;
? ? ?uint8_t data = 0;
??
? ? ?for (i = 0; i < 8; i++) {
? ? ? ? ?data <<= 1;
? ? ? ? ?if (dht11_read_bit()) {
? ? ? ? ? ? ?data |= 0x01;
? ? ? ?  }
? ?  }
??
? ? ?return data;
?}
??
?uint8_t dht11_read_data(dht11_data_t *data)
?{
? ? ?uint8_t i;
? ? ?uint8_t buf[5];
? ? ?uint8_t checksum = 0;
??
? ? ?dht11_start();
??
? ? ?if (GPIO_ReadInputDataBit(DHT11_GPIO_PORT, DHT11_GPIO_PIN) == RESET) {
? ? ? ? ?/* 等待DHT11響應(yīng) */
? ? ? ? ?while (GPIO_ReadInputDataBit(DHT11_GPIO_PORT, DHT11_GPIO_PIN) == RESET);
??
? ? ? ? ?/* 等待DHT11發(fā)射數(shù)據(jù) */
? ? ? ? ?while (GPIO_ReadInputDataBit(DHT11_GPIO_PORT, DHT11_GPIO_PIN) == SET);
??
? ? ? ? ?/* 接收數(shù)據(jù) */
? ? ? ? ?for (i = 0; i < 5; i++) {
? ? ? ? ? ? ?buf[i] = dht11_read_byte();
? ? ? ?  }
??
? ? ? ? ?/* 校驗(yàn)和 */
? ? ? ? ?checksum = buf[0] + buf[1] + buf[2] + buf[3];
??
? ? ? ? ?if (checksum == buf[4]) {
? ? ? ? ? ? ?data->humidity = buf[0];
      data->temperature = buf[2];
      return 1;
     }
   }
?
  return 0;
}
?
int main(void)
{
  dht11_data_t data;
?
  GPIO_InitTypeDef GPIO_InitStruct;
?
  /* 使能GPIOB時鐘 */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
?
  /* 配置DHT11引腳為輸入模式 */
  GPIO_InitStruct.GPIO_Pin = DHT11_GPIO_PIN;
  GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
?
  GPIO_Init(DHT11_GPIO_PORT, &GPIO_InitStruct);
?
  while (1) {
    if (dht11_read_data(&data)) {
      printf("Temperature: %d°C   Humidity: %d%%n", data.temperature, data.humidity);
     } else {
      printf("Error reading data from DHT11.n");
     }
    delay_us(2000000);
   }
}

在這個示例代碼中,首先定義了一個dht11_data_t結(jié)構(gòu)體,用于保存讀取的溫度和濕度數(shù)據(jù)。然后,編寫了一些函數(shù)來執(zhí)行DHT11讀取操作。

delay_us()函數(shù)是一個簡單的延遲函數(shù),用于等待一定量的時間。需要精確地計算一個微秒的延遲,并在循環(huán)中使用該延遲來等待一段時間。

dht11_start()函數(shù)用于發(fā)送DHT11的開始信號。將DHT11引腳配置為輸出模式,并發(fā)送18毫秒的低電平信號,然后再發(fā)送40微秒的高電平信號。

dht11_read_bit()函數(shù)用于讀取DHT11傳輸?shù)臄?shù)據(jù)位。等待DHT11輸出信號的變化,并根據(jù)變化的時間來判斷數(shù)據(jù)位的值。如果一個數(shù)據(jù)位的響應(yīng)時間小于30微秒,則被判定為0,否則為1。

dht11_read_byte()函數(shù)用于讀取一個字節(jié)的數(shù)據(jù)(8個數(shù)據(jù)位)。通過調(diào)用dht11_read_bit()函數(shù)8次來讀取每個數(shù)據(jù)位,并將結(jié)果組合成一個字節(jié)。

dht11_read_data()函數(shù)用于讀取整個DHT11數(shù)據(jù)包,包括溫度、濕度和校驗(yàn)和。首先調(diào)用dht11_start()函數(shù)發(fā)送開始信號,然后等待DHT11發(fā)送數(shù)據(jù)。使用dht11_read_byte()函數(shù)讀取5個字節(jié)的數(shù)據(jù),并驗(yàn)證校驗(yàn)和以確保數(shù)據(jù)完整和正確。

最后,在main()函數(shù)中,初始化GPIO口和DHT11傳感器,并執(zhí)行一個循環(huán)來讀取數(shù)據(jù)。如果讀取成功,則將溫度和濕度打印到串口終端上,否則輸出錯誤信息。


審核編輯:湯梓紅

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

    關(guān)注

    2562

    文章

    52450

    瀏覽量

    763069
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6061

    文章

    44875

    瀏覽量

    646122
  • 通信協(xié)議
    +關(guān)注

    關(guān)注

    28

    文章

    988

    瀏覽量

    40908
  • STM32
    +關(guān)注

    關(guān)注

    2288

    文章

    10999

    瀏覽量

    362002
  • DHT11
    +關(guān)注

    關(guān)注

    19

    文章

    277

    瀏覽量

    58236
收藏 人收藏

    評論

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

    庫房溫濕度監(jiān)測系統(tǒng)

    不可或缺的一部分,對于保障貨物安全、維護(hù)存儲品質(zhì)具有重要意義。 組成與運(yùn)行 庫房溫濕度監(jiān)測系統(tǒng)是一種專門用于倉庫環(huán)境溫濕度監(jiān)測的系統(tǒng),結(jié)合傳
    的頭像 發(fā)表于 01-06 16:37 ?438次閱讀

    遠(yuǎn)程溫濕度實(shí)時監(jiān)測系統(tǒng)應(yīng)用方案

    遠(yuǎn)程溫濕度實(shí)時監(jiān)測系統(tǒng),作為現(xiàn)代環(huán)境管理的重要組成部分,是各行各業(yè)不可或缺的重要工具,對環(huán)境溫濕度的遠(yuǎn)程、實(shí)時、精準(zhǔn)
    的頭像 發(fā)表于 01-02 17:03 ?480次閱讀

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

    使用正點(diǎn)原子STM32H7R3開發(fā)套件,結(jié)合DS18B20、DHT11溫濕度傳感器,采集環(huán)境溫度和濕度數(shù)據(jù),并通過 LCD 屏顯示,同時串口
    發(fā)表于 01-01 11:16

    XKCON祥控倉庫存儲環(huán)境溫濕度在線監(jiān)測系統(tǒng)能夠取代人工巡檢,實(shí)現(xiàn)遠(yuǎn)程倉庫存儲環(huán)境溫濕度變化的實(shí)時

    的XKCON祥控倉庫存儲環(huán)境溫濕度在線監(jiān)測系統(tǒng)通過安裝固定式環(huán)境溫濕度檢測儀對倉儲環(huán)境
    的頭像 發(fā)表于 11-20 11:20 ?448次閱讀
    XKCON祥控倉庫存儲<b class='flag-5'>環(huán)境</b><b class='flag-5'>溫濕度</b>在線<b class='flag-5'>監(jiān)測</b>系統(tǒng)能夠取代人工巡檢,實(shí)現(xiàn)遠(yuǎn)程倉庫存儲<b class='flag-5'>環(huán)境</b><b class='flag-5'>溫濕度</b>變化的實(shí)時

    LORA無線溫濕度監(jiān)測系統(tǒng)

    LORA無線溫濕度監(jiān)測系統(tǒng),作為現(xiàn)代環(huán)境監(jiān)測技術(shù)的重要組成部分,正日益受到各行各業(yè)的廣泛關(guān)注和應(yīng)用。 LORA無線溫濕度監(jiān)測系統(tǒng),利用LOR
    的頭像 發(fā)表于 11-07 16:57 ?691次閱讀

    dht11溫濕度傳感器工作原理介紹

    DHT11是一種常用的溫濕度傳感器,它能夠測量溫度和相對濕度。這種傳感器廣泛應(yīng)用于智能家居、氣象站、農(nóng)業(yè)監(jiān)控等領(lǐng)域。 DHT11溫濕度傳感器
    的頭像 發(fā)表于 10-21 09:47 ?7540次閱讀

    Arduino Nano 和 DHT11 實(shí)現(xiàn) LabVIEW 溫濕度采集

    Arduino Nano 和 DHT11 實(shí)現(xiàn) LabVIEW 溫濕度采集
    的頭像 發(fā)表于 10-08 11:46 ?999次閱讀
    Arduino Nano 和 <b class='flag-5'>DHT11</b> 實(shí)現(xiàn) LabVIEW <b class='flag-5'>溫濕度</b>采集

    溫濕度監(jiān)測解決方案

    在現(xiàn)代工業(yè)、農(nóng)業(yè)、醫(yī)療及居家環(huán)境中,溫濕度監(jiān)測已成為保障生產(chǎn)質(zhì)量、提升生活品質(zhì)、確保環(huán)境安全不可或缺的一環(huán)。有效的溫濕度
    的頭像 發(fā)表于 09-04 17:16 ?603次閱讀

    Arduino Nano 和 NodeMCU ESP8266 讀取 DHT11 環(huán)境溫濕度數(shù)據(jù)及 OLED顯示

    Arduino Nano 和 NodeMCU ESP8266 讀取 DHT11 環(huán)境溫濕度數(shù)據(jù)及 OLED顯示
    的頭像 發(fā)表于 08-13 18:04 ?1830次閱讀
    Arduino Nano 和 NodeMCU ESP8266 讀取 <b class='flag-5'>DHT11</b> <b class='flag-5'>環(huán)境</b><b class='flag-5'>溫濕度</b>數(shù)據(jù)及 OLED顯示

    溫濕度監(jiān)測系統(tǒng)應(yīng)用

    在現(xiàn)代化工業(yè)生產(chǎn)、倉儲管理、農(nóng)業(yè)種植以及智能家居等領(lǐng)域,溫濕度監(jiān)測已成為不可或缺的一環(huán)。溫濕度作為環(huán)境控制的關(guān)鍵因素,直接影響著產(chǎn)品質(zhì)量、存儲安全、作物生長效率以及居住舒適度。因此,一
    的頭像 發(fā)表于 07-26 16:15 ?711次閱讀

    庫房溫濕度自動監(jiān)測系統(tǒng)

    倉儲、庫房在管理上,環(huán)境控制都是重中之重。庫房溫濕度自動監(jiān)測系統(tǒng)作為一種更為便捷的解決方案,已經(jīng)得到廣泛的應(yīng)用。 庫房溫濕度自動監(jiān)測系統(tǒng)通過
    的頭像 發(fā)表于 07-09 18:00 ?1040次閱讀

    糧倉環(huán)境溫濕度監(jiān)測系統(tǒng)方案

    糧食在儲存過程中,溫濕度是影響其品質(zhì)和安全的關(guān)鍵因素。過高或過低的溫度可能導(dǎo)致糧食發(fā)芽、霉變或蟲害,而濕度過大則容易引起糧食結(jié)塊、霉變等問題。建立科學(xué)、高效的糧倉環(huán)境溫濕度
    的頭像 發(fā)表于 07-05 16:29 ?742次閱讀

    糧倉溫濕度監(jiān)測解決方案

    的損失。 糧倉溫濕度監(jiān)測解決方案,通過GPRS無線傳輸?shù)?b class='flag-5'>溫濕度傳感器、變送器等設(shè)備,利用無線網(wǎng)絡(luò),通過管理云平臺同步查看糧倉情況。根據(jù)不同應(yīng)用場合的具體需求靈活快速配置,建立全面而有效的糧倉
    的頭像 發(fā)表于 07-04 16:37 ?567次閱讀

    想要準(zhǔn)確地測量環(huán)境溫濕度溫濕度傳感器是關(guān)鍵!

    ? 溫濕度是生產(chǎn)生活中最重要的環(huán)境指標(biāo)之一,不僅人需要在適宜的溫濕度條件下保持良好的精神狀態(tài)和敏捷的思維,食品、藥品、各種儀器設(shè)備等都對環(huán)境溫濕度
    的頭像 發(fā)表于 07-04 08:48 ?955次閱讀

    DHT11數(shù)字溫濕度傳感器產(chǎn)品手冊

    電子發(fā)燒友網(wǎng)站提供《DHT11數(shù)字溫濕度傳感器產(chǎn)品手冊.pdf》資料免費(fèi)下載
    發(fā)表于 06-12 17:09 ?10次下載