Innehållsförteckning:

Internetradio med hjälp av en ESP32: 7 steg (med bilder)
Internetradio med hjälp av en ESP32: 7 steg (med bilder)

Video: Internetradio med hjälp av en ESP32: 7 steg (med bilder)

Video: Internetradio med hjälp av en ESP32: 7 steg (med bilder)
Video: ESP32 Modbus-kommunikation | FLProg SCADA 2024, September
Anonim
Image
Image
Internetradio med hjälp av en ESP32
Internetradio med hjälp av en ESP32
Internetradio med hjälp av en ESP32
Internetradio med hjälp av en ESP32

Kära vänner välkomna till en annan instruerbar! Idag ska vi bygga en internetradioenhet med en stor 3,5”-skärm med ett billigt ESP32 -kort. Tro det eller ej, vi kan nu bygga en internetradio på mindre än 10 minuter och med mindre än 30 $. Det finns mycket att täcka så låt oss komma igång!

För några månader sedan avslutade jag ett Arduino FM Radio -projekt som fungerar bra och ser ännu bättre ut enligt min mening. Om du vill se hur jag byggde detta projekt kan du läsa instruktionsboken här. Problemet är att även om den här radion ser cool ut är den inte praktisk eftersom jag bor i en liten stad i södra Grekland och de stora grekiska radiostationerna jag föredrar att lyssna på, inte har sändare här. Så jag lyssnar på mina favoritradioer online på min bärbara dator eller surfplatta, vilket inte är så praktiskt. Så idag ska jag bygga en internetradioenhet för att kunna lyssna på mina favoritradiostationer från hela världen!

Som du kan se är en första version av projektet klar på en bräda. Låt oss slå på det. Som ni ser ansluter projektet till Internet och strömmar sedan musik från fördefinierade radiostationer.

Jag har ställt in mig på den verkliga FM -radiostationen från Aten och med hjälp av dessa knappar kan vi ändra den radiostation vi lyssnar på. Jag har sparat mina favoritradiostationer i minnet på ESP32 så att jag enkelt kan komma åt dem. Med denna potentiometer kan jag ändra volymen på högtalaren. Jag visar namnet på den radiostation vi lyssnar på på en stor 3,5”display med ett retro användargränssnitt. Projektet fungerar bra och det är väldigt enkelt att bygga.

Du kan bygga samma projekt på mindre än 10 minuter men du måste ha lite erfarenhet. Om detta är ditt första projekt, överväg att först bygga ett enklare för att få lite erfarenhet. Kontrollera mina instruktioner för enkla projektidéer och när du är bekvämare med Arduino kommer elektroniken tillbaka för att bygga det här coola projektet. Låt oss nu börja bygga vår egen internetradio.

UPPDATERING 6/6/2019

Bullerproblemet har lösts genom att lägga till en isolatortransformator. Kolla in det uppdaterade schematiska diagrammet. Tack!

Steg 1: Skaffa alla delar

Få alla delar
Få alla delar

Vi kommer att behöva följande delar:

  • ESP32 ▶
  • MP3 -avkodare ▶
  • Isolationstransformator ▶
  • Förstärkare ▶
  • 3W högtalare ▶
  • 3,5 "Nextion Display ▶
  • Tryckknappar ▶
  • Brödbräda ▶
  • Ledningar ▶

Den totala kostnaden för projektet är cirka 40 $, men om du inte använder en display är kostnaden för projektet cirka 20 $. Fantastiska saker. Vi kan bygga vår egen internetradio med bara 20 $!

Steg 2: ESP32 -kort

Image
Image
ESP32 -kort
ESP32 -kort
ESP32 -kort
ESP32 -kort

Hjärtat i projektet är naturligtvis det kraftfulla ESP32 -kortet. Om du inte känner till det är ESP32 -chipet efterföljaren till det populära ESP8266 -chipet som vi har använt många gånger tidigare. ESP32 är ett odjur! Den erbjuder två 32 -bitars processorkärnor som fungerar vid 160 MHz, en enorm mängd minne, WiFi, Bluetooth och många andra funktioner till en kostnad av cirka 7 $! Fantastiska saker!

Se den detaljerade recensionen som jag har förberett för denna tavla. Jag har bifogat videon på denna Instructable. Det kommer att hjälpa till att förstå varför detta chip kommer att förändra hur vi gör saker för alltid! En av de mest spännande sakerna med ESP32 är att även om den är så kraftfull erbjuder den ett djupt sömnläge som bara kräver 10μΑs ström. Detta gör ESP32 till det idealiska chipet för applikationer med låg effekt.

I detta projekt ansluter ESP32 -kortet till Internet och sedan tar det emot MP3 -data från radiostationen vi lyssnar på, och det skickar några kommandon till displayen.

Steg 3: MP3 -avkodare

MP3 -avkodare
MP3 -avkodare
MP3 -avkodare
MP3 -avkodare

MP3 -data skickas sedan till MP3 -avkodningsmodulen med SPI -gränssnittet. Denna modul använder VS1053 IC. Denna IC är en dedikerad hårdvara MP3 -avkodare. Den hämtar MP3 -data från ESP32 och konverterar den riktigt snabbt till en ljudsignal.

Ljudsignalen som den matar ut vid detta ljuduttag är svag och bullrig, så vi måste rensa den från bruset och förstärka det. (Om du använder hörlurar behöver signalen inte rensas från brus eller förstärkas.) Det är därför jag använder en isoleringstransformator för att rensa ljudet från bruset och en PAM8403 -ljudförstärkare för att förstärka ljudsignalen och sedan skicka den till en högtalare. Jag har också anslutit två knappar till ESP32 bara för att ändra MP3 -strömmen vi får data från och en Nextion -display för att visa radiostationen vi lyssnar på.

Steg 4: Nextion Display

Image
Image
Anslut alla delar
Anslut alla delar

Jag valde att använda en Nextion -skärm för det här projektet eftersom det är mycket lätt att använda. Vi behöver bara ansluta en tråd för att styra den.

Nextion -skärmarna är en ny typ av skärmar. De har en egen ARM -processor på baksidan som är ansvarig för att driva displayen och skapa det grafiska användargränssnittet. Så vi kan använda dem med vilken mikrokontroller som helst och uppnå spektakulära resultat. Jag har förberett en detaljerad granskning av denna Nextion -skärm som förklarar på djupet hur de fungerar, hur de används och deras nackdelar. Du kan läsa den här eller titta på den bifogade videon.

Steg 5: Anslut alla delar

Anslut alla delar
Anslut alla delar
Anslut alla delar
Anslut alla delar

Allt vi behöver göra nu är att koppla ihop alla delar enligt detta schematiska diagram. Du hittar det schematiska diagrammet som bifogas här. Anslutningen är enkel.

Det finns dock två saker att notera. MP3 -avkodningsmodulen matar ut en stereosignal men jag använder bara en ljudkanal i detta projekt. För att få ljudsignalen anslöt jag en ljudkabel till ljuduttaget på modulen och klippte den för att avslöja fyra trådar inuti. Jag kopplade ihop två av ledningarna. En av dem är GND och den andra är ljudsignalen från en av de två ljudkanalerna. Om du vill kan du ansluta båda kanalerna till förstärkarmodulen och driva två högtalare.

Varje ljudkanal måste gå igenom isoleringstransformatorn för att rensa eventuellt brus innan den ansluts till förstärkaren

För att skicka data till displayen behöver vi bara ansluta en kabel till TX0 -stiftet på ESP32. Efter att ha anslutit delarna måste vi ladda koden till ESP32, och vi måste ladda GUI till Nextion -displayen.

För att ladda GUI till Nextion -skärmen, kopiera filen InternetRadio.tft som jag ska dela med dig till ett tomt SD -kort. Sätt in SD -kortet i SD -kortplatsen på baksidan av displayen. Slå sedan på skärmen och GUI laddas. Ta sedan ut SD -kortet och anslut strömmen igen.

Efter att vi har laddat koden, låt oss starta projektet. Det visar texten “Ansluter …” i några sekunder på displayen. Efter anslutning till internet ansluter projektet till en fördefinierad radiostation. Hårdvaran fungerar som förväntat, men låt oss nu se programvarusidan av projektet.

Steg 6: Koden för projektet

Projektets kod
Projektets kod
Projektets kod
Projektets kod

Först och främst, låt mig visa dig något. Koden för projektet är mindre än 140 rader kod. Tänk efter, vi kan bygga en internetradio med en 3,5”display med 140 rader kod, det här är fantastiskt. Vi kan uppnå allt detta med hjälp av olika bibliotek naturligtvis som innehåller tusentals rader med kod. Detta är kraften hos Arduino och Open Source -gemenskapen. Det underlättar för beslutsfattare.

I detta projekt använder jag VS1053 -biblioteket för ESP32 -kortet.

Till en början måste vi definiera SSID och lösenordet för Wi-Fi-nätverket. Därefter måste vi spara några radiostationer här. Vi behöver värdadressen, sökvägen där strömmen finns och porten vi behöver använda. Vi sparar all denna information i dessa variabler.

char ssid = "yourSSID"; // ditt nätverks -SSID (namn) char pass = "yourWifiPassword"; // ditt nätverkslösenord

// Få radiostationer

char *host [4] = {"149.255.59.162", "radiostreaming.ert.gr", "realfm.live24.gr", "secure1.live24.gr"}; char *path [4] = {"/1", "/ert-kosmos", "/realfm", "/skai1003"}; int port [4] = {8062, 80, 80, 80};

Jag har inkluderat fyra radiostationer i detta exempel.

I installationsfunktionen kopplar vi avbrott till knapparna, vi initierar MP3-avkodningsmodulen och ansluter till Wi-Fi.

void setup () {

Serial.begin (9600); fördröjning (500); SPI.begin ();

pinMode (föregående knapp, INPUT_PULLUP);

pinMode (nextButton, INPUT_PULLUP);

attachInterrupt (digitalPinToInterrupt (previousButton), previousButtonInterrupt, FALLING);

attachInterrupt (digitalPinToInterrupt (nextButton), nextButtonInterrupt, FALLING); initMP3Decoder (); connectToWIFI (); }

I loop -funktionen, först och främst, kontrollerar vi om användaren har valt en annan radiostation än den vi hämtar data från. I så fall ansluter vi till den nya radiostationen annars får vi data från strömmen och skickar dem till MP3 -avkodningsmodulen.

void loop () {if (radioStation! = previousRadioStation) {station_connect (radioStation); föregående RadioStation = radiostation; } if (client.available ()> 0) {uint8_t bytesread = client.read (mp3buff, 32); player.playChunk (mp3buff, bytesread); }}

Det är allt! När användaren trycker på en knapp sker ett avbrott och ändrar värdet på en variabel som berättar vilken ström som ska anslutas till.

void IRAM_ATTR previousButtonInterrupt () {

statisk osignerad lång last_interrupt_time = 0;

osignerad lång interrupt_time = millis (); if (interrupt_time-last_interrupt_time> 200) {if (radioStation> 0) radioStation--; annars radiostation = 3; } last_interrupt_time = interrupt_time; }

För att uppdatera displayen skickar vi bara några kommandon till serieporten.

void drawRadioStationName (int id) {String -kommando; switch (id) {case 0: command = "p1.pic = 2"; Serial.print (kommando); endNextionCommand (); ha sönder; // 1940 Storbritanniens radiofall 1: command = "p1.pic = 3"; Serial.print (kommando); endNextionCommand (); ha sönder; // KOSMOS GREK case 2: command = "p1.pic = 4"; Serial.print (kommando); endNextionCommand (); ha sönder; // REAL FM GREEK case 3: command = "p1.pic = 5"; Serial.print (kommando); endNextionCommand (); ha sönder; // SKAI 100.3 GREK}}

Låt oss nu ta en titt på Nextion Display GUI. Nextion GUI består av en bakgrundsbild och en bild som visar radiostationens namn. ESP32 -kortet skickar kommandon för att ändra radiostationens namn från de inbäddade bilderna. Det är väldigt lätt. Se instruktionerna för Nextion -visning som jag har förberett för en tid sedan för mer information. Du kan snabbt designa ditt eget GUI om du vill och visa fler saker på det.

Som alltid kan du hitta koden för projektet bifogad i denna instruktionsbok.

Steg 7: Slutliga tankar och förbättringar

Slutliga tankar och förbättringar
Slutliga tankar och förbättringar
Slutliga tankar och förbättringar
Slutliga tankar och förbättringar
Slutliga tankar och förbättringar
Slutliga tankar och förbättringar
Slutliga tankar och förbättringar
Slutliga tankar och förbättringar

Detta projekt är väldigt enkelt. Jag ville ha ett enkelt skelett för Internetradioprojekt att arbeta med. Nu när en första version av projektet är klart kan vi lägga till många funktioner för att förbättra det. Först och främst måste jag designa ett hölje för all elektronik.

I den här boken om de vackraste radioerna som någonsin gjorts finns det väldigt coola radioer att välja mellan som ett hölje för detta projekt. Jag tror att jag ska bygga ett hölje runt denna spektakulära Art Deco -radio. Vad tycker du, gillar du radioens utseende eller föredrar du något mer modernt? Har du andra idéer om hölje? Tycker du också om detta Internetradioprojekt och vilka funktioner tror du att vi måste lägga till för att göra det mer användbart? Jag skulle älska att läsa dina tankar och idéer, så lägg dem i kommentarfältet nedan.

Rekommenderad: