Cuprins:
- Provizii
- Pasul 1: așezarea panoului de calcul
- Pasul 2: Cablarea cardului SD
- Pasul 3: Bibliotecile software
- Pasul 4: Plasați date MP3 pe monitorul serial
Video: Biblioteca Arduino pentru decodare MP3: 4 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:41
Datorită prevalenței crescute a microcontrolerelor rapide, cum ar fi ESP32 și seria ARM M, decodarea MP3 nu mai este necesară pentru a fi făcută de hardware specializat. Decodarea se poate face acum în software.
Există o bibliotecă excelentă disponibilă de la earlephilhower care arată cum să decodezi o mare varietate de fișiere audio și să le joci pe microcontrolere ESP. Inspirat de acest lucru, am adaptat o parte din cod pentru a crea o metodă modulară de citire a fișierelor MP3 pe microcontrolere.
Speranța mea este că această metodă va fi suficient de generică pentru a fi utilizată pe orice microcontroler suficient de rapid (nu doar pe o placă ESP32), dar de acum am testat doar pe un ESP32.
Provizii
După cum am spus mai înainte, sper că această metodă va funcționa pentru orice microcontroler rapid, dar poate că nu. Prin urmare, pentru a reproduce rezultatele mele, veți avea nevoie de:
- O placa ESP32
- Placă SD Breakout
- card SD
- Sârme jumper
- panou de masă
- cablu micro USB (pentru încărcarea schiței)
- IDE Arduino
Pasul 1: așezarea panoului de calcul
Așezați ESP32 și cardul SD breakout pe panou.
Pasul 2: Cablarea cardului SD
Conexiunile cardului SD (ESP32 SD breakout) sunt următoarele:
GND GND
3v3 VDD
23 DI (MOSI)
19 DO (MISO)
18 SCLK
5 CS
Vă rugăm să rețineți că aceste conexiuni vor fi diferite dacă utilizați un microcontroler diferit.
Pasul 3: Bibliotecile software
dacă nu aveți ESP-IDF instalat pe site-ul lor și instalați-l.
Apoi instalați biblioteca microdecoder. Puteți face acest lucru descărcând depozitul și plasându-l în folderul Arduino Libraries. Biblioteca de microdecodare acceptă în prezent fișiere.wav și.mp3.
Indiferent de format, există câteva metode comune asociate fiecărei clase și sunt acoperite în codul de mai jos. Acestea includ obținerea unor metadate de fișiere și imprimarea lor pe monitorul serial.
#includeți „SD.h” // intrare
#include "mp3.h" // decoder #include "pcm.h" // container de date audio brute mp3 MP3; void setup () {Serial.begin (115200); // Configurare Serial SD.begin (); // Configurare conexiune SD Fișier fișier = SD.open ("/ cc.mp3"); // Deschideți un fișier MP3 MP3.begin (fișier); // spuneți clasei MP3 ce fișier să proceseze MP3.getMetadata (); // obțineți metdadatele Serial.print ("Bits per Sample:"); Serial.println (MP3.bitsPerSample); // imprimați biți pe eșantion Serial.print ("Sample Rate:"); Serial.println (MP3. Fs); // și rata de eșantionare} void loop () {}
Pasul 4: Plasați date MP3 pe monitorul serial
Cu codul de mai jos puteți parcela câteva date audio pe monitorul serial. Acest lucru va fi foarte lent, dar vă va arăta cum să utilizați biblioteca MP3. De asemenea, reduce eșantionarea datelor cu un factor de 16, astfel încât atunci când datele sunt reprezentate grafic să arate ca o formă de undă audio. Acest cod este preluat din exemplul SPI_MP3_Serial.ino care vine cu biblioteca de microdecoder. Desigur, înainte, veți dori să redați cumva aceste date audio, dar acesta este subiectul unui alt instructable.
#includeți „SD.h” // intrare
#include "mp3.h" // decodor mp3 MP3; // MP3 Class pcm audio; // configurare nulă a datelor audio brute () {Serial.begin (115200); // Configurare Serial SD.begin (); // Configurare conexiune SD Fișier fișier = SD.open ("/ cc.mp3"); // Deschideți un fișier MP3 MP3.begin (fișier); // Treceți fișierul la clasa MP3} void loop () {audio = MP3.decode (); // Decodează datele audio în clasa pcm / * există 32 de eșantioane în audio.interleaved (16 stânga și 16 dreapta) *, dar vom urmări doar primul punct de date din fiecare canal. * Aceasta reduce în mod eficient datele cu un factor de 16 (pentru * vizualizarea numai a formei de undă) * / Serial.print (audio.interleaved [0]); // canal stâng Serial.print (""); Serial.println (audio.interleaved [1]); // canal dreapta}
Recomandat:
Programarea unui Arduino Folosind un alt Arduino pentru a afișa un text derulant fără bibliotecă: 5 pași
Programarea unui Arduino Folosirea unui alt Arduino pentru a afișa un text derulant fără bibliotecă: Sony Spresense sau Arduino Uno nu sunt atât de scumpe și nu necesită multă energie. Cu toate acestea, dacă proiectul dvs. are limite de putere, spațiu sau chiar buget, vă recomandăm să utilizați Arduino Pro Mini. Spre deosebire de Arduino Pro Micro, Arduino Pro Mi
Cutie de decodare Escape Room: 7 pași (cu imagini)
Cutie de decodare a camerei de evacuare: Camerele de evacuare sunt activități extrem de distractive, care sunt foarte atrăgătoare și excelente pentru munca în echipă. V-ați gândit vreodată să vă creați propria cameră de evacuare? Ei bine, cu această cutie de decodor puteți fi pe drumul cel bun! Și mai bine te-ai gândit să folosești es
Biblioteca pentru BMP280 și BME280: 7 pași
Biblioteca pentru BMP280 și BME280: Introducere Nu mi-am propus să scriu această bibliotecă. S-a întâmplat " ca efect secundar al unui proiect, am început să folosească un BMP280. Acest proiect nu este încă finalizat, dar cred că biblioteca este gata să le împărtășească altora. Ulterior am avut o ne
Cum să faci o lumină pentru bibliotecă: 6 pași
Cum să faci o lumină pentru bibliotecă: Acesta este un tutorial simplu care explică cum să faci o lumină pentru bibliotecă folosind placa Light Up, vopseaua electrică și banda de mascare. În cele din urmă, veți avea o lumină la îndemână pe care o puteți folosi pentru a vă lumina biblioteca. Desigur, puteți folosi această lumină elsewh
Placă de codificare și decodare cu protocol NEC în infraroșu: 5 pași
Infraroșu NEC Protocol Encoder and Decoder Board: primește un semnal NEC IR brut modulat sau demodulat și îl convertește în octeți care sunt expediați în portul serial. Rata de transmisie în serie este selectabilă din două viteze implicite. Modul de utilizare implicit transmite o secvență de comandă cu octet de încadrare