Turinys:

Interneto radijas naudojant ESP32: 7 žingsniai (su paveikslėliais)
Interneto radijas naudojant ESP32: 7 žingsniai (su paveikslėliais)

Video: Interneto radijas naudojant ESP32: 7 žingsniai (su paveikslėliais)

Video: Interneto radijas naudojant ESP32: 7 žingsniai (su paveikslėliais)
Video: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, Lapkritis
Anonim
Image
Image
Interneto radijas naudojant ESP32
Interneto radijas naudojant ESP32
Interneto radijas naudojant ESP32
Interneto radijas naudojant ESP32

Mieli draugai, sveiki atvykę į kitą „Instructable“! Šiandien mes sukursime interneto radijo įrenginį su dideliu 3,5 colio ekranu, naudodami nebrangią ESP32 plokštę. Tikėkite ar ne, dabar mes galime sukurti interneto radiją per mažiau nei 10 minučių ir mažiau nei 30 USD. Yra daug ką padengti, todėl pradėkime!

Prieš kelis mėnesius baigiau „Arduino FM Radio“projektą, kuris puikiai veikia ir mano nuomone atrodo dar geriau. Jei norite pamatyti, kaip aš sukūriau šį projektą, galite perskaityti instrukciją čia. Problema ta, kad nors šis radijas atrodo šauniai, jis nėra praktiškas, nes aš gyvenu mažame pietų Graikijos miestelyje, o didžiosios graikų radijo stotys, kurių man labiau patinka klausytis, čia neturi siųstuvų. Taigi, aš klausau savo mėgstamų radijo imtuvų internete savo nešiojamajame ar planšetiniame kompiuteryje, kuris taip pat nėra toks praktiškas. Taigi, šiandien aš ketinu sukurti interneto radijo įrenginį, kad galėčiau klausytis savo mėgstamų radijo stočių iš viso pasaulio!

Kaip matote, pirmoji projekto versija yra paruošta ant duonos lentos. Įjunkime. Kaip matote, projektas prisijungia prie interneto ir tada transliuoja muziką iš iš anksto nustatytų radijo stočių.

Prisijungiau prie „Real FM“radijo stoties iš Atėnų ir naudodami šiuos mygtukus galime pakeisti klausomą radijo stotį. Išsaugojau savo mėgstamas radijo stotis ESP32 atmintyje, kad galėčiau jas lengvai pasiekti. Naudodamas šį potenciometrą, galiu pakeisti garsiakalbio garsumą. Aš rodau klausomos radijo stoties pavadinimą dideliame 3,5 colių ekrane su retro vartotojo sąsaja. Projektas veikia gerai ir jį labai lengva sukurti.

Tą patį projektą galite sukurti per mažiau nei 10 minučių, tačiau turite turėti tam tikros patirties. Jei tai jūsų pirmasis projektas, pirmiausia įgykite paprastesnį, kad įgytumėte patirties. Patikrinkite mano instrukcijas, kad gautumėte paprastų projektų idėjų, ir kai jums patogiau naudotis „Arduino“, elektronika grįžta kurti šio puikaus projekto. Dabar pradėkime kurti savo interneto radiją.

ATNAUJINTA 2019-06-06

Triukšmo problema buvo išspręsta pridedant izoliatoriaus transformatorių. Peržiūrėkite atnaujintą schemą. Dėkoju!

1 žingsnis: Gaukite visas dalis

Gaukite visas dalis
Gaukite visas dalis

Mums reikės šių dalių:

  • ESP32 ▶
  • MP3 dekoderis ▶
  • Izoliacijos transformatorius ▶
  • Stiprintuvas ▶
  • 3 W garsiakalbis ▶
  • 3,5 colio „Nextion“ekranas ▶
  • Mygtukai ▶
  • Duonos lenta ▶
  • Laidai ▶

Bendra projekto kaina yra apie 40 USD, bet jei nenaudojate ekrano, projekto kaina yra apie 20 USD. Nuostabūs dalykai. Mes galime sukurti savo interneto radiją tik su 20 USD!

2 žingsnis: ESP32 lenta

Image
Image
ESP32 lenta
ESP32 lenta
ESP32 lenta
ESP32 lenta

Žinoma, projekto esmė yra galinga ESP32 plokštė. Jei nesate su juo susipažinę, ESP32 lustas yra populiaraus ESP8266 lusto, kurį mes daug kartų naudojome praeityje, įpėdinis. ESP32 yra žvėris! Jis siūlo du 32 bitų apdorojimo branduolius, kurie veikia 160 MHz dažniu, didžiulį atminties kiekį, „WiFi“, „Bluetooth“ir daugybę kitų funkcijų, kurių kaina yra apie 7 USD! Nuostabūs dalykai!

Prašome žiūrėti išsamią apžvalgą, kurią paruošiau šiai lentai. Pridedu vaizdo įrašą prie šios instrukcijos. Tai padės suprasti, kodėl ši mikroschema amžinai pakeis mūsų kūrimo būdą! Vienas iš įdomiausių ESP32 dalykų yra tai, kad nors jis yra toks galingas, jis siūlo gilaus miego režimą, kuriam reikia tik 10 μΑ srovės. Dėl to ESP32 yra idealus lustas mažos galios programoms.

Šiame projekte ESP32 plokštė prisijungia prie interneto, tada ji gauna MP3 duomenis iš mūsų klausomos radijo stoties ir siunčia kai kurias komandas į ekraną.

3 žingsnis: MP3 dekoderis

MP3 dekoderis
MP3 dekoderis
MP3 dekoderis
MP3 dekoderis

Tada MP3 duomenys siunčiami į MP3 dekoderio modulį naudojant SPI sąsają. Šis modulis naudoja VS1053 IC. Šis IC yra specialus aparatūros MP3 dekoderis. Jis gauna MP3 duomenis iš ESP32 ir tikrai greitai paverčia garso signalu.

Garso signalas, kurį jis perduoda per šį garso lizdą, yra silpnas ir triukšmingas, todėl turime jį išvalyti nuo triukšmo ir sustiprinti. (Jei naudojate ausines, signalo nereikia išvalyti nuo triukšmo ar sustiprinti.) Štai kodėl aš naudoju izoliacijos transformatorių, norėdamas išvalyti garsą nuo triukšmo, ir PAM8403 garso stiprintuvą, kad sustiprinčiau garso signalą, o tada jį išsiųsiu kalbėtojui. Aš taip pat prijungiau du mygtukus prie ESP32 tik norėdamas pakeisti MP3 srautą, iš kurio gauname duomenis, ir „Nextion“ekraną, kad būtų rodoma klausoma radijo stotis.

4 veiksmas: „Nextion“ekranas

Image
Image
Visų dalių sujungimas
Visų dalių sujungimas

Šiam projektui pasirinkau naudoti „Nextion“ekraną, nes juo labai lengva naudotis. Norėdami jį valdyti, turime prijungti tik vieną laidą.

„Nextion“ekranai yra naujo tipo ekranai. Jie turi savo ARM procesorių gale, kuris yra atsakingas už ekrano valdymą ir grafinės vartotojo sąsajos kūrimą. Taigi, mes galime juos naudoti su bet kokiu mikrovaldikliu ir pasiekti įspūdingų rezultatų. Aš paruošiau išsamią šio „Nextion“ekrano apžvalgą, kurioje išsamiai paaiškinta, kaip jie veikia, kaip jais naudotis ir kokie yra jų trūkumai. Ją galite perskaityti čia arba žiūrėti pridedamą vaizdo įrašą.

5 veiksmas: visų dalių prijungimas

Visų dalių sujungimas
Visų dalių sujungimas
Visų dalių sujungimas
Visų dalių sujungimas

Viskas, ką turime padaryti dabar, yra sujungti visas dalis pagal šią schemą. Schemos schemą galite rasti čia. Ryšys yra paprastas.

Tačiau reikia atkreipti dėmesį į du dalykus. MP3 dekoderio modulis išleidžia stereo signalą, tačiau šiame projekte naudoju tik vieną garso kanalą. Norėdami gauti garso signalą, prijungiau garso kabelį prie modulio garso lizdo ir perpjoviau, kad būtų atskleisti keturi laidai viduje. Aš prijungiau du laidus. Vienas iš jų yra GND, o kitas - vieno iš dviejų garso kanalų garso signalas. Jei norite, galite prijungti abu kanalus prie stiprintuvo modulio ir valdyti du garsiakalbius.

Prieš prijungdami prie stiprintuvo, kiekvienas garso kanalas turi praeiti per izoliacijos transformatorių

Norėdami siųsti duomenis į ekraną, prie ESP32 TX0 kaiščio turime prijungti tik vieną laidą. Prijungę dalis, turime įkelti kodą į ESP32, o GUI - į „Nextion“ekraną.

Norėdami įkelti „GUI“į „Nextion“ekraną, nukopijuokite failą „InternetRadio.tft“, kurį ketinu su jumis bendrinti, į tuščią SD kortelę. Įdėkite SD kortelę į SD kortelės angą, esančią ekrano gale. Tada įjunkite ekraną ir bus įkelta GUI. Tada išimkite SD kortelę ir vėl prijunkite maitinimą.

Sėkmingai įkėlę kodą, paleiskite projektą. Ekrane kelias sekundes rodomas tekstas „Jungiamasi …“. Prisijungus prie interneto, projektas prisijungia prie iš anksto nustatytos radijo stoties. Techninė įranga veikia taip, kaip tikėtasi, bet dabar pažiūrėkime į programinę projekto pusę.

6 žingsnis: projekto kodas

Projekto kodeksas
Projekto kodeksas
Projekto kodeksas
Projekto kodeksas

Pirmiausia leiskite man kai ką parodyti. Projekto kodas yra mažesnis nei 140 kodo eilučių. Pagalvokite, mes galime sukurti interneto radiją su 3,5 colių ekranu su 140 kodo eilučių, tai nuostabu. Žinoma, visa tai galime pasiekti naudodami įvairias bibliotekas, kuriose yra tūkstančiai kodo eilučių. Tai yra „Arduino“ir atvirojo kodo bendruomenės galia. Tai palengvina kūrėjų darbą.

Šiame projekte ESP32 lentai naudoju biblioteką VS1053.

Iš pradžių turime apibrėžti „Wi-Fi“tinklo SSID ir slaptažodį. Toliau turime išsaugoti kai kurias radijo stotis. Mums reikia pagrindinio kompiuterio URL, kelio, kuriame yra srautas, ir prievado, kurį turime naudoti. Mes išsaugome visą šią informaciją į šiuos kintamuosius.

char ssid = "tavo SSID"; // jūsų tinklo SSID (vardas) char pass = "yourWifiPassword"; // jūsų tinklo slaptažodis

// Keletas radijo stočių

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 prievadas [4] = {8062, 80, 80, 80};

Į šį pavyzdį įtraukiau 4 radijo stotis.

Sąrankos funkcijoje prie mygtukų pridedame pertraukas, inicijuojame MP3 dekoderio modulį ir prisijungiame prie „Wi-Fi“.

void setup () {

Serial.begin (9600); vėlavimas (500); SPI.begin ();

pinMode (ankstesnis mygtukas, INPUT_PULLUP);

pinMode (nextButton, INPUT_PULLUP);

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

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

Atliekant ciklo funkciją, pirmiausia patikriname, ar vartotojas pasirinko kitą radijo stotį nei ta, iš kurios gauname duomenis. Jei taip, mes prisijungiame prie naujos radijo stoties, kitaip gauname duomenis iš srauto ir siunčiame į MP3 dekoderio modulį.

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

Tai viskas! Kai vartotojas paspaudžia mygtuką, įvyksta pertrauka ir pasikeičia kintamojo vertė, nurodanti, prie kurio srauto prisijungti.

void IRAM_ATTR previousButtonInterrupt () {

statinis nepasirašytas ilgai 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; }

Norėdami atnaujinti ekraną, mes tiesiog siunčiame kai kurias komandas į nuoseklųjį prievadą.

void drawRadioStationName (int id) {String komanda; jungiklis (id) {atvejis 0: komanda = "p1.pic = 2"; Serial.print (komanda); endNextionCommand (); pertrauka; // 1940 m. JK radijo 1 atvejis: command = "p1.pic = 3"; Serial.print (komanda); endNextionCommand (); pertrauka; // KOSMOS GREEK 2 atvejis: command = "p1.pic = 4"; Serial.print (komanda); endNextionCommand (); pertrauka; // REAL FM GREEK 3 atvejis: command = "p1.pic = 5"; Serial.print (komanda); endNextionCommand (); pertrauka; // SKAI 100.3 GRAIKIJA}}

Dabar pažvelkime į „Nextion Display GUI“. „Nextion“GUI sudaro fono paveikslėlis ir vaizdas, kuriame rodomas radijo stoties pavadinimas. ESP32 plokštė siunčia komandas pakeisti radijo stoties pavadinimą iš įterptų vaizdų. Tai labai lengva. Norėdami gauti daugiau informacijos, žiūrėkite „Nextion“ekrano pamoką, kurią paruošiau prieš kurį laiką. Jei norite, galite greitai sukurti savo GUI ir joje rodyti daugiau dalykų.

Kaip visada, projekto kodą galite rasti šioje instrukcijoje.

7 žingsnis: paskutinės mintys ir patobulinimai

Galutinės mintys ir patobulinimai
Galutinės mintys ir patobulinimai
Galutinės mintys ir patobulinimai
Galutinės mintys ir patobulinimai
Galutinės mintys ir patobulinimai
Galutinės mintys ir patobulinimai
Galutinės mintys ir patobulinimai
Galutinės mintys ir patobulinimai

Šis projektas yra labai paprastas. Norėjau, kad dirbtų paprastas interneto radijo projekto skeletas. Dabar, kai pirmoji projekto versija yra paruošta, galime pridėti daug funkcijų, kad ją patobulintume. Visų pirma, turiu suprojektuoti korpusą, kuriame būtų visa elektronika.

Šioje knygoje apie gražiausius kada nors sukurtus radijo imtuvus yra labai šaunių radijo imtuvų, kuriuos galima pasirinkti kaip šio projekto priedėlį. Manau, kad aplink šį įspūdingą „Art Deco“radiją ketinu pastatyti aptvarą. Kaip manote, ar jums patinka šio radijo išvaizda, ar jums labiau patinka kažkas modernesnio? Ar turite kitų aptvarų idėjų? Be to, ar jums patinka šis interneto radijo projektas ir kokias funkcijas, mūsų manymu, turime prie jo pridėti, kad jis taptų naudingesnis? Aš norėčiau perskaityti jūsų mintis ir idėjas, todėl rašykite jas žemiau esančiame komentarų skyriuje.

Rekomenduojamas: