Этот простой звуковой генератор построен на базе проекта SD аудио-плеера. В конструкции использован микроконтроллер ATtiny861 и SD карта памяти. МК Tiny861 содержит два ШИМ-генератора как и Tiny85, это позволяет генерировать качественный звук по сравнению с другими AVR контроллерами. Т.к. у данного МК 20 ножек, то появляется возможность управлять генератором внешними сигналами.
Данное устройство может быть использовано как звуковой модуль в различных игрушках, звонках, гаджетах и т.п.
Техническая часть
В качестве устройства для хранения данных используется MicroSD карта памяти, но если применить соответствующие сокеты, то могут использоваться и SD и MMC карточки. Управление происходит в SPI-режиме через USI-интерфейс. Выход аудиосигналов с ШИМ-генераторов может быть подан на динамики напрямую. Громкость звучания будет недостаточной, т.к. выходная мощность с ШИМ-выхода МК все равно не превысит макс. возможную, которую обеспечивает источник питания МК (3.3 Вольта). Однако данной мощности вполне хватает, чтобы подключить небольшие настольные колоночки. Если данный звуковой генератор планируется подключать к усилителю, то нужно ставить ФНЧ, иначе можно попалить усилитель и динамики.
Представлено несколько различных вариантов принципиальной схемы звукового генератора. При прошивке AVR, необходимо использовать соответствующий для конфигурации динамиков (Mono-OCL/Stereo/Mono-HR) HEX-файл прошивки (sdsg_mo.hex/sdsg_st.hex/sdsg_hr.hex). Конфигурация фьюзов уже прописана в HEX-файлах, однако некоторые программаторы не понимают данный формат, в таком случае нужно удалить последние три строчки в файле. Фьюзы можете посмотреть в файле main.c.
Программная часть
Поддерживаемый аудио формат: RIFF/WAVE в LPCM, 8/16bit, моно/стерео и 8кГц-48кГц. Все другие аудио-форматы, такие как ADPCM, MP3 и AAC должны быть сконвертированы в PCM. Имя файла должно быть вида xxx.wav, где xxx-три числа в диапазоне от 001 до 255. Файлы должны находиться в корне, а не в какой-либо директории.
Управление генератором происходит при помощи переключателей SW1-SW8 которые соответствуют двоичному коду выбранного звукового фрагмента (к примеру комбинация 00110110 соответствует файлу 054.wav). В файле 000.txt содержится конфигурация звукового генератора, всего предусмотрено 4 режима. Опишем каждый их них:
Режим 0: В соответствии с набранным кодом переключателями SW проигрывается соотв. звуковой файл в авто-повторе. Когда набран новый код, звуковой файл также переключается. Если все выключатели отключены, то воспроизведение останавливается.
Режим 1: То же самое, что и 0 режим, но файл всегда проигрывается до конца.
Режим 2: Проигрывается файл в соответствии с набранным кодом переключателей, но любые изменения кода во время воспроизведения игнорируются.
Режим 3: То же, что и 2-ой режим, но изменения кода отрабатываются. Для изменения воспроизводимого файла необходимо переключить в 0, а затем ввести код снова.
Индикация
Светодиод показывает состояние воспроизведения, а также индицирует ошибки путем моргания:
две вспышки – ошибка ввода вывода (ошибка МК или файловой системы)
три вспышки – звуковой файл не найден
четыре вспышки – ошибка файла
Скачать прошивки и исходник программы
Оригинал статьи на английском языке (перевод Колтыков А.В. для сайта cxem.net)