С наступающим!

За последние несколько дней было как минимум две статьи про новогодние игрушки с батарейкой и светодиодами — шикарная тема, раздолье для творчества без ограничений технического задания. Вот и я замотивировался написать статейку на эту тему, тем более моя новогодняя игрушка уже давно готова.

Чётких целей на этот проект я себе не ставил, просто полёт фантазии, единственное — хотелось сделать миниатюрное устройство, чтобы можно было и на ёлку повесить, и на холодильник как магнитик. В качестве источника питания было решено использовать 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)


  1. CyberexTech
    29.12.2025 10:38

    Красиво сделано! + . С наступающим!


  1. osmanpasha
    29.12.2025 10:38

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


    1. Dark_Purple Автор
      29.12.2025 10:38

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


  1. tklim
    29.12.2025 10:38

    Выглядит красиво.

    Но есть вопросы по схемотехнике:

    1. Зачем транзисторы q1 q2? И резисторы подтяжки?

    2. Где токоограничительные резисторы?

    3. По идее, лучше было бы полевики ставить на source, а COLxx - sink.


    1. osmanpasha
      29.12.2025 10:38

      1. Присоединюсь к вопросу. И почему Q1 и Q2 управляются тем же сигналом PWM2, что и вторая группа светодиодов.

      2. Видимо, R2..R5

      4. А зачем вообще транзисторы, если в верхнем плече ток все равно течет через микроконтроллер? И зарезан он, вроде бы, до безопасных значений.


      1. Dark_Purple Автор
        29.12.2025 10:38

        1. в нижнем плече току тоже надо через что-то протекать))


    1. Dark_Purple Автор
      29.12.2025 10:38

      1. Оказалось что без подтяжек R2-R5 при закрытых Q3-Q6 есть минимальное поразитное свечение светодиодов и это глазу, наверно емкость дорожек или самих транзисторов. Поэтому пришлось добавить подтяжки, а Q1 и Q2 нужны чтобы эти подтяжки работали только в активном режиме и в спячке через них ничего не утекало.

      2. Нету их, выводы процессора имеют сопротивление + внутреннее сопротивление батарейки.


      1. tklim
        29.12.2025 10:38

        Светятся когда все выкл? Не должно такого быть, особенно если притянуть все COL к земле. Опять же просто подтяжка,даже килоом по 10 без всяких ключей должна спасти.

        Без кода непонятно, как там сделано управление и мультиплексирование.

        Ну и ещё, цеплять напрямую затворы к gpio - очень плохая идея.


        1. Dark_Purple Автор
          29.12.2025 10:38

          Иногда мерцают в динамике, но глазу это заметно.

          просто подтяжка,даже килоом по 10 без всяких ключей должна спасти.

          Говорю же, будет "теч" через диоды и эти резисторы в спячке.

          Ну и ещё, цеплять напрямую затворы к gpio - очень плохая идея.

          И чем же позвольте оведомиться?


          1. tklim
            29.12.2025 10:38

            Говорю же, будет "теч" через диоды и эти резисторы в спячке.

            Куда течь? (Если только в спячке у вас gpio в hi-z)

            И чем же позвольте оведомиться?

            Тем что есть ёмкость затвора. И в момент коммутации ток через gpio может превысить допустимый. Что, особенно при питании от такого "слабого" источника как 2032, легко может может легко перезагрузить контроллер.


            1. Dark_Purple Автор
              29.12.2025 10:38

              Куда течь? (Если только в спячке у вас gpio в hi-z)

              От плюса к минусу, это же очевидно)) Никто не идеален, светодиоды тем более, и хотя светодиод не горит при обратном включении, но ток всё равно потребляет, хотя и на порядки меньше чем при прямом включении. А если помножить этот обратный ток на 76, то получается не мало, с этим призваны бороться Q1 и Q2.

              Тем что есть ёмкость затвора. И в момент коммутации..

              В общем случае есть правда в ваших словах, но для моей схемы речь про пикофарады на затворе, а то и меньше, смех кароче.


              1. tklim
                29.12.2025 10:38

                На схеме не указано, но если больше 100пф или сотни, то всякое может быть. Тем более, у вас 5 затворов подключены к 4 gpio. Если их включать одновременно - шанс выше.

                Сам такое наблюдал лет 20 назад, но там был авр и несколько irlml6402 (Cgate 600pf), коммутировавших питание датчиков. И один из них при включении устраивал перезагрузку, остальные ноги - норм.


  1. sav13
    29.12.2025 10:38

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

    И разводить лучше и эффекты на порядок круче


    1. Dark_Purple Автор
      29.12.2025 10:38

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


    1. tklim
      29.12.2025 10:38

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


      1. sav13
        29.12.2025 10:38

        Да что вы в самом деле. Это вам не МТХ-90 с "теплым ламповым светом" )))

        Что в обычных индикаторных диодах, что в адресных одни и те же кристаллы. Просто управлять адресными на порядок легче в современных микроконтроллерах. А делать их яркими, бледными, красными, синими - дело вкуса каждого. Но если адресный RGB светодиод можно научит прикидываться обычным красным, то вот наоборот - нет.

        Лично мне очень нравится к каждому НГ создавать какие то новые эффекты


        1. tklim
          29.12.2025 10:38

          Обычные/стандартные "адресные" диоды - они RGB. И получить нормальный белый там не получится, тем более с разной яркостью.

          А так есть конечно RGB+W но я их в живую в мелком корпусе не видел,


  1. kkuznetzov
    29.12.2025 10:38

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


    1. Dark_Purple Автор
      29.12.2025 10:38

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


      1. Arhammon
        29.12.2025 10:38

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


        1. Dark_Purple Автор
          29.12.2025 10:38

          Не собираюсь спорить, какждый сам себе злобный буратино.


        1. tklim
          29.12.2025 10:38

          Недавно например столкнулись с тем что заводские платы все в коротыше, оказалось генератор не тот вообще с другой распиновкой...

          Как вас успешное тестирование с "домашним" прототипированием спасет от подобной проблемы при запуске в серию?

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


          1. Arhammon
            29.12.2025 10:38

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


      1. kkuznetzov
        29.12.2025 10:38

        А это интересно. Раньше JLCPCB так делала. Сейчас кто?


  1. the_bat
    29.12.2025 10:38

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


    1. Dark_Purple Автор
      29.12.2025 10:38

      Спасибо!


  1. hmmh
    29.12.2025 10:38

    в открытый доступ запланировано?


    1. Dark_Purple Автор
      29.12.2025 10:38

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


      1. tklim
        29.12.2025 10:38

        В принципе и без микрофона пойдет.

        И тут, если микрофон только как детектор шума, не смотрели в сторону стандартного электронного с подтяжку на те же самые 10мка и lpcomp контроллера в качестве детектора?