Вентиляция для гаража на ардуино

Обновлено: 07.07.2024

Arduino контролирует в подвале температуру, влажность и затопление и выдает данные на веб-страницу

Хочу поделиться опытом создания системы контроля и предупреждения.

На одном из строительных объектов делали строение с бассейном, сауной, тренажёрным залом и комнатой отдыха. Все это было в приличных размерах как для одного хозяина. Чисто технически понадобилось 2 подвала: 1-й для обслуживания насосов бассейна — маленький, 2-й для обслуживания систем обогрева и накопления тепла

Закуплены были 2 напольных евро-люка разных размеров для двух подвалов. Люки зарывались 4-мя винтами и имели очень плотные резиновые уплотнения. Чтобы открыть подвал, необходимо было 4 человека (и немного здоровья). При работе всей техники в подвале поднималась температура и влажность, при этом контролировать что там происходит практически неудобно.

В итоге было принято решение о создании устройства, которое бы показывало, а также управляло вентилятором, звуковым сигнализатором, электро-клапаном (воды), и контролировать его можно было с любого смарт устройства.

За основу взял Arduino Pro Mini плюс Ethernet ENC28J60. Для замера влажности и температуры датчик DHT11 и FC-28 (датчик влажности почвы – в роли датчика затопления).

image



Тех задание:

1) Управление и информирование через Web интерфейс;
2) Включение и отключение вентиляции по заданному уровню влажности;
3) Включение и отключение клапана водопровода (возможно, ревун, откачивающий насос) при затоплении.

В выборе Arduino Pro Mini тоже надо подумать, так как существуют разные исполнения:

image

Лучше брать ту, в которой стабилизатор по мощнее, так как та, что по слабее, при активных реле и сетевом контроллера закипит стабилизатор, что приводит к зависанию системы (я упустил этот нюанс и получил зависания, но приобрел более ценное – опыт).
Сетевые контроллеры также надо выбирать внимательно, так как есть те которые от 5В (стабилизатор на обратной стороне модуля) и на 3,3В. Нужен будет дополнительный стабилизатор на 3,3В.

Блок питания взял от обычного свитча (или роутера) TP-Link 9В 500мА (примерно), они часто встречаются за копейки от паленых свитчей или роутеров.

Принцип работы простой: есть 2 датчика, которые сливают информацию на контроллер. В зависимости от ситуации контроллер включает и выключает реле (клапана водопровода, возможно ревун, откачивающий насос, вентилятор). Управление и мониторинг через WEB интерфейс который реализован программой на базе модуля ENC28J60.

image

image

1) Сработка датчика затопления = включение реле (клапана водопровода(ревун, откачивающий насос ); + информирование на web странице крупным шрифтом;
2) Повышение влажности выше установленного уровня = включение реле вентилятора;
3) Вся информация о температуре влажности и затоплению выводится на web страницу;
4) При понижении температуры ниже 5 градусов оповещение на web сайте о угрозе.

Наглядно можно увидеть на видео:

На практике все очень удобно. Всегда можно посмотреть с Телевизора (Smart), телефона или планшета — что творится в закрытых помещениях, не открывая их.

image

image

image

Люблю создавать устройства, которые облегчают жизнь, а не просто создать игрушку поиграться и выбросить.
С дизайном странички сильно не напрягался, так как носит технический характер и должна быть практичной, а не сложной и красивой.

Надеюсь, эта статья кому-то поможет, а кого то вдохновит на создание своего проекта.

Программа для Arduino

Автоматическая осушающая вентиляция для гаража и подвала

Всем привет! Хочу поделиться своим опытом экономичного осушения гаража с помощью вентиляции, управляемой микроконтроллером. Изначально был сырой гараж, в подвале гаража гигрометр показывал 100% влажность, в самом гараже в районе 85%. В подвале был конденсат на стенах и потолке, песчаный пол подвала также был влажный.
Было решено установить автоматику на управление канальным вентилятором. Идею подобного устройства подсмотрел в интернете, реализовал самостоятельно. В чем идея: микроконтроллер измеряет относительную влажность и температуру в подвале и на улице (два датчика DHT22), и включает вентилятор только при условии более сухого уличного воздуха. Сравнение идет по абсолютной влажности, в граммах воды на кубометр. Для контроля вся информация выводится на небольшой дисплей. Микроконтроллер через реле управляет тремя вентиляторами, подключенными в параллель, суммарной производительностью 500 кубометров в час и суммарной потребляемой мощностью около 60 Вт/ч (300 м3/ч на вытяжной трубе из подвала и 200 м3/ч на приточных трубах у противоположной стены). В принципе достаточно было бы и одного вентилятора на вытяжку, но процесс осушения был бы медленнее, хотелось побыстрее получить результат.
После установки системы на гараже пришлось бороться с зависаниями микроконтроллера, связанными с питанием – на гаражах нестабильное напряжение с импульсными помехами, но в конечном итоге всё получилось. Также редактировалась программа микроконтроллера, был поиск лучшего места расположения датчиков и прочие наладочные работы. Устанавливал в конце лета, погода стояла жаркая,
Итак, результат. Сырость из гаража ушла через неделю, а подвал высох до 75% влажности где-то недели через три-четыре, стены, потолок и песок на полу теперь сухие. Вентиляторы поначалу работали почти постоянно, отключались только во время дождя, когда влажность на улице была максимальной. Теперь включаются всё реже и реже, поддерживая сухость.
Затраты на электроэнергию в первый месяц использования были около 1$, с каждым месяцем всё меньше, не подсчитывалось.

Себестоимость системы: микроконтроллер Ардуино + 2 датчика + релейный модуль + дисплей + блок питания + 3 канальных вентилятора = 50$.

Эффективность осушения можно оценить следующим образом. Допустим влажность на улице ниже гаражной на 1 г/м3. При таких условиях один вентилятор производительностью 100 м3/ч выведет за час 100 г воды из подвала, затратив на это 14 Вт электроэнергии. Итого получаем цифру примерно 7 г воды на 1 ватт электроэнергии. При разнице влажностей в 10 г/м3 эффективность будет уже 70 г/Вт. Конечно же, эффективность зависит от погоды и постепенно уменьшается по мере осушения помещения, но стоимость осушения по сравнению с другими техническими способами будет самая что ни на есть минимальная.

Второе подобное устройство было установлено в подвале частного дома, перестал быть сырым также примерно в течение месяца.

Автоматическая заслонка для вентиляции на базе Arduino

Автоматическая заслонка для вентиляции на ардуино

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

Альтернативным способом терморегуляции в помещении является открытие и закрытие заслонки вентиляционной шахты при определенной температуре воздуха.

История создания

Ночью, когда на улице температура опускалась до +5, помещение прогревалось до +50 градусов. Потолок пристроя был утеплен достаточно хорошо, и не пропускал тепло наружу, поэтому пришлось сделать вентиляцию. Установил трубу на потолке для вытяжки теплого воздуха, выпилил небольшое окно в полу рядом с фермой для подачи прохладного воздуха с улицы.

Схема движения воздуха в помещении

Схема движения воздуха в помещении

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

Коротко о получившемся устройстве рассказано в этом видео.

А теперь рассмотрим автоматическую заслонку более подробно

Устройство заслонки

Основным элементом автоматической заслонки является сервопривод, позволяющий поворачивать рычаг заслонки на заданный угол. Логика устройства реализована на базе модуля Arduino Nano 3.0. Для питания системы используется импульсный источник напряжения 9 Вольт. Измерение температуры производится при помощи делителя напряжения с термистором NTC 25° 100 Ком. Для ручного управления заслонкой предусмотрена специальная кнопка. Вся начинка устройства уместилась в корпусе из обычной разветвительной коробки.

Устройство автоматической заслонки

Устройство автоматической заслонки

Сервопривод

Сервопривод Tower Pro Sg90, входящий в большинство стартовых наборов Ардуино, идеально подошел для главной роли в данном устройстве. Для его установки в крышке корпуса были высверлены 2 соседних отверстия диаметрами 11 и 6 мм.

Сервопривод Tower Pro Sg90

Сервопривод Tower Pro Sg90

Логический модуль

Мозговым центром системы стал модуль Arduino Nano 3.0, компактные размеры которого позволяют интегрировать его практически в любое бытовое устройство, а возможности контроллера Atmega328 с большим запасом удовлетворяют вычислительным потребностям системы и реализуют выполнение всех необходимых операций ввода/вывода.

Arduino Nano 3.0 и Tower Pro Sg90 в корпусе разветвительной коробки

Arduino Nano 3.0 и Tower Pro Sg90 в корпусе разветвительной коробки

Также большим плюсом данного модуля является наличие порта mini USB, что позволяет легко и быстро изменить прошивку устройства (схожий по размерам модуль Arduino Pro Mini не имеет USB порта, и прошивать его несколько сложнее, чем Arduino Nano 3.0). В крышке разветвительной коробки сделано отверстие для порта mini USB, позволяющее осуществить подключение Arduino к компьютеру для выполнения отладочных работ готового устройства, а также изменения температурных условий открытия и закрытия заслонки.

Mini USB Arduino Nano 3.0

Mini USB Arduino Nano 3.0

Источник питания

На основании разветвительной коробки расположились импульсный блок питания с рабочим напряжением 9 Вольт и клеммник, для подключения устройства к линии 220 Вольт.

Импульсный блок питания 9В

Импульсный блок питания 9В и 3-pin разъем

Для соединения с модулем ардуино использован 3-pin разъем от компьютерного вентилятора.

Начинка автоматической заслонки

Начинка автоматической заслонки

Датчик температуры

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

Изначально использовался терморезистор 10 Ком, но из-за самонагрева данные о температуре были неточными и пришлось заменить его на термистор 100 Ком, у которого самонагрев значительно меньше.

Индикация и управление

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

Кнопка управления установлена на боковой поверхности крышки корпуса. При работе устройства в режиме ручного управления однократное нажатие на кнопку меняет положение заслонки с открытого на закрытое и обратно. Удержание кнопки в течение 3 секунд меняет режим работы заслонки с автоматического на ручной и обратно.

Схема подключения Arduino

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

На практике все выглядит вот так:

Электронная часть автоматической заслонки

Электронная часть автоматической заслонки

Программа (скетч) для Arduino

Скетч получился небольшой. Хочу обратить внимание на 2 разных формулы для вычисления сопротивления терморезистора. Если в электрической схеме поменять местами терморезистор и постоянный резистор, то нужно в коде программы раскомментировать первую формулу для вычисления R_R1, и закомментировать вторую.

Изготовление заслонки

Диаметр вентиляционной трубы составляет 110 мм. Для изготовления заслонки я использовал фрагмент пластиковой стеновой панели. При помощи CD диска нарисовал окружность и приступил к вырезанию.

Компакт-диск в качестве шаблона для заслонки

Компакт-диск в качестве шаблона для заслонки

Заслонка получилась весом почти в 40 грамм. Достаточно тяжелая, чтобы долгое время находиться в горизонтальном положении. Пришлось обрезать хвост и нижний слой.

Взвешивание заслонки

Взвешивание заслонки

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

Сам рычаг крепится к сервоприводу при помощи пластиковой планки

Крепление рычага к сервоприводу

Крепление рычага к сервоприводу

Вот так выглядит готовая конструкция:

Готовая конструкция автоматической заслонки

Готовая конструкция автоматической заслонки

Окончательным этапом является установка автоматической заслонки рядом с вентиляционным отверстием на потолке.

Спасибо за внимание 🙂 С удовольствием отвечу на любые возникшие вопросы 🙂

46 мыслей о “Автоматическая заслонка для вентиляции на базе Arduino”

да, в нем уже не будет необходимости.
Однако стоит помнить, что обычные порты usb2.0 выдают максимум 500 миллиампер, в то время, как некоторые сервоприводы могут потреблять гораздо больше )

Здравствуйте! подскажите как можно реализовать подобную конструкцию но с плавынм изменением угла в зависимости от сопротивления терморезистора?

Здравствуйте! Был у меня один проект, где изменялся угол наклона камеры в зависимости от сопротивления резистора.
Вот фрагмент кода:

int servoangle=round(analogRead(servocontrolpin)/6.5);
int sValue = map(servoangle, 0, 180, 900, 2000);
myservo.write(sValue);

Андрей :

Да, 100к и 1к это обычные резисторы!
Кнопку можно ставить любую, но именно кнопку, а не выключатель!
Ардуино уно прекрасно питается от 12 вольт! 🙂

Андрей :

Приветствую! 🙂
По большому счету если убрать светодиод с его резистором и кнопку, то все продолжит работать, просто не будет индикации и управления извне 🙂

Сергей :

Круто! А не проще было по принципу заслонки карбюраторов?

не знаю, у меня труба вытяжки уже стояла в потолке, поэтому наружной заслонкой оказалось проще выполнить 🙂

Алексей :

Здравствуйте, Алексей, уточните про какого именно Андрея идет речь? Про карбюраторную заслонку?

андрей :

Здравствуйте, да, это вполне реально. Пробуйте, экспериментируйте 🙂

Добрый день! А как можно применить датчик DHT11 вместо
терморезистора? Хочу использовать сервопривод для открытия форточек теплицы.

zhekaus :

Неужели 9g servo справляется? Не появилась ли необходимость взять посильнее?

вполне справляется, заслонка ведь очень легкая

Александр :

Здравствуйте. Хочу сотворить подобную систему. Только не вытяжную, а приточную систему вентиляции в комнате. В состав входит ARDUINO NANO V.3 , сервомашинка SG90, воздушный клапан, две платы термореле и небольшой двигатель, который расположен внутри пластиковой трубы на 125мм . Суть работы системы я задумал следующим образом. Первое термореле с выносным датчиком на улице, измеряет температуру и выставлено на заданное значение температуры включения и выключения реле. Последовательно этому реле будет стоять реле второго термореле, датчик которого будет находиться в квартире. Оно тоже будет иметь значения температуры для сработки реле. Итого у нас два термореле, реле которых подключены последовательно друг другу. Немного поясню зачем. Значения сработки реле будут выставлены так, чтобы в летний период времени если воздух на улице горячее, чем в комнате система приточки не включит двигатель. Если же наоборот, температура на улице будет ниже чем в комнате будут замкнуты оба реле, которые запустят двигатель. С этим мне все понятно и ясно. А вот как написать скетч для ARDUINO не могу дотумкать. Скажу сразу в программировании я новичок. Подскажите возможно ли запрограммировать систему так, чтобы она работала по следующему алгоритму: При включении двигателя заслонка открывалась (поворачивалась на 90 гр.), а при выключении двигателя закрывалась (возвращаясь в первоначальное состояние). Управляющие сигналы для ARDUINO можно подавать либо: 1. замыканием или размыканием реле (та же кнопка, как у вас, только с двумя дискретными состояниями ВКЛ или ВЫКЛ), либо напряжением, которое будет появляться на двигателе (движок от старого советского компьютера 220В). Уровни напряжения можно будет преобразовать до необходимых величин.

Здравствуйте, Александр!
Интересная у Вас задумка 🙂
Запрограммировать можно все что угодно! Если есть четкий осмысленный алгоритм физических действий, то переложить его на программу можно однозначно 🙂
У меня возник вопрос, а как будет система работать в зимнее время? Летом, когда на улице прохладнее, чем в комнате, вентилятор включается. А зимой?
А что за модули с термореле? Это готовые модули для ардуино?

Александр :

Я тоже пользуюсь приточными клапанами в доме, только у меня другая модель, прямоугольная коробка с шумоизоляцией и шторкой для открытия/закрытия (модель не знаю). Зимой такой клапан лучше закрывать, ну или оставлять только в дневное время на несколько часов, когда никого нет в помещении, т.к. от него сильный сквозняк 🙂
Такие термореле (с управлением) я тоже заказывал на алиэкспресс, но так и не воспользовался ими(пришли все нерабочие).
А вообще, если используется ардуино, то можно эти термореле убрать из схемы, и оставить простые реле и терморезисторы, а логику обработки температуры настроить в самой ардуине. Тем более, этим реле требуется 12 вольт, а ардуинку можно запитать от 9 и даже от 5в. К тому же на один источник питания в системе будет меньше! 🙂

Александр : Александр :

Меня больше беспокоит лето. Ибо летом из-за жары приходится открывать окна балкона и квартиры из-за жары. Соответственно это пыль, шум, насекомые, пьяные компании и прочие посторонние звуки.
Данная система конечно не кондиционер, который тоже не идеален во многих смыслах, но позволяет хотя бы комфортно проводить ночь.

Александр :

Здравствуйте! У меня встала задача сделать автозапуск генератора, я уже собрал АВР на базе DATACOM-105, но все встало на приводе заслонки карбюратора. Ваше устройство подходит как нельзя лучше, но у меня вопрос: можно ли исключить регулировку по температуре? Просто чтоб открывалась заслонка при запуске и закрывалась после запуска генератора(во время работы стартера).
P.S. Я электронщик старого образца и мало что понимаю в современных программируемых(программах) контроллерах, поэтому прошу у Вас помощи, не сочтите за труд!

Алексей :

Очень интересно получилось сделать запуск генератора ?
Мне тоже хочется решить проблему перехода на генератор при отключении эл-ва. Если не трудно дайте элпочту или телефон на мой адрес.

Алексей : Андрей :

Можете написать с нуля?

Andriy :

Напишите пожалуйста, код отталкиваясь от вашего

чтобы при температуре 0 и ниже заслонка была закрыта на определенный угол (максимум) и выходил разовый 5 секундный сигнал на реле чтобы можно подключить было до дальнего света.

и чтобы
когда температура 20 * чтоб угол уменьшался
когда температура 40 * чтоб угол уменьшался
когда температура 60 * чтоб угол уменьшался
когда температура 60 + * сервопривод выключался

а потом уже после этого я хочу придумать как задействовать тахометр

Хорошо, на выходных напишу код, напишите свой адрес электронной почты, куда выслать, в комментариях не буду выкладывать, слишком громоздко получится 🙂

Контроль отопления и вентиляции на базе Arduino

Система для управления отоплением и вентиляцией на базе Arduino

Довольно долго я бился над решением задачи создания оптимального микроклимата в ванной комнате, и наконец-то, благодаря знаниям, полученным в процессе изучения Arduino и различных датчиков температуры и влажности, мне это удалось! 🙂

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

А теперь предлагаю подробнее рассмотреть как все работает, включая программу (скетч) для Arduino!

Устройство системы

Система для управления отоплением и вентиляцией на базе Arduino. Вид сбоку

Система для управления отоплением и вентиляцией на базе Arduino. Вид сбоку

На правой стороне устройства находится выключатель и система охлаждения, представляющая собой компьютерный вентилятор, работающий на вытяжку. Без него корпус системы нагревался (от встроенного блока питания и реле), что приводило к неверным показаниям датчика температуры, т.к. он расположен близко к корпусу.

Система для управления отоплением и вентиляцией на базе Arduino. Вид сбоку

Система для управления отоплением и вентиляцией на базе Arduino. Вид сбоку

Система контроля микроклимата работает от сети 220 вольт и подключена к ближайшей розетке.

Система для управления отоплением и вентиляцией на базе Arduino. Общий вид

Система для управления отоплением и вентиляцией на базе Arduino.

Заглянем внутрь корпуса. Сам корпус является обычной распределительной коробкой. На его передней панели имеются 4 болта, открутив которые можно легко и быстро получить доступ к мозгам системы, а также к коммутационным реле, которые управляют нагрузкой.

Система для управления отоплением и вентиляцией на базе Arduino со снятой лицевой панелью

Система для управления отоплением и вентиляцией на базе Arduino со снятой лицевой панелью

Внутри находится сборка из модуля ардуино нано 3.0, силовых реле с максимальным током до 10 ампер, и блоком питания на 9 вольт.

Система для управления отоплением и вентиляцией на базе Arduino. Вид изнутри

Система для управления отоплением и вентиляцией на базе Arduino. Вид изнутри

Панель управления подключена к основному модулю при помощи шлейфов.

Система для управления отоплением и вентиляцией на базе Arduino. Вид изнутри

Система для управления отоплением и вентиляцией на базе Arduino. Вид изнутри

Панель управления можно легко отсоединить от устройства для проведения профилактических работ или модернизации. Как уже упоминалось выше, в состав панели входит LCD модуль, 2 светодиода и 2 управляющие кнопки.

Управляющий модуль сконструирован на монтажной плате и имеет разъемы для подключения датчика влажности и температуры DHT22, панели управления, нагрузки (4 разъема), а также источника питания. Первый, второй и четвертый разъемы работают в режиме ключа (замыкают и размыкают цепь). Третий разъем обеспечивает выход с напряжением 5 вольт для управления дистанционной розеткой.

Главный модуль системы контроля микроклимата на базе Arduino

Главный модуль системы контроля микроклимата на базе Arduino

Силовые элементы надежно припаяны при помощи медных проводов на обратной стороне монтажной платы. Логические элементы аккуратно спаяны меду собой, все реле управляются через транзисторы. Ссылку на схему более совершенной модели этого прибора см. в конце статьи!

Главный модуль системы контроля микроклимата на базе Arduino. Монтажная плата

Главный модуль системы контроля микроклимата на базе Arduino. Монтажная плата

Корпус системы контроля микроклимата

Корпус системы контроля микроклимата

Настенный конвектор, отлично подсушивающий влажный воздух, находится на противоположной стене от модуля управления микроклиматом.

Настенный конвектор, управляемый системой на базе Arduino

Настенный конвектор, управляемый системой на базе Arduino

Розетка с дистанционным управлением системы контроля микроклимата на базе Arduino

Розетка с дистанционным управлением системы контроля микроклимата на базе Arduino

Управляющая программа (скетч для ардуино)

Теперь, пожалуй, самое интересное 🙂 Предлагаю вашему вниманию полный скетч для управления отоплением и вентиляцией на базе Arduino. Скажу сразу, что скетч модернизировался после первого запуска системы целых 3 раза. И на то были определенные причины.

Изначально температура измерялась каждые 2 секунды, и в зависимости от этого срабатывали правила включения и выключения электроприборов. Бывало так, что вытяжка включалась и выключалась каждые 2 секунды, в моменты колебания влажности или температуры на пограничных значениях.

Итак, скетч под этим спойлером:

Скетч для управления микроклиматом V 1.2

Скетч занимает около 50% памяти ардуино и требует дополнительных библиотек для работы с датчиком DHT22 и экраном LCD через интерфейс I2C, найти которые можно на просторах интернета.

Обновлено 05.11.2018

Зависание контроллера Arduino

Просадка напряжения

Пытаясь найти объективную причину зависания, я стал грешить на некачественный блок питания и просадку напряжения при включении реле, особенно когда несколько реле включаются одновременно, ведь зависания происходили не так часто, а всего лишь 1-2 раза в месяц.

После добавление конденсаторов зависания практически прекратились, но все же, 1 раз в месяц могло и зависнуть.

Доработка скетча Ардуино

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

Дело в том, что после обработки данных, полученных с датчиков, и включении/выключении какого-либо реле, происходил мгновенный переход к следующей обработке данных с датчиков, и включение/выключение следующего реле, и так далее. Фактически, все реле действительно могли включаться или отключаться одновременно, с задержкой менее 1 мсек, поскольку между обработкой данных для каждого реле отсутствовала пауза.

Исправив код этой процедуры, а именно, добавив искусственную задержку в 200 миллисекунд после включения/отключения какого-либо реле, я был крайне удивлен стабильной работой прибора. Зависания вовсе прекратились, и вот уже 2 месяца прибор работает стабильно. Теперь и WatchDog не нужен, хотя конечно он не помешает, на всякий случай.

В итоге можно сказать, что причиной зависания являлась несбалансированность нагрузки на источник питания при выполнении программного кода, а также низкое качество источника питания. Исправив программу, исчез и дисбаланс. Ниже представлен исправленный фрагмент кода процедуры DoAll(). Жирным текстом выделены те самые задержки по 200 мсек, которые были добавлены в программу и кардинально повысили стабильность работы микроконтроллера.

Обновлено 02.02.2019

Раздельное включение вентиляторов вытяжки

Зимой обнаружилось, что из одной из вытяжет стал капать конденсат, поэтому было решено отключать на зиму этот вентилятор. И чтобы не лазить каждый сезон с отверткой в развет коробку и уж тем более в само устройство, решил сделать все программно, поскольку каждый вентилятор управляется отдельным реле. Немного переработал скетч, добавив дополнительный экран настроек, на котором можно задействовать или отключить каждый вентилятор по отдельности Также уменьшил время одновременного нажатия кнопок для переключения между экранами настроек с 3 до 2 секунд. Свежий скетч можно скачать по ссылке ниже

Аппаратный бот для Android на базе Arduino Leonardo

Аппаратный бот для Android на базе Arduino Leonardo

И сразу к делу 🙂 После успешной разработки Dwar Rapid Bot решил написать еще одного бота для любимой игры на Android, в которую частенько играю по вечерам. И при этом столкнулся с некоторыми проблемами.

Во-вторых, если использовать эмулятор Android под Windows, например тот же BlueStacks, тогда можно обойтись без получения root-прав, но тогда игра будет работать на компьютере, и придется каждый раз переносить игровой прогресс между планшетом и эмулятором, что не очень-то удобно, к тому же не все игры поддерживают синхронизацию между разными устройствами.

Тем не менее, решение было найдено достаточно быстро 🙂 Узнав из сети, что Arduino Leonardo умеет эмулировать мышь и клавиатуру при подключении по USB, я решил попробовать использовать эту функцию на Android, для автоматизации игровых действий!

О воплощении этой идеи я рассказываю в следующем видео.

Ниже приведен пример скетча для реализации аппаратного кликер-бота на базе Arduino Leonardo.

Данный способ можно применять не только для планшета или телефона, но и для обычного ПК, а также любого другого устройства, которое поддерживает работу с клавиатурой и мышью по интерфейсу USB!

Спасибо за внимание! Жду ваших комментариев 🙂

Контроль отопления и вентиляции на базе ARDUINO своими руками (Часть 1. Подготовка материалов)

Система для управления отоплением и вентиляцией на базе Arduino. Вид изнутри

Система для управления отоплением и вентиляцией на базе Arduino. Вид изнутри

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

Контроль отопления и вентиляции на базе Arduino

Довольно долго я бился над решением задачи создания оптимального микроклимата в ванной комнате, и наконец-то, благодаря знаниям, полученным в процессе изучения Arduino и различных датчиков температуры и влажности, мне это удалось! 🙂 Читать далее Контроль отопления и вентиляции на базе Arduino →

Умная розетка для утюга на базе Arduino

Автоматическая заслонка для вентиляции на базе Arduino

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

Альтернативным способом терморегуляции в помещении является открытие и закрытие заслонки вентиляционной шахты при определенной температуре воздуха. Читать далее Автоматическая заслонка для вентиляции на базе Arduino →

Управление микроклиматом на Arduino

В последнее время на Хабре появилась масса постов про построение мониторов качества воздуха. При этом ни одной попытки управления качеством воздуха не нашел, а ведь как только мы переходим от пассивного наблюдения к активному управлению — возникает масса интересных проблем и решений. Своими скромными наработками в этой области и хочу поделиться.

Итак, дано: Гараж неотапливаемый, не утепленный, кирпичный двухэтажный с огромной влажностью внутри, от которой гниет деревянное межэтажное перекрытие, на стенах зимой снежная шуба и прочая неприятная ржавчина.

Задача: «Осушить» гараж.

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

Arduino, два датчика DHT22 изнутри и снаружи, релейный модуль на вентилятор и начинаются действительно интересные проблемы.

Как известно, DHT22 отдает температуру и относительную влажность. Как сравнивать показания датчиков? Действительно ли наружный воздух «суше», чем внутренний? Что будет с воздухом, если его всосать в гараж? Возможно, он настолько теплее, что даже при меньшей относительной влажности снаружи даст конденсат на стенах внутри. Внутренняя температура всегда отличается от наружной, но при этом постепенно стремится к наружной. Степень «постепенности» неизвестна. Будет температура расти или падать — так же неизвестно.

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

Но пришла следующая идея. Абсолютная влажность она на то и абсолютная, что от давления, температуры и прочего не зависит. И если абсолютная влажность наружного воздуха ниже абсолютной влажности внутреннего, то наружный воздух однозначно «суше» и независимо от того, как изменится его температура внутри — он «лучше» замещенного воздуха.

Идея — идеей, но и тут оказались мелкие проблемы. Оказывается абсолютная влажность вычисляется по температуре и относительной влажности по графикам типа такого:

image

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

Казалось бы, на этом и все. Сравниваем две абсолютные влажности и если снаружи «суше» — включаем вентилятор, но не тут то было. Первая проблема в том, что если представить, что наружный воздух имеет постоянную влажность, а внутри никакого источника влаги нет, но есть сырой воздух, то при прокачивании через гараж наружный воздух будет смешиваться с имеющимся там воздухом и внутренняя влажность будет бесконечно приближаться к наружной, но не достигнет ее или достигнет очень не скоро. А это крайне неэффективно по электричеству. Очевидное решение — ввести какую-то разность влажностей, при достижении которой вентилятор выключать и считать внутренний воздух сухим, но тут возникает вторая проблема. При перепаде температур от +30 до -30 значение абсолютной влажности изменяется в тысячу раз. То есть при -30 градусах разница в 0.001 грамма на кубометр воздуха может означать, что вы пройдете точку росы и на стенах выпадет шуба. А при +30 эта тысячная ничего не значит, потому что в кубометре может висеть 20 грамм воды.

Никакого четкого, обоснованного решения придумано не было. Волевым научным тыком разность была принята в 0.01 грамма на кубометр из того соображения, что от инея на стенах вреда не много, поскольку при повышении температуры, при работе робота — лед просто сублимирует и будет удален с остальным воздухом. И из эмпирических соображений было введено еще одно энергосберегающее ограничение. При относительной наружной влажности выше 90% наружный воздух не прокачивается. Просто потому, что это ненормально высокая для нашего региона влажность и даже если этот воздух суше внутреннего — очень скоро и его тоже придется выкачивать. Цифра 90% так же с потолка.

Полтора года робот пашет безостановочно.

image

Ардуино в коробке с автоматом, там же блок питания. На ней же справа внутренний датчик. Релейный блок в самой розетке. Выключатель принудительно включает вентилятор в обход реле. Шуба из инея зимой пропала. Дерево все рассохлось. Ничего не гниет. Потребляет порядка двух киловатт-часов в месяц. Если в «сухом» гараже подышать минут 15 — робот включает вентилятор. В общем, все работает.

Побочный эффект — вымораживает. Причем вымораживает так, что шуба из инея теперь периодически появляется снаружи, а в мае, когда светит солнышко и зеленеет травка — внутри без ватника трясет от холода.

Поле для оптимизации. Если прикрутить SD-карточку и пособирать статистику — можно выбрать более обоснованную отсечку, чем 90%. Можно подумать и поставить разность абсолютных влажностей на отсечку в зависимость от температуры.

А вот теперь самое интересное — развитие.

1. Как контролировать отток через печку? Вот есть частотник на приточном вентиляторе, есть на вытяжном. Если бы не печка, можно было бы обойтись одним и крутить вентиляторы синхронно. А как быть с оттоком через печь? (Отдельный воздуховод на приток печи — не предлагать);
2. (без учета печки) Алгоритм управления оборотами вентиляторов? Текущая идея в том, что скорость вращения должна зависеть не от концентрации СО2 а от скорости роста концентрации. То есть если концентрация растет — обороты растут, падает — падают и какая-то отсечка, скажем, 500-600ppm. Повышением отсечки можно ввести зимний экономный режим с повышенной концентрацией СО2;
3. Есть желание заслонку печки привязать к датчику СО, в том плане, чтобы он держал заслонку максимально закрытой максимальное количество времени, но страшно;
4. Чисто технический вопрос: как все это датчиковое великолепие максимально дешево развесить по дому, поскольку для целей управления отоплением еще и DHT22 в каждой комнате будут?

Спасибо за внимание. Схему робота я не рисовал, скетч вышлю всем желающим, с радостью приму конструктивные предложения.

Автономная охранная система на Arduino + GSM

Друзья, разрешите представить проектик GSM сигнализации на Arduino. В сети довольно много проектов по типу «Arduino + модем + датчики», однако я часто вижу в них некоторую незаконченность (в особенности, с программной точки зрения): отсутствие гибкости в настройках и конфигурировании. В представленном решении я попытался сделать устройство максимально готовое к «боевым» условиям, предусмотрев все, что может понадобится среднестатистическому пользователю (на мой взгляд).


TL; DR программно и аппаратно задуманное реализовано, тест в реальных условиях запущен, исходники и бинарники опубликованы, корпус не осилил.

Устройство и характеристики

Устройство отправляет SMS при возникновении следующих событий:

  • открытие двери (герконовый датчик);
  • резкое изменение освещения (фоторезистор);
  • движение (PIR датчик);
  • выход температуры из заданного диапазона;
  • низкое напряжение батареи.

Пример SMS с событием




Также, раз в сутки можно настроить время ежедневного отчета

Питается устройство от 3-х батареек AA. Расчетное время работы ≥6мес.

Настройка устройства, считывание логов событий и построение месячного графика температуры происходит с помощью утилиты (Python 2.7 + Tk + pyserial + matplotli).




Основное окно утилиты настройки




Окно лога событий




Окно лога температуры

Сборка устройства

Себестоимость деталей устройства на момент публикации этой статьи составляет примерно 1000-1200 рублей (без учета заказа платы).

Для удобства сборки и надежности в эксплуатации лучше заказать плату. Китайские друзья с известного сайта предлагают сделать 10 штук с доставкой за

$7, а иногда и меньше. Но всегда можно собрать и на макетке, как я и поступил с первым прототипом:




Arduino и совместимые модули были заказаны с aliexpress. Понадобятся:

  • Arduino Pro Mini 3.3v 8MHz (5v 16MHz is also acceptable, but requires different firmware);
  • MH-SR602 MINI Motion Sensor;
  • SIM800C(L) GSM Module;
  • CP2102 MICRO USB to UART TTL Module;
  • DS3231 RTC Module For Raspberry Pi;
  • 3 AA battery holder With ON OFF Switch;
  • различная рассыпуха (резисторы, конденсаторы, зуммер и поч.).

В списке специально указаны названия, дающие нужный результат при вводе в поиск.




Схема устройства

Для снижения энергопотребления с платы Arduino нужно обязательно удалить резистор светодиода питания и регулятор напряжения. Проект платы сделан в Ki-CAD.

Использование

Локализация

Поддержаны два языка для программы конфигурирования и текста SMS: английский, русский. При желании не сложно добавить поддержку других языков: все локализуемые строки вынесены в отдельный файл (принимаю issue с реквестом, если приложите переводы всех строк).

Полевые испытания

Прошу прощения за эстетику монтажа.




Установка на входную дверь. Часть конструкции справа (непосредственно на самой двери) — магнит для срабатывания геркона

На место постоянного использования (гараж) устройство было установлено 4 месяца назад. Для целей усиленного тестирования, функция расписания не используется (по каждому событию отправляется SMS). В среднем получается 5 SMS в день: два при входе в гараж (срабатывает датчик открытия двери и датчик освещения), два при выходе и один «ежедневный отчет». На текущий момент батареи (3x AA) держат напряжение 4.1в при включенном модеме.

Проблемы

За время эксплуатации температура в помещении понизилась с +10°С до -15°С и обнаружилась две проблемы.

  1. Используемый PIR датчик начинает давать ложные срабатывания при низких температурах. При +5°С использование стало совсем невозможным: число ложных срабатываний превысило одно в день. Попытка замены датчика на другой проблему не решило, поэтому сейчас этот датчик временно отключен. Что с этим делать пока не понятно.
  2. Датчик температуры, встроенный в DS3231 при -10°С и ниже начал сходить с ума: периодически выдает случайные значения, например, «-84°С» или «+115°С». Интересно, что RTC работает нормально. На текущий момент не понятно, проблема ли это конкретно моего экземпляра или нет. Жду для проверки второй идентичный модуль, при повторении с ним проблемы в устройство будет добавлен DS18B20.

В остальном полет нормальный.

Что дальше

В планах (когда-нибудь):

  • спроектировать и напечатать корпус;
  • подключить ESP-01 для конфигурации и просмотра логов через браузер с телефона.

Отладка

Ссылки

Репозиторий проекта: github
Доступны схема и плата в Ki-CAD, прошивка и исходники для Arduino, exe и исходники утилиты конфигурации.

Управление вытяжкой в погребе или подвале

Подробно о проекте рассказано в видео, ниже схемы подключения и исходный код для ардуино.

то как оно работает у меня:


Структурная схема или как все подключено, если собирать на модулях.

Уличный датчик, собран на плате с микроконтроллером, микросхемой MAX485 и стабилизатором питания AMS1117-05. имеет разъем с питанием и I2C шиной для подключения датчика температуры и влажности серии SHT, HDC или подобных, которые могут быть установлены на плате китайского модуля и две колодки, одну для подключения шины RS485 и питания, вторую, для подключения датчиков с однопроводной шиной. Изначально планировалось использовать датчик AM2301 или ему подобный и подключать его к той колодке, в итоге используется HDC1080 в I2C.

Датчик в подвале, имеет аналогичную разводку платы, только за место колодки для датчика AM2301, установлен мосфет и колодка для подключения 12 вольтового вентилятора.



Платы в формате .lay

на ардуино леонардо, установлен протошилд, на котором распаяны колодки для подключения RS485 и питания, китайский модуль на МАХ485, колодка для LCD1602 с I2C и радиомодуль HC12. для сети RS485 используется экранированная витая пара для локальной сети.

Для вычисления абсолютной влажности используется формула, истоки которой тут

Вентиляция в подвале на Ардуино

Вентиляция в подвале на Ардуино Attachment

Вложенные файлы вентиляция.zip У вас нет прав скачивать вложенные файлы. (25 Кб) Скачиваний: 37 Спасибо, как сделаю сразу будет отчёт Ошибку заметил.
Во втором блоке DISP нужно поставить вместо строка 1 , строка 2.

sergmetrolog поставил(а) лайк

Готово В коробку упакую и потом установлю на место. Спасибо ещё раз

Андрей, как обстоят дела с вентиляцией?
У меня в сарае есть погреб , вот на зиму решил его отремонтировать и поставить вентиляцию по Вашему принципу.
В итоге переделал всё на Wi-Fi (RemoteXY) как точка доступа (сарай во дворе дома).

Сегодня прошил Wemos D1 , все вижу на телефоне (андроид).

Могу задать температуру, включать выключать обогрев и вентилятор.
Индицируется темп, влаж, абс влаж, вкл вент, вкл. обогр.
График влажности за сутки.(график попробовал сделать из "уровней")

Вентиляция в подвале на Ардуино Attachment

Вложенные файлы погреб_sser.zip проект в FLprog У вас нет прав скачивать вложенные файлы. (61 Кб) Скачиваний: 22

Вентиляция в подвале на Ардуино Img_2010


Спасибо большое. Все шикарно работает . Вот только диапазон 0.5 г/м3 не слишком маленький ? не хочется в холостую гонять вентилятор.

Читайте также: