Содержание
Обзор датчика влажности и температуры
DHT11 — это цифровой датчик влажности и температуры, состоящий из термистора и емкостного датчика влажности. Также датчик содержит в себе АЦП для преобразования аналоговых значений влажности и температуры. Датчик DHT11 не обладают высоким быстродействием и точностью, но зато прост, недорог и отлично подходят для обучения и контроля влажности в помещении.Технические характеристики датчика DHT11
- Питание: DC 3,5 – 5,5 В
- Ток питания: в режиме измерения 0.3mA. В режиме ожидания 60μA
- определение влажности 20–80 % с точностью 5 %
- определение температуры 0–50 °С с точностью 2 %
- частота опроса не более 1 Гц (не более одного раза в 1 сек.)
- размеры 15,5´12´5,5 мм
Подключение
Датчик имеет 4 вывода стандарта 2,54 мм (рисунок 2):- 1 — VCC (питание 3–5 В);
- 2 — DATA (вывод данных);
- 3 — не используется;
- 4 — GND (земля).
Между выводами питания и вывода данных необходимо разместить резистор. Рекомендуемый номинал 10 кОм , если расстояние от датчика к ардуино небольшое, для расстояния больше 20 метров рекомендуется резистор номиналом 5,1 кОм. Также рекомендуется конденсатор (фильтр по питанию между VCC и GND). Протокол обмена — однопроводный, по структуре весьма похож на DS18B20, но с отличиями:
- DHT не умеет работать в "паразитном" режиме;
- каждый DS18B20 имеет персональный идентификатор, что дает возможность подключения нескольких таких датчиков к одному пину Arduino. Однако у DHT такой возможности нет — один датчик будет использовать строго один цифровой пин.
Пример использования
Рассмотрим подключение датчика DHT11 к Arduino и создадим проект для отображения на RGB-светодиоде состояния влажности воздуха в помещении:- зеленый – оптимальная влажность воздуха для человека (40 – 60%);
- красный – сухо (<40%);
- синий – повышенная влажность ( >60%).
- плата Arduino Uno
- плата прототипирования
- RGB-светодиод
- датчик DHT11
- резистор 10 кОм
- резистор 220 Ом – 3 шт
- соединительные провода
//3d-diy.ru // подключение библиотеки #include "DHT.h" // пин для подключения датчика DHT #define DHTPIN 2 // what pin we're connected to // тип датчика DHT #define DHTTYPE DHT11 // DHT 11 //#define DHTTYPE DHT22 // DHT 22 (AM2302) // создание экземпляра объекта DHT DHT dht(DHTPIN, DHTTYPE); // подключение RGB-светодиода const int pinRED=5; // вывод красной ноги RGB-светодиода const int pinGREEN=4; // вывод зеленой ноги RGB-светодиода const int pinBLUE=3; // вывод синей ноги RGB-светодиода void setup() { // подключение последовательного порта Serial.begin(9600); // запуск датчика DHT dht.begin(); // настройка выводов подключения к RGB светодиоду pinMode(pinRED,OUTPUT); pinMode(pinGREEN,OUTPUT); pinMode(pinBLUE,OUTPUT); } void loop() { // получение данных влажности float h = dht.readHumidity(); // ошибочные данные с датчика! if (isnan(h)) { Serial.println("Failed to read from DHT"); set#000000; } else { Serial.print("Humidity: "); Serial.println(h); if(h<40) set#010000; else if(h>60) set#000001; else set#000100; } // пауза 5 секунд delay(5000); } // процедура установки цвета для RGB-светодиода void setRGB(int R, int G, int B) { digitalWrite(pinRED,R); digitalWrite(pinGREEN,G); digitalWrite(pinBLUE,B); }
Для работы с датчиком DHT11 используем Arduino библиотеку DHT. Необходимо выбрать тип датчика, в нашем случае DHT11 #define DHTTYPE DHT11 С интервалом 5 секунд получаем с датчика DHT11 значение относительной влажности воздуха. В зависимости от полученного значения, устанавливаем цвет "горения" RGB-светодиода (красный, зеленый, синий). В случае ошибки получения данных с датчика DHT11, светодиод "не горит". Зажигаем RGB-светодиод в процедуре setRGB(), передавая данные для R, G и B компоненты цвета. Для контроля выводим данные относительной влажности воздуха в монитор последовательного порта Arduino IDE. Схема в сборе.
Часто задаваемые вопросы FAQ
1. Не горит RGB-светодиод
- Проверьте правильность подключения светодиода.
- Проверьте показания датчика в мониторе последовательного порта.
- Проверьте правильность подключения датчика DHT11 порта.
- Проверьте цоколевку вашего RGB-светодиода по даташиту.