Подключение датчиков DHT11/DHT22 к ESP32 в среде Ардуино

dht11
Датчики DHT11/DHT22 используются для измерения температуры и влажности. В этом примере показано как подключить и опрашивать датчик ВРЕ11/22 к ESP32 в среде Ардуино чтобы получить значения температуры и влажности.


Соедините выводы ESP32 и DHT22 следующим образом:
[ESP32 IO14 - DHT22 DATA]
[ESP32 3.3V - DHT22 VCC]
[ESP32 GND - DHT22 GND]
Схема подключения ESP32 и DHT22 показана на картинке:

led4
 

Прошивка

Для работы с DHT22 нужна специальная библиотека от Adafruit. Ее можно скачать отсюда:
https://github.com/adafruit/DHT-sensor-library/archive/master.zip
  После скачивания распакованную папку с библиотекой нужно поместить в папку библиотек Arduino: C:/Users/[YOUR_USER_NAME]/Documents/Arduino/libraries
Библиотека появится вArduino IDE после ее перезапуска.
В библиотеке присутствуют следующие функции для работы с DHT22:

  • readHumidity(): для чтения влажности
  • readTemperature(bool flag): для чтения температуры. Если аргумент flag равен единице, температура будет представлена в градусах Фаренгейтта, а если аргумент flag равен нулю, температура будет представлена в градусах Цельсия
Создаем новый проект встваляем следующий код:
 
 

#include "DHT.h"
#define DHTPIN 14 //here we use pin IO14 of ESP32 to read data
#define DHTTYPE DHT22 //our sensor is DHT22 type
//create an instance of DHT sensor
DHT dht(DHTPIN, DHTTYPE);
void setup() {
  Serial.begin(115200);
  Serial.println("DHT22 sensor!");
  //call begin to start sensor
  dht.begin();
}

void loop() {
  //use the functions which are supplied by library.
  float h = dht.readHumidity();
  // Read temperature as Celsius (the default)
  float t = dht.readTemperature();
  // Check if any reads failed and exit early (to try again).
  if (isnan(h) || isnan(t)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }
  // print the result to Terminal
  Serial.print("Humidity: ");
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("Temperature: ");
  Serial.print(t);
  Serial.println(" *C ");
  //we delay a little bit for next read
  delay(2000)// sensor is too slow;
}


Результат

led5 
 
 
Загрузка...