Дней 10 назад «свезло» приболеть ковидом и изолировали меня дома. Вирус не сильно меня долбил, поэтому я смог заняться своим проектом вплотную. Первые дней 5 состояние не позволяло думать, зато позволяло держать в руке паяльник и я смог доделать все модули. Самый кайф от болезни, это отсутствие запахов. Я смог спокойно дремелем сделать все отверстия в заказанных корпусах при этом меня не останавливал запах «палёного» пластика. Так же я нашёл более менее подходящий корпус для своего контролера и подсобрал всё в кучу. Старался побольше соединений посадить на пайку и сделать всё таким образом, чтобы периферия подключалась к контроллеру по человечески, а не так, как это у меня было раньше. Сильно задумался на тему, почему я не столкнулся с помехами, в голову лезет только одна мысль – на данном этапе питание контролера и всей периферии осуществлено с качественного блока питания компьютера, поэтому помехи из сети никак не прорываются к компу. В новом контроллере использовал 12ти вольтовый блок питания от какой-то компьютерной утвари (завалялся). Сделал небольшую схему питания, отдельно настроил 7 Вольт для питания ардуины, отдельно через пару 7805 выделил 2 канала питания для запитывания i2c SSR модулей. До этого я собрал Франкенштейна из LCD1602, модуля реального времени и PCF8574. Так же вкорячил энкодер.
После того, как собрал всё в кучу, соединил всё проводами, засел за прошивкой. Так как система уже более года работает, у меня появилось пару требований к новому контролеру.
- Более гибкий алгоритм работы «таймеров с условием». Что я под этим подразумеваю, и что я в итоге смог придумать. Есть некоторое реле, которое должно изменять своё состояние в зависимости от состояния других реле, при этом не мгновенно его менять, а через некоторую задержку. Почему я решил так сделать: а) у меня 1 блок питания в щитовой, при этом мне надо было с него управлять 3-мя светодиодными лентами. Надо было сделать так, чтобы при включении любой из лент происходило включение блока питания, а при выключении всех лент, блок питания должен был отключится; б) вентиляция в ванных. Хотелось сделать так, чтобы при выходе из ванны и выключения света срабатывало условие и через 15 минут выключалась вентиляция (при этом включение и выключение вентиляции можно было делать и с выключателя)
- Необходимо было создать некое меню на контроллере, с которого можно было изменять действия тех или иных выключателей. То есть допустим через пару месяцев мне захотелось сидя на диване отключить свет в коридоре, так как он засвечивает экран телевизора. Для этого раньше надо было тащить ноут к контроллеру и перепрошивать ардуину. Ну соответственно я просто вставал, шёл до выключателя, вырубал свет в коридоре и мечтал о новой прошивке.
Засел за прошивку, скажу честно, для меня это АД, спасибо урокам Алекса, многое смог там подцепить. Сперва я переделал своё прежнее ядро для работы с реле через i2c интерфейс, потом допилил таймеры и занялся меню, долго разбираясь с PROGMEM для экономии оперативки. Потыкав меню, я смог менять настройки, дико обрадовался, засел изучать eeprom для сохранения всего этого чуда. Идеала не достиг, но меня меню устроило. Настройки сохраняются, сбрасываются, загружаются, всё как я хотел. Немного тестирования, утюжка найденных косяков и вроде всё. Хочется правда код распихать по нескольким файлам, но кажется этого ближайшее время я делать не буду.
На что способно меню:
- Настройка мониторинга событий. То есть можно выставить флаг, чтобы на экране в процессе нажатия выключателей отображались не все события, а только те, которые заданы в меню (либо нажатия, либо отжатия, либо клик, либо долгий клик, а можно и комбинировать те или иные), полезно при наладке перед запуском в эксплуатацию.
- Включение отображение на экране часов (пока просто в тестовом режиме), в дальнейшем подумываю сделать работы модулей по расписанию (типа как по cron UNIX), будильник сделать. Настрою, чтобы в 7 утра с понедельника по пятницу в детской ночник включался, но это всё потом.
- Из меню можно управлять как отдельными реле, так и группами реле, то есть с помощью енкодера можно включить/выключить либо реле, либо группу реле. Сделал для того, чтобы в процессе внедрения не остаться без света. Думаю что за один день не смогу и новые модули реле поставить, и кнопки расшить по коннекторам, и плюс ко всему надо будет их считать и сделать первоначальную настройку.
- Непосредственно делать настройку режима работы кнопок на группы, сохранять их, а так же сбрасывать на заводские.
- Вообще для меня создание меню показалось каторгой, оно далеко от идеала, но на большее пока не способен.
Отдельно выкладываю схемы. Скажу лишь то, что в промежуточном распределители питания поставил ключ, управление которым вывел «наружу» для подключения общего выключателя. Скажем так, есть на выходе мастер выключатель, при отключении которого вырубается подача питания на ардуину и релейные модули.
Промежуточная схема питания
Схема подключения матрицы кнопок (реализована на патч-панели)
Отдельная благодарность всем критикующим. Благодаря Вам я многое узнал, многое смог сделать и кажется это мне позволило сэкономить кучу памяти ардуине, что даёт мне возможность в дальнейшем добавлять функционал в прошивку.
ПС:
Для меня это наверное самый безумный проект, и наверное самый дорогой, хотя он мне принёс много различных навыков, от разработки и заказа плат, пайки smd компонентов, до изучения неких приёмов в программировании всех этих плюшек. Я бы уже 1000 раз бросил и плюнул на всё, если бы не одно НО - не могу найти аналоги в продаже. Теперь эту ветку можно похоронить в глубине этого форума, может кому то она и пригодится.
PS:
Установил систему и сгрёб кучу всякого дерьма. Делюсь.
- Симисторы bt139-600 китайские как лотерея, половина сдохло (и продавца выбирал и отзывы читал и не самые дешёвые брал), умирали сразу при подаче питания от токов, которые заряжали импульсные блоки питания (драйвера) в люстрах.
- Если подключать светодиодные потребители малой мощности, то возможны "моргания" в отключенном состоянии, причина тому, снаберы (rc цепь параллельно симистору), в общем эту цепь лучше не делать от слова совсем.
- Была проблема на 3х люстрах, 80 ВТ, 100 ВТ, 150 ВТ, дохли даже хорошие симисторы, выход был найден, были установлены BTA24-600B, эти мамонты всё выдержали, так что думаю модули надо собирать на этих симисторах.
- Что касается модуля на 12-24 Вольт для включения лент, Использую его для включения 3-х светодиодных 24-Вольтовых лент разной длинны (2 куска по 5 метров, 1 кусок на 1,5 метра), работает на отлично, транзисторы ставил даже без малейших радиаторов, на управляющий контакт подавал +24 через сопротивление 330 кОм.
В остальном всё пашет, пока поглядываю, хожу корпуса щупаю, нагрева не ощущаю, посмотрю, что будет дальше. Вообще идея имеет право на жизнь, вот только симисторы мощнее ставить, и незачем эти rc цепи. Контроллер пашет идеально, помех нет, никаких лишних наводок не прилетает, у меня проводов до выключателей тьма, идут как попало, зачастую рядом с силовыми. в квартире 5 сотовых, вафля на 2 диапазона, плюс полный дом разной бытовой техники, ко всему ещё и пару пылесосов, которые активно использовались на протяжении 1 года, ничего не вызывало помех на сигналы от матрице кнопок. Теперь про эти кнопки... От кнопок до патч панели идёт витая пара 4 жилы, там через коннектор в патч панель входит, потом сама патч панель подключается к контроллеру через патч-корды на 8 жил, а а к контроллеру разъёмы подпаяны шлейфом от IDE. Я реально думал будут проблемы, ведь таким образом между кнопок и контроллером 3 контакта, да ещё и диаметры проводков от шлейфа меня напрягало, однако ничего не произошло, всё работает как часы.