【玩轉ESP32】4、ESP32驅動DHT11

2022-01-07 物聯網思考

收錄於話題 #玩轉esp32 16個

點擊上方[物聯網思考],選擇置頂,第一時間查看物聯網分享!1、新建dht11工程

把上節的blink工程複製一份,修改名稱為dht11,其中CMakeLists.txt、Makefile、包括源文件名也改為dht11,然後試著編譯,發現可以編譯通過,這樣就可以先不用去管CMakeLists.txt、Makefile等文件的編寫。

2、硬體連接

注意避開那幾個只能用作輸入的IO口即可。
DHT11                   開發板
VCC    <-> VCC
GND   <-> GND
DOUT <-->GPIO21(模塊的絲印G21的引腳)

3、代碼驅動

#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#include "sdkconfig.h"

#define DHT11_PIN (21) //可通過宏定義,修改引腳

#define DHT11_CLR gpio_set_level(DHT11_PIN, 0)
#define DHT11_SET gpio_set_level(DHT11_PIN, 1)
#define DHT11_IN gpio_set_direction(DHT11_PIN, GPIO_MODE_INPUT)
#define DHT11_OUT gpio_set_direction(DHT11_PIN, GPIO_MODE_OUTPUT)

uint8_t DHT11Data[4]={0};
uint8_t Temp, Humi;

//us延時函數,誤差不能太大
void DelayUs( uint32_t nCount)
{
ets_delay_us(nCount);
}

void DHT11_Start(void)
{
DHT11_OUT; //設置埠方向
DHT11_CLR; //拉低埠
DelayUs(19*1000);
// vTaskDelay(19 * portTICK_RATE_MS); //持續最低18ms;

DHT11_SET; //釋放總線
DelayUs(30); //總線由上拉電阻拉高,主機延時30uS;
DHT11_IN; //設置埠方向

while(!gpio_get_level(DHT11_PIN)); //DHT11等待80us低電平響應信號結束
while(gpio_get_level(DHT11_PIN));//DHT11 將總線拉高80us
}

uint8_t DHT11_ReadValue(void)
{
uint8_t i,sbuf=0;
for(i=8;i>0;i--)
{
sbuf<<=1;
while(!gpio_get_level(DHT11_PIN));
DelayUs(30); // 延時 30us 後檢測數據線是否還是高電平
if(gpio_get_level(DHT11_PIN))
{
sbuf|=1;
}
else
{
sbuf|=0;
}
while(gpio_get_level(DHT11_PIN));
}
return sbuf;
}

uint8_t DHT11_ReadTemHum(uint8_t *buf)
{
uint8_t check;

buf[0]=DHT11_ReadValue();
buf[1]=DHT11_ReadValue();
buf[2]=DHT11_ReadValue();
buf[3]=DHT11_ReadValue();

check =DHT11_ReadValue();

if(check == buf[0]+buf[1]+buf[2]+buf[3])
return 1;
else
return 0;
}

void app_main(void)
{
printf(rrr"ESP32 DHT11 TEST:%s,%s!\r\n",__DATE__,__TIME__);
gpio_pad_select_gpio(DHT11_PIN);
while(1) {
DHT11_Start();
if(DHT11_ReadTemHum(DHT11Data))
{
Temp=DHT11Data[2];
Humi=DHT11Data[0];
printf("Temp=%d, Humi=%d\r\n",Temp,Humi);
}
else
{
printf("DHT11 Error!\r\n");
}
vTaskDelay(5000 / portTICK_PERIOD_MS);
}
}

4、讀取溫溼度

系列文章

【玩轉ESP32】1、開發環境搭建

【玩轉ESP32】2、開發資料

【玩轉ESP32】3、點亮LED,Blink,blink,blink

謝謝支持 !

相關焦點

  • 【玩轉ESP32】12、esp32串口使用
    點擊上方[物聯網思考],選擇置頂,第一時間查看物聯網分享!
  • 【玩轉ESP32】2、開發資料
    esp32 16個
  • esp32和stm32哪個好_ESP32對比ESP8266
    esp32和stm32哪個好_ESP32對比ESP8266 單片機愛好者 發表於 2020-04-23 11:06:19   esp32和stm32哪個好
  • ESP32-C3 學習測試(二、GPIO中斷、按鍵驅動測試)
    * * Test: * Connect GPIO18 with GPIO4 * Connect GPIO19 with GPIO5 * Generate pulses on GPIO18/19, that triggers interrupt on GPIO4/5 * * myboard GPIO7 ,  GPIO9(test) */
  • 用 ESP32 開發板 DIY NES 掌機
    ESP32 開發板×12.4″ IPS LCD 顯示器×1ST7789V 驅動控制器×1454261 鋰電池×1圓口 4針針坐×1圓口 4針針頭×1小型 PET/PETG 板×用膠帶將 LCD 和開發板粘在一起。連接處預留 5mm 的空間方便摺疊。
  • 老宇哥帶你玩轉ESP32:01入門介紹
    後來問隔壁師兄,師兄很耐心,跟我簡單講解了一下,然後讓我看一本C語言的書,說先簡單看一看,不用看的很深,邊看邊學,就這樣,在無數次的逃課以及晚上挑燈奮鬥之後,我成功點亮第一個燈了,那時候的興奮無以言表。
  • ESP32晶片-LEDC外設(另附Arduino代碼)
    在文檔內,我們就看這裡就好在大量的說明舵機之前,不妨讓我們先來了解一些關於晶片本身的能力:https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/peripherals/ledc.html有個神奇的地方
  • ESP32 coredump 分析
    上次寫了一個 ESP32 入門,我想有必要再寫這篇文章,這次主要是分析 coredump 的,這就像 Android 和 Linux 系統的死機分析,有意思,也有難度。我覺得 ESP32 還有一個好處是,對於初學者真的太方便了,買個 Linux 開發板可能要幾百塊,但是買一個 ESP32 模塊的話,也就 40 塊錢,而且也是跑 Freertos 系統的,還有還有就是非常方便攜帶,調試燒錄供電都可以用一個 usb 線搞定,說真的,我沒有收錢宣傳,是真的適合沒有錢又喜歡入門嵌入式的同學們,但是這個只是起點,嵌入式後期我覺得一定是要學習Linux 的。
  • 基於ESP32與phyphox的物理DIS實驗開發(1)
    ESP32 集成了天線開關、射頻 balun、功率放大器、低噪放大器、過濾器和電源管理模塊。2.4 GHz Wi-Fi 加藍牙雙模晶片採用 TSMC 低功耗 40nm 技術,功耗性能和射頻性能最佳,安全可靠,易於擴展至各種應用。」     以上是網上搜索來的介紹,想要了解更多的請自行百度。
  • ESP32 – GPIO 引腳參考大全
    ESP32 模組引腳圖ESP32 開發板引腳圖
  • ESPnixie----基於ESP32的輝光鍾
    正文共:1300字19圖預計閱讀時間:4分鐘1977年8月,暴力美學工廠出產首先解決輝光管的驅動問題IN14最合適的驅動參數為,陽極170V,串聯20K電阻,典型電流為2.5mA。輝光管驅動晶片選擇了HV57708這個也算是輝光管常用驅動電路了。這裡值得一提的是,HV57708的輸出端只有80V耐壓,所以,這裡有個很有意思的技巧。
  • 用Arduino玩轉掌控板(ESP32):B站粉絲計數器
    眾所周知,掌控板在創客教育中用的非常廣泛,它是一塊基於 ESP32 的學習開發板。大家對掌控板編程,用的比較多的都是圖形化編程的方式,比如 mPython、Mind+ 等。但是,既然掌控板是基於 ESP32 晶片的,所以我們也可以用 Arduino 軟體對其編程。
  • 魔獸世界9.0dht天賦選擇 dht天賦怎麼點
    魔獸世界9.0dht天賦選擇 dht天賦怎麼點 發布時間:20-09-02 08:41 來源:NGA 作者:
  • 啟明雲端分享|ESP32-S3如何實現tcp_client和tcp_server
    通過menuconfig配置伺服器的IP以及埠號配置完成後保存退出(伺服器的IP及埠)4.編譯、燒錄編譯:idf.py build燒錄:idf.py -p PORT2)伺服器編輯內容發送給esp32,在窗口監視頁面顯示。
  • 繼ESP8266之後,又一款將稱霸2017年的物聯網市場現象級產品——樂鑫ESP32(WiFi/藍牙雙模)評測
    ESP32 是集成2.4 GHz Wi-Fi 和藍牙雙模的單晶片方案,採用臺積電(TSMC)超低功耗的40 納米工藝,擁有最佳的功耗性能、射頻性能、穩定性、通用性和可靠性,其內部的硬體系統框圖如下:可以看到,ESP32內部不僅集成2.4 GHz Wi-Fi 和藍牙雙模、XtensaR 32-bit LX6雙核處理器,還包括天線開關、射頻balun、功率放大器、低噪放大器、過濾器、電源管理模塊和先進的自校準電路
  • ESP8266連接DHT11,開發微信小程序實時顯示溫溼度
    第二、ESP8266讀取DHT11這裡使用的是D4口。本demo 是利用arduino IDE開發,關於arduino IDE 的ESP8266環境配置可參考:環境配置: 點擊跳轉安裝庫本案例使用一個非常簡單易用且與ESP8266配合使用的是Simple DHT傳感器庫。
  • Espressif ESP32:使用EMFI繞過Secure Boot
    0x04 測試目標我們使用了AZ Delivery提供的ESP32 NodeMCU模塊,如下圖所示。這些模塊是基於ESP32-WROOM-32。0x06 漏洞利用Espressif IoT開發框架(ESP-IDF)中包含許多便捷的工具,包括編譯軟體(idf.py)、刻錄eFuses(espefuse.py)、生成密鑰(espsecure.py)、對內存進行編程(esptool.py)。我們在尋找漏洞利用方法的過程中,廣泛利用了這些工具。
  • 奔馳C級esp停止運行
    奔馳C級esp停止運行?汽車網小編為您來解答。 奔馳C級esp指的是車身電子穩定系統(外文名Electronic Stability Program,簡稱ESP),通常是支持ABS及ASR的功能。它通過對從各傳感器傳來的車輛行駛狀態信息進行分析,然後向ABS、ASR發出糾偏指令,來幫助車輛維持動態平衡。
  • esp32管腳詳解
    它們不能用作輸出,因此只能將這些管腳用作輸入:GPIO 34GPIO 35GPIO 36GPIO 39集成在ESP-WROOM-32上的SPI快閃記憶體GPIO 6到GPIO 11在一些ESP32開發板中是公開的。