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

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

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

Спасибо за внимание. С наступающим Новым годом!