1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Плеер wav файлов на микроконтроллере Attiny85 своими руками

Аудио плеер на ATtiny85

Этот музыкальный плеер разработал японский инженер ChaN – так он представляется на своем сайте http://elm-chan.org/. Адрес странички с оригинальным описанием плеера http://elm-chan.org/works/sd8p/report.html. Музыкальный проигрыватель настолько хорош и оригинален, что его просто невозможно не повторить! По крайней мере, мне не попадалось описание другого аудио плеера, который проигрывает WAV файлы МОНО и СТЕРЕО 8 и 16 бит с частотой дискретизации до 48 КГц, записанные в стандартной файловой системе FAT или FAT32 на SD карточке, причем поддерживаются карты объемом более 2 ГБ. И при этом он собран всего на одном 8-и выводном микроконтроллере и нескольких пассивных компонентах. Идеальное решение для музыкальной игрушки!

Автор разработал три варианта плеера – МОНО 8 бит, СТЕРЕО 8 бит и МОНО 16 бит. Они немного отличаются программно и схемотехнически. Автор предлагает использовать карту памяти MicroSD и подключить динамик непосредственно к микроконтроллеру. Но, учитывая, что напряжение питания всего около 3 вольт, громкость звучания будет небольшой. На мой взгляд, лучше использовать внешний усилитель НЧ, это позволит в полной мере оценить качество звучания музыкальной игрушки. Кроме того, SD карточка удобнее в обращении, чем MicroSD. Очень уж последняя мала, ее применение оправдано только в случае необходимости получить предельно малые габариты.

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

Моя плата разработана для варианта STEREO 8 бит, если решено сделать другой вариант проигрывателя, плату нужно немного подкорректировать. Размер платы 30×50 мм. Контроллер в корпусе SOIC-8, для его программирования необходимо временно подпаять проводники к нужным выводам контроллера, для этого на плате предусмотрены контактные площадки. Перед тем, как изготавливать плату, убедитесь, что расположение выводов разъема для SD карточки соответствует плате. Дело в том, что разъемы разных производителей могут несколько отличаться, гораздо проще подкорректировать чертеж, чем изгибать выводы и перерезать дорожки на уже готовой плате.

Музыкальные файлы нужно предварительно записать в корневой каталог SD карты, либо в каталог с именем «WAV». Расширение всех файлов должно быть «wav», файлы с другим расширением проигрываться не будут. Поддерживается только формат PCM, это стандартный формат, в который легко можно конвертировать файлы с аудио CD либо из MP3.

Частота дискретизации может быть от 8 до 48 КГц, Если будет решено сделать МОНО вариант плеера, файлы тоже должны быть МОНО, в СТЕРЕО файлах будет проигрываться в этом случае только один канал. Если выбран вариант 8 бит, нет необходимости переводить файлы в этот формат, 16-и битные файлы тоже проигрываются, но с качеством 8 бит. Просто размер 16-и битных файлов в 2 раза больше, чем 8-битных. Однако, учитывая, что сейчас карты памяти объемом менее 2 ГБ практически исчезли из продажи, это не имеет существенного значения. Ведь 2 ГБ это более трех часов звучания СТЕРЕО 16 бит.

В зависимости от выбранного варианта схемы, в контроллер должен быть запрограммирован разный файл прошивки. Установка FUSE бит также различается. Подробности читайте в файле read.txt в архиве с прошивками. В варианте СТЕРЕО 8 бит и МОНО 16 бит задействован вывод RESET контроллера, поэтому программирование лучше проводить в режиме HV (высоковольтное программирование). В принципе, запрограммировать можно и в режиме ISP, который поддерживают все программаторы, но только один раз. Сначала нужно запрограммировать HEX файл прошивки, а затем FUSE биты. После этого перепрограммировать контроллер можно будет только в режиме HV, а этот режим поддерживают не все программаторы. Для прошивки МОНО 8 бит никаких ограничений нет, т.к. вывод RESET в этом варианте не используется.

Эта музыкальная игрушка не требует налаживания. Единственное, что может потребоваться – это подобрать номинал резистора R3 для варианта МОНО 16 бит. Лучше это сделать на слух, записав файл с чистым музыкальным тоном 400…800 Гц и, прослушивая его, подобрать номинал по наиболее чистому звучанию. Теоретически он должен быть в 256 раз больше R1. Однако качество звучания даже в режиме 8 бит более чем достаточно для музыкальной шкатулки или игрушки. По крайней мере, оно на порядок выше, чем у популярных микросхем цифровых магнитофонов ISD14xx, ISD16xx.

Читать еще:  Дама с «перчиком» и ее свита

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

Проигрывание музыкальных фрагментов начинается после включения питания или установки карты памяти. Имейте в виду, что максимально допустимое напряжение питания 3,6 В, потребляемый ток при этом около 20 МА. Все файлы проигрываются по кругу, кнопка SB1 – переход к следующему.

Автор не делает секрета из своей разработки, все файлы проекта доступны для скачивания. Но я бы не советовал что-то в них менять и дорабатывать. Лучше вряд ли удастся сделать! Просто используйте один из трех HEX файлов прошивки.

Если возникло желание добавить паузу, перемотку назад и другие сервисные режимы – не мучайтесь, просто зайдите в магазин бытовой электроники и приобретите MP3 плеер. Их выбор достаточно велик и цены вполне доступные. А это именно игрушка – основа для музыкальной шкатулки, открытки и т.п. Ну и наглядное пособие для демонстрации возможностей простых и дешевых микроконтроллеров.

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

В заключение, предупреждая возможные вопросы, хочу добавить, что заменить ATtiny85 другим контроллером здесь нельзя. Дело не в доработке программы, а в особенностях внутренней периферии этой серии контроллеров. Даже если у вас в «ящике с хламом» лежит куча ATtiny2313, придется приобрести именно ATtiny85.

AVR Lab устройства на микроконтроллерах AVR

Форум по AVR

WAV плеер на attiny85 от Elm Chan’a

Один не хороший человек заказал собрать устройство воспроизведения звука. Нужно было имитировать звук выстрела оружия(пулемета, пистолета и тд.тп)или проигрывать отрывки музыкальных файлов. Требования к качеству не приводились, то есть качество звука могло быть минимальным.

Из задачи я понял что нужен цифровой диктофон или устройство воспроизведения музыкальных файлов с цифрового носителя информации, в данном случаи использовалась SD карта памяти. Простота использования карты памяти в том, что она дешевая, вместительная, и сам звук можно быстро заменить (чего нельзя сделать если например звук записан на отдельной микросхеме памяти типа 24c64 или at45db161).
Варианты использования микросхем типа ISD1400 отпал сразу, по причине труднодоступности самих микросхем да и стоимость при условии наличия не порадовала. Из готовых решений в Интернете попались под руку следующие два варианта:
1. Устройство из инструкции по применению микроконтроллеров AVR от самого производителя Atmel под номером AVR335
Где в качестве носителя информации используется микросхема Data Flash памяти at45db161.
2. Схема проигрывателя WAV файлов от японца по имени Elm Chan. В качестве носителя информации SD карта памяти.

Вариант 1:
Отпал практически сразу по причине того, что исходный код в документации был в синтаксисе 2007-го года, простое копирование кода в AVR Studio v4.16 не увенчалось успехом. Пришлось допиливать код напильником в прямом смысле.
Применение в проекте микросхемы Data Flash памяти at45db161 ставило определенные требования к корпусу микросхемы. А именно то, что вариант микросхемы at45db161 в корпусе, который применен в проекте имел очень маленький шаг между выводами. Корпус микросхемы использован tsop28, собрать проект на печатной плате не вышло, такой ширины дорожки оказались непосильной задачей для меня лично. Устройство было собрано в виде макета но проверить работоспособность так и не удалось из-за наличия довольно значительной схемы фильтров необходимой для воспроизведения звука. Аналогичный вариант для записи звука. По этим причинам проект был заморожен.

Вариант 2:
Схема устройства от Elm Chan сразу привлекла внимание, так как она требовала минимум деталей. Все что нужно было это микроконтроллер attiny85, которого просто не было в наличии под рукой. Купив в магазине два микроконтроллера attiny85 и найдя SD флеш карту пригодную для экспериментов я решил собрать устройство.
Паять особо не пришлось, применяю технологию соединения специальными соединителями.
Я использовал attiny85 в корпусе для поверхностного монтажа, для пайки такой вариант исполнения корпус не очень подходит так как появляются некоторые проблемы. На всякий случай я купил именно две attiny85, что в результате оправдалось.

Читать еще:  8 способов быстро наточить ножницы

Схема проигрывателя WAV файлов:

Для начала даже перед сборкой я решил все-таки проверить можно ли прошить микроконтроллер attiny85 программатором для LPT порта, которым пользуюсь уже лет 5. Припаял все как надо, подключил к компьютеру, запустил программу Uniprof и решил сразу же прошить микроконтроллер.
Первое что сразу огорчило это, то что программа при попытке прошить микроконтроллер ругается что невозможно прошить биты в самом начале прошивки. Думал сначала что проблема в микроконтроллере, но как оказалось файл прошивки больше по объему чем памяти микроконтроллера и программа Uniprof именно по этой причине выдает ошибку при попытке прошить микроконтроллер.

Первый микроконтроллер attiny85 был приведен в неработоспособность при попытке прошить его все-таки программой проигрывателя. Восстановить работу микроконтроллера не вышло, он до сих пор не определяется программатором, хотя настроечные fuse биты не изменялись. Таким образом второй микроконтроллер пригодился очень кстати!
Хочу заметить что для правильной работы WAV проигрывателя необходимо правильно установить правильные fuse биты.
В программе Uniprof следующие фьюзы не нужно устанавливать:
SUT0 CKSEL3 CKSEL2 CKSEL1 EESAVE

В программе PonyProg2000 все с точностью до наоборот, эти фьюз биты нужно отметить галками, а все остальные снять.

Только после такой установки фьюз битов прошить микроконтроллер удалось успешно. Устройство заработало сразу же, без никаких настроек и дополнительных конфигураций. Питание микроконтроллера осуществлялось от батарейки CR 2023 с напряжением 3 Вольта. Питание выбрано не зря, так как карта памяти работает только при напряжении не выше 3,3 Вольта, иначе карточка сгорит.

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

Плеер wav файлов на микроконтроллере Attiny85 своими руками

Японский WAV-плеер… по-русски

Автор: SSMix
Опубликовано 29.11.2012
Создано при помощи КотоРед.

В статье описан вариант изготовления простого WAV-плеера на основе известной разработки японца Чана. Исходный проект был доработан с целью введения возможности запоминания последнего проигранного трека, а также перебора треков не только вперёд, но и назад. Для удобства использования и придания разработке законченного вида также добавлен УНЧ с регулировкой громкости и схема зарядки аккумулятора.

Встал как-то передо мной вопрос: что подарить 4-х летней племяннице на день рождения. Как известно, лучший подарок – это сделанный своими руками. После некоторых раздумий, учитывая её пристрастие к музыке, выбор пал на японский WAV-плеер от ChaN на ATtiny85 (Simple SD Audio Player with an 8-pin IC https://elm-chan.org/works/sd8p/report.html):

Естественно, что дарить ребёнку набор в виде платки с проводками к батарейке и наушникам глупо, тем более что долгое прослушивание музыки в наушниках портит слух безвозвратно. Поскребши по сусекам, на свет божий был извлечен старый карманный СВ радиоприёмник с неплохим динамиком 0,25ГД-19-8Ω. В корпусе приемника и было решено собрать плеер. Для питания схемы был приобретён Li-Ion аккумулятор на 320мАч от MP3-плеера, чтобы не беспокоиться о частой смене батареек.

В итоге вырисовалась следующая схема:

На VT1, VT2, DA2 собрана защита от чрезмерной разрядки аккумулятора. При включении питания переключателем SA1 транзистор VT1 открывается через незаряженный C2, подаётся питание на супервизор DA2 MCP100T-315I/TT, на выходе которого устанавливается высокий лог. уровень, открывающий VT2 и VT1. Зелёный светодиод HL2 сигнализирует о включенном питании плеера. Для более резкого уменьшения яркости свечения при снижении напряжения аккумулятора светодиод включен последовательно через диодную сборку VD1. При снижении на аккумуляторе напряжения ниже 3,15В на выходе супервизора устанавливается низкий логический уровень и схема обесточивается. Остаётся лишь небольшой ток порядка 1,5 мкА через разрядный резистор R1. Для зарядки аккумулятора использована специализированная микросхема DA1 MCP73812T-420I/OT. Зарядка осуществляется от внешнего источника +5В через USB-разъём. Можно использовать USB-выход ПЭВМ или отдельную зарядку от мобильника с напряжением не более 6 В. Ток зарядки задаётся сопротивлением резистора R7 и выбран как 0.7C=0.7*320мА∙ч =224 мА. Пересчитать его на другой ток можно по формуле Iзар.(мА)=1000/R7(кОм). Красный светодиод HL1 сигнализирует о подключенном внешнем питании.

Для питания микроконтроллера DD1 ATtiny85 и карты памяти применён линейный стабилизатор DA3 TPS76330DBVT на 3В с малым падением напряжения. Микроконтроллер и карта памяти включены по схеме “МОНО HF” (16 бит), т.к. в 8-битном варианте “МОНО” заметен довольно существенный шум, особенно в паузах. Резистором R16 можно подобрать такой коэффициент суммирования сигналов с микроконтроллера, при котором будет наименьший уровень шума. После фильтров C7, R10, C8, R11, C11, R14 сигнал поступает на регулятор громкости R12. В качестве УНЧ применена микросхема DA4 ILA7052N (аналог TDA7052) в мостовом включении. Питание на неё подано непосредственно после VT1 от аккумулятора. Типовая выходная мощность по datasheet при напряжении питания 6В и сопротивлении нагрузки 8Ω составляет 1 Вт. Также на плате предусмотрено место для установки DA4’ ILA7050 (аналог TDA7050) на случай проблем с приобретением ILA7052N.

Читать еще:  Зарядник-генератор из двигателя триммера

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

Вид плеера в сборе показан ниже:

Аккумулятор приклеен к корпусу на двухсторонний скотч. Микроконтроллер ATtiny85 удалось приобрести только в широком SOIC-8 корпусе, поэтому запаян на переходную (зелёную на фото) платку. Слева от микросхемы УНЧ видны два электролита. Они запаяны на плату уже в процессе доработки схемы для устранения просадки напряжения аккумулятора при пиковых уровнях громкости. Забегая вперёд, следует отметить, что звучание плеера получилось на удивление громкое и качественное с присутствием басов, чего не скажешь о многих китайских поделках. Ёмкость добавленных электролитов 1000мкФ+1500мкФ.

А это вид спереди:

Название Sonya – это никакая не имитация известной фирмы Sony, а имя племянницы.

Для программирования микроконтроллера использован самодельный программатор AVRISP MkII (USB) и среда CodeVisionAVR. В PonyProg запрограммировать фьюз RSTDISBL не возможно. На скриншоте ниже показаны программируемые фьюзы:

Внимание. Вначале прошивается flash-память микроконтроллера прилагаемым hex-файлом, а затем фьюзы! После программирования фьюза RSTDISBL микроконтроллер станет недоступен для внутрисхемного SPI-программирования. Сбросить фьюзы в исходное состояние можно лишь параллельным программатором или, например, таким вот Atmega fusebit-доктором (https://www.getchip.net/posts/059-ispravlyaem-avr-fyuzy-pri-pomoshhi-atmega-fusebit-doctor/):

Прошивка для микроконтроллера была доработана. Очень существенным недостатком выявлялось то обстоятельство, что после выключения и включения питания воспроизведение начиналось с самого первого трека на карте памяти. Поэтому в программу внесено сохранение в EEPROM микроконтроллера номера последнего проигрываемого трека и начало воспроизведения при включении питания с него. Согласитесь, что когда на карте памяти записано несколько сотен песен и требуется добраться до нужной, перебирать их все с самого начала как-то неудобно. Также значительное неудобство доставило то, что перебор треков в исходном проекте возможно было осуществлять только вперёд одной единственной кнопкой. Для повторного воспроизведения понравившейся песни приходилось опять-таки последовательно перебирать все несколько сотен треков. Этот недостаток также был исправлен, причём, не внося никаких изменений в схему. Единственная кнопка использована также и для перемотки треков назад при её удержании более 3-х секунд с функцией автоповтора. Т.е. удерживая кнопку нажатой, можно слушать 3-х секундные отрывки каждого трека с перебором их в обратной последовательности.

Для изменения исходника проект был собран и скомпилирован в двух средах: AVR Studio 4 (с AVR Toolchain 3.3.0.710) и в WinAVR-20060125. В AVR Studio размер hex-файла прошивки получился несколько меньше, но не удалось добиться работоспособности варианта “МОНО” 8 бит. В WinAVR работоспособны все 3 варианта.

В качестве карты памяти были успешно опробованы microSD на 1 ГБ, microSD на 2ГБ и microSDHC на 4ГБ. Файловая система была оставлена стандартная FAT32.

Треки записывались в корень карты памяти. Название – не более 8 латинских символов или цифр, т.е. в виде ХХХХХХХХ.wav.

Для подготовки mp3 файла к записи на карту памяти использовался бесплатный звуковой редактор Audacity. Порядок действий таков.

1.Перетащить конвертируемый файл в окно программы

2. Выбрать пункт разделить стерео на моно

3. Экспортировать выделенное

Название – не более 8 символов, формат WAV 16 bit PCM

Очистить все метаданные!!! Если этого не сделать, данный трек воспроизводиться не будет!

ОК

После конвертации файлов их необходимо записать в корень карты памяти.

Измеренный ток потребления плеера при максимальной неискаженной громкости составил около 60…70 мА. При ёмкости аккумулятора 320мА∙ч время непрерывной работы составляет 5…10 ч в зависимости от громкости. Качество звука получилось вполне приличное с присутствием басов. Максимальной громкости с запасом хватает для озвучивания небольшой комнаты. Подбором сопротивления резистора R15 можно ограничить максимальную громкость до появления заметных на слух искажений.

2) Японский WAV-плеер на ATtiny85. Сергей Рюмик. Радиохобби №6-2011.

Ссылка на основную публикацию
Статьи c упоминанием слов:
Adblock
detector