Самодельный RGBW модуль на базе ATtiny13 с ИК управлением: модифицируем фонарь Quechua BL40
- Цена: $15 за 5 плат
- 4-канальный программный ШИМ (частота > 2кГц, видимого на глаз мерцания нет)
- Поддержка 24-кнопочного ИК пульта (NEC протокол)
- 16 статичных цветов + 4 эффекта мигалок
- Регулировка яркости (у статичных цветов) и скорости (у мигалок)
- Включение/выключение с пульта
- Дальность действия пульта 5-10 метров и более (зависит от ИК приемника и условий его размещения)
- Потребление в выключенном состоянии ≈ 1мА (зависит от ИК приемников и их количества, сам МК в спящем режиме потребляет микроамперы)
- Питание от 3В до 6В
- Стабилизация яркости белых светодиодов (в моей реализации платы)
- Размер прошивки: 920 байт (есть версия на 860 байт, у которой менее точное представление цветов)
- Размер платы: 39.4×39.4
- 360мА — белый
- 70мА — красный
- 63мА — зеленый
- 62мА — синий
- FLASH — последовательно ступенчато переключаются 15 цветов (все, кроме белого)
- STROBE — стробоскоп выбранным ранее статичным цветом
- FADE — плавное мигание выбранным статичным цветом
- SMOOTH — плавное перетекание по всему RGB спектру
Микроконтроллеры ATtiny13 широко используются во всяких фонариках и простых DIY поделках благодаря своей распространенности и дешевизне, но мало кто пытается использовать их для более продвинутых вещей. Большинство уверено, что 1024 байта памяти достаточно только для простейших таймеров или мигания 1-2 светодиодами. Я решил доказать обратное и впихнул практически невпихуемое: на 920 байтах прошивки у меня уместился полнофункциональный RGBW модуль с ИК управлением и кучей режимов работы
Дисклеймер
IRL я ни разу не С/C++ программист, и прошивка мною разрабатывалась не красоты ради, а функциональности для. Борьба в ней шла за каждый байт путем проб и ошибок с использованием странных, неочевидных и вовсе запрещенных приемов, поэтому код может выглядеть безумно, но это все было сделано с одной целью: вместить как можно больше фич в как можно меньше памяти.
Исходники
Все исходники размещены у меня на GitHub, в разделе firmware вы найдете исходники прошивки, в разделе hardware — пример платы, нарисованной в EAGLE, и список требуемых компонентов. Исходники распространяются под лицензией CC BY-NC-SA. Те, кто будет собирать прошивку самостоятельно, не забудьте включить флаг оптимизации по размеру -Os в компиляторе, иначе она не влезет в МК.
Описание возможностей
При подаче питания модуль включается в режиме белого при 100% яркости, энергонезависимой памяти последнего режима нет, возможно в будущем добавлю. Поведение при подаче питания можно поменять на нужное в файле lib/common.h. При включении/отключении с пульта последний режим запоминается (если опять же за время сна питание не обрывалось).
Схема и плата
Готовые gerber файлы платы лежат в архиве project_2020-10-19.zip.
Схема:
Изготовление плат я заказал в JLCPCB, 5 штук обошлись мне $8 с доставкой и приехали за 2 недели с момента заказа
Компоненты паял сам, итоговая цена с учетом компонентов вышла примерно в $15 за 5 плат. Итоговый вид:
Прошивку я заливаю прямо на месте с помощью прошитого под программатор Arduino Nano 3.0 с клипсой:
Белые светодиоды включены через линейный стабилизатор AMC7135 на 350мА, поэтому при питании от аккумулятора или 3х батареек их яркость стабильна на протяжении почти всего времени работы и примерно равна 150 люменам (зависит от светодиодов). Светодиоды я использовал самые дешевые: теплые 5730 и 5050 RGB с общим анодом. Последние перед пайкой необходимо тщательно проверять, потому что в них очень много брака.
Потребляемые модулем токи при питании от 5В и работе в режиме максимальной яркости:
Ни в одном режиме работы светодиоды не греются. В режиме минимальной яркости модуль потребляет от 20мА (белый) до 3-4 (RGB). В выключенном потребление около 1мА, и львиная доля этого расхода лежит на ИК приемнике, сам МК спит и толком ничего не потребляет. Это стоит учитывать при питании модуля от аккумуляторов или батарей.
Пульт и режимы
Управляется модуль с помощью 24-кнопочного пульта Magic Lighting
Я понятия не имею, имеют ли все эти пульты одинаковые коды команд, но в купленных мною нескольких экземплярах они идентичны.
Но всегда остается вероятность, что в новой партии пультов или у другого продавца коды будут другими. При таком сценарии можно с помощью той же ардуины и ИК приемника получить коды неизвестного пульта и заменить их в файле lib/common.h.
Кнопки пульта условно разделены на несколько зон:
С помощью 16 кнопок можно выбрать и включить какой-либо определенный статичный цвет, в данном режиме кнопки регулировки в левом углу пульта позволяют менять яркость свечения (5 уровней).
В правой части пульта расположены 4 кнопки спецэффектов:
В режиме спецэффекта кнопки регулировки отвечают за скорость воспроизведения эффекта.
Модификация кемпингового фонаря Quechua BL40
Фонарик этот продается в Декатлоне, вероятно у очень многих есть такой же. Сейчас цены на него не очень гуманные, но я их покупал давным-давно рублей по 300
Своим я уже ранее делал небольшой апгрейд, вкорячив скрытый выключатель для долговременного хранения (потому что кнопка самого фонаря реализована на полевике и расходует батарейки даже в выключенном режиме):
Так же я добавил еще 2 светодиода и уменьшил токоограничительный резистор, увеличив тем самым яркость примерно в 2 раза:
Но тем не менее, это не решало проблему просадки яркости по мере разряда батареек. Мой RGBW модуль не только решает эту проблему, но еще и добавляет свистоперделок в лице спецэффектов, разных цветов свечения и управления с пульта. Чтобы установить модуль, в первую очередь сдуваем родной светодиод и ограничительный резистор:
Вместо ограничительного резистора впаиваем диод Шоттки на (в моем случае SS54), к нему и к общему "-" подпаиваем наш модуль:
Сам модуль я сначала зафиксировал с помощью термоклея, затем приклеил обычным клеем:
На фотографии видно перемычку — не обращайте на нее внимание, это исправление косяка по питанию МК, который я допустил в первой версии платы. На гитхабе лежит уже исправленный вариант. Так же тут вы могли заметить два ИК приемника VS1838B, подключенных параллельно и повернутых под углом относительно друг друга. После первой сборки я столкнулся с проблемой ослепления приемника при работе белых светодиодов: при расположении приемника на плате дальность действия пульта резко падала при включении белого цвета до 1-2х метров. Изначально я пытался исправить это с помощью дополнительного приемника, в результате удалось увеличить дальность уверенного приема до 3-4 метров. В конце концов я купил более продвинутый приемник TSOP4838 и вынес его в пустую полость под кнопкой, вырезав окошко в пластике:
При таком размещении приемник вообще не контактирует с излучением светодиодов, дальность работы пульта увеличилась минимум до 8 метров, причем светить пультом именно в приемник вовсе не обязательно: ему хватает даже отраженного от стен сигнала, так что в условиях помещения/палатки область обзора датчика увеличилась до всех 360 градусов.
Модифицированный фонарик светит очень ярко, с изначальным заводским вариантом просто не сравнить. Одного фонаря, подвешенного к потолку в центре комнаты, достаточно для комфортного пребывания в ней. Яркость белого света стабильна во времени, начинает падать при разряде батарей примерно до 3.4В. По понятным причинам испытать в походе пока не удалось, но фича управления с пульта уже кажется мне очень удобной, причем при наличии в телефоне ИК-порта коды кнопок можно заранее скопировать и не таскать сам пульт с собой. Так как модуль при подаче питания сразу включается в режиме белого на максимальной яркости, поведение фонаря без пульта вообще не изменилось: с помощью родной физической кнопки его можно, как и ранее, включать и выключать. При отключении с помощью пульта главное помнить, что фонарь по факту не выключен, а находится в режиме сна, и ИК датчик потребляет ток. Пару ночей в таком режиме сна не потратят хоть сколько-нибудь заметного количества заряда батареек, но если забыть отключить фонарь физической кнопкой и убрать на длительное хранение — батарейки со временем будут высосаны в ноль (примерно через 3-4 месяца) и могут протечь. Благо из-за отсутствия у модуля энергонезависимой памяти последнего режима, для полного отключения фонаря достаточно просто включить и выключить его физической кнопкой, и после этого можно смело кидать на полку, не боясь за батарейки.

Напоследок, примеры спецэффектов
Flash:
Smooth:
Strobe
Fade:
- TinyRF - радиоуправление и обмен данными на ATttiny13
- Ручка Ksger для паяльной станции T12 или Советы по сварке утюгов
- Фонарь ArmyTek Wizard C2 Pro Max (white)- обзор от хомяка
- Нижний подогрев: благородная версия
- Condor Bushcraft Parang или для чего орлу мачете?
- Робот-пылесос Roidmi EVE Plus с лазерной навигацией и станцией самоочистки и дезинфекции. Большой шаг на пути к комфорту
- PROSTORMER 21V - хороший шуруповерт, но со странностями
- Аккумуляторы Li-NMC 26800 Yuliang 3.7 V 7000mAh
- Чехол для телефона: тестируем, как нас (но не только лишь всех (c) пока) обувают по-новому.
- YUEHOO - YH214D 1-DIN Android магнитола с выдвижным экраном 7"

