DIY-musikspelare är roliga att bygga, och vi har tidigare byggt några musikspelare med Arduino och en dedikerad MP3-modul. Nu använder vi ESP32 för att bygga en intressant ljudspelare, där du kan ljudeffekter genom att bara ansluta en extra högtalare till ESP32. Här kommer vi att använda LM386 och en högtalare med ESP32 för att spela musikfiler. Ljudutgången kanske inte är hög men den här applikationen visar ESP32-kortets förmåga att spela upp ljudfiler.
Komponenter krävs
- ESP32
- LM386 förstärkarmodul
- 8 ohm högtalare
- Bygeltrådar
Kretsschema
Kretsschema för ESP32 Music Player ges nedan-
För att spela ljud på ESP32 behöver vi en högtalare. Högtalaren ansluts via LM386 Audio Amplifier-modulen. Vcc och GND-stift på förstärkarmodulen är anslutna till VIN och GND på ESP32 medan IN-stift på förstärkarmodulen är ansluten till GPIO 25-stift på ESP32. GPIO 25 är en av de 2 DAC-stiften (Digital till Analog Converter).
Så här kommer den fullständiga installationen för ESP32 Music Player att se ut:
LM386 är en ljudförstärkare IC, du kan lära dig mer om LM386 genom att följa länken.
Gör dig redo med ljudfiler
För att spela ljudljud på ESP32-kortet behöver vi ljudfiler i .wav- format eftersom ESP32 endast kan spela upp en ljudfil i .wav- format.
Så det första steget är att hämta filen som du vill spela på ESP32. Därefter laddar du ner och installerar Audacity Audio Editor-appen. Den här appen kommer att användas för att ändra filtyp, samplingsfrekvens och andra egenskaper.
När installationen är klar öppnar du Audacity-appen och går sedan till fil> Öppna och välj den ljudfil som du vill redigera.
Det första som behövde ändras är samplingsfrekvensen. För att spela en ljudfil på ESP32 kommer en samplingsfrekvens på 8000 till 16000 att vara bra eftersom ESP32 inte har mycket minne. Så ändra projektfrekvensen till 16000.
Därefter navigerar du till Arkiv> Exportera> Exportera som WAV för att spara ljudfilen i .wav- format.
Välj i nästa fönster WAV (Microsoft) som filtyp och Onsignerad 8-bitars PCM som kodningsformat och klicka sedan på Spara.
Nu behöver vi en Hex Editor-app för att generera Hex-koder för ljudfilen. Så ladda ner och installera Hex Editor (HxD) från den givna länken. Öppna sedan appen och gå sedan till Arkiv> öppna och öppna .wav-filen . Detta genererar Hex-koden för .wav-filen .
Använd sedan Ctrl + A för att välja hela koden och sedan gå till Redigera> Kopiera som> C för att kopiera koden i C-språket format.
Klistra sedan in den här koden i Arduino IDE.
Kodförklaring
Den kompletta koden för Contactless ESP32 Audio Player ges i slutet av sidan. Här förklarar vi några viktiga delar av koden. I det här programmet ska vi använda XT DAC Audio-biblioteket från XTronical. XT DAC Audio-biblioteket kan laddas ner härifrån.
Så som vanligt, starta koden med alla nödvändiga bibliotek. SoundData.h-filen innehåller Hex-koden för .Wav-filen som ska spelas.
#include "SoundData.h" #include "XT_DAC_Audio.h"
På nästa rad skapar du ett objekt av typen XT_Wav_Class som används av DAC- ljudklassen som skickar .wav- data som en parameter. DacAudio, huvudspelarens klassobjekt där 25 är DAC-stiftnumret där förstärkarstiftet är anslutet.
XT_Wav_Class-ljud (exempel); XT_DAC_Audio_Class DacAudio (25,0);
Inuti setup () -funktionen, initialisera Serial Monitor med en baudhastighet på 115200 för felsökningsändamål.
ogiltig installation () {Serial.begin (115200);
Inuti loop () -funktionen, fyll ljudbufferten med data och kontrollera om ljudet spelas upp eller inte, om inte, spela upp ljudet i loop.
void loop () {DacAudio.FillBuffer (); om (Sound.Playing == false) DacAudio.Play (& Sound); Serial.println (DemoCounter ++); }
Testar ESP32 Audio Player
När koden är klar, anslut högtalaren till GPIO 25 i ESP32 via LM386 eller någon annan förstärkarmodul. Anslut nu ESP32 till bärbar dator och ladda upp koden. När koden har laddats upp börjar ESP32 spela upp ljudet. Ljudkvaliteten kan ändras med förstärkarmodulens potentiometer.
Hoppas du gillade projektet. En fungerande video och fullständig kod ges nedan, SoundData.h-rubrikfilen kan laddas ner härifrån. Om du är osäker, lämna dem i kommentarsektionen.