Второй вариант переделки елочной "Звезды"
Ещё когда только
первый раз переделывал "Звезду", обдумывал дальнейшую её модернизацию. Чего мне ещё хотелось: увеличить количество светодиодов и сделать их работу более плавной. Рассматривал разные варианты реализации хотелок, но все они стали неактуальными после знакомства с индивидуально адресуемыми светодиодами, на которых
делал гирлянду. Прикинув палец к носу посчитал, что мне хватит по 16 светодиодов на сторону, раскиданных в таком порядке:
Теперь надо было определиться на чём именно делать: на чип-светодиодах WS2812B или на микросхемах-драйверах WS2811 и обычных светодиодах. Оба варианта имели свои плюсы и минусы. Недолго думая, буриданов осёл решил есть оба стога сена сразу.
WS2812BС этими чип-светодиодами уже имелся небольшой опыт работы. Схема подключения простая: нужны лишь сами чип-светодиоды и конденсаторы для обвязки по питанию.
Даташит на WS2812BДанный чип-светодиод содержит в себе три кристалла: красный, синий и зелёный. Т.к. звезда у меня красная, соответственно и задействован будет только красный кристалл, а синий и зелёный - нет. А значит что из всего пакета передаваемых данных только треть будет нести полезную информацию, а остальная часть забита нулями.
Обе стороны звезды подключены параллельно друг-другу. Так выглядит схема каждой стороны:
Так получилось реализовать схему в железе:
После проверки выяснилось, что обойтись без потерь не получилось: один светодиод оказался нерабочим, ещё один "потерял" зелёный свет. С помощью сплава Розе и такой-то матери заменил нерабочий светодиод, и ещё раз проверил. Вот теперь всё работает... Но радость оказалась преждевременной: один из светодиодов, прогревшись, зависает и перестаёт пропускать сигнал дальше по цепи. >😕 🤦♂️ Остальные продолжают нормально работать.
WS2811Каждая такая микросхема управляет тремя обычными светодиодами по-отдельности и не имеет чётко привязанных цветов. Данные для работы получает таким же способом как WS2812B. Но деталей для обвязки потребуется уже больше.
Даташит на WS2811Кроме рекомендованных деталей, к каждому светодиоду добавил резистор для снижения яркости и нагрева, и получилась такая схема:
Как это ни странно, но возиться с WS2811 и отдельными светодиодами оказалось проще, чем с WS2812B. Оба варианта в живую рядом:
Блок управленияБлок управления на базе микроконтроллера ATTiny85, точно такой же как у гирлянды. Принцип работы тот же самый, только прошивка другая. Точнее прошивки, т.к. для каждого варианта светодиодов своя прошивка.
И фьюз-биты для микроконтроллера те же самые:
На включение звезда реагирует как и в предыдущей итерации на микроконтроллере ATTiny2313A: сначала кратковременно включит и погасит светодиоды, а потом запустит сохранённую программу. Или программу по-умолчанию, при запуске после прошивки. Всего же в текущей прошивке 28 программ, примеры их работы будут в конце видео.
Как в гирлянде есть ручное и автоматическое переключение программ с теми же принципами работы. Автопереключение отключается как в гирлянде - тумблером.
Появились и новые функции. Теперь, если во время работы программы нажать и удерживать кнопку ручного переключения в течение 5 секунд, то эта программа попадёт в список исключения, а звезда переключится на следующую. Исключённая программа неактивна и для автоматического переключения, и для ручного. Список исключения программ не ограничен, но все программы исключить не получится - хотя бы одна должна быть активна. Вернуть программы из списка исключения без перепрошивки можно только полной очисткой списка. Для этого нужно включить или перезагрузить блок управления с нажатой кнопкой ручного переключения программ.
Ещё одна функция, ранее опробованая на гирлянде, - буфер использованных программ - уменьшает вероятность слишком частого их повтора. Объём буфера - половина числа активных программ, но не более 10. Данные в буфере обнуляются при выключении или перезагрузке.
Немного информации о данных, хранящихся в EEPROMВ EEPROM ничего обязательного прошивать не надо, всё необходимое программа проверит и запишет сама при первом запуске. В прочем, некоторые ячейки при желании можно редактировать.
- Ячейки 0x2000-0x2002 содержат версию прошивки.
- В ячейке 0x2003 записан тип светодиодов, для которого написана прошивка, 0x11 или 0x12.
- Если в ячейке 0x2004 находится 0x10, то в памяти микроконтроллера записана прошивка пониженной яркостью светодиодов.
- В ячейке 0x2005 находится время для автопереключения программ в виде количества 20-секундных интервалов. По-умолчанию это 15(0x0F) интервалов, т.е. 5 минут. При прошивке его можно изменить в пределах от 3-х(0x03) до 180-ти(0xB4) интервалов, т.е. от 1 минуты до 1 часа. Если записать иное значение, то программа исправит его на стандартное.
- В ячейки 0x2006-0x2009 записываются флаги активных программ для функционирования списка исключения. Их тоже можно изменить по своему усмотрению. Но если обнулить флаги всех программ, то микроконтроллер исправит эту ошибку.
- Значение ячейки 0x200E обнуляется если закончится ресурс EEPROM, который не бесконечен.
- В ячейке 0x200F отображается номер используемого блока памяти для рабочих данных.
- Оставшаяся память (0x2010-0x21FF) разбита на блоки, в которых хранятся вспомогательные данные для работы звезды: номер текущей программы, первичное значение для ГПСЧ и количество записей в блок памяти.
ИтогиИтак, всё задуманное получилось.
Вот только иметь два одинаковых контроллера (для звезды и для гирлянды), выполняющих схожую работу не совсем оптимально. 🤔 Нужно будет их привести к общему знаменателю, а там может ещё чего добавится.
Все необходимые файлы (в том числе и файл прошивки) свободно доступны на
ЯндексДиске.
Небольшое видео про обе переделки звезды, в конце (с 14:23) демонстрация эффектов:
Этот проект отложу пока до осени, и потихоньку займусь кое-чем другим. Так выглядит это самое "другое":
Пока даже не представляю, что у меня получиться...