В основе этого давнего DIY проекта — известная копилка от AlexGyver. Я решил не просто повторить, а довести идею до ума: напечатал новый корпус на 3D-принтере, переработал схему, развел печатную плату и изготовил её вручную. Что из этого вышло — читайте в статье!
Принцип работы
В основе лежит метод оптического прерывания. При прохождении монеты через луч инфракрасного светодиода она частично перекрывает излучение, направленное на фототранзистор. Чем меньше диаметр монеты, тем меньше перекрытие: 1 рубль дает минимальное падение напряжения на фототранзисторе, 5 рублей — максимальное.
Система записывает сигнал с привязкой ко времени пролета, получая зависимость падения напряжения от времени. Затем эта кривая сравнивается с калибровочными эталонами для каждого номинала, заранее сохраненными в памяти.
В процессе работы устройство подсчитывает количество монет каждого номинала и умеет выводить итоговый отчет.
Исходники на GitHub
Принципиальная схема
Зарядный модуль
Зарядный модуль для аккумулятора 18650 реализован по классической схеме с использованием 3-х микросхем:
TP4056 — заряжает аккумулятор стабильным током до 1 А до достижения 4,2 В;
DW01A — контроллер защиты отслеживает напряжение на аккумуляторе и ток через нагрузку, обеспечивая защиту от переразряда ниже 2,4 В, перезаряда выше 4,3 В и перегрузки по току (КЗ);
FS8205A - сдвоенный N-канальный MOSFET, который разрывает цепь между аккумулятором и схемой по сигналу от DW01A (при переразряде, перезаряде или КЗ), переходя в режим блокировки и требуя подключения зарядного устройства для выхода из этого режима.
Индикация процесса зарядки стандартная: красный светодиод горит во время зарядки, зеленый загорается по окончании.
Повышающий преобразователь
Для питания Arduino и дисплея используется повышающий DC-DC преобразователь на микросхеме MC34063. Входное напряжение: 3–4,2 В, выходное: 5 В.
Первоначальная схема:
Arduino питалась напрямую от аккумулятора, а повышающий преобразователь и дисплей включались отдельно по сигналу от Arduino через MOSFET. Главный недостаток: при снижении напряжения на аккумуляторе до 3,9 В происходило преждевременное отключение микроконтроллера, хотя аккумулятор был еще далеко не разряжен.
Итоговая схема:
Arduino запитывается от непрерывно работающего повышающего преобразователя MC34063. Это позволило стабилизировать напряжение на входе микроконтроллера на уровне 5 В, благодаря чему система сохраняет полную работоспособность даже при снижении напряжения на аккумуляторе до 3 В. Дисплей по-прежнему управляется отдельно по сигналу от Arduino через транзисторный ключ.
Цена вопроса: автономность
Однако стабилизация питания имела обратную сторону — рост энергопотребления:
Активный режим: 124 мА
Режим сна: 4 мА, из которых: 0,07 мА приходится на Arduino, 3,93 мА — собственное потребление преобразователя MC34063
Таким образом, в режиме сна 97% всего потребления приходится на микросхему MC34063 и лишь 3% — на микроконтроллер. Аккумулятора емкостью 2000–3000 мА·ч хватает примерно на 20 дней.
Для дальнейшего снижения энергопотребления необходима замена микросхемы преобразователя на более экономичную, например MT3608, у которой собственный ток намного ниже.
UPD: Осознание ошибки
Ошибки, допущенные в данном проекте, стали очевидны лишь спустя месяц, когда я приступил к разработке «Метеостанции». Оптимизируя энергопотребление в новом устройстве (снижение частоты МК и порога BOD), я понял: это решение идеально подошло бы и для «Копилки».
Исходная схема, где Arduino во сне питалась через постоянно работающий повышающий преобразователь, оказалась неэффективной. Правильнее было запитать преобразователь через транзистор, а Arduino подключить напрямую к аккумулятору. Благодаря сниженному порогу BOD микроконтроллер не отключался бы даже при падении напряжения до 2,7 В, а преобразователь просыпался бы только для вывода информации на дисплей.
Такая доработка могла бы увеличить автономность устройства до одного года.
Устранение помех
Повышающий импульсный преобразователь на MC34063 создавал значительные помехи, из-за чего Arduino работала некорректно: система самопроизвольно засчитывала отсутствующие монеты.
Начальная версия (навесной монтаж): Для подавления помех достаточно было установить электролитический конденсатор 470 мкФ.
После перехода на печатную плату (ПП): Этой меры оказалось недостаточно. Для надежного подавления помех потребовался комплекс мер:
Добавлен LC-фильтр с частотой среза 2,3 кГц
Топология платы изменена — преобразователь максимально удален от Arduino и аналоговой части (фототранзистор)
Разделение земель — аналоговая земля отделена от силовой
В результате устройство стало работать стабильно, а ослабление пульсаций составило 18,6 дБ, что соответствует снижению уровня помех в 8,5 раза по напряжению.
Сравнение осциллограмм до и после применения фильтра приведено на рисунках ниже


Печатная плата в Altium Designer
Готовое устройство на печатной плате
ПП изготовлена вручную фоторезистивным методом.
Для защиты токопроводящих дорожек от окисления и коротких замыканий на плату нанесена паяльная маска, сформированная методом УФ-экспонирования через фотошаблон. Также это придало устройству красивый профессиональный вид.
Для обеспечения компактности ПП и гибкости размещения компонентов в корпусе устройства — аккумулятора, фототранзистора, ИК-светодиода, кнопки включения и дисплея — их подключение к основной плате реализовано через разъемы типа PLS.
Такое решение позволило:
Оптимально разместить элементы в пространстве корпуса
Упростить сборку и разборку устройства
При необходимости легко заменять компоненты без перепайки
Корпус
3D-моделирование выполнено в SolidWorks, печать корпуса — из ABS-пластика.
Особенности конструкции:
Крепление: дисплей и аккумуляторный отсек зафиксированы винтами М3 через вплавляемые гайки, запрессованные в пластик корпуса
Монтаж платы: ПП удерживается пластиковыми клипсами
Компоновка: внутреннее пространство разделено перегородкой, изолирующей электронику от монет
Доступ к монетам: задняя крышка скользит по направляющим, что позволяет легко и быстро извлекать содержимое
Интерфейсы: разъем зарядки и светодиодная индикация выведены на левую грань корпуса
Хочу сказать отдельное спасибо Передовой инженерной школе «ЛЭТИ» и аспиранту кафедры ЭПУ Кушнаревой Олесе Андреевне за помощь и предоставленную возможность в реализации корпуса для проекта.
Демонстрация работы устройства
Итог
Проект «Копилка» прошел полноценный путь развития: от первого прототипа в DIY-корпусе с навесным монтажом до законченного устройства на печатной плате в индивидуальном корпусе, изготовленном с помощью 3D-печати.
Главный вывод, который я сделал для себя: энергопотребление нужно закладывать на начальных этапах разработки устройства, а не дорабатывать после сборки.
Подписывайтесь, если интересны DIY проекты и истории их (не всегда идеальной) разработки. Пишите в комментарии — что я упустил? Как бы сделали вы?
Комментарии (14)

sergyk2
01.03.2026 13:09красиво и аккуратно всё реализовано.
разве что желто-зеленый индикатор выглядел бы симпатичнее.

dmitrik4321
01.03.2026 13:09Спасибо за статью и проект (точнее за доработку имеющегося). Оставь ссылочку на диск с исходниками, в идеале гитхаб

andreyyykovvv Автор
01.03.2026 13:09Вот исходники (прошивка, корпус, печатная плата): https://github.com/Andrey3245/Project-2-Smart-moneybox

green88
01.03.2026 13:09Прошивка:
Только не прошивка, а проект в данном случае. Прошивка - это ХЕКС файл (без исходных текстов), который записывается программатором или загрузчиком.

RezonanS1
01.03.2026 13:09Рекомендую на будущее делать окошко под экран по стеклу ЖК дисплея, а не по его рамке. Выглядеть будет лучше.

andreyyykovvv Автор
01.03.2026 13:09Как-нибудь попробую) Нашел пример в интернете, хоть и дисплей получается утоплен, но смотрится хорошо


RezonanS1
01.03.2026 13:09Да, можно даже чуть меньше, чтобы рамку вообще не видно было. Условно по символам с небольшим запасом по краям ~1 мм.
little-brother
Для большей времени автономности лучше поставить e-Ink экран. Если пробуждать МК только при опускании монеты, поставив на входе микро-переключатель с рычагом, то в остальное время МК может спать. В этом случае зарядка не потребуется вовсе.
На мой любительский вкус часть отвечающая за заряд, - переусложнена. Зарядку и защиту можно и на готовых модулях было реализовать, а еще проще перейти на 3.7В аккум со встроенной защитой или совсем отказаться от зарядки.
И да, выбранный МК жирноват для подобной задачи.
andreyyykovvv Автор
Спасибо за развернутый комментарий!
Да, e-lnk экран поможет сохранить заряд, но мне больше по душе LCD1602) Пришлось для большей яркости и контрастности 1602 добавить повышающий преобразователь до 5в. Пусть схема чуть сложнее, зато результат именно такой, как хотелось.
Почти всё время мк проводит в режиме глубокого сна
(LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF);Внутри монетоприемника приклеены две полоски металла - они работают как контакты. При опускании монеты контакты замыкаются. Это замыкание вызывает аппаратное прерывание:
attachInterrupt(0, wake_up, CHANGE);Функция
wake_upвключает периферию и сбрасывает таймер:void wake_up() { digitalWrite(disp_power, 1); // Включить дисплей digitalWrite(LEDpin, 1); // Включить подсветку digitalWrite(IRpin, 1); // Включить датчик standby_timer = millis(); // Сбросить таймер ожидания }После пробуждения выполнение возвращается в основной цикл. Здесь система проверяет флаг
sleep_flag— индикатор того, что система только что вышла из сна. Если флаг поднят, значит, дисплей был обесточен и требует полной переинициализации: вызываетсяlcd.init(), после чего на него выводится актуальная информация. Затем флаг сбрасывается вfalse, и система переходит к распознаванию монет.В статье упустил упоминание этого момента.
Схема для заряда взята с данного популярного модуля. Перенес её на пп, чтобы не навешивать целый модуль отдельно.
Да, можно было поставить аккумулятор со встроенной защитой — тогда из схемы можно было бы исключить DW01A и его обвязку
Тут вы абсолютно правы: Arduino для такой задачи великовата, однако наличие нескольких штук в запасе перевесило аргументы в пользу перехода на другой мк)
green88
Зачем вообще здесь аккумулятор и этот огород с повышателями/защитами? 2 или 3 ААА и ни о чём не думай. Или тогда и писать нечего?
andreyyykovvv Автор
Можно и на AAA, конечно. Но при питании LCD1602 от батареек он становится тусклым и плохо читаемым. Здесь же повышайка держит стабильные 5В, и экран светит ярко до самого конца заряда. Плюс мне было интересно разобраться с платой защиты и повышайкой. Проект учебно-показательный, так что «огород» — осознанная часть процесса)
green88
Ну, если потренироваться, тогда да. А при низком напряжении, для контраста LCD делается преобразователь в минус на 3-х детальках.