Подключение DHT11 к Arduino
Цифровой датчик температуры и влажности
DHT11 к Arduino — питание 5 В или 3,3 В, земля и DATA на цифровой вывод. Для работы нужна библиотека DHT sensor library.
Схема подключения DHT11 к Arduino
| DHT11 | Arduino Uno |
|---|---|
| DATA | D4 |
| VCC | 5V |
| GND | GND |
Схема из примера «Arduino Uno: датчик DHT11».
Выводы DHT11
| Вывод | Назначение |
|---|---|
| DATA | линия данных, подтяжка к питанию 4,7–10 кОм |
| VCC | питание 3,3–5,5 В |
| GND | общий провод |
Код для Arduino
#include <DHT.h>
// DHT11 на выводе 4. Обмен идёт по одному проводу импульсами разной
// длины, всю работу делает библиотека. Датчик отдаёт целые градусы и
// проценты и опрашивается не чаще раза в секунду.
#define DHTPIN 4
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
dht.begin();
}
void loop() {
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println(F("датчик не ответил"));
delay(2000);
return;
}
Serial.print("t:");
Serial.print(t, 0);
Serial.print(" h:");
Serial.println(h, 0);
delay(2000);
}
Скетч можно править и запускать в симуляторе без платы и установки среды.
Что учесть на Arduino
- Выход датчика подходит и для 5 В логики Arduino Uno.
- Не опрашивайте датчик чаще раза в секунду и не вызывайте его в прерываниях: стартовый импульс и ответ занимают миллисекунды.
В железе
У готового модуля с тремя выводами подтяжка линии данных уже распаяна. У голого датчика с четырьмя выводами подтяжку 4,7–10 кОм между DATA и VCC ставят сами, а третий вывод не используется. Порядок выводов у разных модулей отличается: сверяйтесь с надписью на плате.
Частые ошибки при подключении к Arduino
- Объявить
DHT11какDHT22в#define DHTTYPE: показания будут неверны. - Читать влажность и температуру без проверки
isnan(): оборванный провод превращается в тихие нули. - Датчик DHT11 в скетче объявлен как DHT22 (
#define DHTTYPE DHT22): разбор кадра другой, показания неверные илиnan. - Нет подтяжки у голого датчика: линия данных висит в воздухе, библиотека возвращает
nan. - Опрос чаще раза в секунду: датчик молчит или отдаёт старое значение.
- Попытка измерить температуру ниже нуля: DHT11 работает от 0 °C.
Ещё по теме
Другие детали для Arduino
HC-SR04DHT22 (AM2302)BME280DS3231SSD1306 OLED 0,96″LCD 1602 с I2CMAX7219TM1637Модуль релеKY-040Клавиатура 4×4HX711ФоторезисторМодуль microSDRGB-светодиодСервопривод SG9074HC595Шаговый двигательКнопкаПотенциометрПьезопищалкаСветодиодПолзунковый переключательHC-SR501TTP223Датчик влажности почвыMQ-2LM35Джойстик KY-023HTU21D