Подключение датчика DHT11, DHT22 к ESP32

Введение

В этой статье расскажу как подключить датчики температуры и влажности DHT11 и DHT22 к микроконтроллеру ESP32 с использованием среды разработки Arduino IDE. Сначала разберем особенности этих сенсоров: их внутреннее устройство, принципы работы, а также схемы физического подключения и сопряжения с платой ESP32. Затем перейдем к программной части — установим необходимую библиотеку для работы с датчиками в среде Arduino IDE.

Необходимые детали

Компонент Количество Купить
1 Отладочная плата ESP32 1 шт Авито | AliExpress | RobotChip
6 Модуль DHT11 1 шт Авито | AliExpress | RobotChip

Описание

Датчики DHT11 и DHT22 представляют собой комбинированные модули для измерения относительной влажности воздуха и температуры. Устройства оснащены откалиброванным на заводе цифровым выходом и используют однопроводной протокол передачи данных (one-wire). Сенсоры относятся к бюджетному сегменту аппаратных решений. DHT22 является улучшенной версией DHT11: он обеспечивает более высокую точность измерений, а также расширенный рабочий диапазон по температуре и влажности.

DHT22 DHT11
Температура от -40 до 80 ºC +/- 0,5ºC от 0 до 50 ºC +/-2 ºC
Влажность от 0 до 100% +/-2% от 20 до 90% +/-5%
Точность Влажность: 0,1% Температура: 0,1 ºC Влажность: 1% Температура: 1ºC
Рабочее напряжение 3-6В 3-5.5В
Частота опроса 2 секунды 1 секунды

Как видно из приведенной выше сравнительной таблицы, DHT22 превосходит DHT11 по точности измерений температуры и влажности, а также обладает более широким рабочим диапазоном. Однако за эти преимущества приходится платить более высокой стоимостью. В свою очередь, DHT11 выигрывает в скорости опроса (частоте дискретизации). Оба сенсора поддерживают напряжение питания 3,3 В, что позволяет подключать их напрямую к выводам VCC микроконтроллеров ESP32 и ESP8266 без использования дополнительных преобразователей логических уровней.

Несмотря на разницу в характеристиках, датчики имеют идентичную распиновку и базовый принцип работы. Это обеспечивает программную взаимозаменяемость: для обоих устройств используется одна и та же библиотека Arduino, где тип датчика (DHT11 или DHT22) задается одной строкой в коде.

Модули поставляются с заводской калибровкой и не требуют внешних компонентов обвязки (в большинстве случаев достаточно подтягивающего резистора на линии данных). Внутри корпуса расположены емкостный датчик относительной влажности и термистор (полупроводниковый резистор, зависящий от температуры), сигналы с которых обрабатываются встроенным микроконтроллером.

Распиновка DHT11/DHT22

Распиновка модуля датчика DHT представлена ниже. Описание контактов соответствует их расположению слева направо при взгляде на рабочую (переднюю) сторону сенсора с отверстиями.

Контакт Обозначение Функция
1 VCC Питание (+3.3 В или +5 В)
2 DATA Шина данных (однопроводной протокол)
3 NC Не используется (No Connection)
4 GND Земля (Ground)

Подключение

Интеграция датчиков серии DHT с микроконтроллером ESP32 требует использования внешнего подтягивающего резистора сопротивлением 10 кОм для линии передачи данных. Резистор устанавливается между выводом DATA сенсора и шиной питания VCC. Цепи питания (VCC) и земли (GND) модуля подключаются к соответствующим линиям 3.3-вольтового питания ESP32. Наглядные принципиальные схемы сборки представлены на рисунках далее.

Так же, не забываем что необходимо добавить ESP32 в среду разработки Arduino IDE, рассказывал в прошлой статье

Установка библиотек

Для работы, будем использовать библиотеку «DHT-sensor-library от Adafruit» скачать можно используя интегрированную среду разработки Arduino IDE», для этого откройте «Скетч → Подключение библиотеки → Менеджер библиотек…», так же выложу библиотеки в конце статьи.

Для работы библиотеки необходимо установить зависимые библиотеки, нажимаем «Установить все»

Программа

Ниже приведён исходный код передатчика, загрузите скетч в плату ESP32.

Откройте мониторинг порта, где увидим показания с датчика.

Описание программы

В начале программы подключаем библиотеки, указываем что используем датчик DHT11, указываем порт GPIO и создаем объект DHT.

В функции setup() запускается последовательный порт на скорости 115200 бод, указываем что порт используется как вход и инициализируем датчик.

В функции loop() с паузой 1 секунды, считываем показания температуры и влажности с датчика и все данные отправляем в последовательный порт.

Полезные ссылки

Описание Скачать
1 Библиотека Adafruit Unified Adafruit Unified Sensor v.1.1.15.zip
2 Библиотека для DHT11 DHT sensor library v.1.4.7.zip

О нас Сергей

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *