Mündəricat:

ESP32 istifadə edən İnternet Radio: 7 addım (şəkillərlə)
ESP32 istifadə edən İnternet Radio: 7 addım (şəkillərlə)

Video: ESP32 istifadə edən İnternet Radio: 7 addım (şəkillərlə)

Video: ESP32 istifadə edən İnternet Radio: 7 addım (şəkillərlə)
Video: ESP32, WLED mikroproqramında ünvanlanan LED-lərə nəzarət edirik, Home Assistant-da istifadə edirik 2024, Noyabr
Anonim
Image
Image
ESP32 istifadə edərək İnternet Radio
ESP32 istifadə edərək İnternet Radio
ESP32 istifadə edərək İnternet Radio
ESP32 istifadə edərək İnternet Radio

Əziz dostlar, başqa bir təlimata xoş gəldiniz! Bu gün ucuz bir ESP32 lövhəsindən istifadə edərək 3,5 düymlük böyük bir ekrana sahib bir İnternet Radio cihazı quracağıq. İnanın və ya inanmayın, indi 10 dəqiqədən az və 30 dollardan az bir İnternet Radio qura bilərik. Ötürmək üçün çox şey var, başlayaq!

Bir neçə ay əvvəl, əla işləyən və fikrimcə daha da yaxşı görünən bir Arduino FM Radio layihəsini tamamladım. Bu layihəni necə qurduğumu görmək istəyirsinizsə, Təlimatı buradan oxuya bilərsiniz. Məsələ burasındadır ki, bu radio sərin görünsə də praktik deyil, çünki mən Yunanıstanın cənubundakı kiçik bir şəhərdə yaşayıram və dinləməyi üstün tutduğum böyük Yunan radiostansiyalarının burda vericiləri yoxdur. Beləliklə, dizüstü kompüterimdə və ya tablet kompüterimdə ən sevdiyim radioları onlayn dinləyirəm ki, bu da o qədər də praktik deyil. Beləliklə, bu gün dünyanın hər yerindən ən sevdiyim radio stansiyalarını dinləyə bilmək üçün bir İnternet radio cihazı quracağam!

Gördüyünüz kimi, çörək taxtasında layihənin ilk versiyası hazırdır. Gücləndirək. Gördüyünüz kimi, layihə İnternetə bağlanır və əvvəlcədən təyin edilmiş Radio Stansiyalarından musiqi axını edir.

Afinadan Real FM radio stansiyasına köklənmişəm və bu düymələrdən istifadə edərək dinlədiyimiz Radio Stansiyasını dəyişə bilərik. Sevdiyim radio stansiyalarını ESP32 yaddaşına saxladım ki, onlara asanlıqla daxil olum. Bu potensiometr ilə dinamikin səsini dəyişə bilərəm. Retro İstifadəçi İnterfeysi olan böyük 3,5 düymlük ekranda dinlədiyimiz Radio Stansiyasının adını göstərirəm. Layihə yaxşı işləyir və tikmək çox asandır.

Eyni layihəni 10 dəqiqədən az müddətdə qura bilərsiniz, ancaq müəyyən təcrübəyə sahib olmalısınız. Bu ilk layihənizdirsə, təcrübə qazanmaq üçün əvvəlcə daha sadə bir layihə qurmağı düşünün. Sadə layihə fikirləri üçün Təlimatlarımı yoxlayın və Arduino ilə daha rahat olanda elektronika bu sərin layihəni qurmaq üçün geri qayıdır. İndi öz İnternet Radio qurmağa başlayaq.

6/6/2019 YENİLƏNİB

Səs -küy problemi bir izolyator transformatoru əlavə etməklə həll edildi. Yenilənmiş şematik diaqrama baxın. Təşəkkürlər!

Addım 1: Bütün hissələri alın

Bütün hissələri alın
Bütün hissələri alın

Aşağıdakı hissələrə ehtiyacımız olacaq:

  • ESP32 ▶
  • MP3 dekoder ▶
  • İzolyasiya Transformatoru ▶
  • Gücləndirici ▶
  • 3W dinamik ▶
  • 3.5 "Nextion Ekranı ▶
  • Düymələr ▶
  • Çörək paneli ▶
  • Tellər ▶

Layihənin ümumi dəyəri təxminən 40 dollardır, ancaq bir ekran istifadə etmirsinizsə, layihənin dəyəri 20 dollar civarındadır. İnanılmaz şeylər. Cəmi 20 dollara öz internet radiomuzu qura bilərik!

Addım 2: ESP32 lövhəsi

Image
Image
ESP32 lövhəsi
ESP32 lövhəsi
ESP32 lövhəsi
ESP32 lövhəsi

Layihənin əsası, əlbəttə ki, güclü ESP32 lövhəsidir. Əgər tanış deyilsinizsə, ESP32 çipi keçmişdə dəfələrlə istifadə etdiyimiz məşhur ESP8266 çipinin varisidir. ESP32 bir heyvandır! 160MHz -də işləyən iki ədəd 32 bitlik işləmə nüvəsi, çoxlu miqdarda yaddaş, WiFi, Bluetooth və qiyməti təxminən 7 dollar olan bir çox xüsusiyyətlər təklif edir! İnanılmaz şeylər!

Zəhmət olmasa bu lövhə üçün hazırladığım ətraflı araşdırmanı izləyin. Videonu bu Təlimata əlavə etdim. Bu çipin hər şeyi əbədi olaraq necə dəyişdirəcəyimizi anlamağa kömək edəcək! ESP32 haqqında ən maraqlı şeylərdən biri, çox güclü olmasına baxmayaraq, cəmi 10μΑs cərəyan tələb edən dərin yuxu rejimi təklif etməsidir. Bu, ESP32 -ni aşağı güc tətbiqləri üçün ideal çip halına gətirir.

Bu layihədə ESP32 lövhəsi İnternetə bağlanır və sonra dinlədiyimiz radio stansiyasından MP3 məlumatları alır və ekrana bəzi əmrlər göndərir.

Addım 3: MP3 Kod Çözücü

MP3 dekoder
MP3 dekoder
MP3 dekoder
MP3 dekoder

MP3 məlumatları daha sonra SPI interfeysindən istifadə edərək MP3 dekoder moduluna göndərilir. Bu modul VS1053 IC istifadə edir. Bu IC xüsusi bir hardware MP3 dekoderidir. MP3 məlumatlarını ESP32 -dən alır və həqiqətən sürətli bir səs siqnalına çevirir.

Bu audio jakda çıxardığı səs siqnalı zəif və səs -küylüdür, buna görə də onu səs -küydən təmizləməli və gücləndirməliyik. (Qulaqlıqdan istifadə edirsinizsə, siqnalın səs -küydən təmizlənməsinə və ya gücləndirilməsinə ehtiyac yoxdur.) Buna görə də səsi səs -küydən təmizləmək üçün İzolyasiya transformatorundan və səs siqnalını gücləndirmək və sonra göndərmək üçün PAM8403 səs gücləndiricisindən istifadə edirəm. natiqə. Sadəcə məlumat aldığımız MP3 axını və dinlədiyimiz Radio stansiyasını göstərmək üçün Nextion ekranını dəyişdirmək üçün ESP32 -yə iki düymə bağladım.

Addım 4: Nextion Ekranı

Image
Image
Bütün hissələri birləşdirmək
Bütün hissələri birləşdirmək

İstifadəsi çox asan olduğu üçün bu layihə üçün Nextion displeyindən istifadə etməyi seçdim. Bunu idarə etmək üçün yalnız bir tel bağlamalıyıq.

Nextion displeyləri yeni növ ekranlardır. Arxada ekranı idarə etmək və qrafik istifadəçi interfeysi yaratmaqdan məsul olan öz ARM prosessorları var. Beləliklə, hər hansı bir mikro nəzarətçi ilə istifadə edə və möhtəşəm nəticələr əldə edə bilərik. Necə işlədiyini, onlardan necə istifadə ediləcəyini və çatışmazlıqlarını dərindən izah edən bu Nextion ekranında ətraflı bir araşdırma hazırladım. Burada oxuya və ya əlavə edilmiş videoya baxa bilərsiniz.

Addım 5: Bütün hissələri birləşdirin

Bütün hissələri birləşdirmək
Bütün hissələri birləşdirmək
Bütün hissələri birləşdirmək
Bütün hissələri birləşdirmək

İndi etməli olduğumuz şey, bütün hissələri bu sxematik sxemə görə birləşdirməkdir. Əlavə edilmiş sxematik diaqramı burada tapa bilərsiniz. Bağlantı sadədir.

Bununla birlikdə qeyd etmək lazım olan iki şey var. MP3 dekoder modulu bir Stereo Siqnal çıxarır, amma bu layihədə yalnız bir səs kanalından istifadə edirəm. Səs siqnalını əldə etmək üçün modulun audio jakına bir audio kabel bağladım və içərisində dörd teli açmaq üçün kəsdim. İki tel bağladım. Onlardan biri GND, digəri isə iki səs kanalından birinin səs siqnalıdır. İstəyirsinizsə, hər iki kanalı gücləndirici moduluna bağlaya və iki dinamik idarə edə bilərsiniz.

Hər bir səs kanalı gücləndiriciyə qoşulmadan əvvəl mövcud olan səs -küyü təmizləmək üçün izolyasiya transformatorundan keçməlidir

Ekrana məlumat göndərmək üçün ESP32 -nin TX0 pininə yalnız bir tel bağlamalıyıq. Parçaları bağladıqdan sonra kodu ESP32 -yə yükləməliyik və GUI -ni Nextion ekranına yükləməliyik.

GUI -ni Nextion ekranına yükləmək üçün sizinlə paylaşacağım InternetRadio.tft faylını boş bir SD karta kopyalayın. SD kartı ekranın arxasındakı SD kart yuvasına qoyun. Sonra ekranı işə salın və GUI yüklənəcək. Sonra SD kartı çıxarın və gücü yenidən bağlayın.

Kodu uğurla yüklədikdən sonra layihəni gücləndirək. Ekranda bir neçə saniyə ərzində "Bağlanır …" yazısını göstərir. İnternetə qoşulduqdan sonra layihə əvvəlcədən təyin edilmiş bir radio stansiyasına qoşulur. Avadanlıq gözlənildiyi kimi işləyir, amma indi layihənin proqram tərəfini görək.

Addım 6: Layihənin Məcəlləsi

Layihənin Məcəlləsi
Layihənin Məcəlləsi
Layihənin Məcəlləsi
Layihənin Məcəlləsi

Əvvəlcə sizə bir şey göstərim. Layihənin kodu 140 sətirdən azdır. Fikir verin, 140 düymlük kodlu 3,5 düymlük ekranlı İnternet Radio qura bilərik, bu heyrətamizdir. Bütün bunları, əlbəttə ki, minlərlə kod xətti olan müxtəlif kitabxanalardan istifadə etməklə əldə edə bilərik. Bu Arduino və Açıq mənbə cəmiyyətinin gücüdür. İstehsalçıların işini asanlaşdırır.

Bu layihədə, ESP32 lövhəsi üçün VS1053 kitabxanasından istifadə edirəm.

Əvvəlcə SSID və Wi-Fi şəbəkəsinin parolunu təyin etməliyik. Sonra burada bəzi Radio Stansiyalarını saxlamalıyıq. Ev sahibi URL -yə, axının yerləşdiyi yola və istifadə etməli olduğumuz limana ehtiyacımız var. Bütün bu məlumatları bu dəyişənlərə saxlayırıq.

char ssid = "yourSSID"; // şəbəkənizin SSID (ad) char pass = "yourWifiPassword"; // şəbəkə parolunuz

// Bir neçə Radio Stansiyası

char *host [4] = {"149.255.59.162", "radiostreaming.ert.gr", "realfm.live24.gr", "secure1.live24.gr"}; char *yolu [4] = {"/1", "/ert-kosmos", "/realfm", "/skai1003"}; int port [4] = {8062, 80, 80, 80};

Bu nümunəyə 4 radio stansiyası daxil etdim.

Quraşdırma funksiyasında düymələrə fasilələr əlavə edirik, MP3 dekoder modulunu işə salırıq və Wi-Fi şəbəkəsinə qoşuluruq.

boş quraşdırma () {

Serial.begin (9600); gecikmə (500); SPI.begin ();

pinMode (əvvəlkiButton, INPUT_PULLUP);

pinMode (nextButton, INPUT_PULLUP);

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

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

Döngü funksiyasında, hər şeydən əvvəl, istifadəçinin məlumat aldığımızdan fərqli bir radio stansiyası seçib seçmədiyini yoxlayırıq. Əgər belədirsə, yeni radio stansiyasına qoşuluruq, əks halda axından məlumat alırıq və MP3 Dekoder moduluna göndəririk.

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

Hamısı budur! İstifadəçi bir düyməni basdıqda bir kəsmə baş verir və hansı axına qoşulacağını bildirən dəyişənin dəyərini dəyişir.

boş IRAM_ATTR əvvəlkiButtonInterrupt () {

statik işarəsiz uzun last_interrupt_time = 0;

işarəsiz uzun interrupt_time = millis (); if (interrupt_time-last_interrupt_time> 200) {if (radioStation> 0) radioStation--; başqa radioStation = 3; } last_interrupt_time = interrupt_time; }

Ekranı yeniləmək üçün sadəcə seriya limanına bəzi əmrlər göndəririk.

void drawRadioStationName (int id) {String əmri; keçid (id) {halda 0: command = "p1.pic = 2"; Serial.print (əmr); endNextionCommand (); fasilə; // 1940 UK Radio Case 1: command = "p1.pic = 3"; Serial.print (əmr); endNextionCommand (); fasilə; // KOSMOS GREEK hal 2: command = "p1.pic = 4"; Serial.print (əmr); endNextionCommand (); fasilə; // REAL FM GREEK davası 3: command = "p1.pic = 5"; Serial.print (əmr); endNextionCommand (); fasilə; // SKAI 100.3 YUNAN}}

İndi Nextion Display GUI -yə nəzər salaq. Nextion GUI, arxa plan şəklindən və Radio Stansiyasının adını göstərən bir şəkildən ibarətdir. ESP32 lövhəsi, daxil edilmiş şəkillərdən radio stansiyasının adını dəyişdirmək üçün əmrlər göndərir. Çox asandır. Daha çox məlumat üçün bir müddət əvvəl hazırladığım Nextion ekran dərsinə baxın. İstəyirsinizsə və daha çox şey göstərsəniz, öz GUI -nizi tez bir zamanda dizayn edə bilərsiniz.

Həmişə olduğu kimi bu Təlimatda əlavə olunan layihənin kodunu tapa bilərsiniz.

Addım 7: Son Düşüncələr və Təkmilləşdirmələr

Son Fikirlər və Təkmilləşdirmələr
Son Fikirlər və Təkmilləşdirmələr
Son Fikirlər və Təkmilləşdirmələr
Son Fikirlər və Təkmilləşdirmələr
Son Fikirlər və Təkmilləşdirmələr
Son Fikirlər və Təkmilləşdirmələr
Son Fikirlər və Təkmilləşdirmələr
Son Fikirlər və Təkmilləşdirmələr

Bu layihə çox sadədir. İşləmək üçün sadə bir İnternet Radio layihəsi skeleti istədim. Layihənin ilk versiyası hazır olduqdan sonra onu yaxşılaşdırmaq üçün bir çox xüsusiyyət əlavə edə bilərik. Hər şeydən əvvəl, bütün elektronikləri yerləşdirmək üçün bir korpus dizayn etməliyəm.

İndiyə qədər hazırlanan Ən Gözəl Radiolar haqqında bu kitabda, bu layihə üçün bir korpus olaraq seçmək üçün çox gözəl radiolar var. Düşünürəm ki, bu möhtəşəm Art Deco radiosunun ətrafında bir bina quracağam. Nə düşünürsünüz, bu radionun görünüşünü bəyənirsiniz, yoxsa daha müasir bir şeyə üstünlük verirsiniz? Başqa bir bağlama fikiriniz varmı? Ayrıca, bu İnternet Radio layihəsini bəyənirsiniz və daha faydalı olması üçün hansı xüsusiyyətləri əlavə etməli olduğumuzu düşünürsünüz? Fikirlərinizi və fikirlərinizi oxumaq istərdim, bunları aşağıdakı şərh bölməsində yerləşdirin.

Tövsiyə: