Часть 3. Мне нужныы мозгииии.
Часть 2. Особенности наколенного лампостроения.
Краткое содержание предыдущих серий: «Вроде всё готово, но такое ощущение, что чего-то не хватает. Как-то оно не светит. Кажется, такие вещи принято в розетку втыкать. Только где здесь вилка?»
Прячем перфораторы и достаем микроскопы. Добро пожаловать в XXI век. Сейчас будем обучать все это работать. Желательно на нас.
Первым делом определимся с периферией. Чего нам не хватает для долгой и счастливой жизни?
1. Ночная подсветка. Тут всё просто: берем мебельную заглушку, сверлим в ней отверстие, вставляем туда синий трёхмиллиметровый светодиод, капля термоклея завершает дело, и получаем примерно вот это:
Повторяем этот процесс еще дважды, и заталкиваем полученные три потолочных светильника в гипсокартонный потолок. Работать они будут при токе 15 мА, так что про охлаждение не задумываемся.
2. Выключатель ламп. (Вот интересно, во враждебных нашему менталитету языках используют включатели, а у нас — вЫключатели. Да, такие вот у нас и у них приоритеты.)
Первый вариант был на оптическом датчике отражения, вот таком:
Дальность его срабатывания после доработки около 10 см (доработка заключалась в установке RC-фильтра по питанию приёмника: дальность там регулируется током светодиода, и при дальности уже 3..4 см ток светодиода в импульсе давал помеху по цепи питания, достаточную для того, что бы приемник «ловил» эти импульсы и воспринимал как полезный сигнал).
Короткое поднесение руки увеличивает количество включенных ламп, длительное — уменьшает. В теории было красиво: выставил, например, три растопыренных пальца, провел ими перед датчиком, включились три лампы. Но уже на макете магические пассы руками перед датчиком быстро задолбали (у датчика часто есть свое мнение насчет того, есть перед ним отражающий объект или нет), пришлось поставить энкодер. Оптический датчик хорош там, где есть только два положения: вкл. и выкл. На кухне и в прихожей самое ему место. На всякий случай софт контроллера поддерживает работу как с энкодером, так и с оптическим или сенсорным датчиком. Что именно подключено, контроллер определяет автоматически.
Для энкодера напечатал корпус, подпаял светодиодики (зеленые, потому как вся спальня в зеленых тонах, а вот, как ни странно, ночная подсветка зеленого цвета некрасиво смотрелась, синяя или белая лучше). В общем, тут никаких особенностей нет, на фото всё видно:
Ну и по месту установки пара фоток:
3. Датчик движения. Ну как же без него? Этого добра у меня уже столько по квартире понатыкано… Использую двух типов: маленькие (хорошо в гипсокартонный потолок становятся, «видят» под собой):
и большие, «видят» всю комнату (тут единственная не своя фотка, как-то ни разу датчики в чистом виде мне в кадр не попались):
У этих датчиков регулируется чувствительность (на максимуме в 6 метрах четко срабатывает, на кота и собаку реагирует), и длительность удержания выходного сигнала при срабатывании (от нескольких секунд до 5 минут, что позволяет делать автоматику без контроллера).
Снова заряжаем филамент в принтер, и получается как-то так (красил акриловой краской для пластмассовых моделек):
Вид по месту установки:
А где же мозгииии??? Спросит проницательный зомби читатель. А вот они!!! Отвечу я.
Мозги этой конструкции собраны на ATTiny2313 — функций-то немного, всё влезло (это не основной контроллер в спальне, основной стоит в кровати и управляет этим по SPI, сам он, в свою очередь, будет управляться с центрального квартирного по RS-485, квартирный пока не готов — осваиваю платформу ARM, с желающими помочь в этом деле рад буду пообщаться).
А вот чтобы впихнуть контроллер в предназначенную для него нишу, пришлось повозиться. Причем так повозиться, что это достойно отдельной статьи. Но здесь я постараюсь очень кратко (возможно, когда-нибудь расскажу подробнее).
До этого устройства я в своих конструкциях не использовал SMD компоненты. Да. Сидел такой дедушка за станочком и дырочки сверлил. Соответственно, ЛУТа хватало с запасом. Но для того, чтобы впихнуть контроллер в предназначенную для него нишу, пришлось освоить новые технологии. То есть, перейти на фоторезист. Тут я был просто в восторге — качество и повторяемость — с ЛУТом не сравнить, причем практически с первого раза (я плату разводил сравнительно широкими дорожками, планировал термопереноской обойтись, но подумал хорошенько, и полностью от утюга отказался. А целенаправленно под фоторезист можно было бы дорожки значительно тоньше делать). Хотя, конечно, техпроцесс более хлопотный. Кроме того, специально для этого пришлось УФ — лампу собрать (тоже конструкция на отдельную статью, но не будет этого, ибо ни одной фотки в процессе изготовления не сделал, а на готовом изделии ничего не видно). Для SMD — компонентов понадобилась маска (это же просто праздник какой-то: дорожки лудить не надо, про замыкания на плате можно забыть, красиво, удобно). Сверлить в несколько раз меньше надо (и большая часть отверстий — под выводы большого диаметра, соответственно, бОльшими и более прочными сверлами).
Так что это был мой дебют в изготовлении плат по современным технологиям (тестовая плата не в счет — надо же было время требуемой экспозиции подобрать). Теперь только так делаю (хотя, с тех пор не так много плат сделал, как-то со временем напряженка). Пока есть одна сложность: высококонтрастные фотошаблоны надо научиться делать. Бытовой лазерник, цветной лазерник в копи-центре (ходил в ТД «Беларусь») — неконтрастно. Бытовой струйник — надо режим и пленку подбирать, наверное. Иначе — помарки, растекание чернил. Зато контрастность хорошая. Так что от помощи в данном вопросе не откажусь.
Плата односторонняя (с металлизацией отверстий я пока не готов заморочиться), поэтому есть перемычки. Ну и пару перемычек добавили доработки (например, пришлось ввести аппаратную корректировку порога срабатывания датчика освещенности при включении светодиодов, еще по SPI вопросы были).
Подробно описывать схему, наверное, нет смысла: в точности так, как у меня, никто повторять не будет. Потому как в каждой избушке свои погремушки. Совсем кратко: ATTiny2313, на интегрированном RC — генераторе, датчики (входы): фоторезистор (вход компаратора, аппаратные гистерезис и сдвиг уровня при включенных собственных источниках света), энкодер (автоопределение: энкодер или оптический датчик), датчик открывания двери (геркон), датчик движения. Для защиты от импульсных помех все входы оснащены RC-фильтрами. Исполнительные устройства: электромагнитные реле для лампочек (твердотельные были бы компактнее, но эти гарантированно надёжно работают с любыми типами ламп), транзисторы для светодиодов (ШИМ 2.5 кГц). Интерфейсы: Slave, управление от внешнего контроллера по SPI, передача сигналов током, развязка оптронами (оптроны — те, что были под руками, из старых блоков питания, уже после сборки оказалось, что скорость 19200 бод — для них предел, а лучше использовать 9600 бод, чего, впрочем, хватает с огромным запасом). Искусственный рассвет инициируется командой по SPI. Полный перечень команд по SPI:
p001xxxx - яркость канала B, отключает автоматическое управление подсветкой
p010xxxx - яркость канала W, отключает автоматическое управление подсветкой
p011xxxx - яркость канала R, отключает автоматическое управление подсветкой
p1000xxx - установить количество включенных ламп
11010000 - увеличить количество включенных ламп
01010001 - уменьшить количество включенных ламп
11100000 - остановить рассвет, включить автоматическое управление подсветкой
01100001 - запустить рассвет, включить автоматическое управление подсветкой
01110000 - отключить ночной режим (максимальная яркость ночной подсветки)
11110001 - включить ночной режим (яркость ночной подсветки будет 70% от максимальной)
10001010 - режим ожидания (отключить всё)
10001111 - NOP - пустая команда (для получения байта статуса)
где p - бит контроля четности, xxxx - значение переменной
Обратно отдается байт состояния люстры и подтверждения приема команды.
Дистанционного беспроводного управления нет, так как с контроллера кровати люстрой можно управлять как угодно. Соответствующие кнопки и энкодеры устанавливаются в спинку кровати (про кровать будет статья, и не одна). Правда, это все пока в макете висит на проводах. Доделаю — напишу.
Решение о переходе в ночной режим принимает центральный контроллер, анализируя активность во всех помещениях после 23.00: если активности не обнаружено в течение 20 минут, считаем, что все легли спать, и переходим до 6.00 в ночной режим.
Функционал энкодера:
если идет рассвет, короткое нажатие выключает его;
если включены белые светодиоды, короткое нажатие выключает их;
если рассвета нет и лампы выключены, короткое нажатие включает одну;
если лампы включены, короткое нажатие выключает все;
вращение ненажатого энкодера увеличивает/уменьшает количество включенных ламп;
длительное нажатие включает белые светодиоды рассвета на половину мощности (теперь это уже не светодиоды рассвета, а светодиоды слабого освещения, упоминавшиеся выше);
вращение нажатого энкодера увеличивает/уменьшает яркость этих белых светодиодов;
Стадии рассвета:
1. Яркость красных светодиодов нарастает от 0 до максимума за 5 минут
2. Когда яркость красных светодиодов дойдёт до 2/3 от максимальной, к ним присоединяются синие светодиоды (их яркость также нарастает от 0 до максимума за 5 минут)
3. Когда яркость красных стала максимальной, к ним присоединяются белые светодиоды (их яркость также нарастает от 0 до максимума за 5 минут)
4. Когда яркость белых стала максимальной, начинаем плавно гасить красные (от максимума до 0 за 5 минут)
5. Когда красные погасли, через минуту должен сработать звуковой сигнал будильника, после этого будильник, в зависимости от того, отключили его или отклонили на 10 минут, продлевает или нет работу рассвета
6. Если с будильника команд не поступает, удерживаем белые и синие включенными до ручного отключения, либо пока не посветлеет естественным путем, либо 5 минут.
Софт на С. На Ассемблере надоело — долго, хлопотно, правда, в полтора раза компактней. Хотя за С тоже смотреть надо, что он там накомпилировал, но проверять отдельные моменты за компилятором всё же проще, чем всё самому писать.
Ура, скучное закончилось, и снова картинки!!!
Монтаж контроллера и установка люстры:
Контроллер в корпусе:
Ниша под контроллер в гипсокартонном потолке:
Контроллер на месте:
Наконец-то люстра там, где ей положено быть. Включены все лампы, яркий солнечный день. Светит хорошо (визуально чуть сильнее, чем 2 голых (без плафонов) КЛЛ на 28Вт):
Ночная подсветка (в темноте фотик совсем плохо видит, сорри. Глазами красивее выглядит):
Ну и вид на энкодер ночью:
За время эксплуатации сдохли два 3мм светодиода (кто бы мог подумать?). Оба за первый месяц. Сначала на одном напряжение подскочило с 3.1В до 6.8В, потом второй просто ушел в обрыв. Светодиоды эти куплены в Стэлл’е (тогда ещё через Скорпион), по словам продавца — российские КИПД 66В-С (FYL-3014UBC). Куплены за пару лет до запуска люстры, при покупке все были проверены. Достал пакетик с оставшимися, стал проверять с пристрастием — они все на малом токе (от тестера) светят зеленоватым светом (при покупке был насыщенный синий), один вообще нерабочий. То есть, деградировали просто при хранении. И совсем недавно один за другим сдохли два одноваттника в лампочках (это во второй части описано).
Спасибо всем, у кого хватило терпения всё это прочесть (интересно, много ли таких терпеливых читателей?).
Вы в статье несколько раз упоминали «рассвет», но нигде не было описано что это такое.
Нельзя ли про него поподробнее?
Вообще-то, в этой части я его уже описывал. «Стадии рассвета», и дальше шесть пунктов.
Но если полностью, то процесс такой: в кровать встроен контроллер, реализующий, помимо прочего, функцию будильников. При программировании будильника указывается время его срабатывания, а также указывается, сопровождать ли срабатывание этого будильника рассветом (и включением «теплого пола» в ванной, но это уже другая история). Если чекбокс рассвета установлен, то за 16 минут до установленного времени срабатывания будильника, контроллер кровати отправляет люстре команду «запустить рассвет». Если в комнате темно, люстра начинает выполнять эту команду, то есть плавно увеличивать яркость светодиодов (задействуются только светодиоды, установленные в цоколе люстры и синие светодиоды ночной подсветки, установленные в потолок вдоль стены, основные лампочки в этом участия не принимают, они слишком яркие). Процесс занимает 15 минут, описан в статье. Как только запустился процесс рассвета, снижается порог срабатывания датчика освещенности, чтобы он не сработал от собственного света люстры, но имел возможность сработать, если имеется достаточное внешнее освещение. К сожалению, в Тиньке2313 нет АЦП, поэтому всё пришлось делать аппаратно (особенно хлопотно пороги подбирать). Когда рассвет завершен (15 минут прошло), люстра ждет еще 5 минут, и отключает светодиоды (но это, вообще-то, аварийный режим, так как через минуту после выхода рассвета на номинальную яркость должен сработать будильник кровати, и он уже начинает управлять люстрой, решая, когда её можно выключить).
Я пытался снять процесс рассвета на видео, но оказалось, что всё не так просто, т.к. за эти 15 минут фотоаппарат, зараза, несколько раз корректирует баланс белого и экспозицию (в режиме съемки видео ему нельзя это запретить), и все получается плохо. Раз есть интерес, я попробую еще раз снять видео какой-нибудь другой камерой.
Может возникнуть вопрос, зачем он вообще нужен, этот рассвет. Дело в том, что на процесс сна, помимо прочих факторов, влияет еще и освещенность. Вот цитата с одного сайта:
«Циркадная периодичность сна и бодрствования зависит от света. Зрительные рецепторы реагируют на уровень освещённости и отсылают сигнал в супрахиазмальное ядро головного мозга. Это даёт старт выработке двух важных гормонов, отвечающих за сон и пробуждение: мелатонина и кортизола.
Мелатонин — гормон сна. Вырабатывается в шишковидной железе, когда темнеет. Он снижает давление и температуру, успокаивает организм и даёт ему команду «Пора спать!». Под утро синтез мелатонина прекращается. Чем больше света, тем больше в кровь выбрасывается кортизола. Этот гормон будит нас, даёт бодрость и энергию.»
Это, конечно, сильно упрощенно, но в целом верно. Кортизол, в числе прочего, меняет соотношение длительности фаз «медленного» и «быстрого» сна в сторону «быстрого» вплоть до полного подавления «медленного». Просыпание в фазе «быстрого» сна происходит легко, а в фазе «медленного» — как дубиной по голове.
Конечно, если сидел за компом до трёх ночи, никакой рассвет не поможет. Но если поспал часов 6..7, то с рассветом (естественным, или искусственным) просыпаешься уже в здравом уме и соображением, что пора вставать (хотя и жутко не хочется). А если будильник звенит в полной темноте (осенью, зимой), я, например, даже не могу сообразить, какую кнопку на будильнике нажать, чтобы отклонить сигнал на 10 минут (большая — отклоняет, маленькая — отключает будильник, размеры кнопок отличаются раз в пять, перепутать невозможно, тем не менее, у меня вероятность нажать правильную — 50%).
Конечно, эта информация собрана из интернета, поэтому её нельзя считать абсолютно достоверной, но личные наблюдения, вроде бы, её подтверждают.