Table des matières:

Bibliothèque Arduino pour le décodage MP3 : 4 étapes
Bibliothèque Arduino pour le décodage MP3 : 4 étapes

Vidéo: Bibliothèque Arduino pour le décodage MP3 : 4 étapes

Vidéo: Bibliothèque Arduino pour le décodage MP3 : 4 étapes
Vidéo: Lecteur MP3 UART avec lecteur carte TF et haut-parleur pour Arduino : montage 2024, Décembre
Anonim
Bibliothèque Arduino pour le décodage MP3
Bibliothèque Arduino pour le décodage MP3
Bibliothèque Arduino pour le décodage MP3
Bibliothèque Arduino pour le décodage MP3

En raison de la prévalence accrue des microcontrôleurs rapides tels que l'ESP32 et la série ARM M, le décodage MP3 n'a plus besoin d'être effectué par du matériel spécialisé. Le décodage peut maintenant se faire par logiciel.

Earlephilhower propose une excellente bibliothèque qui montre comment décoder une grande variété de fichiers audio et les lire sur des microcontrôleurs ESP. Inspiré par cela, j'ai adapté une partie du code pour créer une méthode modulaire de lecture de fichiers MP3 sur des microcontrôleurs.

J'espère que cette méthode sera suffisamment générique pour être utilisée sur n'importe quel microcontrôleur assez rapide (pas seulement une carte ESP32) mais pour l'instant je n'ai testé que sur un ESP32.

Fournitures

Comme je l'ai déjà dit, j'espère que cette méthode fonctionnera pour n'importe quel microcontrôleur rapide, mais ce n'est peut-être pas le cas. Par conséquent, pour reproduire mes résultats, vous aurez besoin de:

  • Une carte ESP32
  • Carte de dérivation SD
  • carte SD
  • Fils de cavalier
  • planche à pain
  • câble micro USB (pour télécharger le croquis)
  • IDE Arduino

Étape 1: Disposition de la planche à pain

Disposer la planche à pain
Disposer la planche à pain

Placez l'ESP32 et la carte SD sur la maquette.

Étape 2: Câblage de la carte SD

Câblage de la carte SD
Câblage de la carte SD

Les connexions de la carte SD (ESP32 SD breakout) sont les suivantes:

TERRE TERRE

Disque dur 3v3

23 DI (MOSI)

19 FAIRE (MISO)

18 SCLK

5 CS

Veuillez noter que ces connexions seront différentes si vous utilisez un autre microcontrôleur.

Étape 3: Les bibliothèques de logiciels

si vous n'avez pas installé l'ESP-IDF, rendez-vous sur leur site Web et installez-le.

Installez ensuite la bibliothèque du microdécodeur. Vous pouvez le faire en téléchargeant le référentiel et en le plaçant dans votre dossier Bibliothèques Arduino. La bibliothèque de microdécodeurs prend actuellement en charge les fichiers.wav et.mp3.

Quel que soit le format, il existe quelques méthodes communes associées à chaque classe et elles sont couvertes dans le code ci-dessous. Celles-ci incluent l'obtention de certaines métadonnées des fichiers et leur impression sur le moniteur série.

#include "SD.h" // entrée

#include "mp3.h" // décodeur #include "pcm.h" // conteneur de données audio brutes mp3 MP3; void setup() { Serial.begin(115200); // Configurer Serial SD.begin(); // Configurer la connexion SD Fichier file = SD.open("/cc.mp3"); // Ouvrir un fichier MP3 MP3.begin(fichier); // indique à la classe MP3 quel fichier traiter MP3.getMetadata(); // récupère les métadonnées Serial.print("Bits par échantillon: "); Serial.println(MP3.bitsPerSample); // imprime les bits par échantillon Serial.print("Sample Rate: "); Serial.println(MP3. Fs); // et taux d'échantillonnage } boucle vide() { }

Étape 4: Tracer les données MP3 sur le moniteur série

Tracer des données MP3 sur le moniteur série
Tracer des données MP3 sur le moniteur série

Avec le code ci-dessous, vous pouvez tracer des données audio sur le moniteur série. Ce sera très lent mais vous montrera comment utiliser la bibliothèque MP3. Il sous-échantillonne également les données d'un facteur 16 de sorte que lorsque les données sont tracées, elles ressemblent à une forme d'onde audio. Ce code est tiré de l'exemple SPI_MP3_Serial.ino fourni avec la bibliothèque du microdécodeur. Bien sûr, à l'avenir, vous voudrez lire ces données audio d'une manière ou d'une autre, mais c'est le sujet d'un autre instructable.

#include "SD.h" // entrée

#include "mp3.h" // décodeur mp3 MP3; // audio pcm de classe MP3; // configuration de l'annulation des données audio brutes () { Serial.begin (115200); // Configurer Serial SD.begin(); // Configurer la connexion SD Fichier file = SD.open("/cc.mp3"); // Ouvrir un fichier MP3 MP3.begin(fichier); // Passer le fichier à la classe MP3 } void loop() { audio = MP3.decode(); // Décode les données audio dans la classe pcm /* il y a 32 échantillons dans audio.interleaved (16 à gauche et 16 à droite) * mais nous allons seulement tracer le premier point de données dans chaque canal. * Cela sous-échantillonne efficacement les données par un facteur de 16 (pour * afficher la forme d'onde uniquement) */ Serial.print(audio.interleaved[0]); // canal gauche Serial.print(" "); Serial.println(audio.interleaved[1]); // canal droit }

Conseillé: