Подсветка дверной ниши
Весьма любопытная ситуация получается… Это уже не первая статья на блоге, посвященная системе контроллеров “умного дома”, которая медленно но верно внедряется на доступной жилплощади моего дома. Рассказал уже и про сам контроллер, и про развитие платы-конструктора от версии к версии, и даже показал вариант его конкретного применения. Но, вот, только сейчас собираюсь рассказать о самом-самом первом контроллере с которого все и началось.
Быть первым – не всегда полезно и приятно. Самый первый контроллер, о котором пойдет речь, исправно работает с сентября прошлого года. Но и, как следствие, несет на себе отпечаток всех граблей по которым я прошелся в этой связи за прошедшие пол года.
Он, в своем составе, не только сменил сенсорную панель на кнопку, но и примерил в себя почти все версии платы-конструктора, которые были в течение этого времени разработаны… Более-менее уверенно могу сказать только, что сама управляющая ардуина всегда была одной и той же. Хотя количество версий прошивок, которые в нее заливались, исчисляется десятками.
Соответственно, ситуация приходит к неизбежному, в данном случае, “парадоксу корабля Тесея“. Т.е. после всех этих многочисленных изменений и переделок, можно ли продолжать считать этот контроллер тем же самым первым, самым старым контроллером в доме или, наоборот, он-то как раз и является на сегодняшний день самым новым и последним из них.
Исходная цель для этого контроллера состояла в управлении подсветкой в новорожденном шкафу свежепостроенной дверной ниши между гостиной и спальней:
Все, что ему нужно было делать на заре своего существования – быть кнопкой включения для светодиодных лент в полках. И от обычного тумблера он тогда отличался только тем, что мог делать это еще и удаленно, через интернет.
Однако, довольно быстро выяснилось, что сколь бы яркий день не фигарил за окном на улице, конкретно эта ниша, неизменно остается в полумраке себя самой же.
Наверное, не будь в ней подсветки, никто бы на это внимания и не обратил. Все же, это очень крошечный участок дома, преодолеть который возможно без последствий не только в полумраке, но и в полной кромешной тьме.
Но, уж, покуда подсветка в нише была сделана, то ни у одной проходящей мимо обезьяны не было ни единого шанса просто пройти мимо и не нажать кнопку… А, вот, выключать за собой свет, обезьянам оказалось западло…
Соответственно, задача для контроллера была усложнена. Теперь он сам должен научиться включать и выключать свет когда надо и т.о. компенсировать приступы склероза у обезьян.
Однако, довольно быстро выяснилось, что сколь бы четко контроллер не выполнял свою функцию, его рвение чаще всего оказывается избыточным и мешающим повседневной жизни.
Потому, что траффик в этой части дома весьма интенсивен. Напомню, это проход между гостиной и спальней (за которой и ванна с туалетом, что для обезьян посреди дня важнее, чем кровать). А в доме, помимо обезьян живет еще много удивительных тварей. То Псу надо срочно косточку перепрятать из дивана в гостиной под подушку в спальне, то Кот вспоминает, что уже пятнадцать минут он не скидывал стакан с прикроватной тумбочки. То, не поверите, белка за окном произведет достаточно тепла, которое в виде ИК-излучения, отразившись пару раз от предметов мебели в доме, попадет на сенсор и заставит его сработать.
Чтобы данный участок дома не являл собой круглосуточную дискотеку со стробоскопами, мешающую обезьянам смотреть вечером кино, привилегию пользования благами автоматизации необходимо было предоставить только обезьянам исключительно. А все, что, там, ниже по пищевой цепи, пускай обходится своими собственными способностями из области “ночного видения”.
И это вновь изменило изначальную задачу для контроллера…
После всех эволюций, первоначальная простая задача “быть кнопкой” приобрела следующий вид:
- Включать и выключать свет в нише по нажатию на кнопку.
- Иметь связь с центральным сервером для удаленного управления.
- Иметь внутренний автоматический режим управления подсветкой через датчик движения (PIR-сенсор).
- В процессе автоматической работы уметь отличать царей природы от прочих.
На самом деле, не смотря, даже, на последнее условие – это самый простой из созданных на сегодняшний день моих контроллеров.
Условно, на уровне макета, все можно представить как-нибудь так:
Всех компонентов тут выходит: преобразователь питания, сенсор движения, сама управляющая плата с кнопками и контрольными лампочками, ну и, собственно, ленты подсветки по полкам.
Относительно преобразователя питания я уже где-то писал, вроде бы… Но это важный момент, поэтому еще раз расскажу подробнее.
Ардуина кормится с того же блока питания, что и светодиодные ленты подсветки. Хороший надежный блок питания, установленный в недрах шкафа, к которому я еще много чего смогу подключить в этой части комнаты:
Он травит из себя 12 вольт. Да, я знаю, что ардуина напрямую может питаться от 12 вольт, если подавать их на вход VIN. Но это – предельно допустимое напряжение для встроенного в ардуину крошечного преобразователя. Малейший скачок напряжения и он сгорает к хренам. Одна такая тушка у меня уже есть. Использую ее для экспериментов “на столе”, чтобы код проверить или еще чего. Питаться она теперь может только от USB или от поданных на нее чистых 5 вольтах на соответствующий вход.
Во избежание умножения числа таких тушек в хозяйстве, используется преобразователь между основным блоком питания и ардуиной. На макете выше, он представлен в виде традиционной платки на базе LM2596:
Их таких есть у меня, и именно такие и были использованы в первых версиях контроллера про который идет речь. Однако, со временем, я понял, что такой преобразователь слишком избыточен для области в которой применяется. И был найден другой, значительно компактнее, на базе MP1584EN:
Соответственно, контроллер был переведен на него.
Для таких преобразователей, значение 12 вольт ни разу не предельные и, с их помощью, для ардуины можно предоставить надежные 7.4 вольта, при которых плата чувствует себя хорошо и комфортно.
Преобразователь не требует себе какого-то специально места для размещения. Я его вешаю прямо на провода, идущие к контроллеру и укатываю в термоусадку. На него обычно никто и внимания не обращает, пока пальцем не ткнешь:
Мнэ… Да, как я уже сказал в начале, данный контроллер претерпел множество изменений. И не только в части преобразователя питания. Поэтому на фотографиях он будет попадаться, то на базе одной версии платы-конструктора, то на другой. То с сенсорной кнопкой, как на фото выше, то с обычной.
На самом деле, на всех фотографиях, один и тот же контроллер, просто сфотографированный на разных этапах своего существования. И для меня он все равно “первый”. Но, если хотите, можем вернуться к обсуждению “парадокса корабля Тесея” и пободаться с философами античности.
Вот так выглядит контроллер в связке с сенсором движения:
Контроллер – в электрокоробку. Сенсор движения – куданть в полки, где бы он мог адекватно фиксировать окружение.
Для всего этого пришлось разработать свою собственную кастомную морду-накладку. Опять…
С этими корпусами получается смешно сейчас…
Формфактор контроллера был сознательно разработан под использование стандартной “магазинной” декоративной мордочки. Типа такой, как на картинке сбоку.
Легко доступны в любом хозмаге за копейки. Могут быть разных цветов и видов. Одинарные, как на фото, двойные, тройные. С прямоугольными проемами, с круглыми, с маленькими, с большими. С широким обхватом по краям и с маленьким. Какие угодно можно подобрать по вкусу и надобности.
И все они подойдут к моему контроллеру т.к. он имеет те же размеры, что и обычные выключатели/розетки на которые такие морды рассчитаны. С местами крепежа в тех же самых местах.
Так, вот… У меня по дому уже этих контроллеров штук пять трудится. И ни разу, вообще ни разу, мне не удалось применить эти стандартные мордочки, как есть. То одно, то другое…
Законченный контроллер без декораций выглядит вот так:
В таком виде он может быть размещен в любой стандартной электрокоробке и накрыт стандартной декоративной мордой. Казалось бы…
Увы… Вот, скажем, так размещается контроллер в шкафу о котором идет речь:
Ну и какая тут к хренам стандартная морда при таком то профиле наличника?
При всей своей универсальности, все эти стандартные декоративные морды – накладные! И в данной конкретной ситуации это – приговор (с учетом профиля наличников):
На фото еще, как-то подозрительно пристойно выглядит… Но на самом деле это не так. Я уж как только не пробовал…
В общем, пришлось свою печатать:
Поскольку что угодно, накрывающее наличник поверх его рисунка, выглядит не пришей к кобыле хвост то моя кастомная морда как бы вкладывается в проем, а не накрывает его.
И вот так каждый раз выходит… Что-нибудь, да не дает заюзать “магазинную” декоративную морду в чистом виде. Хотя, честно признаться, я еще не добрался до обычных выключателей и розеток на обычных ровных стенах. Вот там, думаю, “стандартизация” накладных морд проявит себя во всей красе. Посмотрим…
Осталось рассказать, как была решена проблема сенсора, который должен реагировать только на царей природы, игнорируя их братьев меньших.
Ну… Предположим, что мы не собираемся заводить в доме лошадь… Даже, не предположим, а скажем это с полной уверенностью! Соответственно, что там остается из этих самых “меньших”?
Вот, Пес, допустим. Это самый крупный из всех ротвейлеров, что у нас когда либо были. Но даже он, будучи той еще “лошадью” в свои 10 месяцев, все равно не достает мне до пояса. Весьма немного не достает, но тем не менее… Ходить на задних лапах не умеет. Хоть при этом его голова и оказывается на одном уровне с моим лицом, но – не умеет.
Или, вот, Кот. Далеко не тощий барсик с помойки. Настоящий, такой, техасский котище под 20 фунтов веса и соответствующих габаритов. Да, не мэйн кун, но вполне себе! И все равно не достает мне даже до коленок со своим ростом. И пусть даже если и встанет на задние лапы – все равно лишь кончиками когтей мне до пояса дотягивается.
Соответственно, задача с сенсором сводится к тому, чтобы он просто не видел ничего и никого, что ниже моего пояса. Именно до этой высоты и расположена вся активная зона обитания меньших братьев. А чего сенсор не увидит (буквально) на то он и не среагирует.
А как же дети, спросите вы? Ну… Моей дочери уж скоро четверть века стукнет и ростом она существенно выше “слепой зоны” сенсора. А на каких-то чужих детей, оказавшихся внезапно в моем доме как бы и… мнэ… безразлично. Проблема решена 🙂
Итого… Штатный плафон сенсора представляет собой “купол” со ступенчатой структурой в виде сот по внутренней поверхности. Этот “купол” является одной из разновидностей линзы Френеля, что позволяет сенсору “видеть” вокруг себя в пределах угла до 130 градусов (на самом деле меньше, но – близко к тому).
В данном случае необходимо не расширить, а, наоборот, сузить поле зрения сенсора. Поэтому купол снимается и выбрасывается. Остается понять, какой “угол зрения” мне нужен на самом деле.
“На самом деле”, я в принципе не хотел, чтобы “угол зрения” сенсора выходил бы за пределы дверной ниши:
Имея в своем распоряжении точную модель этой части дома, получить точное значение угла – задача тривиальная:
Ручка двери обычно располагается на том самом пресловутом “уровне пояса” (3 фута, согласно стандартам). Т.е. при “угле зрения” сенсора, ограниченным краями дверной ниши, достаточно разместить его на второй полке шкафа, чтобы автоматически получить “слепую зону” доходящую от пола до нужной высоты.
Осталось только разработать и напечатать для сенсора вместо его родного “купола” некое подобие “окуляра”, который позволяет ему видеть только в пределах заданного угла:
Все заработало, как и было задумано. Если обезьяна заходит в дверную нишу – свет загорается. Если обезьяна слоняется где еще в доме – сенсору пофиг, свет не горит. Братья меньшие игнорируются в любом случае. Задача решена в полном объеме.
Управляется подсветка всего одной кнопкой. Кратковременные нажатия – вкл/выкл. Долгое удержание нажатой кнопки, переводит контроллер в автоматический режим и он начинает сам делать вкл/выкл, когда что-то оказывается в “поле зрения” сенсора.
Автоматическое включение длится в течение 15 секунд. Если в этот интервал времени будет продолжать что-то двигаться, счетчик будет откатывать интервал к своему началу с каждым срабатыванием датчика движения. Если таймер без помех дотикал до конца интервала, свет выключится. Т.о., если кто-то будет пол часа маячить в проеме… Ну, не знаю… Выбирать книгу на полке или рассматривать кукри… То свет будет гореть постоянно. Погаснет через 15 секунд после того, как “помеха” уйдет из “поля зрения” сенсора = уйдет из дверной ниши…
Если обезьяна придумает обмануть датчик, проползая в проем на четвереньках… Ну, контроллер сочтет такое поведение недостойным высших приматов и отреагирует соответственно. В смысле – не отреагирует никак, сведя такую обезьяну до уровня братьев меньших. Так и будет там ползать на карачках в темноте.
Самим контроллером, как и другими прочими, можно управлять дистанционно. У него совсем нехитрый функционал:
Ну, а вот так это выглядит в жизни:
Так и живем… Продолжение, само-собой, следует…