Indholdsfortegnelse:

Internetradio ved hjælp af en ESP32: 7 trin (med billeder)
Internetradio ved hjælp af en ESP32: 7 trin (med billeder)

Video: Internetradio ved hjælp af en ESP32: 7 trin (med billeder)

Video: Internetradio ved hjælp af en ESP32: 7 trin (med billeder)
Video: ёРадио: интернет-радио своими руками. Нюансы МРЗ-кодека/Сборка "ёЖика"/Как прошить через Arduino IDE 2024, September
Anonim
Image
Image
Internetradio ved hjælp af en ESP32
Internetradio ved hjælp af en ESP32
Internetradio ved hjælp af en ESP32
Internetradio ved hjælp af en ESP32

Kære venner velkommen til en anden instruerbar! I dag skal vi bygge en internetradioenhed med et stort 3,5”display ved hjælp af et billigt ESP32 -kort. Tro det eller ej, vi kan nu bygge en internetradio på mindre end 10 minutter og med mindre end 30 $. Der er meget at dække, så lad os komme i gang!

For et par måneder siden gennemførte jeg et Arduino FM Radio -projekt, der fungerer godt og ser endnu bedre ud efter min mening. Hvis du vil se, hvordan jeg byggede dette projekt, kan du læse Instructable her. Problemet er, at selvom denne radio ser cool ud, er den ikke praktisk, fordi jeg bor i en lille by i det sydlige Grækenland og de store græske radiostationer, jeg foretrækker at lytte til, ikke har sendere her. Så jeg lytter til mine yndlingsradioer online på min bærbare eller tablet -pc, hvilket heller ikke er så praktisk. Så i dag vil jeg bygge en internetradioenhed for at kunne lytte til mine yndlingsradiostationer fra hele verden!

Som du kan se, er en første version af projektet klar på et brødbræt. Lad os tænde det. Som du kan se, opretter projektet forbindelse til internettet og streamer derefter musik fra foruddefinerede radiostationer.

Jeg har indstillet Real FM -radiostationen fra Athen, og ved hjælp af disse knapper kan vi ændre den radiostation, vi lytter til. Jeg har gemt mine yndlingsradiostationer i hukommelsen til ESP32, så jeg let kan få adgang til dem. Med dette potentiometer kan jeg ændre højttaleren. Jeg viser navnet på den radiostation, vi lytter til, på et stort 3,5”display med en retro brugergrænseflade. Projektet fungerer fint, og det er meget let at bygge.

Du kan bygge det samme projekt på mindre end 10 minutter, men du skal have lidt erfaring. Hvis dette er dit første projekt, kan du først overveje at bygge et enklere projekt for at få lidt erfaring. Tjek mine instruktioner for enkle projektideer, og når du er mere komfortabel med Arduino, kommer elektronikken tilbage for at bygge dette fede projekt. Lad os nu begynde at bygge vores egen internetradio.

OPDATERING 6/6/2019

Støjproblemet er løst ved at tilføje en isolator -transformer. Tjek det opdaterede skematiske diagram. Tak!

Trin 1: Få alle delene

Få alle delene
Få alle delene

Vi får brug for følgende dele:

  • ESP32 ▶
  • MP3 -dekoder ▶
  • Isolationstransformator ▶
  • Forstærker ▶
  • 3W højttaler ▶
  • 3,5 "Nextion Display ▶
  • Trykknapper ▶
  • Breadboard ▶
  • Ledninger ▶

De samlede omkostninger ved projektet er omkring 40 $, men hvis du ikke bruger et display, er projektets omkostninger omkring 20 $. Fantastiske ting. Vi kan bygge vores egen internetradio med kun 20 $!

Trin 2: ESP32 -kort

Image
Image
ESP32 Board
ESP32 Board
ESP32 Board
ESP32 Board

Hjertet i projektet er naturligvis det kraftfulde ESP32 -kort. Hvis du ikke kender det, er ESP32 -chippen efterfølgeren til den populære ESP8266 -chip, vi tidligere har brugt mange gange. ESP32 er et dyr! Det tilbyder to 32 bit behandlingskerner, der fungerer ved 160 MHz, en massiv mængde hukommelse, WiFi, Bluetooth og mange andre funktioner med en pris på omkring 7 $! Fantastiske ting!

Se venligst den detaljerede anmeldelse, jeg har forberedt til dette board. Jeg har vedhæftet videoen på denne Instructable. Det vil hjælpe med at forstå, hvorfor denne chip vil ændre den måde, vi laver ting på for evigt! En af de mest spændende ting ved ESP32 er, at selvom den er så kraftig, tilbyder den en dyb dvaletilstand, der kun kræver 10μΑs strøm. Dette gør ESP32 til den ideelle chip til applikationer med lav effekt.

I dette projekt opretter ESP32 -kortet forbindelse til internettet, og derefter modtager det MP3 -data fra den radiostation, vi lytter til, og det sender nogle kommandoer til displayet.

Trin 3: MP3 -dekoder

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

MP3 -dataene sendes derefter til MP3 -dekodermodulet ved hjælp af SPI -interface. Dette modul bruger VS1053 IC. Denne IC er en dedikeret hardware MP3 -dekoder. Det henter MP3 -data fra ESP32 og konverterer det virkelig hurtigt til et lydsignal.

Det lydsignal, der udsendes ved dette lydstik, er svagt og støjende, så vi er nødt til at fjerne det fra støjen og forstærke det. (Hvis du bruger hovedtelefoner, behøver signalet ikke at blive ryddet for støj eller forstærket.) Derfor bruger jeg en isolationstransformator til at rydde lyden fra støjen og en PAM8403 lydforstærker til at forstærke lydsignalet og derefter sende det til en højttaler. Jeg har også tilsluttet to knapper til ESP32 bare for at ændre MP3 Stream, vi får data fra, og et Nextion display til at vise den radiostation, vi lytter til.

Trin 4: Nextion Display

Image
Image
Tilslutning af alle dele
Tilslutning af alle dele

Jeg valgte at bruge en Nextion -skærm til dette projekt, da det er meget let at bruge. Vi behøver kun at tilslutte en ledning for at styre den.

Nextion -skærmene er en ny slags displays. De har deres egen ARM -processor på bagsiden, som er ansvarlig for at køre displayet og skabe den grafiske brugergrænseflade. Så vi kan bruge dem med enhver mikrokontroller og opnå spektakulære resultater. Jeg har udarbejdet en detaljeret gennemgang af denne Nextion -skærm, der forklarer i dybden, hvordan de fungerer, hvordan de bruges og deres ulemper. Du kan læse den her, eller se den vedhæftede video.

Trin 5: Tilslutning af alle delene

Tilslutning af alle dele
Tilslutning af alle dele
Tilslutning af alle dele
Tilslutning af alle dele

Alt vi skal gøre nu er at forbinde alle delene sammen i henhold til dette skematiske diagram. Du finder skematisk diagram vedhæftet her. Forbindelsen er ligetil.

Der er dog to ting at bemærke. MP3 -dekodermodulet udsender et stereosignal, men jeg bruger kun en lydkanal i dette projekt. For at få lydsignalet tilsluttede jeg et lydkabel til lydstikket på modulet og skar det til for at afsløre fire ledninger indeni. Jeg forbandt to af ledningerne. En af dem er GND og den anden er lydsignalet fra en af de to lydkanaler. Hvis du ønsker det, kan du slutte begge kanaler til forstærkermodulet og køre to højttalere.

Hver lydkanal skal gå gennem isolationstransformatoren for at fjerne enhver støj, før den tilsluttes forstærkeren

For at sende data til displayet behøver vi kun at tilslutte en ledning til TX0 -pin på ESP32. Efter tilslutning af delene skal vi indlæse koden til ESP32, og vi skal indlæse GUI'en i Nextion -displayet.

For at indlæse GUI'en til Nextion -displayet skal du kopiere den InternetRadio.tft -fil, jeg vil dele med dig, til et tomt SD -kort. Sæt SD -kortet i SD -kortstikket bag på skærmen. Tænd derefter for skærmen, og GUI'en indlæses. Fjern derefter SD -kortet og tilslut strømmen igen.

Efter at have indlæst koden, lad os starte projektet. Det viser teksten "Connecting …" i et par sekunder på displayet. Efter tilslutning til internettet opretter projektet forbindelse til en foruddefineret radiostation. Hardwaren fungerer som forventet, men lad os nu se softwaresiden af projektet.

Trin 6: Projektets kode

Projektets kode
Projektets kode
Projektets kode
Projektets kode

Først og fremmest, lad mig vise dig noget. Projektets kode er mindre end 140 linjer kode. Tænk over det, vi kan bygge en internetradio med et 3,5”display med 140 linjer kode, dette er fantastisk. Vi kan opnå alt dette ved hjælp af forskellige biblioteker selvfølgelig, som indeholder tusindvis af linjer med kode. Dette er kraften i Arduino og Open source -fællesskabet. Det gør tingene lette for beslutningstagere.

I dette projekt bruger jeg VS1053 -biblioteket til ESP32 -kortet.

Først skal vi definere SSID og adgangskoden til Wi-Fi-netværket. Dernæst skal vi gemme nogle radiostationer her. Vi har brug for værtens URL, stien, hvor strømmen er placeret, og den port, vi skal bruge. Vi gemmer alle disse oplysninger i disse variabler.

char ssid = "yourSSID"; // dit netværks -SSID (navn) char pass = "ditWifiPassword"; // din netværksadgangskode

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

Jeg har inkluderet 4 radiostationer i dette eksempel.

I opsætningsfunktionen vedhæfter vi afbrydelser til knapperne, vi initialiserer MP3-dekodermodulet, og vi opretter forbindelse til Wi-Fi.

ugyldig opsætning () {

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

pinMode (foregåendeKnap, INPUT_PULLUP);

pinMode (nextButton, INPUT_PULLUP);

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

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

I loop -funktionen kontrollerer vi først og fremmest, om brugeren har valgt en anden radiostation end den, vi får data fra. I så fald opretter vi forbindelse til den nye radiostation, ellers får vi data fra strømmen og sender dem til MP3 Decoder -modulet.

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 brugeren trykker på en knap, sker der en afbrydelse og ændrer værdien af en variabel, der fortæller, hvilken strøm der skal forbindes til.

ugyldig IRAM_ATTR previousButtonInterrupt () {

statisk usigneret lang last_interrupt_time = 0;

usigneret lang interrupt_time = millis (); hvis (interrupt_time-last_interrupt_time> 200) {if (radioStation> 0) radioStation--; ellers radioStation = 3; } sidste_interrupt_time = interrupt_time; }

For at opdatere displayet sender vi blot nogle kommandoer til den serielle port.

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

Lad os nu se på Nextion Display GUI. Nextion GUI består af et baggrundsbillede og et billede, der viser navnet på radiostationen. ESP32 -kortet sender kommandoer til ændring af radiostationens navn fra de integrerede billeder. Det er meget let. Se venligst den Nextion display tutorial jeg har forberedt for noget tid siden for mere information. Du kan hurtigt designe din egen GUI, hvis du ønsker det, og vise flere ting på den.

Som altid kan du finde koden til projektet vedlagt i denne instruktionsbog.

Trin 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 projekt er meget enkelt. Jeg ville have et simpelt internetradioprojektskelet til at arbejde med. Nu hvor en første version af projektet er klar, kan vi tilføje mange funktioner til det for at forbedre det. Først og fremmest skal jeg designe et kabinet til at huse al elektronik.

I denne bog om de smukkeste radioer, der nogensinde er lavet, er der meget fede radioer at vælge imellem som et kabinet til dette projekt. Jeg tror, jeg skal bygge et kabinet omkring denne spektakulære Art Deco -radio. Hvad synes du, kan du lide denne radios udseende eller foretrækker du noget mere moderne? Har du andre ideer til kabinettet? Kan du også lide dette Internet Radio -projekt, og hvilke funktioner synes du, vi skal tilføje til det for at gøre det mere nyttigt? Jeg ville elske at læse dine tanker og ideer, så send dem venligst i kommentarfeltet herunder.

Anbefalede: