Мазмуну:

MP3 кодун чечүү үчүн Arduino китепканасы: 4 кадам
MP3 кодун чечүү үчүн Arduino китепканасы: 4 кадам

Video: MP3 кодун чечүү үчүн Arduino китепканасы: 4 кадам

Video: MP3 кодун чечүү үчүн Arduino китепканасы: 4 кадам
Video: Измерьте ток до 500A с помощью шунтирующего резистора с помощью Arduino 2024, Июль
Anonim
MP3 кодун чечүү үчүн Arduino китепканасы
MP3 кодун чечүү үчүн Arduino китепканасы
MP3 кодун чечүү үчүн Arduino китепканасы
MP3 кодун чечүү үчүн Arduino китепканасы

ESP32 жана ARM M сериялары сыяктуу тез микроконтроллерлердин кеңири таралгандыгына байланыштуу MP3 кодун чечүү үчүн атайын жабдыктар талап кылынбайт. Декоддоо эми программалык камсыздоодо жасалышы мүмкүн.

Earlephilhower жеткиликтүү чоң китепкана бар, ал аудио файлдардын кеңири түрүн чечмелөөнү жана ESP микроконтроллерлеринде ойнотууну көрсөтөт. Мунун шыктандыруусу менен мен кээ бир коддорду микроконтроллерлерде MP3 файлдарын окуунун модулдук ыкмасын түзүүгө ылайыкташтырдым.

Менин үмүтүм, бул ыкма жетишерлик ылдам микроконтроллерде колдонуу үчүн жетиштүү болот (жөн эле ESP32 тактайы эмес), бирок азырынча мен ESP32де гана сынап көрдүм.

Жабдуулар

Мен буга чейин айткандай, бул ыкма тез микроконтроллер үчүн иштейт деп үмүттөнөм, бирок андай болбошу мүмкүн. Ошондуктан менин жыйынтыктарымды кайталоо үчүн сизге керек болот:

  • ESP32 тактасы
  • SD үзүлүү тактасы
  • SD карта
  • Jumper Wires
  • нан
  • микро USB кабели (эскизди жүктөө үчүн)
  • Arduino IDE

1 -кадам: Нан тактасын коюу

Нан тактасын жайгаштыруу
Нан тактасын жайгаштыруу

ESP32 жана SD картасынын үзүлүшүн панелдин үстүнө коюңуз.

2 -кадам: SD картанын зымдары

SD картаны туташтыруу
SD картаны туташтыруу

SD карта байланыштары (ESP32 SD үзүлүшү) төмөнкүдөй:

GND GND

3v3 VDD

23 DI (MOSI)

19 DO (MISO)

18 SCLK

5 CS

Сураныч, эгер сиз башка микроконтроллерди колдонуп жатсаңыз, бул байланыштар башкача болот.

3 -кадам: Программалык китепканалар

Эгерде сизде ESP-IDF орнотулбаса, анда алардын веб-сайтына баш багып, аны орнотуңуз.

Андан кийин microdecoder китепканасын орнотуңуз. Сиз муну репозиторийди жүктөп алып, Arduino Libraries папкаңызга жайгаштырсаңыз болот. Микрокодер китепканасы учурда.wav жана.mp3 файлдарын колдойт.

Форматына карабастан, ар бир класс менен байланышкан бир нече жалпы методдор бар жана алар төмөндөгү коддо камтылган. Аларга кээ бир файлдардын метадайындарын алуу жана аны сериялык мониторго басып чыгаруу кирет.

#include "SD.h" // киргизүү

#include "mp3.h" // декодер #include "pcm.h" // чийки аудио маалымат контейнери mp3 MP3; void setup () {Serial.begin (115200); // Сериялык SD.begin () орнотуу; // SD байланышын орнотуу Файл файлы = SD.open ("/cc.mp3"); // MP3 файлын ачуу MP3.begin (файл); // MP3 классына MP3.getMetadata () кандай файлды иштетүү керектигин айт; // metadadata алуу Serial.print ("Үлгүгө бит:"); Serial.println (MP3.bitsPerSample); // үлгүгө битти басып чыгаруу Serial.print ("Sample Rate:"); Serial.println (MP3. Fs); // жана үлгү ылдамдыгы} void loop () {}

4 -кадам: MP3 маалыматтарын сериялык мониторго салыңыз

MP3 маалыматтарын сериялык мониторго салыңыз
MP3 маалыматтарын сериялык мониторго салыңыз

Төмөндөгү код менен сиз Serial монитордо кээ бир аудио маалыматтарды түзө аласыз. Бул өтө жай болот, бирок MP3 китепканасын кантип колдонууну көрсөтөт. Ал ошондой эле маалыматтарды 16 эсеге төмөндөтөт, андыктан маалыматтар пландалганда аудио толкун формасына окшош болот. Бул код микродекодер китепканасы менен келген SPI_MP3_Serial.ino мисалынан алынган. Албетте, алдыга жылуу менен сиз бул аудио маалыматтарды кандайдыр бир жол менен ойноткуңуз келет, бирок бул башкача үйрөтүлө турган тема.

#include "SD.h" // киргизүү

#include "mp3.h" // декодер mp3 MP3; // MP3 класс pcm аудио; // чийки аудио маалыматтардын жараксыздыгын орнотуу () {Serial.begin (115200); // Сериялык SD.begin () орнотуу; // SD байланышын орнотуу Файл файлы = SD.open ("/cc.mp3"); // MP3 файлын ачуу MP3.begin (файл); // Файлды 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]); // оң канал}

Сунушталууда: