Системы «умного дома», теплицы и инкубаторы нуждаются в приборах, позволяющих контролировать температурный режим и сухость воздуха. Благодаря им можно автоматизировать систему и запрограммировать ее на определенные действия, если показатели соответствуют заданным. Для микроконтроллера Ардуино часто применяются температурные датчики DHT11 и DHT22. Модели характеризуются одинаковой распиновкой, но имеют и отличия:
- одиннадцатая версия определяет температуру от нуля до пятидесяти градусов, влажность от 20 до 80 процентов, проводя измерения каждую секунду;
- двадцать вторая версия отличается расширенным диапазоном температур от −40 до 125 градусов и влажности от нуля до стопроцентной. Измерения проводятся каждые две секунды.
Конструкционно оба прибора представляют собой сочетания термистора и датчика влажности воздуха. У каждой версии четыре выхода, один из которых не задействован, а остальные — питание, земля и вывод сигнала. Несмотря на невысокую точность, датчик температуры и влажности DHT11 выигрывает за счет простоты эксплуатации.
Термисторы — терморезистные устройства, для изготовления которых применяются материалы с высоким коэффициентом сопротивления температурам. Сопротивление проводника в них меняется в зависимости от температурных показателей. Преимуществом подобных систем считается точность и чувствительность. Данные линейны.
Емкостный датчик влажности представляет собой конденсатор в герметичном корпусе, содержащий токопроводящие обкладки на текстолите, поверх корпуса находится поглощающий влагу материал. Когда частицы влаги попадают на него, происходит изменение диэлектрической проницаемости, в итоге конденсатор меняет емкость.
Обе версии устройств хорошо подходят для получения показаний в помещениях.
Характеристики DHT11 к Arduino
Прибор DHT11 обладает следующими техническими характеристиками:
- максимальное значение силы тока 2.5 мА;
- напряжение от 3 до 5 В;
- для подключения к Ардуино нуждается в резисторе;
- точность ± 2 градуса;
- размеры 15.5×12×5.5 мм;
- частота 1 Гц;
- однопроводный протокол обмена;
- не работает в «паразитном» режиме;
- использует один цифровой пин;
- библиотека DHT.h.
Датчик DHT22 и одиннадцатая версия часто применяются в проектировании систем «умного» дома и при создании метеостанций. Внутренний чип устройств выполняет преобразование данных, поступающих с датчиков, и передает сигнал микроконтроллеру.
Данные представляют собой сорок бит информации, где:
- восемь бит отводится на интегральное значение RH;
- восемь — на десятичное значение RH;
- восемь для интегрального значения показателя температуры;
- и оставшиеся восемь для создания контрольной суммы.
Устройство предлагается в двух вариантах — отдельно в пластиковом корпусе с выходом контактов или собранным модулем, к которому припаяны элементы обвязки. Эта версия больше подходит для реализации проектов начинающими.
Среди преимуществ одиннадцатой версии часто называют простоту и небольшую стоимость — двадцать вторая версия оказывается обычно в два или даже в три раза дороже. Чаще всего одиннадцатая применяется в процессе обучения или при создании систем, где точностью легко пренебречь.
Важным моментом является и то, что одиннадцатая версия превосходит более старшую по частоте выборки и отличается меньшими габаритными размерами. Однако оба устройства могут заменять друг друга, не потребуется даже проводить перепрограммирование системы или вносить коррективы в схему подключения.
DHT11 на Ардуино Уно
Помимо самой платы и датчика, чтобы подключить к Ардуино DHT11 в версии без обвязки, требуется предварительно подготовить следующие комплектующие:
- макетную плату;
- резистор — подойдет номиналом в десять кОм;
- светодиоды.
Нумерация контактов происходит справа, если само устройство располагается «ножками» вниз:
- Питание (VCC).
- Вывод (DATA).
- Контакт, который не используется (NC).
- Заземление (GND).
Чтобы на Arduino датчик влажности корректно работал, резистор впаивается между первым и вторым контактом.
Когда речь идет о уже готовом модуле для Ардуино, подключается он значительно проще:
- VCC присоединяется к +5 В. Рекомендуется использовать питание именно в 5 В, так как в этом случае датчик можно расположить на расстоянии в двадцать метров от источника. Если питание минимально — то есть равно 3.3 В, длина кабеля не может превышать метра или же измерения окажутся некорректными;
- отмеченный GND — к земле;
- третий присоединяется к свободному пину, имеющемуся на плате, а номер пина указывается в скетче. Он необходим для обеспечения связи с микроконтроллером.
Важным моментом при подключении датчика является строгое соблюдение полярности. Если этим аспектом пренебречь, то устройство выйдет из строя, а пластиковый корпус может даже оплавиться от перегрева.
Предпочтительным вариантом подключения одиннадцатой версии или DHT22 к Arduino является второй пин — в этом случае программирование будет осуществляться по приведенному скетчу. Изменение пина требует внесения определенных правок в код.
Программирование
Перед тем, как начать кодирование, требуется проверить наличие библиотеки, которая позволяет работать с датчиками температуры и влажности. Если таковой нет, рекомендуется сначала загрузить ее. Папка должна иметь наименование «DHT», корректное расположение — в корневой «Arduino IDE», в папке «libraries».
Устройства отличаются однопроводным протоколом, которому не нужна точная синхронизация.
Скетч для датчиков влажности и температуры DHT11 приведен далее:
#include "DHT.h"
#define DHTPIN 2 // Тот самый номер пина, о котором упоминалось выше
// Одна из следующих строк закоментирована. Снимите комментарий, если подключаете датчик DHT11 к arduino
DHT dht(DHTPIN, DHT22); //Инициация датчика
//DHT dht(DHTPIN, DHT11);
void setup() {
begin(9600);
begin();
}
void loop() {
delay(2000); // 2 секунды задержки
float h = dht.readHumidity(); //Измеряем влажность
float t = dht.readTemperature(); //Измеряем температуру
if (isnan(h) || isnan(t)) { // Проверка. Если не удается считать показания, выводится «Ошибка считывания», и программа завершает работу
println("Ошибка считывания");
return;
}
print("Влажность: ");
print(h);
print(" %\t");
print("Температура: ");
print(t);
println(" *C "); //Вывод показателей на экран
}
Для начала включается установленная библиотека и прописывается пин вывода, куда включен датчик. Создаваемый объект помогает обеспечить доступ к функциям.
Setup () помогает инициализировать интерфейс — это необходимо, потому что показатели выводятся на экран последовательного порта.
Loop () подключает функцию read11(), принимающую вывод полученных данных. Если применяется 22-я версия, то функция соответствующим образом меняется — на read22().
Доступ к показателям обеспечивается параметрами:
- t = DHT.temperature;
- h = DHT.humidity.
Этот тип данных подходит для хранения чисел, имеющих десятичный разделитель.
Serial.print () позволяет вывести показания без переноса строчек, а Serial.println () учитывает перенос.
Когда скетч будет загружен и удалось подключить датчик влажности и температуры результаты проводимых измерений отображаются на дисплее порта. Именно там можно будет уточнить значения показателей.
Если отображение некорректное или на экране не отражаются изменения показателей, то следует проверить соединения и правильность подключения устройства, надежность контактов. Нарушения работы могут наблюдаться, если номер порта на плате не соответствует указанному в скетче.
Если система работает, требуется установить, насколько правильные значения выдает датчик температуры, для чего рекомендуется провести ряд тестов. Так, например, устройство можно переместить в холодное место или же согреть, наблюдая за тем, как меняются данные.
Возможно применение DHT11 для контроля показателей в инкубаторе. В такой ситуации датчик должен подключаться к LCD-дисплею, а не экрану последовательного порта. Подходят версии 16×2 символов. В код требуется внести соответствующие изменения — данные должны выводиться на LCD. Для этого требуется инициализировать дисплей через LCD.init () и обеспечить вывод данных через LCD.setCursor () и LCD.print ().
Используется также команда LCD.clear (), которая подготавливает экран для вывода новых показателей.
Проблемы, возникающие при подключении
Существует ряд ошибок и проблем, которые могут появиться после сборки схемы и программирования:
- Нет светодиодной индикации. В этом случае необходимо проверить корректность подключения светодиода и показания, появляющиеся на экране последовательного порта.
- При считывании данных возникает сбой. Ошибка может появляться при неверном подключении устройства.
- При использовании RGB-светодиода световая индикация некорректная. Такая ситуация возникает при некорректной цоколевке светодиода по даташиту.
При выборе датчика для конкретного проекта важно учитывать разницу в точности показаний. Двадцать вторая версия намного точнее одиннадцатой, потому если требуется достаточная точность, стоит предпочесть ее. Тем не менее, оба варианта подходят для создания как «умных» домов, так и оранжерей или теплиц, совместно с датчиком влажности почвы Arduino. Для исследовательских комплексов, наблюдающих за изменениями в климате или проводящих мониторинг окружающей среды.
Понимая, как подключить DHT 11, легко справиться и со «старшей» версией. Особенно ценно то, что оба варианта датчика прекрасно заменяют друг друга.