Talaan ng mga Nilalaman:

Internet Radio Gamit ang isang ESP32: 7 Mga Hakbang (na may Mga Larawan)
Internet Radio Gamit ang isang ESP32: 7 Mga Hakbang (na may Mga Larawan)

Video: Internet Radio Gamit ang isang ESP32: 7 Mga Hakbang (na may Mga Larawan)

Video: Internet Radio Gamit ang isang ESP32: 7 Mga Hakbang (na may Mga Larawan)
Video: ESP8266 Diesel Injector Purging Station - PWM NodeMCU pump flow Control (Subtittled) 2024, Hunyo
Anonim
Image
Image
Internet Radio Gamit ang isang ESP32
Internet Radio Gamit ang isang ESP32
Internet Radio Gamit ang isang ESP32
Internet Radio Gamit ang isang ESP32

Minamahal na mga kaibigan maligayang pagdating sa isa pang maituturo! Ngayon ay magtatayo kami ng isang aparato sa Internet Radio na may malaking display na 3.5 gamit ang isang murang board ng ESP32. Maniwala ka man o hindi, makakagawa na tayo ng isang Internet Radio nang mas mababa sa 10 minuto at may mas mababa sa 30 $. Maraming dapat takpan kaya, magsimula na tayo!

Ilang buwan na ang nakakalipas, nakumpleto ko ang isang proyekto ng Arduino FM Radio na gumagana nang mahusay at mukhang mas mahusay sa aking palagay. Kung nais mong makita kung paano ko itinayo ang proyektong ito maaari mong basahin ang Instructable dito. Ang problema ay, bagaman ang radio na ito ay mukhang cool hindi praktikal dahil nakatira ako sa isang maliit na bayan sa southern Greece at ang mga malalaking Greek radio station na mas gusto kong pakinggan, walang mga transmitter sa paligid dito. Kaya, nakikinig ako sa aking mga paboritong radio online sa aking laptop o tablet pc na hindi rin gaanong praktikal. Kaya, ngayon ay magtatayo ako ng isang aparato sa radyo sa Internet upang makinig sa aking mga paboritong istasyon ng radyo mula sa buong mundo!

Tulad ng nakikita mo, ang isang unang bersyon ng proyekto ay handa na sa isang breadboard. Patayin natin ito. Tulad ng nakikita mong kumokonekta ang proyekto sa Internet at pagkatapos ay dumadaloy ng musika mula sa paunang natukoy na Mga Istasyon ng Radio.

Nakasunud-sunod ako sa istasyon ng radyo ng Real FM mula sa Athens at sa pamamagitan ng paggamit ng mga pindutan na ito maaari naming baguhin ang Radio Station na ating naririnig. Nai-save ko ang aking mga paboritong istasyon ng radyo sa memorya ng ESP32 upang madali kong ma-access ang mga ito. Sa potensyomiter na ito, mababago ko ang dami ng nagsasalita. Ipinapakita ko ang Pangalan ng Istasyon ng Radyo na nakikinig kami sa isang malaking 3.5 na display na may isang Retro ng User Interface. Gumagana ang proyekto at napakadaling itayo.

Maaari kang bumuo ng parehong proyekto nang mas mababa sa 10 minuto ngunit kailangan mong magkaroon ng ilang karanasan. Kung ito ang iyong unang proyekto, isaalang-alang ang pagbuo muna ng isang mas simple, upang makakuha ng ilang karanasan. Suriin ang aking Mga Tagubilin para sa mga simpleng ideya ng proyekto at kapag mas komportable ka sa Arduino bumalik ang mga electronics upang mabuo ang cool na proyekto. Magsimula na tayong magtayo ng sarili nating Internet Radio.

I-UPDATE 6/6/2019

Ang isyu sa ingay ay nalutas sa pamamagitan ng pagdaragdag ng isang isolator transpormer. Suriin ang na-update na diagram ng shematic. Salamat!

Hakbang 1: Kunin ang Lahat ng Mga Bahagi

Kunin ang Lahat ng Mga Bahagi
Kunin ang Lahat ng Mga Bahagi

Kakailanganin namin ang mga sumusunod na bahagi:

  • ESP32 ▶
  • MP3 decoder ▶
  • Isolation Transformer ▶
  • Amplifier ▶
  • 3W speaker ▶
  • 3.5 "Display ng Nextion ▶
  • Mga Push Button ▶ https://educ8s.tv/part/ Buttons
  • Breadboard ▶
  • Mga Wires ▶

Ang kabuuang halaga ng proyekto ay humigit-kumulang na $ 40 ngunit kung hindi ka gagamit ng isang display ang halaga ng proyekto ay humigit-kumulang na $ 20. Kamangha-manghang bagay. Maaari kaming bumuo ng aming sariling Internet radio na may lamang $ 20!

Hakbang 2: Lupon ng ESP32

Image
Image
Lupon ng ESP32
Lupon ng ESP32
Lupon ng ESP32
Lupon ng ESP32

Ang puso ng proyekto ay, siyempre, ang malakas na board ng3232. Kung hindi ka pamilyar dito, ang ESP32 chip ay ang kahalili ng sikat na ESP8266 chip na ginamit namin ng maraming beses sa nakaraan. Ang ESP32 ay isang hayop! Nag-aalok ito ng dalawang 32 bit na core ng pagproseso na nagpapatakbo sa 160MHz, isang napakalaking memorya, WiFi, Bluetooth at maraming iba pang mga tampok na may halagang humigit-kumulang na $ 7! Kamangha-manghang bagay!

Mangyaring panoorin ang detalyadong pagsusuri na inihanda ko para sa board na ito. Inilakip ko ang video sa Instructable na ito. Makakatulong itong maunawaan kung bakit babaguhin ng chip na ito ang paraan ng paggawa natin ng mga bagay magpakailanman! Ang isa sa mga pinaka kapanapanabik na bagay tungkol sa ESP32 ay na kahit na napakalakas nito, nag-aalok ito ng isang mode na deep-sleep na nangangailangan lamang ng 10μΑs ng kasalukuyang. Ginagawa nitong perpektong chip ang ESP32 para sa mababang aplikasyon ng kuryente.

Sa proyektong ito, kumokonekta ang lupon ng ESP32 sa Internet at pagkatapos ay tumatanggap ito ng data ng MP3 mula sa istasyon ng radyo na nakikinig, at nagpapadala ito ng ilang mga utos sa display.

Hakbang 3: MP3 Decoder

MP3 Decoder
MP3 Decoder
MP3 Decoder
MP3 Decoder

Ang data ng MP3 ay ipinadala sa module ng MP3 decoder gamit ang interface ng SPI. Ang modyul na ito ay gumagamit ng VS1053 IC. Ang IC na ito ay isang nakalaang hardware MP3 decoder. Nakukuha nito ang data ng MP3 mula sa ESP32 at mabilis itong nag-convert sa isang audio signal.

Ang audio signal na output nito sa audio jack na ito ay mahina at maingay, kaya kailangan nating i-clear ito mula sa ingay at palakihin ito. (Kung gumagamit ka ng mga headphone, ang signal ay hindi kailangang i-clear mula sa ingay o pinalaki.) Iyon ang dahilan kung bakit gumagamit ako ng Isolation transpormer upang i-clear ang audio mula sa ingay at isang PAM8403 audio amplifier upang palakasin ang audio signal at pagkatapos ay ipadala ito sa isang tagapagsalita. Nakakonekta ko rin ang dalawang mga pindutan sa ESP32 upang mabago lamang ang MP3 Stream na kumukuha kami ng data at isang pagpapakita ng Nextion upang ipakita ang istasyon ng Radio na nakikinig sa amin.

Hakbang 4: Pagpapakita ng Nextion

Image
Image
Pagkonekta sa Lahat ng Mga Bahagi
Pagkonekta sa Lahat ng Mga Bahagi

Pinili kong gumamit ng isang Nextion display para sa proyektong ito dahil napakadaling gamitin. Kailangan lamang naming ikonekta ang isang kawad upang makontrol ito.

Ang mga ipinapakita na Nextion ay mga bagong uri ng pagpapakita. Mayroon silang sariling ARM processor sa likuran na responsable para sa pagmamaneho ng display at paglikha ng interface ng grapiko na gumagamit. Kaya, maaari naming gamitin ang mga ito sa anumang microcontroller at makamit ang kamangha-manghang mga resulta. Inihanda ko ang isang detalyadong pagsusuri ng display na Nextion na nagpapaliwanag nang malalim kung paano gumagana ang mga ito, kung paano gamitin ang mga ito at ang kanilang mga drawbacks. Maaari mo itong basahin dito, o panoorin ang nakalakip na video.

Hakbang 5: Pagkonekta sa Lahat ng Mga Bahagi

Pagkonekta sa Lahat ng Mga Bahagi
Pagkonekta sa Lahat ng Mga Bahagi
Pagkonekta sa Lahat ng Mga Bahagi
Pagkonekta sa Lahat ng Mga Bahagi

Ang kailangan lang nating gawin ngayon ay upang ikonekta ang lahat ng mga bahagi nang magkasama ayon sa eskematiko na diagram na ito. Maaari mong makita ang diagram ng eskematiko na nakakabit dito. Direkta ang koneksyon.

Mayroong dalawang bagay na dapat tandaan. Ang module ng MP3 decoder ay naglalabas ng isang Stereo Signal ngunit gumagamit lamang ako ng isang audio channel sa proyektong ito. Upang makuha ang signal ng audio, kumonekta ako ng isang audio cable sa audio jack ng module, at pinutol ito upang ipakita ang apat na mga wire sa loob. Ikinonekta ko ang dalawa sa mga wire. Ang isa sa mga ito ay ang GND at ang isa pa ay ang audio signal ng isa sa dalawang mga audio channel. Kung nais mo maaari mong ikonekta ang parehong mga channel sa module ng amplifier at maghimok ng dalawang speaker.

Ang bawat audio channel ay dapat dumaan sa isolation transpormer upang i-clear ang anumang ingay na naroroon bago kumonekta sa amplifier

Upang magpadala ng data sa display, kailangan lamang naming ikonekta ang isang kawad sa TX0 pin ng ESP32. Matapos ikonekta ang mga bahagi, kailangan naming i-load ang code sa ESP32, at kailangan nating i-load ang GUI sa display na Nextion.

Upang mai-load ang GUI sa display ng Nextion, kopyahin ang InternetRadio.tft file na ibabahagi ko sa iyo sa isang walang laman na SD card. Ilagay ang SD card sa puwang ng SD card sa likuran ng display. Pagkatapos ay i-power up ang display, at mai-load ang GUI. Pagkatapos alisin ang SD card at ikonekta muli ang kuryente.

Matapos matagumpay na mai-load ang code, paganahin natin ang proyekto. Ipinapakita nito ang teksto na "Kumokonekta …" sa loob ng ilang segundo sa display. Matapos kumonekta sa internet ang proyekto ay kumokonekta sa isang paunang natukoy na istasyon ng radyo. Gumagana ang hardware tulad ng inaasahan ngunit ngayon tingnan natin ang bahagi ng software ng proyekto.

Hakbang 6: Ang Code ng Project

Ang Code ng Proyekto
Ang Code ng Proyekto
Ang Code ng Proyekto
Ang Code ng Proyekto

Una sa lahat, hayaan mo akong ipakita sa iyo ang isang bagay. Ang code ng proyekto ay mas mababa sa 140 mga linya ng code. Isipin ito, makakabuo kami ng isang Internet Radio na may isang 3.5 Display na may 140 mga linya ng code, ito ay kamangha-mangha. Maaari nating makamit ang lahat ng ito gamit ang iba't ibang mga aklatan syempre na naglalaman ng libu-libong mga linya ng code. Ito ang lakas ng Arduino at ng Open source na pamayanan. Ginagawa nitong madali ang mga bagay para sa mga gumagawa.

Sa proyektong ito, gumagamit ako ng library ng VS1053 para sa board ng ESP32.

Sa una, kailangan naming tukuyin ang SSID at ang Password ng Wi-Fi network. Susunod, kailangan naming i-save ang ilang mga Istasyon ng Radyo dito. Kailangan namin ang host URL, ang landas kung saan matatagpuan ang stream at ang port na kailangan naming gamitin. Nai-save namin ang lahat ng impormasyong ito sa mga variable na ito.

char ssid = "yourSSID"; // your network SSID (name) char pass = "yourWifiPassword"; // iyong network password

// Ilang Istasyon ng Radyo

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

Nagsama ako ng 4 na mga istasyon ng radyo sa halimbawang ito.

Sa pag-andar ng pag-setup ay nakakabit namin ang mga nakakagambala sa mga pindutan, pinasimulan namin ang module ng MP3 decoder at kumonekta kami sa Wi-Fi.

walang bisa ang pag-setup () {

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

pinMode (nakaraang Button, INPUT_PULLUP);

pinMode (Susunod na Button, INPUT_PULLUP);

attachInterrupt (digitalPinToInterrupt (nakaraang Button), nakaraang ButtonInterrupt, FALLING);

mag-attachInterrupt (digitalPinToInterrupt (susunod Button), susunod ButtonInterrupt, FALLING); initMP3Decoder (); kumonektaToWIFI (); }

Sa pag-andar ng loop, una sa lahat, sinusuri namin kung ang gumagamit ay pumili ng ibang istasyon ng radyo kaysa sa kung saan tayo kumukuha ng data. Kung gayon, kumokonekta kami sa bagong istasyon ng radyo na makakakuha kami ng data mula sa stream at ipadala ang mga ito sa module ng MP3 Decoder.

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

Yun lang! Kapag pinindot ng gumagamit ang isang pindutan, nangyari ang isang nakakagambala, at binabago ang halaga ng isang variable na nagsasabi kung aling stream ang makakonekta.

walang bisa IRAM_ATTR nakaraang ButtonInterrupt () {

static unsigned long last_interrupt_time = 0;

unsigned long interrupt_time = millis (); kung (interrupt_time - last_interrupt_time> 200) {kung (radioStation> 0) radioStation--; iba pa radioStation = 3; } last_interrupt_time = interrupt_time; }

Upang mai-update ang display, nagpapadala lamang kami ng ilang mga utos sa serial port.

void drawRadioStationName (int id) {String command; switch (id) {case 0: command = "p1.pic = 2"; Serial.print (utos); endNextionCommand (); pahinga; // 1940 UK Radio case 1: command = "p1.pic = 3"; Serial.print (utos); endNextionCommand (); pahinga; // KOSMOS GREEK case 2: utos = "p1.pic = 4"; Serial.print (utos); endNextionCommand (); pahinga; // REAL FM GREEK case 3: utos = "p1.pic = 5"; Serial.print (utos); endNextionCommand (); pahinga; // SKAI 100.3 GREEK}}

Tingnan natin ngayon ang Nextion Display GUI. Ang Nextion GUI ay binubuo ng isang background na larawan at isang larawan na nagpapakita ng pangalan ng Radio Station. Nagpadala ang lupon ng ESP32 ng mga utos na baguhin ang pangalan ng istasyon ng radyo mula sa mga naka-embed na imahe. Napakadali nito. Mangyaring panoorin ang tutorial sa pagpapakita ng Nextion na inihanda ko ilang oras na ang nakakaraan para sa karagdagang impormasyon. Maaari mong mabilis na idisenyo ang iyong sariling GUI kung nais mo at ipakita ang maraming mga bagay dito.

Tulad ng dati maaari mong makita ang code ng proyekto na nakakabit sa Instructable na ito.

Hakbang 7: Pangwakas na Mga Saloobin at Pagpapabuti

Pangwakas na Mga Saloobin at Pagpapabuti
Pangwakas na Mga Saloobin at Pagpapabuti
Pangwakas na Mga Saloobin at Pagpapabuti
Pangwakas na Mga Saloobin at Pagpapabuti
Pangwakas na Mga Saloobin at Pagpapabuti
Pangwakas na Mga Saloobin at Pagpapabuti
Pangwakas na Mga Saloobin at Pagpapabuti
Pangwakas na Mga Saloobin at Pagpapabuti

Napakadali ng proyektong ito. Nais kong gumana ang isang simpleng balangkas ng proyekto ng Radio Radio. Ngayon na handa na ang isang unang bersyon ng proyekto maaari kaming magdagdag ng maraming mga tampok dito upang mapabuti ito. Una sa lahat, kailangan kong mag-disenyo ng isang enclosure upang maipapaloob ang lahat ng mga electronics.

Sa librong ito tungkol sa Pinaka Magagandang Mga Radyo na nagawa mayroong mga napaka-cool na radio na mapagpipilian bilang isang enclosure para sa proyektong ito. Sa palagay ko ay magtatayo ako ng isang enclosure sa paligid ng kamangha-manghang radyo ng Art Deco na ito. Ano sa palagay mo, gusto mo ba ng mga hitsura ng radyo na ito o mas gusto mo ang isang bagay na mas moderno? Mayroon ka bang ibang mga ideya sa enclosure? Gayundin, gusto mo ba ang proyektong ito sa Internet Radio at kung anong mga tampok ang sa palagay natin kailangan nating idagdag dito upang mas maging kapaki-pakinabang ito? Gusto kong basahin ang iyong mga saloobin at Ideya kaya, mangyaring i-post ang mga ito sa seksyon ng mga komento sa ibaba.

Inirerekumendang: