MP3 плеер для танка
Условия эксплуатации танка, как известно, весьма суровые: пыль и вибрация, широкий диапазон рабочих температур, большие изменения влажности. Именно поэтому обойтись дешёвыми китайскими платами с Aliexpress здесь не получится. К тому же плеер должен органично вписываться в существующий конструктив, не мешать орудиям и рычагам управления. А вот большой объем памяти наоборот не требуется, воспроизводить нужно два трека: выстрел из пушки и пулемёт.
Именно с таким техническим заданием два года назад ко мне обратился создатель проекта «ТАНКОДРОМ» Сергей Акимов. Речь идёт не о настоящем танке, а об аттракционе, пользующемся популярностью у подрастающего поколения. Дело в том, что танки совершенно беззвучны, не считая рёва бензинового двигателя, посетителям совершенно нечего слушать. По задумке на панели внутри танка должны располагаться две кнопки, нажатие которых сопровождается световой индикацией и звуками выстрелов.
Основные технические требования ясны — устройство должно содержать память для хранения треков, кодек, аудио-усилитель и микроконтроллер с поддержкой USB. Выбирать между аппаратным кодеком или программным долго не пришлось. Изделия штучные и себестоимость решений окажется сопоставимой, а вот трудозатраты совершенно различны. Компания VLSI производит великолепные кодеки по доступным ценам. А в качестве микроконтроллера я выбрал знакомый многим STM32F103. В общую картину органично вписался усилитель D-класса TDA8932B с выходной мощностью до 30 Вт.
Опытный образец был собран на макетных платах, тех самых, дешевых китайских. Перед тем как лезть в воду не лишним будет оценить брод.
Макетирование MP3 плеера
Примерно через месяц вечерне выходного времяпрепровождения отладка заработала как надо. Память читается, треки воспроизводятся, светодиоды мигают. Но как долог бывает путь от макетной платы до работающего изделия…
Схемотехника
Первый образец запустился с горем пополам. И вроде все схемы известны, и отладки функционируют и документации куча. Откуда ошибки? Развожу руками. Где-то глаз замылился, где-то номинал не досмотрел, да и китайские платы не без греха. Работает «как-то» и работает хорошо — два совершенно разных мира. При макетировании, например, фоновый шум можно списать на длинные проводники и отсутствие общего полигона земли. При макетировании проблематично оценить токопотребление. А о том, что где-нибудь забыл резистор или конденсатор узнаешь, когда плата будет полностью готова.
Опытный образец MP3 плеера
С термоклеем и проводами не будем горевать, будем танцевать. В книгах по психологии написано, что ошибка — это самый лучший результат, мол, так ты чему-то научился. И пока авторы в своих книгах приводят самые лучшие результаты, мы займемся второй версией.
Вместе с уборкой термосоплей потребовалось переделать и схему питания. Линейные стабилизаторы рассеивают непозволительно много энергии, а резисторы обратной связи спускают ток на землю пока устройство крепко спит.
Поясню работу схемы. Аудио усилитель работает в моно-режиме. Устройство имеет два входа для кнопок и четыре канала для светодиодов. Яркость и громкость звука регулируются программно через потенциометры. Память на 4 Мб необходима для записи нескольких коротких треков. Схема имеет защиту от переполюсовки, может питаться как от внешнего источника, так и от компьютера через USB (работает только цифровая часть).
Схема MP3 плеера на STM32
Особое внимание трассировке кодека и усилителя. К счастью производитель снабдил разработчиков всей необходимой информацией. Перечитав стопку мануалов и имея под рукой первый отлаженный образец делаем релиз.
MP3 плеер для аттракциона
И все-таки ошибка забралась и сюда, в посадочное место транзистора VT5. Переворачиваем, гнем ножки, едем дальше.
Программа
Ключевой момент в ПО — обеспечить своевременную передачу данных аудиокодеку. Все остальные функции не так критичны ко времени. Микросхема VS1003B имеет внутренний FIFO на 8 кБ, что существенно разгружает микроконтроллер. Однако с памятью работаем через библиотеку FatFs, а это не так быстро, даже с тактовой частотой 72 МГц.
Не забываем, что кодек сам по себе является DSP-процессором. А потому взаимодействие потоков в мультипроцессорной системе mp3-плеера имеет следующий вид.
Схема взаимодействия микроконтроллера и кодека
Знатокам конечно понятно, что речь идет о простом прерывании и загрузки данных. Тем не менее, лучше на ранних стадиях осознать этот момент и правильно встроить управляющую логику. В программе используется небольшой диспетчер задач, который вызывает необходимые функции по времени или по прерываниям.
Схема работы диспетчера задач
Бесценны библиотеки работы с USB от STMicroelectronics и FatFs Elm Chan`a. Бесценны и их подробные описания.
Часть разработанного кода не вошла в окончательную версию программы. Это загрузчик для обновления прошивки через USB и эквалайзер на кодеке VS1003B. В обоих случаях были весомые причины отказаться от наработок. Бритва Оккама использовалась со слезами на глазах.
Конструкция
Доставляет ли работа человеку удовольствие или нет, понятно по результату. Далее немного о творчестве Акимова Сергея.
Панель напечатана на 3D принтере, зашпатлевана, загрунтована, покрашена. Даже винтики подбирались с особым вниманием — с круглой шляпкой, подходящие по стилю. А плата плеера закреплена с задней стороны под водой.
Панель танка в собранном виде
На рисунке показан только центральный элемент панели, без кнопок, последние крепятся на боковых частях.
Сборка
Одно дело разработать, другое — собрать. Особенно когда на дворе середина 2021-го года, из-за дефицита полупроводников комплектация превратилась из дешёвой, в отсутствующую. Это прежде всего касается микроконтроллера STM32F103C8T6. Заглядываю в таблицу с оценкой себестоимости от февраля 2021-го: 200 рублей на контроллер с обвязкой. А к моменту сборки изделия контроллер стоил не менее 600 рублей!
Я покупал отладки «Jlink для SWD» и спаивал с них микроконтроллеры. Китайцы видимо вскоре поняли, что платы с STM32F103 стоят почти в три раза дешевле голых микросхем и вторую партию мне не отправили. К счастью необходимым количеством я успел закупиться. Похожим образом обстояло дело и с усилителем TDA8932B, который в собранном модуле стоил в два раза дешевле.
Добавим в трагикомедию историю с печатными платами. Может быть жадность, а может прагматичный расчет подтолкнули меня разместить заказ на pcbway.com. Проверенный поставщик, с которым не было проблем. Однако заказ завис на таможне и был возвращен производителю, который в свою очередь отправил мне его вторично. Зачем я выбрал и оплатил ускоренную доставку, если платы пришли мне через 6 месяцев? К этому времени изделия уже были собраны, после 60-и дней ожидания заказ был размещен повторно на pcbrussia.ru.
Итог
«Как уже известно, зритель любит детективные фильмы. Приятно смотреть картину, заранее зная, чем она кончится». Проницательный читатель догадался, что счастливого конца не случилось. Ничего трагичного, впрочем, тоже не произошло. Просто изделие не смогло занять нишу, для которой разрабатывалось.
Во-первых звуковое сопровождение не вызвало яркой реакции и интереса у посетителей. Да и различить на фоне работающего двигателя звук плеера весьма проблематично. Во-вторых потребляемый ток при высокой выходной громкости динамика составляет более 200 мА. Так как устройство работает от аккумулятора, последний придется постоянно заряжать. Также имеется минимальный рабочий порог по напряжению порядка 11 В, ниже которого усилитель уходит в состояние защиты. Эти очевидные проблемы совсем не очевидны в начале пути.
Себестоимость изделия на 10.11.2021 составила 1640 рублей при цене микроконтроллера 333 рубля. Однако сборка и накладные расходы в этой цифре не учтены, промолчим и про стоимость разработки.
Воспоминания же остались только положительные. Сергей отличный инженер и с ним было интересно работать. Накопленный опыт, схемотехнические и программные решения тоже не пропали, а кочуют из проекта в проект.
Все желающие могут собрать представленный плеер самостоятельно. В архиве находятся Gerber-файлы, прошивка в формате hex, BOM, руководство пользователя.