Датчики DHT11/DHT22 используются для измерения температуры и влажности. В этом примере показано как подключить и опрашивать датчик ВРЕ11/22 к ESP32 в среде Ардуино чтобы получить значения температуры и влажности.
Соедините выводы ESP32 и DHT22 следующим образом:
[ESP32 IO14 - DHT22 DATA]
[ESP32 3.3V - DHT22 VCC]
[ESP32 GND - DHT22 GND]
Схема подключения ESP32 и DHT22 показана на картинке:
Прошивка
Для работы с 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;
}