суббота, 22 февраля 2020 г.

Измеритель влажности воздуха на Arduino

Влажность воздуха оказывает влияние на живые организмы, электронику а также возможно на какие либо другие объекты на данной планете, поэтому возможность определить влажность воздуха может быть полезной. Для того чтобы это сделать имеются специальные приборы которые продаются в магазинах в готовом виде, однако кроме готовых приборов также существуют специальные модули-датчики для подключения а Arduino (http://ali.pub/23ni7b) или любому другому аналогичному прибору способному взаимодействовать с такими датчиками. Например существует недорого датчик влажности и температуры DHT11(http://ali.pub/4i369v). Такой датчик можно подключить к Ардуине и для него, ввиду его популярности, даже есть программная библиотека чтобы было проще запрограммировать ардуину на работу с ним. Помимо датчика к ардуине также надо подключить какое либо устройство вывода чтобы можно было узнать ту влажность которую определил датчик. В качестве устройства вывода можно использовать пару семисегментных светодиодных индикаторов как один из самых простых способов вывести цифры из ардуины наружу не используя компьютер. Соединит эти элементы можно так как показано на схеме:
Рисунок 1 - Схема измерителя влажности воздуха на Aduino

Семисегментных индикаторов достаточно двух т.к. влажность которую определяет связка из ардуины, датчика DHT11 и библиотеки для DHT11 выдает значение влажности в виде двух цифр и судя по всему эти две цифры являются значением в процентах от 0 до 100 (не думаю что стоит заморачиваться с добавлением ещё одного индикатора для показа единицы в случае возникновения самого крайнего и самого редкого и исключительного случая когда влажность равна 100%). Теперь давайте рассмотрим скетч:

В самом верху (как обычно) подключается заголовочный файл библиотеки для работы с датчиком. Далее в функцию dht передается номер пина ардуины к которому подключается информационный пин датчика DHT11 и передается константа название которой соответствует названию датчика. Далее объявляются и инициализируются переменные и массив необходимые для работы скетча. В функции setup() вызывается функция для начала (судя по названию) работы с датчиком, после чего все необходимые пины настраиваются на выход, массив заполняется кодами для вывода цифр на индикаторы. В функции loop() имеется счётчик который осле того как досчитает до тысячи (извините за "магическое число", просто вообще не  понимаю как ещё можно назвать эту вещь кроме как 1000, надеюсь это не доставит больших неудобств). После того как счётчик досчитал происходит определение влажности потом разбиение двухзначного числа на две цифры потом проверка полученных цифр на выход за пределы массива. Далее имеется алгоритм для динамической индикации. Переменная t (извините за название (туго с воображением)) каждую итерацию основного цикла меняет свое значение на противоположное - это делается для того чтобы поменять индикатор и вывести на нужный индикатор соответствующую ему цифру. Перед запись в индикатор сначала на все пины для индикаторов выводятся нули чтобы ослабить свечение тех светодиодов которые не должны участвовать в показывании цифр. Далее происходит переключение на другой индикатор и выводиться цифра.
Здесь можно посмотреть видео про данный измеритель влажности воздуха:
КАРТА БЛОГА (содержание)