Долгожданная игрушка. Проигрывает Wav-файлы с голосовым меню.
В общем, идея такая:
Есть у детей игрушка, краб-сказочник. Детям нравится, но вот песенки и сказки на нем поменять трудно. Брали запасной картридж, но тот оказался другой модели. Да и новые сказки и песенки туда не закинешь, только то, что продают.
Решил сделать сам.
Вместо картриджа будет SD-карта, меняется легко, найти не проблема.
Звук будет в формате WAV, 8 bit, думаю, для детской игрушки - за глаза хватит.
Контроллер ATmega328, DAC на R-2R цепи, выбор аудиоусилителя пал на LM386.
Питание от Li-ion аккумулятора, 3.7 В.
Контент скачивается из интернета, конвертируется в Wav 22 КГц 8 бит.
Контроллер работает на частоте 16МГц, что при питании 3.3В выходит за рамки рекомендуемого по спецификациям от Atmel. Overclock порядка 20%.
Электроника
- Печатная плата:
Отладка
- Первый запуск оказался непростым.
Облегчил жизнь преобразователю, приклеил радиатор, поменял емкости на бóльшие по номиналу, обвязал LM386-ю.
Оказывается, динамик без корпуса вообще не звучит. Ставишь на банку - появляется бас, убираешь - все пропадает.
Сделал из подручных средств колонку. Сзади вырезал отверстие, оттуда слышен бас))
Записал на камеру, но все равно низких частот не слышно так, как в реальности.
После вспомнил, что у меня было 2 замечательных головки на 60 мм, съездил за ними к бабушке, забрал.
Оказались намного лучшего качества, чем те, что были у меня дома. Диаметр идеальный - 60 мм. Звук субъективно лучше прежнего китайского динамика в коробке, появились низкие частоты, увеличилась громкость, звук стал ярче. Наскоро запилил коробку))
Фазоинвертер заметно улучшает звучание на низких, даже мои домочадцы услышали разницу))
А вот сотовому моему новая коробка не понравилась, запись звука звучит хуже, чем со старой.
Новый динамик в стакане)
Навигацию реализовал следующим способом:
В корне накопителя лежат несколько файлов, которые нужны для озвучивания приветствия, прощания, и файл с фразой о том, что батарея разряжена.
В каждую папку закидываем файл __descr.wav с озвученным названием папки. Например, в папку со сказками кладется файл с озвученным словом: "Сказки", далее в главном меню навигация производится двумя кнопками с прослушиванием этого файла. Достаточно удобно и понятно.
После выбора папки нажимаем Play и начинает играть музыка. При повторном нажатии кнопки устройство переходит в режим паузы. Все как в стандартном плеере. Самым сложным оказалось научить железку переключаться между файлами вперед или назад по папке. Особенно досаждает процесс поиска предыдущего файла в папке. Все это с учетом того, что нормальный и читабельный код написать не удается из-за того, что при обертывании чего-то в функцию с последующим ее вызовом контроллер начинает валиться, возможная причина этого в том, что не хватает оперативной памяти и стек начинает пересекаться с данными. Ситуация достаточно неприятная...
Еще реализована функция воспроизведения последнего игравшего файла, с точки останоки. С падением вроде разобрался - похоже, сторожевой таймер отключал мк до того, как контроллер успевал произвести навигацию внутри файла, т.е. подсчитать нужный кластер внутри фат таблицы.
Разрядить аккумулятор достаточно трудно, заряда хватает на целых несколько дней. Устройство сигнализирует о низком заряде аккумулятора.
Корпус
- Корпус делался из фанеры, процесс на фото:
Дырка под головку:
Пришлось еще раз поменять динамик - не подошел:
Получилось совсем впритык к динамику... Повезло.
Вырезал металлическую панель, натыкал туда кнопок, посадил на болты. Панель будет сниматься в дальнейшем, чтобы добраться до SD-карты при необходимости обновить содержимое.
Пока сверлил дырки под светодиоды, отколол кусок фанеры.
Придется много шпаклевать...
Вырезал дырку под выключатель питания. Там же порт для зарядного устройства.
Забыл совсем про отверстие под фазоинвертер.
Прикрутил к боковой стене аккумулятор на пластину от УПС-ки.
Прикрутил остальные панели, корпус наконец-то принял задуманную форму.
Лицевая панель без динамика, после шкурения:
В принципе, большинство косяков удалось убрать шкуркой, по бокам последние панели получились с небольшой ступенькой. Затер шпаклевкой.
Лицевая часть
- Дошло-таки до меня, как переднюю панель с сеткой сделать.
1. Взял фанеру, просверлил дыру в центре, загнал болт, зажал в токарном станке. Прикинул размер дырки, наметил.
Важно было сделать дырку максимально ровно.
Зажал мелкую фрезу в сверлильный станок и снял фаску с задней стороны под динамик.
Со временем наловчился это делать, стало получаться ровнее))
Выфрезировал углубление под уши динамика и болты.
В паз вырезал сетку, как-то так:
Вот так с лицевой стороны выглядит:
А еще я нашел ручку.
И старые советские резиновые ножки.
Финишная отделка
- Скруглил края.
В коробке без фазоинвертора играет вполне сносно, жаль, динамик 8-миомный, громкость упала немного.
Шпаклевка перед окраской.
Другой вариант устройства от Buba_Chkhadze.