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

Расскажем, как подключить датчик температуры и влажности к Ардуино, как получить данные с датчика на мониторе порта. На этом занятии мы познакомимся с цифровым датчиком температуры и влажности DTH11 с трех пиновым разъемом стандарта 2.54 мм. Рассмотрим устройство и назначение датчиков влажности и температуры. Научимся добавлять библиотеки для датчиков и плат расширений Arduino Nano.

Устройство DTH11 Ардуино: распиновка, datasheet

На занятии мы будем использовать датчик DHT11 или DHT22, смонтированный на плате. DHT11 — это цифровой датчик, состоящий из термистора и емкостного датчика влажности. Наряду с невысокой стоимостью DHT11 имеет следующие характеристики: питание осуществляется от 3,5-5V, определение температуры от 0 до 50 градусов с точностью 2 град, определение влажности от 20% до 95% с 5% точностью.

Устройство датчика температуры и влажности (dht11)
Arduino dht11 распиновка (datasheet на русском)

Модуль DHT11 оборудован трех пиновым разъемом и подключается по схеме:

G — Подключается к выводу GND
V — Подключается к выводу +5V
S — Подключается к цифровому выводу ( Pin2 )

Термистор — это термический резистор, сопротивление которого изменяется с температурой, т.е. увеличение температуры приводит к падению его сопротивления. По сути термистор — это термометр сопротивления, изготовленный на основе смешанных оксидов переходных металлов.  Относится к измерительной технике и может быть использован для автоматического измерения температуры в различных средах.

Емкостной датчик влажности — это конденсатор с переменной емкостью, который содержит токопроводящие обкладки из медной фольги на текстолите. Этот конденсатор заключен в герметичный чехол, поверх которого расположен влагопоглощающий слой. При попадании частиц воды на этот слой, меняется его диэлектрическая проницаемость, что приводит к изменению емкости конденсатора.

Как подключить DHT11 к Ардуино Уно

Для этого занятия потребуется:

  • Arduino Uno / Arduino Nano / Arduino Mega
  • модуль DHT11 / DHT22 Ардуино
  • макетная плата
  • 2 светодиода и 2 резистора на 220 Ом
  • провода «папа-папа» и «папа-мама»
  • библиотека DHT.h

На этом занятии мы приведем для примера два скетча. Первый скетч будет отсылать данные с модуля DHT11 на последовательный монитор порта  компьютера. Во втором скетче мы будем использовать вывод данных на жк дисплей — LCD 1602 модуль. LCD модуль можно будет использовать в дальнейшем в любом автономном устройстве, например, при конструировании «Домашней метеостанции» или «Умной теплицы».

Схема подключения модуля DHT11 к плате Ардуино Уно
Схема подключения модуля DHT11 к плате Ардуино Уно

Необходимо установить библиотеку для работы с датчиком DHT11. Для этого необходимо скачать архив по ссылке, извлечь папку «DHT11» и переместить ее в раздел «C:\Program Files\Arduino\libraries» на своем компьютере. При использовании датчика DHT11, необходимо подключать библиотеку в скетче. Загрузите следующую программу после подключения датчика температуры воздуха DHT11 к Ардуино.

Скетч. Ардуино DHT11 датчик температуры и влажности

#include <DHT.h>      // подключаем библиотеку для датчика
DHT dht(2, DHT11);  // сообщаем на каком порту будет датчик

void setup() {
   dht.begin();                // запускаем датчик DHT11
   Serial.begin(9600);   // подключаем монитор порта
}

void loop() {
   // считываем температуру (t) и влажность (h)
   float h = dht.readHumidity();
   float t = dht.readTemperature();

   // выводим температуру (t) и влажность (h) на монитор порта
   Serial.print("Humidity: ");
   Serial.println(h);
   Serial.print("Temperature: ");
   Serial.println(t);
}

Программа для датчика температуры DHT11 Arduino:

  1. переменные «h» и «t» являются типом данных float, которая служит для хранения чисел с десятичным разделителем (вре11 подключение к ардуино);
  2. команда Serial.print()выводит информацию на порт без переноса строки, команда Serial.println()выводит информацию на порт с переносом строки.



Схема подключения DHT11 и LCD 1602 к Ардуино
Схема подключения DHT11 и LCD 1602 к Ардуино

Скетч. Подключение к Ардуино DHT11 и вывод на LCD 1602

#include <Wire.h>                       // библиотека для протокола I2C 
#include <LiquidCrystal_I2C.h> // подключаем библиотеку для LCD 1602
#include <DHT.h>                         // подключаем библиотеку для датчика

LiquidCrystal_I2C LCD(0x27,16,2);  // присваиваем имя LCD для дисплея
DHT dht(2, DHT11);                          // сообщаем на каком порту будет датчик

void setup() {
   LCD.init();            // инициализация LCD дисплея
   LCD.backlight();  // включение подсветки дисплея
   dht.begin();         // запускаем датчик DHT11
}

void loop() {
   // считываем температуру (t) и влажность (h)
   float h = dht.readHumidity();
   float t = dht.readTemperature();

   // выводим температуру (t) и влажность (h) на жк дисплей
   LCD.setCursor(0,0);
   LCD.print("Humidity: ");
   LCD.print(h);

   LCD.setCursor(0,1);
   LCD.print("Temperature: ");
   LCD.print(t);

   delay(1000);
   LCD.clear();
}

Программа для датчика владности DHT11 Arduino:

  1. для подключения датчика к микроконтроллеру можно использовать любой пин общего назначения, указав его в скетче;
  2. команда LCD.clear() в программе очищает экран дисплея от надписей для вывода новых значений с сенсора температуры DHT11 Arduino.

Как подключить DHT22 к Ардуино Уно

Обратите внимание, что распиновка модулей у разных производителей может отличаться. При неправильном подключении питания, сенсор может выйти из строя. Дисплей подключается к шине i2c, расположенной на пинах SDA (A4) и SCL (A5) платы Ардуино Уно и Нано. При работе с платой Ардуино Мега подключение дисплея производится к интерфейсу i2c на пинах SDA (20) и SCL (21).

Схема подключения DHT22 и LCD 1602 к Ардуино
Схема подключения DHT22 и LCD 1602 к Ардуино

Схема подключения DHT22 к плате ничем не отличается от предыдущего примера, а сама программа отличается только одной строчкой, где мы указываем тип датчика — DHT22, вместо DHT11. После того, как вы собрали схему с дисплеем и DHT22, как показано на картинке выше, — загрузите следующий пример простой программы с универсальной библиотекой DHT.h, которая подходит для этих двух модулей.

Скетч. Подключение к Ардуино DHT22 и вывод на LCD 1602

#include <Wire.h>                       // библиотека для протокола I2C 
#include <LiquidCrystal_I2C.h> // подключаем библиотеку для LCD 1602
#include <DHT.h>                         // подключаем библиотеку для датчика

LiquidCrystal_I2C LCD(0x27,16,2);  // присваиваем имя LCD для дисплея
DHT dht(2, DHT22);                          // сообщаем к какому порту подключен DHT22

void setup() {
   LCD.init();            // инициализация LCD дисплея
   LCD.backlight();  // включение подсветки дисплея
   dht.begin();         // запускаем датчик DHT22
}

void loop() {
   // считываем температуру (t) и влажность (h)
   float h = dht.readHumidity();
   float t = dht.readTemperature();

   // выводим температуру (t) и влажность (h) на жк дисплей
   LCD.setCursor(0,0);
   LCD.print("Humidity: ");
   LCD.print(h);

   LCD.setCursor(0,1);
   LCD.print("Temperature: ");
   LCD.print(t);

   delay(1000);
   LCD.clear();
}

Программа для датчика температуры DHT22 Arduino:

  1. при необходимости получать значения температуры и влажности без знаков после запятой — используйте тип данных int, вместо float.

Заключение. Мы рассмотрели в этом обзоре, как подключить DHT11 и DHT22 к Arduino. Представили несколько примеров программ для вывода информации с цифрового датчика на аппаратный монитор порта Arduino IDE и дисплей 1602. С датчиком DHT11 существует множество проектов метеостанций на Ардуино, которые вы сможете сделать самостоятельно, внимательно изучив информацию на этой странице.

Полезные ресурсы:

  • Библиотека — https://github.com/adafruit/DHT-sensor-library
  • Datasheet DHT11 — http://www.datasheetcafe.com/dht11-datasheet-sensor/
  • Datasheet DHT22 — http://www.datasheetcafe.com/dht22-datasheet-pdf/


24 Replies to “Датчики DHT11 / DHT22 подключение к Ардуино”

  1. Внимание! Обязательно соблюдайте полярность подключения. В случае неправильного подключения датчик почти неминуемо выйдет из строя. Кроме того, при неправильном подключении пластиковый корпус датчик очень сильно нагреется и может обжечь вам руки. Будьте внимательны, не торопитесь!

  2. Это время (приблизительно 250 мс) необходимо для выполнения всех операций в программе. Если необходимо выводит данные с датчика Ардуино DHT11 через 500 мс, то следует сделать в скетче задержку.

  3. Подскажите пожалуйста:
    А как можно сделать так, чтобы когда предположим, 30 градусов включался светодиод

    1. Поставить условие, когда температура на DHT11 станет больше 30, включить светодиод: if (t>=30) {digitalWrite(13,1);}

      1. я добавил звуковой сигнал и у меня он просто всегда работает, что делать подскажите, надо что бы при достижении 30 подавало сигнал

  4. СПАСИБО ! С ребятками своими самостоятельно пытаемся освоить эту шайтан машину, с помощью аллаха и интернета. ВСЁ ЗАВЕРТЕЛОСЬ )) вообщем доступно и понятно все нам разжевали СПАСИБО ЕЩЁ РАЗ

  5. Подскажите пожалуйста!!!
    Всю голову поломал, несколько ошибок в коде я как-то сделал, но на строке где в void loop считываем humidity, то Ардуино ругается

  6. Добрый день.
    Почему со временем (минуты через 2) резко падает значения влажности?
    С 34% — как и на аналоговом комнатном гигрометре, до 15%, правда эти показания как-то изменяются, если подышать на датчик. Показания температуры «не скачут» и соответствуют значениям комнатного термометра. Схема с датчиком DHT11

    1. Здравствуйте. Не сталкивались с таким еще, а в выдыхаемом воздухе влажность всегда будет выше

      1. Здравствуйте, тоже самое я проверил подключение и всё равно пишет nan подскажите пожалуйста

  7. Ссылка на библиотеку переводит на сайт https://github.com/adafruit/DHT-sensor-library
    сколько раз я уже заходил туда за разными библиотеками, ни разу не скачал, что-за идиотская организация сайта, куча сраной ненужной информации, а кнопка «скачать библиотеку» фиг пойми где. И сейчас я так и не понял как там можно скачать библиотеку…

    1. Зеленая кнопка «Code» -> «Download ZIP». Зачем так психовать? Учите английский, если можете

  8. А что сгорает в датчиках DHT22 при переполюсовке? Возможно ли его отремонтировать или восстановить ?

  9. C:\Users\timat\AppData\Local\Temp\.arduinoIDE-unsaved20251014-2612-8zqblt.tyno\sketch_nov14a\sketch_nov14a.ino:4:10: fatal error: Adafruit_Sensor.h: No such file or directory
    #include // подключаем библиотеку для датчика
    ^~~~~~~~~~~~~~~~~~~
    compilation terminated.
    exit status 1

    Compilation error: Adafruit_Sensor.h: No such file or directory

    что за ошибка

  10. Humidity: nan
    Temperature: nan
    пишет в терминале, подскажите пожалуйста как это решить?

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

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.