RSS лента

Prikupets' Blog

Arduino-библиотека для воспроизведения MP3 файлов (со связанными сообщениями и очередями с приоритетами)

Оценить эту запись
19.07.2015 в 10:23 (5690 Показов)
Библиотека MP3 плеера

В рамках другого проекта сделал библиотеку для поддержки модуля DFRobot Mini MP3 Player. Работает на Arduino Pro Mini 328p от 5V.
Она основана на драйвере DFPlayer_Mini_Mp3, который предоставляет низкоуровневые функции управления плеером (как обычно, частично глючные, или неподдерживаемые ).

Звуки воспроизводятся из mp3-файлов из каталога "mp3" sd-карты, вставленной в модуль плеера. Файлы должны иметь имена в виде номеров Vxxx.mp3, где V = voice (голос) (0..9), а xxx = номер звука (0..999).

Библиотека предоставляет 3 класса:
  • MP3Player - обертка над DFPlayer_Mini_Mp3 для поддержки статуса "занятости" (Busy);
  • SoundMessage - сообщение (внутренний класс, напрямую не используется), состоящее из нескольких звуков (файлов), имеющее ID и приоритет.
  • SoundQueue - очередь сообщений с приоритетным воспроизведением и удалением дубликатов по ID. При вставке звуков сообщения в очередь методом push, если сообщение с тем же ID уже есть в очереди и оно еще не воспроизводится, то оно заменяется новым; вставленное сообщение занимает положение в очереди в соответствии со своим приоритетом (сообщения с меньшим значением приоритета проигрываются первыми), при этом приоритет других сообщений в очереди уменьшается на 1, давая им шанс быть услышанными на фоне высокоприоритетных сообщений. Если очередь полна (у нее задается максимальное количество звуков и сообщений) при вставке раздается специальный звук soundOverflow.
Файл MP3_Serial_Player.ino содержит тесты-примеры работы с библиотекой и CLI (command line interface) для доступа к ее функциям из терминала на 57600 (см. TELEMETRY_SPEED).

Вот краткая инструкция по подключению:

1. Скопируйте содержимое каталога "sd-card.content.root" на SD карту (у карты должен появиться каталог mp3 в корне диска);

2. Задейте скетч "MP3_Serial_Player" из source\MP3_Serial_Player в Arduino;

3. Соедините DFPlayer модуль с Arduino и динамиком на 4-8 Ом как указано далее:

DFPlayer.SPK_1 -> Динамик (первый вывод, полярность не важна);
DFPlayer.SPK_2 -> Динамик (второй вывод);
DFPlayer.GND -> Arduino GND;
DFPlayer.VCC -> Arduino VCC (+5V);
DFPlayer.Busy -> Arduino D9;
DFPlayer.RX -> Arduino 11 через 1kOm резистор для совместимости входа с 3.3V;

4. Вставьте SD карту в DFPlayer;

5. Подключите Arduino к PC кабелем USB;

6. Далее идет проверка. Запустите Arduino Serial Monitor на скорости 57600 бод.
В течении 20 seconds после его открытия нажмите кнопку "Send" button в Serial Monitor с пустой стокой ввода.

7. Откроется Command Line Interface (CLI). В нем Вы можете посылать команды, набирая их в строке ввода и нажимая кнопку "Send". Наберите и пошлите следующую команду:

help

8. Покажется меню:

reset - reboot the device.
exit - leave CLI and start working.
say <N> - play file mp3/<V>00<N>.mp3 (N=0..999) with current voice <V>.
Example: 0000.mp3 for voice 0 and file 0; 2123.mp3 for voice 2 and file 123.
play <N> - play file mp3/000<N>.mp3 regardless of current voice (N=0..2999).
queue <ID,P,S1,S2,...> - add message to queue; ID=message ID, P=Priority, S1,S2,..=sounds.
go - play all messages in queue.
clear - delete all messages from queue.
voice <V> - select voice (V=0,1,2). It is used as a 1st digit in file name.
volume <X> - set volume (X=0..31).
eq <EQ> - set equalizer (EQ=normal,pop,rock,jazz,classic,base).

9. Пошлите следующую команду для проигрывания файла "mp3\0001.mp3".

play 1

Исходники и тестовое содержимое SD-карты:
https://www.dropbox.com/sh/k7l6u24z5...oeG-8Xi7a?dl=0

Назначение библиотеки
Библиотека задумывалась для "звукового OSD" и еще для чего-то.
Категории
Электроника

Комментарии