- Componenti richiesti
- Schema elettrico
- Prepararsi con i file audio
- Spiegazione del codice
- Test del lettore audio ESP32
I lettori musicali fai-da-te sono divertenti da costruire e in precedenza abbiamo costruito alcuni lettori musicali utilizzando Arduino e un modulo MP3 dedicato. Ora stiamo usando ESP32 per costruire un lettore audio interessante, in cui è possibile riprodurre effetti sonori semplicemente collegando un altoparlante extra a ESP32. Qui useremo LM386 e un altoparlante con ESP32 per riprodurre file musicali. L'uscita audio potrebbe non essere alta ma questa applicazione mostra la capacità della scheda ESP32 di riprodurre file audio.
Componenti richiesti
- ESP32
- Modulo amplificatore LM386
- Altoparlante da 8 ohm
- Cavi per ponticelli
Schema elettrico
Di seguito è riportato lo schema del circuito per il lettore musicale ESP32-
Per riprodurre il suono su ESP32, abbiamo bisogno di un altoparlante. L'altoparlante è collegato tramite il modulo amplificatore audio LM386. I pin Vcc e GND del modulo amplificatore sono collegati a VIN e GND di ESP32 mentre il pin IN del modulo amplificatore è collegato al pin GPIO 25 di ESP32. GPIO 25 è uno dei 2 pin DAC (Digital to Analog Converter).
Ecco come apparirà la configurazione completa per ESP32 Music Player:
LM386 è un amplificatore audio IC, puoi saperne di più su LM386 seguendo il link.
Prepararsi con i file audio
Per riprodurre suoni audio sulla scheda ESP32, abbiamo bisogno di file audio in formato .wav perché ESP32 può riprodurre un file audio solo in formato .wav .
Quindi il primo passo sarà ottenere il file che vuoi riprodurre su ESP32. Successivamente, scarica e installa l'app Audacity Audio Editor. Questa app verrà utilizzata per modificare il tipo di file, la frequenza di campionamento e altre proprietà.
Una volta completata l'installazione, apri l'app Audacity e poi vai su file> Apri e seleziona il file audio da modificare.
La prima cosa che doveva essere modificata è la frequenza di campionamento. Per riprodurre un file audio su ESP32, una frequenza di campionamento da 8000 a 16000 sarà buona poiché ESP32 non ha molta memoria. Quindi cambia la velocità del progetto a 16000.
Successivamente, vai su File> Esporta> Esporta come WAV per salvare il file audio in formato .wav .
Ora nella finestra successiva, seleziona WAV (Microsoft) come tipo di file e PCM a 8 bit senza segno come formato di codifica, quindi fai clic su Salva.
Ora abbiamo bisogno di un'app Hex Editor per generare codici Hex per il file audio. Quindi scarica e installa Hex Editor (HxD) dal link indicato. Successivamente, apri l'app, quindi vai su File> apri e apri il file.wav . Questo genererà il codice esadecimale per il file.wav .
Quindi utilizzare ctrl + A per selezionare il codice completo e quindi andare su Modifica> Copia come> C per copiare il codice nel formato lingua C.
Quindi incolla questo codice nell'IDE di Arduino.
Spiegazione del codice
Il codice completo per Contactless ESP32 Audio Player è fornito alla fine della pagina. Qui stiamo spiegando alcune parti importanti del codice. In questo programma utilizzeremo la libreria audio XT DAC di XTronical. La libreria XT DAC Audio può essere scaricata da qui.
Quindi, come al solito, avvia il codice includendo tutte le librerie richieste. Il file SoundData.h contiene il codice esadecimale per il file.Wav da riprodurre.
#include "SoundData.h" #include "XT_DAC_Audio.h"
Nella riga successiva, creare un oggetto di tipo XT_Wav_Class che viene utilizzato dalla classe audio DAC che passa i dati .wav come parametro. DacAudio, l'oggetto della classe del lettore principale in cui 25 è il numero del pin DAC a cui è collegato il pin dell'amplificatore.
XT_Wav_Class Sound (campione); XT_DAC_Audio_Class DacAudio (25,0);
All'interno della funzione setup () , inizializza il monitor seriale a una velocità di trasmissione di 115200 per scopi di debug.
void setup () {Serial.begin (115200);
All'interno della funzione loop () , riempi il buffer del suono con i dati e controlla se il suono viene riprodotto o meno, in caso contrario, riproduci il suono nel loop.
void loop () {DacAudio.FillBuffer (); if (Sound.Playing == false) DacAudio.Play (& Sound); Serial.println (DemoCounter ++); }
Test del lettore audio ESP32
Una volta che il codice è pronto, collega l'altoparlante alla GPIO 25 di ESP32 tramite LM386 o qualsiasi altro modulo amplificatore. Ora collega l'ESP32 al laptop e carica il codice. Una volta caricato il codice, ESP32 avvia la riproduzione dell'audio. La qualità del suono può essere modificata utilizzando il potenziometro del modulo amplificatore.
Spero ti sia piaciuto il progetto. Di seguito sono riportati un video funzionante e il codice completo, il file di intestazione SoundData.h può essere scaricato da qui. Se hai dei dubbi, lasciali nella sezione commenti.