Instructables
Avtor: educ8s.tv
Dragi prijatelji, dobrodošli v novem navodilu! Tokrat bomo izdelali internetni radio z velikim 3,5-palčnim zaslonom, za kar bomo uporabili poceni ploščo ESP32.
Verjeli ali ne, internetni radio lahko zdaj izdelamo v manj kot 10 minutah in za manj kot 30 dolarjev. Imamo veliko za obdelati, zato začnimo!
Pred nekaj meseci sem zaključil projekt Arduino FM Radio [1], ki po mojem mnenju odlično deluje in še bolje izgleda. Če želite videti, kako sem izvedel ta projekt, si lahko preberete navodila tukaj [1]. Problem je, da je ta radio sicer kul, vendar ni praktičen, ker živim v majhnem mestecu na jugu Grčije, kjer velike grške radijske postaje, ki jih najraje poslušam, nimajo oddajnikov. Zato poslušam svoje najljubše radijske postaje prek spleta na svojem prenosnem računalniku ali tabličnem računalniku, kar prav tako ni preveč praktično. Zato sem se odločil, da bom izdelal internetno radijsko napravo, da bom lahko poslušal svoje najljubše radijske postaje iz vsega sveta!
Ta vsebina je samo za naročnike
Kot lahko vidite, je prva različica projekta pripravljena na preskusni plošči. Ko ploščo vklopimo, se poveže z internetom in nato predvaja glasbo iz vnaprej določenih radijskih postaj.



Nastavil sem radijsko postajo Real FM iz Aten in s pomočjo teh gumbov lahko spreminjamo radijsko postajo, ki jo poslušamo. Svoje najljubše radijske postaje sem shranil v pomnilnik ESP32, da imam do njih lahek dostop. S tem potenciometrom lahko spreminjam glasnost zvočnika. Ime radijske postaje, ki jo poslušamo, prikažem na velikem 3,5-palčnem zaslonu z retro uporabniškim vmesnikom. Projekt deluje dobro in je zelo enostaven za izdelavo.
Enak projekt lahko zgradite v manj kot 10 minutah, vendar morate imeti nekaj izkušenj. Če je to vaš prvi projekt, razmislite o tem, da najprej zgradite enostavnejšega, da pridobite nekaj izkušenj. Preverite moje navodila za enostavne ideje za projekte in ko se boste bolje seznanili z Arduinom, se vrnite k elektroniki, da zgradite ta kul projekt. Zdaj pa začnimo graditi naš lasten internetni radio.
Pri izgradnji bomo potrebovali naslednje komponente:
ESP32 – http://educ8s.tv/part/ESP32
MP3 dekoder – http://educ8s.tv/part/MP3Decoder
Izolacijski transformator – http://educ8s.tv/part/AudioTransformer
Ojačevalnik – http://educ8s.tv/part/PAM8403
3W zvočnik – http://educ8s.tv/part/3WSpeaker
3.5« Nextion Display – http://educ8s.tv/part/Nextion35
Tipke – http://educ8s.tv/part/Buttons
Razvojno ploščo – http://educ8s.tv/part/LargeBreadboard
Žice – http://educ8s.tv/part/Wires



Skupni stroški projekta znašajo okoli 40 $, če pa ne uporabljate zaslona, znašajo okoli 20 $. Neverjetno. S samo 20 $ lahko zgradimo svoj internetni radio!
Srce projekta je seveda zmogljiva plošča ESP32. Če je ne poznate, je čip ESP32 naslednik priljubljenega čipa ESP8266, ki smo ga v preteklosti že večkrat uporabili. ESP32 je prava pošast! Ponuja dva 32-bitna procesna jedra, ki delujeta s frekvenco 160 MHz, ogromno količino pomnilnika, WiFi, Bluetooth in številne druge funkcije, vse to pa za ceno okoli 7 dolarjev*!
Oglejte si podrobno oceno, ki sem jo pripravil za to ploščo. Video sem priložil k temu navodilu. Pomagal vam bo razumeti, zakaj bo ta čip za vedno spremenil način, kako izdelujemo stvari! Ena najbolj zanimivih lastnosti ESP32 je, da kljub svoji moči ponuja način globokega spanja, ki porabi le 10 μA toka. Zaradi tega je ESP32 idealni čip za aplikacije z nizko porabo energije.
V tem projektu se plošča ESP32 poveže z internetom, nato prejme MP3 podatke iz radijske postaje, ki jo poslušamo, in pošlje nekaj ukazov na zaslon.
MP3 dekoder
MP3 podatki se nato pošljejo v MP3 dekoder modul prek SPI vmesnika. Ta modul uporablja VS1053 IC. Ta IC je namenski MP3 dekoder. Prejme MP3 podatke iz ESP32 in jih zelo hitro pretvori v avdio signal.
Avdio signal, ki je prisoten na tej avdio vtičnici, je šibak in šumeč, zato moramo odstraniti šum in ga ojačati.
(Če uporabljate slušalke, signalu ni treba odstraniti šuma ali ga ojačati.) Zato uporabljam izolacijski transformator za odstranjevanje šuma iz avdio signala in avdio ojačevalnik PAM8403 za ojačenje avdio signala, ki ga nato pošljem v zvočnik. Na ESP32 sem priključil tudi dve tipki, da lahko spreminjam MP3 tok, iz katerega dobivamo podatke, in Nextion zaslon, da lahko prikažem radijsko postajo, ki jo poslušamo.


Nextion zaslon
Za ta projekt sem izbral zaslon Nextion, saj je zelo enostaven za uporabo. Za krmiljenje ga je treba priključiti le z enim kablom.
Zasloni Nextion so relativno nov tip zaslonov. Na zadnji strani imajo lasten ARM procesor, ki je odgovoren za krmiljenje zaslona in ustvarjanje grafičnega uporabniškega vmesnika. Zato jih lahko uporabljamo z vsakim mikrokontrolerjem in dosežemo spektakularne rezultate. Pripravil sem podrobno oceno tega zaslona Nextion, v kateri podrobno pojasnjujem, kako delujejo, kako jih uporabljati in kakšne so njihove slabosti. Preberete si jo lahko tukaj [2] ali si ogledate priložen video.
Povezava vseh komponent
Zdaj moramo samo še povezati vse komponente v skladu s t shemo. Shema se nahaja na sliki 4. Povezava je preprosta.
Opozoriti pa je treba na dve stvari. Modul MP3 dekoderja oddaja stereo signal, vendar v tem projektu uporabljam samo en avdio kanal. Da bi dobil avdio signal, sem avdio kabel priključil na avdio priključek modula in ga prerezal, da sem razkril štiri žice znotraj. Povezal sem dve žici. Ena od njiju je GND, druga pa avdio signal enega od dveh avdio kanalov. Če želite, lahko oba kanala povežete z ojačevalnim modulom in krmilite dva zvočnika.
Vsak avdio kanal mora preiti skozi izolacijski transformator, da se odstrani morebitni šum, preden se priključi na ojačevalnik.
Alternativa za relativno dragi transformator je vezje, ki ga vidite na sliki 5.
Za pošiljanje podatkov na zaslon moramo priključiti le en kabel na pin TX0 ESP32. Po priključitvi delov moramo naložiti kodo na ESP32 in GUI na zaslon Nextion.
Da naložite GUI na zaslon Nextion, kopirajte datoteko InternetRadio.tft, ki jo bom delil z vami, na prazno SD kartico. Vstavite SD kartico v režo za SD kartico na zadnji strani zaslona. Nato vklopite zaslon in GUI se bo naložil. Nato odstranite SD kartico in ponovno priključite napajanje.
Po uspešnem nalaganju kode vklopimo projekt. Na zaslonu se za nekaj sekund prikaže besedilo »Connecting…«. Po povezavi z internetom se projekt poveže z vnaprej določeno radijsko postajo. Strojna oprema deluje kot pričakovano (slika 6), zdaj pa si oglejmo programsko opremo projekta.
Programska oprema
Najprej vam bom nekaj pokazal. Koda projekta ima manj kot 140 vrstic. Pomislite, s 140 vrsticami kode lahko zgradimo internetni radio z 3,5-palčnim zaslonom, to je neverjetno. Vse to lahko seveda dosežemo z različnimi knjižnicami, ki vsebujejo tisoče vrstic kode. To je moč Arduina in odprtokodne skupnosti. To olajša delo ustvarjalcem.


V tem projektu uporabljam knjižnico VS1053 za ploščo ESP32.
Najprej moramo določiti SSID in geslo za Wi-Fi omrežje. Nato moramo tukaj shraniti nekaj radijskih postaj. Potrebujemo URL gostitelja, pot, kjer se nahaja pretočni kanal, in vrata, ki jih moramo uporabiti. Vse te informacije shranimo v te spremenljivke.
char ssid[] = »yourSSID«;
// your network SSID (name)
char pass[] = »yourWifiPassword«;
// your network password
// Few Radio Stations
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};
V tem primeru sem vključil 4 radijske postaje.
V nastavitveni funkciji dodamo prekinitve tipkam, inicializiramo modul MP3 dekoderja in se povežemo z Wi-Fi omrežjem.
void setup () {
Serial.begin(9600);
delay(500);
SPI.begin();
pinMode(previousButton, INPUT_PULLUP);
pinMode(nextButton, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(previousButton),
previousButtonInterrupt, FALLING);
attachInterrupt(digitalPinToInterrupt
(nextButton), nextButtonInterrupt, FALLING);
initMP3Decoder();
connectToWIFI();
}
V loop funkciji najprej preverimo, ali je uporabnik izbral drugo radijsko postajo kot tisto, iz katere pridobivamo podatke. Če je tako, se povežemo z novo radijsko postajo, sicer pa pridobimo podatke iz podatkovnega toka in jih pošljemo MP3 Decoder modulu.
void loop() {
if(radioStation!=previousRadioStation) { station_connect(radioStation); previousRadioStation = radioStation; }
if (client.available() > 0)
{
uint8_t bytesread = client.read(mp3buff,
32);
player.playChunk(mp3buff, bytesread);
}
}
To je vse! Ko uporabnik pritisne tipko, pride do prekinitve in spremeni vrednost spremenljivke, ki določa, s katerim podatkovnim tokom se je treba povezati.
void IRAM_ATTR previousButtonInterrupt() {
static unsigned long last_ interrupt_time = 0; unsigned long interrupt_time = millis();
if (interrupt_time – last_interrupt_time > 200)
{
if(radioStation>0)
radioStation–;
else
radioStation = 3;
}
last_interrupt_time = interrupt_time;
}
Za posodobitev zaslona preprosto pošljemo nekaj ukazov na serijski vmesnik.
void IRAM_ATTR previousButtonInterrupt() {
static unsigned long last_ interrupt_time = 0; unsigned long interrupt_time = millis();
if (interrupt_time – last_interrupt_time > 200)
{
if(radioStation>0)
radioStation–;
else
radioStation = 3;
}
last_interrupt_time = interrupt_time;
}
Sedaj si oglejmo grafični vmesnik Nextion Display GUI. Nextion GUI sestavljata ozadje in slika, ki prikazuje ime radijske postaje. Plošča ESP32 pošilja ukaze za spreminjanje imena radijske postaje iz vgrajenih slik. To je zelo enostavno. Za več informacij si oglejte navodila za uporabo zaslona Nextion, ki sem jih pripravil nekaj časa nazaj. Če želite, lahko hitro oblikujete svoj grafični vmesnik in na njem prikažete več stvari.
Kot vedno lahko kodo projekta najdete v prilogi [3] k temu navodilu.
Izboljšave in zaključek
Ta projekt je zelo preprost. Želel sem si preprost okvir za projekt internetnega radia, s katerim bi lahko delal. Zdaj, ko je prva različica projekta pripravljena, lahko dodamo številne funkcije, da ga izboljšamo. Najprej moram zasnovati ohišje, v katerem bo nameščena vsa elektronika. Nekaj predlogov se nahaja v slikah na koncu članka.
Viri:
1: https://www.instructables.com/id/Art-Deco-FM-Radio-Project-Using-Arduino/
2: https://www.instructables.com/id/Arduino-Weather-Station-With-a-Nextion-Display/
3. https://content.instructables.com/FCX/PBTR/JX8T6NF8/FCXPBTRJX8T6NF8.zip
Povzeto po:
https://www.instructables.com/Internet-Radio-Using-an-ESP32/
- cena je veljala v času pisanja članka, morda se je v vmesnem času že spremenila.
