Товары из Китая

Самодельный RGBW модуль на базе ATtiny13 с ИК управлением: модифицируем фонарь Quechua BL40


  • Цена: $15 за 5 плат
  • Микроконтроллеры ATtiny13 широко используются во всяких фонариках и простых DIY поделках благодаря своей распространенности и дешевизне, но мало кто пытается использовать их для более продвинутых вещей. Большинство уверено, что 1024 байта памяти достаточно только для простейших таймеров или мигания 1-2 светодиодами. Я решил доказать обратное и впихнул практически невпихуемое: на 920 байтах прошивки у меня уместился полнофункциональный RGBW модуль с ИК управлением и кучей режимов работы

    Дисклеймер

    IRL я ни разу не С/C++ программист, и прошивка мною разрабатывалась не красоты ради, а функциональности для. Борьба в ней шла за каждый байт путем проб и ошибок с использованием странных, неочевидных и вовсе запрещенных приемов, поэтому код может выглядеть безумно, но это все было сделано с одной целью: вместить как можно больше фич в как можно меньше памяти.

    Исходники

    Все исходники размещены у меня на GitHub, в разделе firmware вы найдете исходники прошивки, в разделе hardware — пример платы, нарисованной в EAGLE, и список требуемых компонентов. Исходники распространяются под лицензией CC BY-NC-SA. Те, кто будет собирать прошивку самостоятельно, не забудьте включить флаг оптимизации по размеру -Os в компиляторе, иначе она не влезет в МК.

    Описание возможностей

    • 4-канальный программный ШИМ (частота > 2кГц, видимого на глаз мерцания нет)
    • Поддержка 24-кнопочного ИК пульта (NEC протокол)
    • 16 статичных цветов + 4 эффекта мигалок
    • Регулировка яркости (у статичных цветов) и скорости (у мигалок)
    • Включение/выключение с пульта
    • Дальность действия пульта 5-10 метров и более (зависит от ИК приемника и условий его размещения)
    • Потребление в выключенном состоянии ≈ 1мА (зависит от ИК приемников и их количества, сам МК в спящем режиме потребляет микроамперы)
    • Питание от 3В до 6В
    • Стабилизация яркости белых светодиодов (в моей реализации платы)
    • Размер прошивки: 920 байт (есть версия на 860 байт, у которой менее точное представление цветов)
    • Размер платы: 39.4×39.4

    При подаче питания модуль включается в режиме белого при 100% яркости, энергонезависимой памяти последнего режима нет, возможно в будущем добавлю. Поведение при подаче питания можно поменять на нужное в файле lib/common.h. При включении/отключении с пульта последний режим запоминается (если опять же за время сна питание не обрывалось).

    Схема и плата

    Готовые gerber файлы платы лежат в архиве project_2020-10-19.zip.

    Схема:

    Самодельный RGBW модуль на базе ATtiny13 с ИК управлением: модифицируем фонарь Quechua BL40

    Изготовление плат я заказал в JLCPCB, 5 штук обошлись мне $8 с доставкой и приехали за 2 недели с момента заказа

    Самодельный RGBW модуль на базе ATtiny13 с ИК управлением: модифицируем фонарь Quechua BL40

    Компоненты паял сам, итоговая цена с учетом компонентов вышла примерно в $15 за 5 плат. Итоговый вид:

    Самодельный RGBW модуль на базе ATtiny13 с ИК управлением: модифицируем фонарь Quechua BL40

    Прошивку я заливаю прямо на месте с помощью прошитого под программатор Arduino Nano 3.0 с клипсой:

    Самодельный RGBW модуль на базе ATtiny13 с ИК управлением: модифицируем фонарь Quechua BL40

    Белые светодиоды включены через линейный стабилизатор AMC7135 на 350мА, поэтому при питании от аккумулятора или 3х батареек их яркость стабильна на протяжении почти всего времени работы и примерно равна 150 люменам (зависит от светодиодов). Светодиоды я использовал самые дешевые: теплые 5730 и 5050 RGB с общим анодом. Последние перед пайкой необходимо тщательно проверять, потому что в них очень много брака.

    Потребляемые модулем токи при питании от 5В и работе в режиме максимальной яркости:

    • 360мА — белый
    • 70мА — красный
    • 63мА — зеленый
    • 62мА — синий

    Ни в одном режиме работы светодиоды не греются. В режиме минимальной яркости модуль потребляет от 20мА (белый) до 3-4 (RGB). В выключенном потребление около 1мА, и львиная доля этого расхода лежит на ИК приемнике, сам МК спит и толком ничего не потребляет. Это стоит учитывать при питании модуля от аккумуляторов или батарей.

    Пульт и режимы

    Управляется модуль с помощью 24-кнопочного пульта Magic Lighting

    Самодельный RGBW модуль на базе ATtiny13 с ИК управлением: модифицируем фонарь Quechua BL40

    Я понятия не имею, имеют ли все эти пульты одинаковые коды команд, но в купленных мною нескольких экземплярах они идентичны.

    Самодельный RGBW модуль на базе ATtiny13 с ИК управлением: модифицируем фонарь Quechua BL40

    Но всегда остается вероятность, что в новой партии пультов или у другого продавца коды будут другими. При таком сценарии можно с помощью той же ардуины и ИК приемника получить коды неизвестного пульта и заменить их в файле lib/common.h.

    Кнопки пульта условно разделены на несколько зон:

    Самодельный RGBW модуль на базе ATtiny13 с ИК управлением: модифицируем фонарь Quechua BL40

    С помощью 16 кнопок можно выбрать и включить какой-либо определенный статичный цвет, в данном режиме кнопки регулировки в левом углу пульта позволяют менять яркость свечения (5 уровней).

    В правой части пульта расположены 4 кнопки спецэффектов:

    • FLASH — последовательно ступенчато переключаются 15 цветов (все, кроме белого)
    • STROBE — стробоскоп выбранным ранее статичным цветом
    • FADE — плавное мигание выбранным статичным цветом
    • SMOOTH — плавное перетекание по всему RGB спектру

    В режиме спецэффекта кнопки регулировки отвечают за скорость воспроизведения эффекта.

    Модификация кемпингового фонаря Quechua BL40

    Фонарик этот продается в Декатлоне, вероятно у очень многих есть такой же. Сейчас цены на него не очень гуманные, но я их покупал давным-давно рублей по 300

    Самодельный RGBW модуль на базе ATtiny13 с ИК управлением: модифицируем фонарь Quechua BL40

    Самодельный RGBW модуль на базе ATtiny13 с ИК управлением: модифицируем фонарь Quechua BL40

    Своим я уже ранее делал небольшой апгрейд, вкорячив скрытый выключатель для долговременного хранения (потому что кнопка самого фонаря реализована на полевике и расходует батарейки даже в выключенном режиме):

    Самодельный RGBW модуль на базе ATtiny13 с ИК управлением: модифицируем фонарь Quechua BL40

    Так же я добавил еще 2 светодиода и уменьшил токоограничительный резистор, увеличив тем самым яркость примерно в 2 раза:

    Самодельный RGBW модуль на базе ATtiny13 с ИК управлением: модифицируем фонарь Quechua BL40

    Самодельный RGBW модуль на базе ATtiny13 с ИК управлением: модифицируем фонарь Quechua BL40

    Но тем не менее, это не решало проблему просадки яркости по мере разряда батареек. Мой RGBW модуль не только решает эту проблему, но еще и добавляет свистоперделок в лице спецэффектов, разных цветов свечения и управления с пульта. Чтобы установить модуль, в первую очередь сдуваем родной светодиод и ограничительный резистор:

    Самодельный RGBW модуль на базе ATtiny13 с ИК управлением: модифицируем фонарь Quechua BL40

    Вместо ограничительного резистора впаиваем диод Шоттки на (в моем случае SS54), к нему и к общему "-" подпаиваем наш модуль:

    Самодельный RGBW модуль на базе ATtiny13 с ИК управлением: модифицируем фонарь Quechua BL40

    Сам модуль я сначала зафиксировал с помощью термоклея, затем приклеил обычным клеем:

    Самодельный RGBW модуль на базе ATtiny13 с ИК управлением: модифицируем фонарь Quechua BL40

    На фотографии видно перемычку — не обращайте на нее внимание, это исправление косяка по питанию МК, который я допустил в первой версии платы. На гитхабе лежит уже исправленный вариант. Так же тут вы могли заметить два ИК приемника VS1838B, подключенных параллельно и повернутых под углом относительно друг друга. После первой сборки я столкнулся с проблемой ослепления приемника при работе белых светодиодов: при расположении приемника на плате дальность действия пульта резко падала при включении белого цвета до 1-2х метров. Изначально я пытался исправить это с помощью дополнительного приемника, в результате удалось увеличить дальность уверенного приема до 3-4 метров. В конце концов я купил более продвинутый приемник TSOP4838 и вынес его в пустую полость под кнопкой, вырезав окошко в пластике:

    Самодельный RGBW модуль на базе ATtiny13 с ИК управлением: модифицируем фонарь Quechua BL40

    При таком размещении приемник вообще не контактирует с излучением светодиодов, дальность работы пульта увеличилась минимум до 8 метров, причем светить пультом именно в приемник вовсе не обязательно: ему хватает даже отраженного от стен сигнала, так что в условиях помещения/палатки область обзора датчика увеличилась до всех 360 градусов.

    Самодельный RGBW модуль на базе ATtiny13 с ИК управлением: модифицируем фонарь Quechua BL40

    Модифицированный фонарик светит очень ярко, с изначальным заводским вариантом просто не сравнить. Одного фонаря, подвешенного к потолку в центре комнаты, достаточно для комфортного пребывания в ней. Яркость белого света стабильна во времени, начинает падать при разряде батарей примерно до 3.4В. По понятным причинам испытать в походе пока не удалось, но фича управления с пульта уже кажется мне очень удобной, причем при наличии в телефоне ИК-порта коды кнопок можно заранее скопировать и не таскать сам пульт с собой. Так как модуль при подаче питания сразу включается в режиме белого на максимальной яркости, поведение фонаря без пульта вообще не изменилось: с помощью родной физической кнопки его можно, как и ранее, включать и выключать. При отключении с помощью пульта главное помнить, что фонарь по факту не выключен, а находится в режиме сна, и ИК датчик потребляет ток. Пару ночей в таком режиме сна не потратят хоть сколько-нибудь заметного количества заряда батареек, но если забыть отключить фонарь физической кнопкой и убрать на длительное хранение — батарейки со временем будут высосаны в ноль (примерно через 3-4 месяца) и могут протечь. Благо из-за отсутствия у модуля энергонезависимой памяти последнего режима, для полного отключения фонаря достаточно просто включить и выключить его физической кнопкой, и после этого можно смело кидать на полку, не боясь за батарейки.

    Самодельный RGBW модуль на базе ATtiny13 с ИК управлением: модифицируем фонарь Quechua BL40

    Еще примеры фоток
    Самодельный RGBW модуль на базе ATtiny13 с ИК управлением: модифицируем фонарь Quechua BL40

    Самодельный RGBW модуль на базе ATtiny13 с ИК управлением: модифицируем фонарь Quechua BL40

    Самодельный RGBW модуль на базе ATtiny13 с ИК управлением: модифицируем фонарь Quechua BL40

    Самодельный RGBW модуль на базе ATtiny13 с ИК управлением: модифицируем фонарь Quechua BL40

    Самодельный RGBW модуль на базе ATtiny13 с ИК управлением: модифицируем фонарь Quechua BL40

    Напоследок, примеры спецэффектов

    Flash:

    Самодельный RGBW модуль на базе ATtiny13 с ИК управлением: модифицируем фонарь Quechua BL40

    Smooth:

    Самодельный RGBW модуль на базе ATtiny13 с ИК управлением: модифицируем фонарь Quechua BL40

    Strobe

    Самодельный RGBW модуль на базе ATtiny13 с ИК управлением: модифицируем фонарь Quechua BL40

    Fade:

    Самодельный RGBW модуль на базе ATtiny13 с ИК управлением: модифицируем фонарь Quechua BL40


СМОТРИ ТАКЖЕ

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *