
С наступающим!
За последние несколько дней было как минимум две статьи про новогодние игрушки с батарейкой и светодиодами — шикарная тема, раздолье для творчества без ограничений технического задания. Вот и я замотивировался написать статейку на эту тему, тем более моя новогодняя игрушка уже давно готова.
Чётких целей на этот проект я себе не ставил, просто полёт фантазии, единственное — хотелось сделать миниатюрное устройство, чтобы можно было и на ёлку повесить, и на холодильник как магнитик. В качестве источника питания было решено использовать CR2032: неплохая ёмкость (220 мА·ч) для столь скромных габаритов, напряжение 3 В позволяет напрямую запитать процессор.

Новогодняя ель зелёная, текстолит зелёный — совпадение? Не думаю. Решено: разработаю миниатюрную печатную плату в форме новогодней ели. Питание от CR2032, а светодиоды — как будто гирлянда на ёлке.
На начальном этапе над схемотехникой сильно не думал, начал с печатной платы. Здесь было только одно ограничение — размер батарейки диаметром 20 мм. То есть нужно было нарисовать контур ёлочки таким образом, чтобы в него поместилась батарейка с минимальным зазором. Что ж, берём понравившуюся картинку из интернета:

Модифицируем, обрезаем лишнее, масштабируем и, наконец, импортируем в PCB-редактор, получаем такой контур и шелкографию:

Отлично, полдела сделано, можно заняться схемотехникой. Здесь особо нет ничего примечательного, кроме разве что микрофона, который используется для активации устройства. С этим микрофоном довольно странная история.
Микрофон Vesper VM1010 — единственный в своём роде, первый в мире микрофон с технологией ZeroPower Listening. Суть технологии в том, что в микрофон встроен пьезодатчик с ультранизким потреблением (10 мкА), и он включён всегда. Как только кто-то начинает говорить или появляется какой-то шум, этот датчик включает непосредственно сам микрофон, который имеет значительно большее потребление, и «будит» само устройство. Классное решение, аналоги мне не известны, а я их искал. Странная история в том, что этот микрофон и его старший брат с цифровой регулировкой чувствительности сняты с производства: купить их невозможно, и заменить их нечем.
В качестве процессора был выбран низкопотребляющий STM32L011. Задействованы все выводы, это позволило подключить 4 × 19 = 76 светодиодов. Есть миниатюрная кнопка для переключения световых эффектов.

Работа с трассировкой отняла львиную часть времени, потраченного на проект. Изначально я планировал сделать плату двухсторонней (двухслойной) с монтажом компонентов только с одной стороны для снижения стоимости. Сложность с трассировкой была в том, что с нижней стороны платы расположена батарейка, и её минусовой контакт занимает большую часть нижней стороны, то есть для трассировки доступен практически только TOP-слой.


Ещё из интересного с трассировкой — это как равномерно "размазать" по плате 76 светодиодов, чтобы между соседними было максимально одинаковое расстояние. Признаюсь, пытался сделать это с помощью ChatGPT, почти даже получилось, но сложность переноса координат с картинки на плату свела на нет эти попытки. Расставил просто на глаз — вроде не так плохо.

С платой всё, переходим к отладке прошивки. Процессор в спячке потребляет <0,3 мкА + 10 мкА микрофон; реальное измеренное потребление в режиме ожидания ~12 мкА. В режиме отображения эффектов потребление зависит от этих самых эффектов и свежести батарейки. Эффекты отображаются в течение 5 секунд, дальше происходит переход в сон, если нет звука — и так по кругу. Эффекты переключаются кнопкой и сохраняются в EEPROM; после смены батарейки всё будет так же, как и до.
Хотелось, чтобы это выглядело красиво, поэтому сразу был запланирован 10-битный ШИМ. Однако процессор слабоват для такого, поэтому пришлось ужаться до 9 бит и не совсем ШИМ. Дальше применяется гамма-коррекция, и получаем 64 уровня яркости для каждого светодиода. Непосредственное управление светодиодами работает в прерывании асинхронно от основного цикла. В основной цикл можно легко накидывать разные эффекты; если светотодиодам назначить конкретные координаты, применить пару формул, получается очень даже симпатично:
Спасибо за внимание. С наступающим Новым годом!
Комментарии (29)

osmanpasha
29.12.2025 10:38Разводка 76 светодиодов выглядит очень впечатляюще! Расскажите, есть какие-то принципы, как такое делать?

Dark_Purple Автор
29.12.2025 10:38Быстрого и сильнотокового ничего нет, поэтому простая ортогональная трассировка, вертикальные дорожки в top, горизонтальные в bottom, ну насколько это возможно. Большинство выводов процессора равнозначны, поэтому меняем их не стесняясь для удобства трассировки.

tklim
29.12.2025 10:38Выглядит красиво.
Но есть вопросы по схемотехнике:
Зачем транзисторы q1 q2? И резисторы подтяжки?
Где токоограничительные резисторы?
По идее, лучше было бы полевики ставить на source, а COLxx - sink.

osmanpasha
29.12.2025 10:38Присоединюсь к вопросу. И почему Q1 и Q2 управляются тем же сигналом PWM2, что и вторая группа светодиодов.
Видимо, R2..R5
4. А зачем вообще транзисторы, если в верхнем плече ток все равно течет через микроконтроллер? И зарезан он, вроде бы, до безопасных значений.

Dark_Purple Автор
29.12.2025 10:38Оказалось что без подтяжек R2-R5 при закрытых Q3-Q6 есть минимальное поразитное свечение светодиодов и это глазу, наверно емкость дорожек или самих транзисторов. Поэтому пришлось добавить подтяжки, а Q1 и Q2 нужны чтобы эти подтяжки работали только в активном режиме и в спячке через них ничего не утекало.
Нету их, выводы процессора имеют сопротивление + внутреннее сопротивление батарейки.

tklim
29.12.2025 10:38Светятся когда все выкл? Не должно такого быть, особенно если притянуть все COL к земле. Опять же просто подтяжка,даже килоом по 10 без всяких ключей должна спасти.
Без кода непонятно, как там сделано управление и мультиплексирование.
Ну и ещё, цеплять напрямую затворы к gpio - очень плохая идея.

Dark_Purple Автор
29.12.2025 10:38Иногда мерцают в динамике, но глазу это заметно.
просто подтяжка,даже килоом по 10 без всяких ключей должна спасти.
Говорю же, будет "теч" через диоды и эти резисторы в спячке.
Ну и ещё, цеплять напрямую затворы к gpio - очень плохая идея.
И чем же позвольте оведомиться?

tklim
29.12.2025 10:38Говорю же, будет "теч" через диоды и эти резисторы в спячке.
Куда течь? (Если только в спячке у вас gpio в hi-z)
И чем же позвольте оведомиться?
Тем что есть ёмкость затвора. И в момент коммутации ток через gpio может превысить допустимый. Что, особенно при питании от такого "слабого" источника как 2032, легко может может легко перезагрузить контроллер.

Dark_Purple Автор
29.12.2025 10:38Куда течь? (Если только в спячке у вас gpio в hi-z)
От плюса к минусу, это же очевидно)) Никто не идеален, светодиоды тем более, и хотя светодиод не горит при обратном включении, но ток всё равно потребляет, хотя и на порядки меньше чем при прямом включении. А если помножить этот обратный ток на 76, то получается не мало, с этим призваны бороться Q1 и Q2.
Тем что есть ёмкость затвора. И в момент коммутации..
В общем случае есть правда в ваших словах, но для моей схемы речь про пикофарады на затворе, а то и меньше, смех кароче.

tklim
29.12.2025 10:38На схеме не указано, но если больше 100пф или сотни, то всякое может быть. Тем более, у вас 5 затворов подключены к 4 gpio. Если их включать одновременно - шанс выше.
Сам такое наблюдал лет 20 назад, но там был авр и несколько irlml6402 (Cgate 600pf), коммутировавших питание датчиков. И один из них при включении устраивал перезагрузку, остальные ноги - норм.

sav13
29.12.2025 10:38Все таки на сколько больше возможностей дают адресные светодиоды. Сейчас появились в корпусах 1*1мм, 2*2мм и прочие крохотулечки
И разводить лучше и эффекты на порядок круче

Dark_Purple Автор
29.12.2025 10:38Всё так, мне известны такие светодиоды, но они требуют повышеного напряжения питания и у них бОльшее потребление, ещё они значительно дороже, я же хотел сделать чтобы от одной батарейки работало как можно дольше.

tklim
29.12.2025 10:38Помимо очевидных проблем с питанием и потреблением есть вопрос эстетики. Не всем нравится вырвиглазное мигание, как у аптечной вывески или разноцветность, как у пакистанских грузовиков.

sav13
29.12.2025 10:38Да что вы в самом деле. Это вам не МТХ-90 с "теплым ламповым светом" )))
Что в обычных индикаторных диодах, что в адресных одни и те же кристаллы. Просто управлять адресными на порядок легче в современных микроконтроллерах. А делать их яркими, бледными, красными, синими - дело вкуса каждого. Но если адресный RGB светодиод можно научит прикидываться обычным красным, то вот наоборот - нет.
Лично мне очень нравится к каждому НГ создавать какие то новые эффекты

tklim
29.12.2025 10:38Обычные/стандартные "адресные" диоды - они RGB. И получить нормальный белый там не получится, тем более с разной яркостью.
А так есть конечно RGB+W но я их в живую в мелком корпусе не видел,

kkuznetzov
29.12.2025 10:38Красиво, но память руками наверное сложно.

Dark_Purple Автор
29.12.2025 10:38Наверное, вот только сегодня нет причин паять такое самостоятельно, одна извесьная китайская контора любезно изготовила мои платы и запаяла компоненты.

Arhammon
29.12.2025 10:38Есть как минмум одна - ошибки, как в разработке, так и в производстве. Прототипы лучше собирать самостоятельно. Недавно например столкнулись с тем что заводские платы все в коротыше, оказалось генератор не тот вообще с другой распиновкой...

tklim
29.12.2025 10:38Недавно например столкнулись с тем что заводские платы все в коротыше, оказалось генератор не тот вообще с другой распиновкой...
Как вас успешное тестирование с "домашним" прототипированием спасет от подобной проблемы при запуске в серию?
Самое главное, что даже для ручного прототипа (более-менее сложная) плата все равно заказывается на стороне. И в случае с китайцами - разница времени получения готовой платы и запаянной - незначительна.

Arhammon
29.12.2025 10:38Как минимум когда ты сам собрал, проверил на всех этапах сборки, понимаешь что в серию идет работоспособное устройство. При переходе из ремонта/хобби в сферу промышленной разработки - выглядит дико, когда заказывается партия на удачу... и потом героически неделю анализируется что же пошло не так...

the_bat
29.12.2025 10:38Разводка, конечно, плотная получилась, но оно стоило того - эффекты переключения классные.

hmmh
29.12.2025 10:38в открытый доступ запланировано?

Dark_Purple Автор
29.12.2025 10:38Особого смысла нет, если вы читали текст то знаете что микрофон больше не доступен, повторить без переделок не получится.

tklim
29.12.2025 10:38В принципе и без микрофона пойдет.
И тут, если микрофон только как детектор шума, не смотрели в сторону стандартного электронного с подтяжку на те же самые 10мка и lpcomp контроллера в качестве детектора?
CyberexTech
Красиво сделано! + . С наступающим!