Модуль записи и воспроизведения звука
Купить на Паркфлаере
На Паркфлаере был куплен и успешно доставлен сей агрегат
Некоторое время он пылился у меня без дела. Был забыт и заброшен... И вот как-то так получилось, что встал вопрос об "озвучке" модели. Модель танка должна рычать мотором, лязгать гусеницами и естественно громко стрелять... Все эти звуки по идее должны быть записаны в виде файлов на карту памяти и воспроизводиться оттуда по мере необходимости. Тут то я про него и вспомнил...
Итак... плата модуля имеет размер 45х45мм. На ней распаяна микросхема MP3-кодека VS1003. Так же на плате есть микрофон, 2 пина аудио входа и mini-jack аудио выхода. Для подключения к микроконтроллеру служит еще один разъем 2х5 контактов (собственно SPI интерфейс). Качество сборки оказалось вполне терпимым - пришлось только слегка помыть платку от флюса.
После некоторого изучения интернета была найдена схема этого модуля, даташит на кодек и вот такая статейка. Кстати, в ней приводится очень много полезных ссылок. В том числе есть ссылки на библиотеки для работы с данным модулем. Но в мои планы пока не входит использование полного функционала этого модуля. А вот экономия ресурсов - в моем случае вопрос актуальный. Поэтому я решил сделать некий тест, который бы при минимальном задействовании ресурсов микроконтроллера воспроизвел бы mp3-файл с SD-карты. Для подключения последней был использован слот, так же купленный на Паркфлаере.
Подключение такое:
Arduino Nano (atmega 328) |
VS1003 module |
SD Card module |
D6 |
XDCS |
|
D7 |
DREQ |
|
D8 |
XRST |
|
D9 |
XCS |
|
D10 |
|
CS |
D11 |
MOSI |
MOSI |
D12 |
MISO |
MISO |
D13 |
SCK |
SCK |
Естественно, с первого раза ничего не заработало - карта памяти отказалась инициализироваться. Правда секрет тут прост и мне давно известен. На модуле слота SD все контакты парные. И все они равнозначны за исключением MISO (к МК идет контакт с крайнего ряда). Естественно я их перепутал при подключении. Поменять 2 проводка местами и все работает на ура.
Теперь пара слов о самом кодеке... Воспроизводит он кучу разных форматов - все можно посмотреть в даташите. Ни один имеющийся MP3-файл проблемы у него не вызвал. Микросхема имеет на борту 5.5Кб памяти. В нее просто грузим файл с карты памяти. Тут главное не загрузить больше чем надо. Да и вообще, загрузка занимает время... поэтому лучше грузить по чуть-чуть, но постоянно... потоком. Для этого кодек возвращает нам сигнал DREQ (запрос данных). Выставленный в HIGH этот сигнал говорит о том, что в память кодека можно запихнуть следующую порцию данных. Под порциями чип понимает массивы до 32-х байт. Таким образом процедуру paly() в тестовом скетче легко разделить на две - стартовая загрузка данных и подгрузка по запросу кодека.
Ниже привожу ссылки для скачивания:
Мой тестовый скетч (RAR).
VS1003 Datasheet (PDF).
Схема модуля (PDF).
Выстрел из пушки (MP3). |