![]() |
![]() |
|||||||||||||||
"Умная" сталинская лампа. ИК-пульт, фоторезистор, ATtiny13
Автор: justatom
"Умная" сталинская лампа. ИК-пульт, фоторезистор, ATtiny13
Предуведомление. Как всегда.
Роясь в хламе, обнаружил раритетную лампу. В 60-х / 70-х (а может и в 30-х / 40-х) такие жили в учреждениях. Очень солидная. Гламурная. Из текстолита. Но без проводов. Реанимировал, отмечая разные необычности. Например, в ножке - автономная проводка, связанная с подставочной через своего рода щетки.
Но хотелось чего-то бОльшего. Дальше рассказ идет с сохранением хронологии, описывая все изгибы пути, взлеты и падения... В залежах хлама (теперь уже относительно современного) внезапно нашелся пульт от давно почившего ТВ-тюнера. Целый Pinnacle!
Вивисекция - дело нехитрое, всегда успеется. Итак. Также определился с контроллером. Пусть это будет tiny13. Минимум. TSOP-17xx - цифровое устройство. Выдает наружу уже либо "0", либо "1". Причем, до поимки сигнала, в режиме простоя выдает именно "1". У моего пиннакла может быть все, что угодно. Взглянем. Что оказалось. Длины пауз варьируют от 800 до 6670 мкс. Гуляют максимум на 40 мкс (без учета погрешности приемника, что, в общем-то не верно). Одинаковые длительности могут находиться как в "1", так и в "0". Максимум может быть восемь отдельных пакетов-импульсов (16 изменений). Начальные площадки - всегда 1700 и 6670 мкс. Всего разных импульсов пауз 11, что тоже может что-то означать. Но для меня важно лишь число пакетов и разброс их длительностей. Как только от последнего изменения проходило пороговое время (в разы бОльшее, чем самый длинный импульс), считал "хэш" - свертывал по двоичным разрядам времена между изменениями, предварительно деленные на число, чуть меньшее минимальной паузы - 700 (отброс нестабильной части). Микросекундные последовательности трех клавиш; для проекта выбрал первую, как самую простую:
"Выпытав" у системы хэш, можно подставить его в код, чтобы выполнять нужное действие при совпадении. Метод эксперимента. Так и сделал.
Схема для теста - из даташита (плюс сигнальная лампочка).
Код тестового скетча (нужен ли он) вот такой. Настало время для tiny13.
Чтобы узнать хэши, просто записываю их в EEPROM. Много раз, для статистики. Все ок. Для теста хватает все той же минимальной схемы, теперь уже на tiny. Пытаем его прямо в прицепе к программатору. По поводу кода определения хешей для tiny. Даже на 10МГц не рискую делать какие-либо вычисления в обработчике прерывания. Кидаю в массив. На борту у 13-го - всего 64 байта (EEPROM пригодится для другого). Значит, нужно сбавить аппетит. Обрабатывать не все изменения, а, допустим, лишь передние фронты. В ардуинном скетче это тоже предусмотрено. Для избранных клавиш будут такие данные: Код приемника на tiny13 для вычисления хэшей. (EEPROM после разового заполнения приходится чистить вручную). HEX вряд ли кому пригодится. Лучше скомпилировать по исходнику. Наблюдалось явление, когда значения для разных камней отличались. Правда, в свое время некоторые из них постарадали от "переполюсовки" в панельке, - раскалялись как утюг; возможно, что-то там поджарилось... Отмечу, что код функции оценки millis (кусочек для двух значений F_CPU) взят из библиотеки core13 - он валялся у меня в закромах с очень куцым комментарием. _delay_ms() весьма условна. Таймер же тикает примерно раз в 27 микросекунд. Посему micros() тут нет. В итоге полученные хэши заведомо не будут соответствовать ардуинным (вычислю их, деля разницу тиков уже на 50). Что теперь известно. Хеши каждой клавиши. Если быть строже - диапазон, в котором они могут гулять. Схема вот такая: И ссылка на его проект. Файл диптрейс и картинки для ЛУТа. Прежде всего воспроизвел код избранной кнопки пиннакла (по передним фронтам). И к ней добавил еще три, - на свежеобретенном пульте, как вы заметили, их четыре. Определив доморощенные "хэши" для клавиш пульта, наконец-то написал основную прошивку. Ради которой все и затевалось. На всякий случай оставил отладочный кусок для записи хэшей в память. Чтобы, если что, можно было уточнять уже финально и сразу же подставить в код. "Сущая безделица" (если не хуже), скажете вы и будете правы. Но, как уже сказал, в утилитарном виде ее можно приспособить для включения/выключения светильников в прямой видимости пульта. Или - управлять компьютером (как, собственно, делал когда-то пиннакл). Число команд при этом можно увеличить, играя паузами нажатия на кнопки, нажимая несколько сразу и т.д. Можно также изменить пульт - сделать резисторную "клавиатуру" на один вход (АЦП) или взять для пульта tiny2313. Подумайте, прежде чем проектировать пульт, если решитесь... Схема приемного устройства следующая: Использованы обычные кнопки с фиксацией, переключающие сразу два контакта. Фоторезистор VT90N2. За кадром - реле JZC-11F (управляющее напряжение - 5В, управляемое - 250AC). Резисторы притяжки контактов кнопки не очень красиво изображены на поле МК. В схеме присутствуют два лишних резистора по 180 Ом. На случай ошибок в коде и вообще - невероятных обстоятельств (однажды бракованный компонент чуть не сжег у меня вход). Считайте их данью паранойи и не используйте. А в остальном - все прозрачно. Выглядит живьем так: Схема избыточна; в расчете на другой принцип работы занят лишний пин. И клемники не чистят карму. Хотя, с ними можно будет выбирать вид блока питания (я замыслил использовать в дальнейшем самодельный бестрансформаторный, уже дающий 5В, тогда как тут - от Siemens ME-45 на 8.65В). Об этом позже. Вообще, если бы я делал схему сейчас, она была бы заметно другой )) Картинки для ЛУТа и проект в диптрейс (помните об угрозе духовному здоровью). При выключении реле систему кидало, хотя диод на плате есть. Как только добавил еще один, уже возле самого реле, жизнь сразу же наладилась. Досадная промашка. Вырезанную заготовку нужно согнуть. Используем паяльный фен для нагрева и гнем на отчетливом углу. Но греем не напрямую, а через специальную щель, вырезанную, допустим, в картонке. Иначе гнуться будет и там, где не нужно. Дальше - выкалываем раскаленным гвоздем дырки для винтов и фоторезистора, вырезаем раскаленной отверткой оконца для кнопок (аккуратно, их после нужно довести напильником). И изделие готово. Почти. Еще нужны втулки для болтов - такие же, на каких крепятся всякие видюхи-звуковухи, проводочки, соберущиеся в вилку-интерфейс. И все. В итоге так: Переходим внутрь волшебной лампы. Теперь вместо светодиода сигнал через транзистор идет на реле. Как уже сказал, реле выбрано JZC-11F. Соединения делал на клемниках, у которых лапки предусмотрительно спаяны. Помимо них там: - предохранитель 0.5А; В упакованном виде вся эта жесть внутри основания лампы выглядит так: Если после этого подключить наше устройство и привинтить его к подошве лампы, то пугает не сильно: Главная его прелесть в том, что оно работает. Управляется и с пиннакла и с самодельного пульта. Все вполне прилично пашет. Даже если наводить пульт в другую сторону - возникают отражения от стен. ---------- Следующая станция, если доберусь, - безтрансформаторный блок питания...
Все вопросы в Форум.
|
|
|||||||||||||||
![]() |
![]() |


![]() |
![]() |
|||
|
||||
![]() |
![]() |