Контроль влажности на ардуино

Автор: | 12.03.2024

100 Домострой

Осваиваю микроконтроллеры, но по сколько времени много нету свободного, то делаю это ленивым путем, с помощью Arduino.

"…Arduino — это электронный конструктор и удобная платформа быстрой разработки электронных устройств для новичков и профессионалов. Платформа пользуется огромной популярностью во всем мире благодаря удобству и простоте языка программирования, а также открытой архитектуре и программному коду. Устройство программируется через USB без использования программаторов." Ну так, для справки )))

В общем мои подходы к микроконтроллерам начались еще года 4 назад. Тогда я, абсолютно не понимая что это такое, на радио рынке купил, так называемый Freeduino (клон Arduino), поскольку на оригинал для эксперимента денег зажал:

4e55b42s 960 Домострой

Тогда же был приобретен LCD WH1602B 16×2 экран. В общем 4 года назад все проекты закончились на вольтметре…

Не так давно зашел в радио магазин "1000 и 1 радиодеталь" в котором мой взгляд приковала витрина с Arduino, контроллер и модули… А точнее приковала их нынешняя цена, 4 года назад оно все стоило гораздо дороже! А что, 300 рублей за контроллер Arduino nano v3.0 с atmega328 на борту (на ебее еще дешевле) помоему не так уж и дорого.

c80db42s 960 Домострой

Взял я этот контроллер и стал рассматривать модули. Среди всех модулей лежавших на витрине, руководствуясь принципом: "любопытство-цена" я остановился на модуле DHT11 — цифровой датчик влажности и температуры — 150р. Бэру!

DHT11:
— Питание и I/O 3-5 В
— Определение влажности 20-80% с 5% точностью
— Определение температуры 0-50 град. с 2% точностью
— Частота опроса не более 1 Гц (не более раза в 1 сек.)
— Размеры 15.5мм x 12мм x 5.5мм

b60db42s 960 Домострой

Откопав в закромах тот самый 2-х строчный дисплей, собрал это все на монтажке. Установил саму программку для написания скетчей Arduino IDE (благо под линуксом работает без проблем). Сначала накидал скетч под чтение инфы с датчика через "монитор порта" на компе в среде разработки, потом прилепил и сам экран:
"
#include "DHT.h" //Библиотека для работы с датчиками DHT
#include
//Подключаем библиотеку для работы с LCD
#define DHTPIN 8 // указание пина подключения data от датчика dht11
#define DHTTYPE DHT11 //указываем тип датчика DHT 11
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // инициализируем LCD, указывая управляющие контакты
DHT dht(DHTPIN, DHTTYPE);

void setup() <
lcd.begin(16,2);
Serial.begin(9600);
Serial.println("connect…");
dht.begin();
>
void loop() <
float h = dht.readHumidity();
float t = dht.readTemperature()-2; //поправил погрешность датчика температуры

if (isnan(t) || isnan(h)) <
Serial.println("Failed to read from DHT");
> else <
Serial.print("Vlajnost: ");
Serial.print(h);
Serial.print(" % ");
lcd.print("Vlajnost: ");
lcd.print(h);
lcd.print("% ");
lcd.setCursor(0,1);
Serial.print("Temperatura: ");
Serial.print(t);
Serial.println(" *C");
lcd.print("Temp: ");
lcd.print(t);
lcd.print("*C");
lcd.setCursor(0,0);
>
>
"

1615b42s 960 Домострой

В общем эта заба работает. Подключил к 3 пальчиковым батарейкам и пошел мерить ))) Произвел замер температуры устройством и старым, добрым, безотказным, красным термометром и поправил в программе показания температуры. Мой DHT11 брехал на 2 градуса в плюс. Теперь буду искать чем "откалибровать" датчик влажности. Но учитывая даже тот факт, что производитель обещает вранье по показаниям влажности на 5% мои 34% процента влажности в доме меня заставили задуматься о приобретение увлажнителя воздуха… Ведь по некоторым стандартам и рекомендация комфортная влажность должна быть в пределах 45%-60%, в идеале в пределах 50%-55%… Как пишет ГОСТ влажность ниже 40% вызывает сонливость… Вот! Не я ленивая, сонная сволочь, всему вина влажность ! )))

Датчики DHT11 и DHT22 – очень популярны в среде Ардуино и часто используются в проектах метеостанций и умного дома. В этой статье мы с вами узнаем, как можно использовать эти сенсоры, как правильно подключать к платам Arduino Uno, Mega или Nano, какие библиотеки использовать для написания скетча. Данные датчики не выделяются особенным быстродействием и точностью, но они просты в использовании, их можно смело использовать в своих первых проектах в ввиду доступности и невысокой цены.

Характеристики и подключение датчиков DHT11 и DHT22

Датчик состоит из двух частей – емкостного датчика температуры и гигрометра. Первый используется для измерения температуры, второй – для влажности воздуха. Находящийся внутри чип может выполнять аналого-цифровые преобразования и выдавать цифровой сигнал, который считывается посредством микроконтроллера.

temperatura arduino 2 Домострой

В большинстве случаев DHT11 или DHT22 доступен в двух вариантах: как отдельный датчик в виде пластикового корпуса с металлическими контактами или как готовый модуль с датчиком и припаянными элементами обвязки. Второй вариант гораздо проще использовать в реальных проектах и крайне рекомендуется для начинающих.

temperatura arduino 4 Домострой

Датчик DHT11

  • Потребляемый ток – 2,5 мА (максимальное значение при преобразовании данных);
  • Измеряет влажность в диапазоне от 20% до 80%. Погрешность может составлять до 5%;
  • Применяется при измерении температуры в интервале от 0 до 50 градусов (точность – 2%)
  • Габаритные размеры: 15,5 мм длина; 12 мм широта; 5,5 мм высота;
  • Питание – от 3 до 5 Вольт;
  • Одно измерение в единицу времени (секунду). То есть, частота составляет 1 Гц;
  • 4 коннектора. Между соседними расстояние в 0,1 ”.

Датчик DHT22

  • Питание – от 3 до 5 Вольт;
  • Максимальный ток при преобразовании – 2,5 мА;
  • Способен измерять влажность в интервале от 0% до 100%. Точность измерений колеблется от 2% до 5%;
  • Минимальная измеряемая температура – минус 40, максимальная – 125 градусов по Цельсию (точность измерений – 0,5);
  • Устройство способно совершать одно измерение за 2 секунд. Частота – до 0,5 ГЦ;
  • Габаритные размеры: 15,1 мм длина; 25 мм широта; 5,5 мм высота;
  • Присутствует 4 коннектора. Расстояние между соседними – 0,1 ‘;

Очевидно, что при использовании в ардуино датчика температуры и влажности DHT11 устройство выдаст менее точные значения, чем DHT22. У аналога больший диапазон измеряемых значений, но и цена соответствующая. Датчик температуры и влажности DHT22, как и его аналог, имеет один цифровой выход, соответственно снимать показания можно не чаще, чем один раз в 1-2 секунды.

Где купить датчики по низким ценам

Традиционно самые низкие цены предлагают продавцы Aliexpress. Вот наиболее интересные варианты:

Подключение DHT11 к Arduino Uno

Если у вас на руках только сам датчик (синяя “решетчатая” пластиковая коробочка с 4-я металлическими контактами), то для подключения DHT11 вам понадобятся следующие детали:

  • Плата Arduino (или другой микроконтроллер, поддерживающий тайминг в микросекундах);
  • Монтажная (макетная плата);
  • Подтягивающий резистор номиналом в 10 кОм;
  • Светодиоды.

Описание контактов DHT11:

  • Питание;
  • Вывод данных;
  • Не используется;
  • Земля (GND).

Контакты нумеруются слева на право, если корпус датчика находится перед вами со стороны решетки, и «ноги» расположены внизу. Для правильной работы датчика нужно впаять резистор на 10 кОм между выходами сигнала и питанием.

shema dht11 Домострой

Если у вас в руках готовый модуль датчика, то подключение его к Arduino предельно упрощается: подключаете VCC к +5В, GND – к земле, третий контакт – к любому свободному пину на плате Arduino. Номер пина нужно будет затем указать скетче. Таким образом можно подключить датчика к разным платам Arduino: Uno, Arduino Mega, Arduino Nano, Pro Mini и другим.
Подключение модуля датчика производится по следующей схеме:

Датчик DHT22/DHT11 Arduino
+ +5V
out например, 2
GND

shema dht22 Домострой

Скетч для работы с датчиками DHT11 и DHT22 в Arduino

Перед написанием скетча давайте убедимся, что у нас установлена библиотека для работы с датчиками влажности и температуры. Скачать ее можно по ссылке https://github.com/adafruit/DHT-sensor-library. Загрузится папка под названием «DHT-sensor-library-master». Ее необходимо переименовать в DHT и переместить в папку libraries, что находится в корневой папке Arduino IDE. Далее необходимо загрузить готовый скетч или написать его самостоятельно, используя примеры. Типичный arduino скетч для работы с DHT11 и DHT22 выглядит следующим образом:

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

На этом этапе вы сможете заметить разницу между реальным значением температуры и показаниями датчика с ардуино. Точность DHT11 гораздо хуже точности DHT22, о чем мы уже говорили в этой статье. Если у вас есть оба датчика, подключите их к плате Arduino и сравните результаты. По моему опыту, в среднем расхождение составляет больше градуса. Учитывайте это, используя эти датчики в своих проектах.

Резюме

Давайте подведем итог. В статье рассмотрены вопросы подключения ардуино датчиков температуры и влажности DHT11 и DHT22 к плате Arduino Uno. Датчики лучше приобретать в виде готовых модулей. Для работы с датчиками можно использовать библиотеку DHT для Arduino, которую легко скачать по указанной в статье ссылке. В скетче мы просто инициализируем объект для работы с датчиком и пользуемся его методами для получения температуры и влажности. Все полученные результаты мы можем посмотреть в окне монитора порта, сохранить и вывести на ЖК-экран, послать через bluetooth или интернет.

Используя DHT11 или DHT22 в проектах ардуино, можно строить элементы систем умного дома и умные теплицы. С помощью этих датчиков можно создавать исследовательские комплексы для климатических измерений и мониторинга окружающей среды. Варианты сфер применения датчиков практически неисчерпаемы, можно найти множество примеров на просторах интернета, в том числе на этом сайте. Надеюсь, с помощью нашей статьи проблем с подключением DHT11 и DHT22 к Arduino у вас не останется.

Решаем изначальную задачу убрать выпадение конденсата в подвалах путем создания контроля влажности подвала на Arduino pro mini.

Есть в загородном доме два подвала которые гидроизолированы от земли (нет поступления воды из грунта).

Зимой на стенах появляется конденсат, предметы покрываются влагой. Температура в подвалах не опускается ниже 0…+2 градусов, т.е. вода не замерзает. Это достигнуто утеплением стен подвала снаружи ЭППС и нагревом пола подвала (он тепло не изолирован) землей.

03 Домострой

1. Принцип работы

Идея контроля влажности подвала была подсмотрена на geektimes.ru. Вся идея состоит в том чтобы измерить температуру и относительную влажность в подвале и на улице, на основании температуры и относительной влажности рассчитать абсолютную влажность и принять решение о включении вытяжного вентилятора в подвале. Теорию для расчета мы расскажем в следующих публикациях.

2. Выбор элементной базы

В качестве контроллера было выбрано Arduino Pro Mini. Это мой второй проект (первый – контроль работы теплового насоса был сделан на uno). Изучив предлагаемые контроллеры Arduino пришел к выводу что существует всего три варианта:

  • Arduino DUE (отдельная песня и мне кажется тупик),
  • Arduino MEGA,
  • все остальное (сильно схожие контроллеры на одном чипе 328).

Задача достаточно простая, по этому выбор пал на Arduino Pro Mini (не на мегу). В pro mini был прошит загрузчик optiboot 5 версии, это дало возможность использования сторожевого таймер и увеличением максимального размера кода.

Устройство индикации – до этого были испытаны монохромные дисплеи 4х20 символов и графический 128х64 точки на 9372. Появилось желание подключить дисплей цветной ЖК. В виду малого количества ножек у МК было использовано подключение по SPI . Ebay – имеет большое количество предложений на контроллере ILI9341 с размерами диагонали 1.8-2.8 дюйма и разрешением 320х240 точек. В эту конструкцию был куплен дисплей 2.4 дюйма.

Т.к. устройство будет устанавливаться в подвале то для наблюдения я хочу сделать выносной пульт со связью по радиоканалу. Для организации радиоканала были использованы модули на основе nrf24. Планируется система типа “умного дома” каждый блок (а сейчас есть уже два блока в подвалах) посылает пакет о своем состоянии в головное устройство.

Исполнительное устройство

В начале был использован классический одно канальный релейный шилд для ардуино. Корпус проектировался под него (есть даже выступы для крепления). После установки устройства в подвале был выявлен косяк – зависание контроллера дисплея при выключении вентилятора (25 вт). Сразу были увеличены конденсаторы по питанию, поставлен LC фильтр по 5 вольтам, дисплей был переведен на питание 3.3 вольта от внешнего стабилизатора (он уже был и использовался для питания nrf24). Все эти меры ничего не дали.

Затем возникла идея сброса контроллера дисплея при зависании. Программный сброс обеспечил. А вот как читать регистры дисплея так и не разобрался (типа прочел регистр все ок не прочел надо перегружать). Был организован периодический сброс – раз в час. Решение кривое. Все это делалось за городом из того что было.

Решение меня не удовлетворило. Пришлось везти блок в Москву, там было установлено твердотельное реле Sharp S202S02 ( с зеро кросс блоком) и помехо-гасящий конденсатор на 0.1 мкф. После этого устройство заработало без зависаний.

Используется датчик температуры и влажности DHT22, штатное включение, подтягивающий резистор 5 кОм, длина провода до 6 метров (что испробовал). Для согласования уровней 5 вольт ардуино и дисплея используются делители из резисторов 2к+4к. Согласования уровней для nrf24 не требуется.

3. Программа

Скетч, т.е. программа целиком ниже:

У меня есть достаточно богатый опыт программирования (с 89 года), но все это касается полноценных компьютеров, последнее время занимаюсь разработкой управляющих систем на arm под самосборной допиленной Linux, пишу либо на голом с или qt. Опыта программирования МК не имел, но старался перенести свой опыт на них.

Использую шедуллер задач leos ver 1 (первая версия использует таймер вторая использует сторожевой таймер), это “обертка” таймера для организации периодического вызова функций (у меня вызов опроса датчика).

Сторожевой таймер используется для борьбы с зависанием МК (я их не наблюдал но пусть будет).

Для работы с дисплеем используется библиотека ucglib версии не позднее 1.02. D более поздних версиях переработан формат шрифтов и есть проблемы с русификацией в кодировке UTF-8, допиливать было лень.

Для nrf24 используется библиотека от маньяка.

Для чтения датчиков DHT используется самая свежая библиотека с официального сайта. Там кодов ошибок больше.

Реализован подсчет мото часов блока и вентилятора.Кнопка повешена на прерывание и позволяет менять настройки включения вентилятора, смотреть информацию об устройстве (длительное нажатие) и сбрасывать счетчики (нажатие при включении).

Реализован вывод ошибок чтения DHT22 (верхний правый угол цифры), с чтением были проблемы, после оптимизации кода они ушли. На графике выводится не весь диапазон темперур (вывод -20…+20) для увеличения разрешающей способности графика в области допустимых темератру в подвале (0…+20).

4. Конструктив

Корпус напечатан на 3D-принтере (нижняя часть склеена из двух частей). Очень удобно, все отверстия сразу сделаны, только заусецы счистить и можно использовать. Получилось достаточно компактно. Вся электроника кроме входных цепей распаена на макетке, проводом (по времени один вечер).

Замеченные косяки:

  1. На дисплее появляются “не штатные” точки на графике (скоре всего помехи по SPI после перерисовке экрана они проподают),
  2. Кнопка иногода “не четко” срабатывает проблемы с длительным нажатием.
  3. nrf24 в блоке ожидает “квитанции” о приеме пакета иногда “квиатнция” не приходит (30-40%) но пакет доставляется до приемного устройства.
  4. Уличный датчик DHT-22 показания влажности прыгают утром (ветер, солнце?). Датчик менял.

Конструктивная критика приветствуется, особенно по коду.

Читайте также  Насыпной пирог за 7 минут видео

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

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