СОДЕРЖАНИЕ ►
Расскажем, как подключить датчик температуры и влажности к Ардуино, как получить данные с датчика на мониторе порта. На этом занятии мы познакомимся с цифровым датчиком температуры и влажности DTH11 с трех пиновым разъемом стандарта 2.54 мм. Рассмотрим устройство и назначение датчиков влажности и температуры. Научимся добавлять библиотеки для датчиков и плат расширений Arduino Nano.
Устройство DTH11 Ардуино: распиновка, datasheet
На занятии мы будем использовать датчик DHT11 или DHT22, смонтированный на плате. DHT11 — это цифровой датчик, состоящий из термистора и емкостного датчика влажности. Наряду с невысокой стоимостью DHT11 имеет следующие характеристики: питание осуществляется от 3,5-5V, определение температуры от 0 до 50 градусов с точностью 2 град, определение влажности от 20% до 95% с 5% точностью.

Модуль 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» и переместить ее в раздел «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:
- переменные «h» и «t» являются типом данных float, которая служит для хранения чисел с десятичным разделителем (вре11 подключение к ардуино);
- команда
Serial.print()выводит информацию на порт без переноса строки, командаSerial.println()выводит информацию на порт с переносом строки.

Скетч. Подключение к Ардуино 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:
- для подключения датчика к микроконтроллеру можно использовать любой пин общего назначения, указав его в скетче;
- команда
LCD.clear()в программе очищает экран дисплея от надписей для вывода новых значений с сенсора температуры DHT11 Arduino.
Как подключить DHT22 к Ардуино Уно
Обратите внимание, что распиновка модулей у разных производителей может отличаться. При неправильном подключении питания, сенсор может выйти из строя. Дисплей подключается к шине i2c, расположенной на пинах SDA (A4) и SCL (A5) платы Ардуино Уно и Нано. При работе с платой Ардуино Мега подключение дисплея производится к интерфейсу i2c на пинах SDA (20) и SCL (21).

Схема подключения 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:
- при необходимости получать значения температуры и влажности без знаков после запятой — используйте тип данных 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/










Внимание! Обязательно соблюдайте полярность подключения. В случае неправильного подключения датчик почти неминуемо выйдет из строя. Кроме того, при неправильном подключении пластиковый корпус датчик очень сильно нагреется и может обжечь вам руки. Будьте внимательны, не торопитесь!
Это время (приблизительно 250 мс) необходимо для выполнения всех операций в программе. Если необходимо выводит данные с датчика Ардуино DHT11 через 500 мс, то следует сделать в скетче задержку.
Подскажите пожалуйста:
А как можно сделать так, чтобы когда предположим, 30 градусов включался светодиод
Поставить условие, когда температура на DHT11 станет больше 30, включить светодиод:
if (t>=30) {digitalWrite(13,1);}я добавил звуковой сигнал и у меня он просто всегда работает, что делать подскажите, надо что бы при достижении 30 подавало сигнал
Да так и надо сделать!
Не установлена библиотека Adafruit_Sensor.h
СПАСИБО ! С ребятками своими самостоятельно пытаемся освоить эту шайтан машину, с помощью аллаха и интернета. ВСЁ ЗАВЕРТЕЛОСЬ )) вообщем доступно и понятно все нам разжевали СПАСИБО ЕЩЁ РАЗ
Пожалуйста. Рады, что статья оказалось полезной
Подскажите пожалуйста!!!
Всю голову поломал, несколько ошибок в коде я как-то сделал, но на строке где в void loop считываем humidity, то Ардуино ругается
У вас не установлена или не подключена библиотека DHT.h
Добрый день.
Почему со временем (минуты через 2) резко падает значения влажности?
С 34% — как и на аналоговом комнатном гигрометре, до 15%, правда эти показания как-то изменяются, если подышать на датчик. Показания температуры «не скачут» и соответствуют значениям комнатного термометра. Схема с датчиком DHT11
Здравствуйте. Не сталкивались с таким еще, а в выдыхаемом воздухе влажность всегда будет выше
Здравствуйте, пишет на каждом показателе nan, что делать
Проверять подключение
Здравствуйте, тоже самое я проверил подключение и всё равно пишет nan подскажите пожалуйста
решил? просто у меня так же я не понимаю что делать???
Ссылка на библиотеку переводит на сайт https://github.com/adafruit/DHT-sensor-library
сколько раз я уже заходил туда за разными библиотеками, ни разу не скачал, что-за идиотская организация сайта, куча сраной ненужной информации, а кнопка «скачать библиотеку» фиг пойми где. И сейчас я так и не понял как там можно скачать библиотеку…
Зеленая кнопка «Code» -> «Download ZIP». Зачем так психовать? Учите английский, если можете
А что сгорает в датчиках DHT22 при переполюсовке? Возможно ли его отремонтировать или восстановить ?
t всегда пишет единичку
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
что за ошибка
тебе нужно скачать библиотеку Adafruit_Sensor.h
Humidity: nan
Temperature: nan
пишет в терминале, подскажите пожалуйста как это решить?