Innholdsfortegnelse:

Internettradio ved hjelp av en ESP32: 7 trinn (med bilder)
Internettradio ved hjelp av en ESP32: 7 trinn (med bilder)

Video: Internettradio ved hjelp av en ESP32: 7 trinn (med bilder)

Video: Internettradio ved hjelp av en ESP32: 7 trinn (med bilder)
Video: Как использовать ESP32 WiFi и Bluetooth с Arduino IDE, полная информация с примерами и кодом. 2024, September
Anonim
Image
Image
Internettradio ved hjelp av en ESP32
Internettradio ved hjelp av en ESP32
Internettradio ved hjelp av en ESP32
Internettradio ved hjelp av en ESP32

Kjære venner velkommen til en annen Instructable! I dag skal vi bygge en Internett -radioenhet med en stor 3,5”skjerm ved hjelp av et billig ESP32 -kort. Tro det eller ei, vi kan nå bygge en Internett -radio på mindre enn 10 minutter og med mindre enn 30 $. Det er mye å dekke, så la oss komme i gang!

For noen måneder siden fullførte jeg et Arduino FM Radio -prosjekt som fungerer bra og ser enda bedre ut etter min mening. Hvis du vil se hvordan jeg bygde dette prosjektet, kan du lese Instructable her. Problemet er at selv om denne radioen ser kul ut, er den ikke praktisk fordi jeg bor i en liten by i Sør -Hellas og de store greske radiostasjonene jeg foretrekker å lytte til, ikke har sendere her. Så jeg hører på favorittradioene mine online på min bærbare eller nettbrett, noe som heller ikke er så praktisk. Så i dag skal jeg bygge en internettradioenhet for å kunne lytte til mine favorittradiostasjoner fra hele verden!

Som du kan se, er en første versjon av prosjektet klar på et brødbrett. La oss slå den på. Som du kan se kobler prosjektet seg til Internett og streamer deretter musikk fra forhåndsdefinerte radiostasjoner.

Jeg har stilt inn på Real FM -radiostasjonen fra Athen, og ved å bruke disse knappene kan vi endre radiostasjonen vi lytter til. Jeg har lagret mine favorittradiostasjoner i minnet til ESP32, slik at jeg enkelt kan få tilgang til dem. Med dette potensiometeret kan jeg endre volumet på høyttaleren. Jeg viser navnet på radiostasjonen vi lytter til på en stor 3,5”skjerm med et retro brukergrensesnitt. Prosjektet fungerer fint, og det er veldig enkelt å bygge.

Du kan bygge det samme prosjektet på mindre enn 10 minutter, men du må ha litt erfaring. Hvis dette er ditt første prosjekt, bør du vurdere å bygge et enklere først for å få litt erfaring. Sjekk instruksjonene mine for enkle prosjektideer, og når du er mer komfortabel med Arduino, kommer elektronikken tilbake for å bygge dette kule prosjektet. La oss nå begynne å bygge vår egen internettradio.

OPPDATERING 6/6/2019

Støyproblemet er løst ved å legge til en isolator -transformator. Sjekk det oppdaterte skjematiske diagrammet. Takk!

Trinn 1: Få alle delene

Få alle delene
Få alle delene

Vi kommer til å trenge følgende deler:

  • ESP32 ▶
  • MP3 -dekoder ▶
  • Isolasjonstransformator ▶
  • Forsterker ▶
  • 3W høyttaler ▶
  • 3,5 "Nextion -skjerm ▶
  • Trykknapper ▶
  • Brødbrett ▶
  • Ledninger ▶

Den totale kostnaden for prosjektet er rundt 40 $, men hvis du ikke bruker en skjerm, er kostnaden for prosjektet rundt 20 $. Fantastiske ting. Vi kan bygge vår egen internettradio med bare 20 $!

Trinn 2: ESP32 -bord

Image
Image
ESP32 -bord
ESP32 -bord
ESP32 -bord
ESP32 -bord

Hjertet i prosjektet er selvfølgelig det kraftige ESP32 -kortet. Hvis du ikke er kjent med den, er ESP32 -brikken etterfølgeren til den populære ESP8266 -brikken vi har brukt mange ganger tidligere. ESP32 er et dyr! Den tilbyr to 32 -biters prosessorkjerner som opererer ved 160 MHz, en enorm mengde minne, WiFi, Bluetooth og mange andre funksjoner med en kostnad på rundt 7 $! Fantastiske ting!

Se den detaljerte anmeldelsen jeg har utarbeidet for dette brettet. Jeg har lagt ved videoen på denne instruksjonsboken. Det vil hjelpe deg med å forstå hvorfor denne brikken vil endre måten vi lager ting på for alltid! En av de mest spennende tingene med ESP32 er at selv om den er så kraftig, tilbyr den en dvalemodus som krever bare 10μΑs strøm. Dette gjør ESP32 til den ideelle brikken for applikasjoner med lav effekt.

I dette prosjektet kobler ESP32 -kortet seg til Internett, og deretter mottar det MP3 -data fra radiostasjonen vi lytter til, og det sender noen kommandoer til displayet.

Trinn 3: MP3 -dekoder

MP3 -dekoder
MP3 -dekoder
MP3 -dekoder
MP3 -dekoder

MP3 -dataene sendes deretter til MP3 -dekodermodulen ved hjelp av SPI -grensesnittet. Denne modulen bruker VS1053 IC. Denne IC er en dedikert MP3 -dekoder for maskinvare. Den henter MP3 -dataene fra ESP32 og konverterer den veldig raskt til et lydsignal.

Lydsignalet det sender ut ved denne lydkontakten er svakt og bråkete, så vi må fjerne det fra støyen og forsterke det. (Hvis du bruker hodetelefoner, trenger ikke signalet å bli fjernet fra støy eller forsterket.) Derfor bruker jeg en isolasjonstransformator for å fjerne lyden fra støyen og en PAM8403 lydforsterker for å forsterke lydsignalet og deretter sende det til en høyttaler. Jeg har også koblet to knapper til ESP32 bare for å endre MP3 -strømmen vi får data fra og en Nextion -skjerm for å vise radiostasjonen vi lytter til.

Trinn 4: Nextion Display

Image
Image
Koble til alle delene
Koble til alle delene

Jeg valgte å bruke en Nextion -skjerm for dette prosjektet siden det er veldig enkelt å bruke. Vi trenger bare å koble til én ledning for å kontrollere den.

Nextion -skjermer er nye typer skjermer. De har sin egen ARM -prosessor på baksiden som er ansvarlig for å kjøre displayet og lage det grafiske brukergrensesnittet. Så vi kan bruke dem med hvilken som helst mikrokontroller og oppnå spektakulære resultater. Jeg har utarbeidet en detaljert gjennomgang av denne Nextion -skjermen som forklarer i dybden hvordan de fungerer, hvordan de brukes og deres ulemper. Du kan lese den her, eller se den vedlagte videoen.

Trinn 5: Koble til alle delene

Koble til alle delene
Koble til alle delene
Koble til alle delene
Koble til alle delene

Alt vi trenger å gjøre nå er å koble alle delene sammen i henhold til dette skjematiske diagrammet. Du finner skjematisk diagram vedlagt her. Tilkoblingen er grei.

Det er to ting å merke seg skjønt. MP3 -dekodermodulen sender ut et stereosignal, men jeg bruker bare en lydkanal i dette prosjektet. For å få lydsignalet koblet jeg en lydkabel til lydkontakten på modulen, og kuttet den for å avsløre fire ledninger inni. Jeg koblet til to av ledningene. En av dem er GND og den andre er lydsignalet til en av de to lydkanalene. Hvis du ønsker det, kan du koble begge kanalene til forsterkermodulen og kjøre to høyttalere.

Hver lydkanal må gå gjennom isolasjonstransformatoren for å fjerne eventuell støy før den kobles til forsterkeren

For å sende data til skjermen trenger vi bare å koble en ledning til TX0 -pinnen på ESP32. Etter å ha koblet delene, må vi laste koden til ESP32, og vi må laste GUI til Nextion -skjermen.

For å laste GUI til Nextion -skjermen, kopierer du InternetRadio.tft -filen jeg skal dele med deg til et tomt SD -kort. Sett SD -kortet inn i SD -kortsporet på baksiden av skjermen. Slå deretter på skjermen, og GUI blir lastet inn. Fjern deretter SD -kortet og koble til strømmen igjen.

Etter at vi har lastet inn koden, la oss starte prosjektet. Den viser teksten “Connecting…” i noen sekunder på displayet. Etter tilkobling til internett kobles prosjektet til en forhåndsdefinert radiostasjon. Maskinvaren fungerer som forventet, men la oss nå se programvaresiden av prosjektet.

Trinn 6: Koden til prosjektet

Koden for prosjektet
Koden for prosjektet
Koden for prosjektet
Koden for prosjektet

Først av alt, la meg vise deg noe. Koden til prosjektet er mindre enn 140 linjer med kode. Tenk på det, vi kan bygge en Internett -radio med en 3,5”skjerm med 140 linjer med kode, dette er fantastisk. Vi kan oppnå alt dette ved hjelp av forskjellige biblioteker som selvfølgelig inneholder tusenvis av linjer med kode. Dette er kraften til Arduino og Open source -fellesskapet. Det gjør ting enkelt for beslutningstakere.

I dette prosjektet bruker jeg VS1053 -biblioteket for ESP32 -kortet.

Først må vi definere SSID og passordet til Wi-Fi-nettverket. Deretter må vi lagre noen radiostasjoner her. Vi trenger vertsadressen, banen der strømmen er plassert og porten vi må bruke. Vi lagrer all denne informasjonen i disse variablene.

char ssid = "yourSSID"; // nettverks -SSID (navn) char pass = "yourWifiPassword"; // nettverkspassordet ditt

// Få radiostasjoner

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};

Jeg har inkludert 4 radiostasjoner i dette eksemplet.

I oppsettfunksjonen kobler vi avbrudd til knappene, vi initialiserer MP3-dekodermodulen og kobler til Wi-Fi.

ugyldig oppsett () {

Serial.begin (9600); forsinkelse (500); SPI.begin ();

pinMode (forrigeButton, INPUT_PULLUP);

pinMode (nextButton, INPUT_PULLUP);

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

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

I loop -funksjonen sjekker vi først om brukeren har valgt en annen radiostasjon enn den vi får data fra. I så fall kobler vi til den nye radiostasjonen, ellers får vi data fra strømmen og sender dem til MP3 Decoder -modulen.

void loop () {if (radioStation! = previousRadioStation) {station_connect (radioStation); previousRadioStation = radioStation; } hvis (client.available ()> 0) {uint8_t bytesread = client.read (mp3buff, 32); player.playChunk (mp3buff, bytesread); }}

Det er alt! Når brukeren trykker på en knapp, skjer det et avbrudd, og endrer verdien til en variabel som forteller hvilken strøm den skal koble seg til.

ugyldig IRAM_ATTR previousButtonInterrupt () {

statisk usignert lang last_interrupt_time = 0;

usignert lang interrupt_time = millis (); if (interrupt_time-last_interrupt_time> 200) {if (radioStation> 0) radioStation--; ellers radioStation = 3; } siste_interrupt_time = interrupt_time; }

For å oppdatere skjermen sender vi bare noen kommandoer til den serielle porten.

void drawRadioStationName (int id) {String -kommando; switch (id) {case 0: command = "p1.pic = 2"; Serial.print (kommando); endNextionCommand (); gå i stykker; // 1940 UK Radio case 1: command = "p1.pic = 3"; Serial.print (kommando); endNextionCommand (); gå i stykker; // KOSMOS GREK case 2: command = "p1.pic = 4"; Serial.print (kommando); endNextionCommand (); gå i stykker; // REAL FM GREK case 3: command = "p1.pic = 5"; Serial.print (kommando); endNextionCommand (); gå i stykker; // SKAI 100.3 GREK}}

La oss ta en titt på Nextion Display GUI. Nextion GUI består av et bakgrunnsbilde og et bilde som viser navnet på radiostasjonen. ESP32 -kortet sender kommandoer for å endre navnet på radiostasjonen fra de innebygde bildene. Det er veldig lett. Vennligst se opplæringen til Nextion -visningen jeg har forberedt for en stund siden for mer informasjon. Du kan raskt designe din egen GUI hvis du ønsker det og vise flere ting på den.

Som alltid kan du finne koden til prosjektet vedlagt i denne instruksjonsboken.

Trinn 7: Endelige tanker og forbedringer

Endelige tanker og forbedringer
Endelige tanker og forbedringer
Endelige tanker og forbedringer
Endelige tanker og forbedringer
Endelige tanker og forbedringer
Endelige tanker og forbedringer
Endelige tanker og forbedringer
Endelige tanker og forbedringer

Dette prosjektet er veldig enkelt. Jeg ønsket et enkelt skjermbilde for Internett -radioprosjekter å jobbe med. Nå som en første versjon av prosjektet er klart, kan vi legge til mange funksjoner for å forbedre det. Først og fremst må jeg designe et kabinett for all elektronikken.

I denne boken om de vakreste radioene noensinne er det veldig kule radioer å velge mellom som et kabinett for dette prosjektet. Jeg tror jeg skal bygge et kabinett rundt denne spektakulære Art Deco -radioen. Hva synes du, liker du utseendet på denne radioen eller foretrekker du noe mer moderne? Har du andre ideer til innhegning? Liker du også dette Internettradio -prosjektet, og hvilke funksjoner tror du vi må legge til for å gjøre det mer nyttig? Jeg vil gjerne lese tankene og ideene dine, så legg dem inn i kommentarfeltet nedenfor.

Anbefalt: