Оглавление:
- Запасы
- Шаг 1: разметка макета
- Шаг 2: Подключение SD-карты
- Шаг 3. Библиотеки программного обеспечения
- Шаг 4: отобразите данные MP3 на последовательном мониторе
Видео: Библиотека Arduino для декодирования MP3: 4 шага
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:48
Из-за все большего распространения быстрых микроконтроллеров, таких как ESP32 и ARM M series, декодирование MP3 больше не требуется с помощью специального оборудования. Теперь декодирование можно производить в программном обеспечении.
От Earlephilhower доступна отличная библиотека, которая показывает, как декодировать широкий спектр аудиофайлов и воспроизводить их на микроконтроллерах ESP. Вдохновленный этим, я адаптировал часть кода для создания модульного метода чтения файлов MP3 на микроконтроллерах.
Я надеюсь, что этот метод будет достаточно универсальным для использования на любом достаточно быстром микроконтроллере (не только на плате ESP32), но на данный момент я тестировал только на ESP32.
Запасы
Как я уже сказал, я надеюсь, что этот метод будет работать с любым быстрым микроконтроллером, но может и не работать. Поэтому для тиражирования моих результатов вам понадобятся:
- Плата ESP32
- Коммутационная плата SD
- SD Card
- Провода перемычки
- макет
- кабель micro USB (для загрузки скетча)
- IDE Arduino
Шаг 1: разметка макета
Поместите разъем для ESP32 и SD-карты на макетную плату.
Шаг 2: Подключение SD-карты
Подключения SD-карты (ESP32 SD breakout) следующие:
GND GND
3v3 VDD
23 DI (MOSI)
19 ДО (MISO)
18 SCLK
5 CS
Обратите внимание, что эти подключения будут другими, если вы используете другой микроконтроллер.
Шаг 3. Библиотеки программного обеспечения
если у вас не установлен ESP-IDF, перейдите на их веб-сайт и установите его.
Затем установите библиотеку микродекодера. Вы можете сделать это, загрузив репозиторий и поместив его в папку с библиотеками Arduino. Библиотека микродекодера в настоящее время поддерживает файлы.wav и.mp3.
Независимо от формата, с каждым классом связано несколько общих методов, которые описаны в приведенном ниже коде. К ним относятся получение некоторых метаданных файлов и их печать на последовательном мониторе.
#include "SD.h" // ввод
#include "mp3.h" // декодер #include "pcm.h" // контейнер сырых аудиоданных mp3 MP3; void setup () {Serial.begin (115200); // Настраиваем Serial SD.begin (); // Настраиваем SD-соединение File file = SD.open ("/ cc.mp3"); // Открываем MP3-файл MP3.begin (file); // сообщаем классу MP3, какой файл обрабатывать MP3.getMetadata (); // получаем метаданные Serial.print ("Bits per Sample:"); Serial.println (MP3.bitsPerSample); // печатаем бит на выборку Serial.print ("Sample Rate:"); Serial.println (MP3. Fs); // и частота дискретизации} void loop () {}
Шаг 4: отобразите данные MP3 на последовательном мониторе
С помощью приведенного ниже кода вы можете отобразить некоторые аудиоданные на последовательном мониторе. Это будет очень медленно, но покажет вам, как использовать библиотеку MP3. Он также выполняет субдискретизацию данных в 16 раз, так что при нанесении данных на график они выглядят как звуковая волна. Этот код взят из примера SPI_MP3_Serial.ino, который поставляется с библиотекой микродекодера. Конечно, в дальнейшем вам захочется как-нибудь воспроизвести эти аудиоданные, но это тема другого руководства.
#include "SD.h" // ввод
#include "mp3.h" // декодер mp3 MP3; // Класс MP3 pcm audio; // необработанные аудиоданные void setup () {Serial.begin (115200); // Настраиваем Serial SD.begin (); // Настраиваем SD-соединение File file = SD.open ("/ cc.mp3"); // Открываем MP3-файл MP3.begin (file); // Передаем файл в класс MP3} void loop () {audio = MP3.decode (); // Декодирование аудиоданных в класс pcm / * в audio.interleaved 32 отсчета (16 слева и 16 справа) *, но мы собираемся построить только первую точку данных в каждом канале. * Это эффективно понижает дискретизацию данных в 16 раз (* только для просмотра формы сигнала) * / Serial.print (audio.interleaved [0]); // левый канал Serial.print (""); Serial.println (audio.interleaved [1]); // правый канал}
Рекомендуемые:
Преобразователь текста в речь Arduino с использованием LM386 - Говорящий проект Arduino - Библиотека Talkie Arduino: 5 шагов
Преобразователь текста в речь Arduino с использованием LM386 | Говорящий проект Arduino | Библиотека Talkie Arduino: Привет, ребята, во многих проектах мы требуем, чтобы Arduino говорил что-то вроде говорящих часов или сообщал какие-то данные, поэтому в этих инструкциях мы будем преобразовывать текст в речь с помощью Arduino
Библиотека для BMP280 и BME280: 7 шагов
Библиотека для BMP280 и BME280: Введение Я не собирался писать эту библиотеку. Это "случилось" как побочный эффект начатого мной проекта, в котором используется BMP280. Этот проект еще не завершен, но я думаю, что библиотека готова поделиться с другими. Впоследствии у меня появился новый
Симулятор игры для смартфона - играйте в игры для Windows, используя IMU для управления жестами, акселерометр, гироскоп, магнитометр: 5 шагов
SmartPhone Game Simulator - играйте в игры для Windows, используя IMU управления жестами, акселерометр, гироскоп, магнитометр: поддержите этот проект: https://www.paypal.me/vslcreations, сделав пожертвование на программы с открытым исходным кодом & поддержка дальнейшего развития
Подставка для ноутбука на 3 и 3 ступени (с очками для чтения и лотком для ручек): 5 ступеней
Подставка для ноутбука с 3-мя и 3-мя ступенями (с очками для чтения и лотком для ручек). 3 ступеньки подставки для ноутбука можно сделать за 5 минут. Он очень прочный, легкий и его можно сложить, чтобы взять с собой куда угодно
Кронштейн для 3,5-дюймового жесткого диска для отсека для дисковода 5,25 дюйма: 3 шага
Кронштейн для 3,5-дюймового жесткого диска для отсека для дисковода 5,25 дюйма: у большинства из нас все еще есть старые CD / DVD-диски, которые вам уже не нужны, но вам жаль выбрасывать. Это инструкция, как дать вашим старым CD / DVD-ROMам вторую жизнь