Добрый день, уважаемый читатель! В данной статье я хочу познакомить вас с вами одним из своих последних проектов, собранных на ESP32 и прошитых с помощью ESP-IDF.
Эту статью можно считать логическим продолжением обзора модуля ESP32R4 v3, который был опубликован на этом канале еще в прошлом году. То есть обзор того, что у меня из него получилось.
Своего рода это "отчет о проделанной работе". Статья получилась довольно длинная, ну люблю я расписывать все подробно (хотя это многих напрягает).
Здесь не будет "прямых" обучающих материалов, вместо этого я поделюсь своими алгоритмами и приведу некоторые примеры кода - вдруг кому-то из вас это пригодится в ваших проектах. Возможно, вы предложите мне лучший вариант решения поставленных задач исходя из вашего опыта - добро пожаловать к комментарии (только не надо предлагать мне переделать все на ардуино и с web-интерфейсом ;).
Обзор этот не окончательный, так как фактической установки на место постоянной дислокации пока не было и в ближайшее время не предвидится из-за весенних садово-огородных работ.
Если вам будет интересно - после установки могу написать отдельную статью или снять видео. Но это если только будет интересно, поэтому отпишитесь в комментариях, пожалуйста.
Решаемые задачи
Данный прибор на данный момент решает три основные задачи:
- контроль состояния подъемных ворот и отправка уведомлений в telegram об их открытии и закрытии (был случай, когда ворота поехали вниз, но наткнулись на упавшую доску и не закрылись, а я уже уехал на работу, не глядя)
- управление микроклиматом в гараже и в погребе (принудительная вентиляция и подогрев)
- управление освещением в гараже, во дворе и перед гаражом по датчикам движения и датчикам открытия дверей и ворот.
Для реализации поставленных задач к микроконтроллеру будут подключены:
- Концевики для контроля состояния ворот и дверей (как вариант можно использовать стандартные герконовые датчики)
- Датчик температуры и влажности HTU21D (на шине I2C) для измерения температуры и влажности воздуха на улице в резервном режиме. В основном режиме данные о текущей погоде на улице получаются с метеостанции через локальный брокер, так как там применен лучший датчик и стоит он в "правильном" месте.
- Датчик температуры и влажности XY-MD02 (через шину RS485), который будет использоваться для замеров микроклимата в погребе. На основании его данных алгоритм будет управлять вентиляцией и тепловентилятором в погребе, сравнивая их с данным на улице.
- Датчик температуры и влажности AHT20 (на шине I2C) для замеров внутри гаража. То же самое, но для управления вентиляцией в гараже.
- Два датчика BH1750 (на шине I2C) для измерения уровней освещенности во дворе и в гараже. Эти датчики используются для управления освещением.
- Проводные датчики движения 12В (например такие) для управления освещением и передачи данных на центральный блок сигнализации.
- Датчик движения SR602, встроенный в корпус блока управления, для управления освещением в гараже. Его данные также будут передаваться на центральный блок сигнализации.
- Кнопка с подсветкой - для установки на входной двери (калитке), будет использована как звонок с удаленным оповещением. Просто мне удобнее и проще завести провода в гараж, а уже потом через локальный брокер подать сигнал на центральный блок, на котором и реализована функция звонка.
- Датчики дыма "на всякий пожарный случай".
Кроме того, зарезервировано еще несколько входов и выходов, которые можно использовать для реализации каких-либо других задумок в будущем.
Есть возможность задействовать беспроводные PIR-сенсоры, работающие на частоте 433 MHz, так как в составе устройства есть соответствующий приемник.
Сигналы с датчиков движения используются не только для управления автоматикой освещения, но и передаются через локальный брокер на центральный контроллер дома, в котором присутствует функция охранно-пожарной сигнализации. Но в случае необходимости можно добавить такую функцию и в данное устройство, сделав из него автономную ОПС. Чисто программными средствами, без необходимости доработки электронной части устройства.
Компоновка
Немного расскажу про компоненты в боксе, и какие косяки исходного набора "всплыли" в процессе сборки и настройки.
Сердцем контроллера стала плата ESP32R4 v3 и расширитель на 8 реле в ней, про них я писал ранее:
Единственное, о чем пожалел - что купил данный набор в корпусах, от которых потом пришлось избавится, так как устройство все равно было собрано в монтажном боксе TDM. Но корпуса универсальные, не пропадут - соберу в них при случае что-нибудь другое.
Встроенные реле использованы для управления вентиляторами, осушителем и тепловентилятором. Как раз 4 штуки.
Дополнительно на "материнскую" плату были установлены:
- В предусмотренный на плате разъем воткнул приемник RX433 MHz. Сейчас в прошивке он никак не используется, но пусть строит. Если понадобится - добавляю в прошивку удаленно, через ОТА, и корпус вскрывать не придется.
- В разъем RJ9 I2C подключил платы расширения, туда же выведен вывод прерывания для отлова изменений состояний входов. Я уже писал в обзоре этих плат, что для отлова прерываний по умолчанию китайцами используется вывод GPIO12, что недопустимо, так как он является одним из Strapping Pins. После подключения MCP23017 микроконтроллер вполне ожидаемо отказался запускаться после сброса. Пришлось перерезать проводник к выводу прерываний и с помощью МГТФ колхозить на другой вывод. Колхоз № 1.
- Преобразователь интерфейса RS485 - просто приклеен на двусторонний скотч и подключен к соответствующему разъему на плате самодельным псевдо-разъемом. Место на плате позволяет. Самый обычный преобразователь. Колхоз № 2.
Сейчас продавец предлагает готовые и адаптированные для данной платы модули RS485, но цена на них просто не гуманная - сравнима со стоимостью самого контроллера.
К этой шине можно подключить один или несколько сенсоров различного типа, пока используется только один. - Часы DS3231 с ионистором. Довольно удачно вписались в "штатный" разъем I2C сбоку платы. Но с 5В на шине работать категорически отказались - 🤷♂️. А я уже говорил, что выводить 5В на шину I2C нельзя. Но это не страшно - перерезал проводник на плате и проводом МГТФ подпаялся к 3.3В. Кроме того, пришлось "перенести" с помощью провода контакт GND. Колхоз № 3.
- GPIO микроконтроллера напрямую используется только два - светодиод индикации и датчик движения SR602, который будет использован для обнаружения присутствия в гараже. Они подключены через "стандартную" колодку GPIO.
Теперь немного расскажу про "периферию". Вся нижняя плата будет отдана под освещение. Там 8 реле - хватит на все хотелки. С запасом.
Верхняя плата гораздо хитрее. Немного расскажу про нее. Собрана она на микрухе MCP23017, про которую я уже писал на канале.
Здесь находятся:
- Винтовой терминал для подключения внешних сенсоров на шине I2C.
- Два выхода с открытым коллектором. К ним можно подключить 12-вольтовые реле или светозвуковой извещатель.
- Терминал для подключения кнопки, которая будет расположена на заборе у входа. Кнопка 25 мм с подсветкой, которая будет вспыхивать 1 раз в 5 секунд неярким красным светом. Вот такая прикольная кнопочка:
- 4 гальванически развязанных входа с токовой петлей для подключения концевиков или кнопок.
- 6 каналов для noname PIR датчиков движения от дядюшки Ляо. Они очень (внешне) похожи на популярные сенсоры PARADOX. Входы собраны по моей проверенной уже схеме.
- 1 канал для двухпроводного детектора дыма с реле сброса после срабатывания. Схема тут.
С этой же платы подключена к шине I2C "нижняя" плата с расширителем на 8 реле, просто мне так показалось удобнее.
Управление микроклиматом в погребе
Увы и ах, но погреб у меня построен неправильно. Точнее неправильно сделана система вентиляции в нем - труба только одна и в верхней части погреба. Кроме того, погреб слишком мелкозаглубленный, и из-за этого зимой он часто промерзает. Конечно, правильнее было бы исправить эти косяки, но не всегда это возможно и целесообразно. Строил не я, стоил мой папа лет около 40 лет назад или даже более. Переделывать сейчас, ломать часть гаража, бетонный пол в гараже и копать / заливать всё заново - слишком дорогое и неблагодарное занятие. В данном случае гораздо проще и намного дешевле решить вопрос с помощью вентиляторов и электроники (и тепловентилятора для обогрева в мороз).
Режим защиты от промерзания. Если температура в погребе опускается ниже настроенного порогового значения 3°С, то включается небольшой тепловентилятор ( 400 ВА ) и прогревает помещение до 5°С. Но электроэнергия - штука довольно дорогая, поэтому стараемся делать это только по ночному тарифу - с 23:00 до 07:00. А что если мороз днем? Тепловентилятор тоже включится, но при других пороговых значениях - при 1°С и ниже.
Влажность при подогреве никак не учитывается. Но есть возможность вместо обогревателя поставить осушитель воздуха на элементах Пельте, который также выделяет достаточно тепла, чтобы не дать промерзнуть довольно небольшому помещению.
Режим вентиляции. Если температура в погребе поднимается до, скажем, 7°С (все пороговые значения, как и везде, настраиваются через MQTT), то включается приточная вентиляция. Но не всегда, а только когда температура на улице ниже чем в погребе и влажность на улице ниже чем в погребе. Ибо смысл гнать в погреб теплый и сырой воздух. Воздух из погреба выходит в гараж естественным путем через крышку.
Сравнение влажности при этом может быть в абсолютных значениях - относительная влажность пересчитывается в количество водяного пара в 1 куб. метре воздуха.
Так как ситуация, когда температура и влажность воздуха на улице ниже, чем в погребе, достаточно редкая - я решил собрать маломощный самодельный осушитель и охладитель воздуха на элементах Пельтье. Для учета вносимых им искажений в данные измерений предусмотрел параметры offset, которые позволяют задать, насколько будет меньше фактические данные на выходе осушителя (на входе в погреб). Пока всё это в планах, но все необходимые компоненты уже закуплены и проверены, дело только за свободным временем.
Применяемые датчики
Много лет я использовал в погребе самый обычный DHT22, он же AM2302, так как это единственный датчик, способный работать на кабеле длиной до 10 метров и при этом измерять температуру и влажность. Но эти датчики не очень надежны, поэтому приходилось менять их как минимум раз в год, а то и чаще.
В данном устройстве я применил SHT20, но работающий через промышленную шину RS485, которая дает еще лучшие возможности. Про него я уже писал на данном канале.
Для замера параметров в гараже и на улице применил самые обычные TH-сенсоры на шине I2C, какие попались под руку, это в данный момент AHT20 и HTU21.
Управление освещением
Казалось бы - зачем городить огород с управлением освещением? Ведь есть же прекрасные бытовые PIR-датчики, совмещенные с фотосенсорами. Так то оно так, и их у меня стояло 5 штук на территории. Но спустя несколько лет понимаешь, что хочется большего удобства. И этих хотелки невозможно решить простыми методами.
Во-первых, используются 2 цифровых сенсора освещенности (во дворе и на улице) - тут без сюрпризов, все как обычно. Задаем два пороговых уровня освещенности, ниже которых включаем лампы.
Во вторых - каждая лампа имеют два отдельных настраиваемых таймера включения (вместо одного для бытовых PIR-сенсоров): для первого включения (например 30 секунд) и для повторных срабатываний (например 5 минут). Это позволяет более комфортно находится в гараже и во дворе и не тратить лишюю энергию на освещение пути пробегающим кошакам, коих много.
В третьих - можно включать освещение по расписанию. То есть не по датчикам движения, а принудительно. Например с 18:00 до 21:00 по будням.
Ну а дальше несколько отдельных сценариев работы:
- При открытии подъемных ворот гаража включаем прожектор перед входом и освещение в гараже для комфортного возвращения домой в темное время суток. Кроме этого - отправляются уведомления в телеграм.
- Если во дворе зафиксировано движение, а перед этим фиксировалось движение в гараже, это означает что я постоянно перемещаюсь туда и обратно, и продляем таймеры и внутри и снаружи одновременно.
- При регистрации движения в гараже всегда поддерживаем освещение и во дворе, потому что безвылазно часами в гараже обычно никто не находится. Ну кроме кошаков.
- При нажатии на кнопку звонка включить свет во дворе, дабы посетитель мог видеть, что его сигнал принят.
- При срабатывании дымовых датчиков включаем свет во двое и в гараже. Ну так, на всякий случай.
- При срабатывании датчика над верстаком (там будет лидар) включить свет над верстаком.
Возможно, после установки сценарии будут изменены, но пока планируется именно так.
Кроме того, сигналы с сенсоров "уйдут" на центральный блок дома через локальный брокер и WiFi. Конечно, по проводу было бы надежнее, поэтому я рассматриваю вариант другого канала передачи, но это в будущем.
Ну вот пока получается так... Если вам интересно, как это будет работать на месте - пишите в комментариях. Если обратной связи от читателей не будет, то и продолжать эту тему я более не буду.
_______________
На этом пока всё, до встречи на сайте и на dzen-канале!
👍 Понравилась статья? Поддержите канал лайком или комментарием! Каналы на Дзене "живут" только за счет ваших лайков.
📌Подпишитесь на канал и вы всегда будете в курсе новых статей.