İçindekiler:

ESP32 Kullanan İnternet Radyosu: 7 Adım (Resimlerle)
ESP32 Kullanan İnternet Radyosu: 7 Adım (Resimlerle)

Video: ESP32 Kullanan İnternet Radyosu: 7 Adım (Resimlerle)

Video: ESP32 Kullanan İnternet Radyosu: 7 Adım (Resimlerle)
Video: TİKTOK DİLENCİLERİ PART 1 DAHA NELER DEDİRTEN Video #tiktok #tiktokvideo #tiktokvideo 2024, Eylül
Anonim
Image
Image
ESP32 Kullanan İnternet Radyosu
ESP32 Kullanan İnternet Radyosu
ESP32 Kullanan İnternet Radyosu
ESP32 Kullanan İnternet Radyosu

Sevgili arkadaşlar başka bir Eğitilebilirliğe hoş geldiniz! Bugün, ucuz bir ESP32 kartı kullanarak büyük 3.5” ekranlı bir İnternet Radyo cihazı yapacağız. İster inanın ister inanmayın, artık bir İnternet Radyosunu 10 dakikadan kısa sürede ve 30$'dan daha az bir sürede inşa edebiliriz. Örtecek çok şey var, hadi başlayalım!

Birkaç ay önce harika çalışan ve bence daha da iyi görünen bir Arduino FM Radyo projesini tamamladım. Bu projeyi nasıl inşa ettiğimi görmek istiyorsanız, Eğitilebilirliği buradan okuyabilirsiniz. Sorun şu ki, bu radyo havalı görünse de pratik değil çünkü Yunanistan'ın güneyinde küçük bir kasabada yaşıyorum ve dinlemeyi tercih ettiğim büyük Yunan radyo istasyonları buralarda verici yok. Bu yüzden en sevdiğim radyoları laptop veya tablet bilgisayarımda online olarak dinliyorum ki bu da pek pratik değil. Bu yüzden bugün dünyanın her yerinden en sevdiğim radyo istasyonlarını dinleyebilmek için bir İnternet radyo cihazı yapacağım!

Gördüğünüz gibi, bir breadboard üzerinde projenin ilk versiyonu hazır. Güçlendirelim. Gördüğünüz gibi proje internete bağlanıyor ve ardından önceden tanımlanmış Radyo İstasyonlarından müzik akışı sağlıyor.

Atina'dan Real FM radyo istasyonunu ayarladım ve bu düğmeleri kullanarak dinlediğimiz Radyo İstasyonunu değiştirebiliyoruz. Favori radyo istasyonlarımı ESP32'nin hafızasına kaydettim, böylece onlara kolayca erişebiliyorum. Bu potansiyometre ile hoparlörün sesini değiştirebilirim. Dinlediğimiz Radyo İstasyonunun Adını, retro Kullanıcı Arayüzü ile büyük bir 3.5” ekranda gösteriyorum. Proje iyi çalışıyor ve inşa etmek çok kolay.

Aynı projeyi 10 dakikadan daha kısa sürede inşa edebilirsiniz ancak biraz deneyim sahibi olmanız gerekir. Bu sizin ilk projenizse, biraz deneyim kazanmak için önce daha basit bir proje yapmayı düşünün. Basit proje fikirleri için Talimatlarıma bakın ve Arduino ile daha rahat olduğunuzda elektronikler bu harika projeyi oluşturmak için geri gelir. Şimdi kendi İnternet Radyomuzu oluşturmaya başlayalım.

GÜNCELLEME 6/6/2019

İzolatör trafosu eklenerek gürültü sorunu çözüldü. Güncellenmiş şematik diyagramı inceleyin. Teşekkürler!

Adım 1: Tüm Parçaları Alın

Tüm Parçaları Alın
Tüm Parçaları Alın

Aşağıdaki parçalara ihtiyacımız olacak:

  • ESP32 ▶
  • MP3 kod çözücü ▶
  • İzolasyon Transformatörü ▶
  • Amplifikatör ▶
  • 3W hoparlör ▶
  • 3,5" Nextion Ekran ▶
  • Basmalı Düğmeler ▶
  • Breadboard ▶
  • Teller ▶

Projenin toplam maliyeti 40$ civarında ama eğer ekran kullanmıyorsanız projenin maliyeti 20$ civarında. Harika şeyler. Sadece 20$ ile kendi internet radyomuzu yapabiliriz!

Adım 2: ESP32 Kartı

Image
Image
ESP32 Kurulu
ESP32 Kurulu
ESP32 Kurulu
ESP32 Kurulu

Projenin kalbi elbette güçlü ESP32 kartıdır. Eğer aşina değilseniz ESP32 çipi, geçmişte pek çok kez kullandığımız popüler ESP8266 çipinin halefidir. ESP32 bir canavar! 160 MHz'de çalışan iki adet 32 bit işlemci çekirdeği, büyük miktarda bellek, WiFi, Bluetooth ve diğer birçok özelliği yaklaşık 7$'lık bir maliyetle sunar! İnanılmaz şeyler!

Lütfen bu pano için hazırladığım detaylı incelemeyi izleyin. Videoyu bu Eğitilebilir Tabloya ekledim. Bu çipin, işleri sonsuza kadar yapma şeklimizi neden değiştireceğini anlamamıza yardımcı olacak! ESP32 ile ilgili en heyecan verici şeylerden biri, çok güçlü olmasına rağmen, yalnızca 10μΑs akım gerektiren bir derin uyku modu sunmasıdır. Bu, ESP32'yi düşük güç uygulamaları için ideal çip yapar.

Bu projede ESP32 kartı internete bağlanıyor ve ardından dinlediğimiz radyo istasyonundan MP3 verisi alıyor ve ekrana bazı komutlar gönderiyor.

3. Adım: MP3 Kod Çözücü

MP3 Kod Çözücü
MP3 Kod Çözücü
MP3 Kod Çözücü
MP3 Kod Çözücü

MP3 verileri daha sonra SPI arabirimi kullanılarak MP3 kod çözücü modülüne gönderilir. Bu modül VS1053 IC'yi kullanır. Bu IC, özel bir donanım MP3 kod çözücüsüdür. ESP32'den MP3 verilerini alır ve gerçekten hızlı bir şekilde bir ses sinyaline dönüştürür.

Bu ses jakında verdiği ses sinyali zayıf ve gürültülüdür, bu yüzden onu gürültüden arındırıp güçlendirmemiz gerekir. (Kulaklık kullanıyorsanız, sinyalin gürültüden arındırılması veya yükseltilmesi gerekmez.) Bu yüzden sesi gürültüden temizlemek için bir İzolasyon transformatörü ve ses sinyalini yükseltmek ve ardından göndermek için bir PAM8403 ses yükseltici kullanıyorum. bir konuşmacıya. Ayrıca, veri aldığımız MP3 Akışını değiştirmek için ESP32'ye iki düğme ve dinlediğimiz Radyo istasyonunu görüntülemek için bir Nextion ekranı bağladım.

Adım 4: Sonraki Ekran

Image
Image
Tüm Parçaları Bağlama
Tüm Parçaları Bağlama

Kullanımı çok kolay olduğu için bu proje için bir Nextion ekranı kullanmayı seçtim. Kontrol etmek için sadece bir kablo bağlamamız gerekiyor.

Nextion ekranları yeni tür ekranlardır. Arkada, ekranı sürmekten ve grafiksel kullanıcı arayüzünü oluşturmaktan sorumlu kendi ARM işlemcileri var. Böylece onları herhangi bir mikrodenetleyici ile kullanabilir ve muhteşem sonuçlar elde edebiliriz. Bu Nextion ekranının nasıl çalıştıklarını, nasıl kullanılacağını ve sakıncalarını derinlemesine açıklayan ayrıntılı bir incelemesini hazırladım. Buradan okuyabilir veya ekteki videoyu izleyebilirsiniz.

Adım 5: Tüm Parçaların Bağlanması

Tüm Parçaların Bağlanması
Tüm Parçaların Bağlanması
Tüm Parçaların Bağlanması
Tüm Parçaların Bağlanması

Şimdi tek yapmamız gereken bu şematik diyagrama göre tüm parçaları birbirine bağlamak. Ekli şematik diyagramı burada bulabilirsiniz. Bağlantı basittir.

Yine de dikkat edilmesi gereken iki şey var. MP3 dekoder modülü bir Stereo Sinyal veriyor ama bu projede sadece bir ses kanalı kullanıyorum. Ses sinyalini almak için modülün ses jakına bir ses kablosu bağladım ve içindeki dört kabloyu ortaya çıkaracak şekilde kestim. İki kabloyu bağladım. Bunlardan biri GND, diğeri ise iki ses kanalından birinin ses sinyalidir. Dilerseniz amplifikatör modülüne her iki kanalı bağlayabilir ve iki hoparlörü çalıştırabilirsiniz.

Amplifikatöre bağlanmadan önce her ses kanalı, mevcut herhangi bir gürültüyü temizlemek için izolasyon transformatöründen geçmelidir

Ekrana veri göndermek için ESP32'nin TX0 pinine sadece bir kablo bağlamamız gerekiyor. Parçaları bağladıktan sonra kodu ESP32'ye yüklememiz ve GUI'yi Nextion ekranına yüklememiz gerekiyor.

GUI'yi Nextion ekranına yüklemek için sizinle paylaşacağım InternetRadio.tft dosyasını boş bir SD karta kopyalayın. SD kartı ekranın arkasındaki SD kart yuvasına yerleştirin. Ardından ekranı açın ve GUI yüklenecektir. Ardından SD kartı çıkarın ve gücü tekrar bağlayın.

Kodu başarıyla yükledikten sonra projeyi çalıştıralım. Ekranda birkaç saniye “Bağlanıyor…” metni görüntülenir. İnternete bağlandıktan sonra proje önceden tanımlanmış bir radyo istasyonuna bağlanır. Donanım beklendiği gibi çalışıyor ama şimdi projenin yazılım tarafına bakalım.

Adım 6: Projenin Kodu

Proje Kodu
Proje Kodu
Proje Kodu
Proje Kodu

Her şeyden önce, sana bir şey göstereyim. Projenin kodu 140 satırdan az koddur. Bir düşünün, 140 satır kodlu 3.5” Ekranlı bir İnternet Radyosu yapabiliriz, bu harika. Tüm bunları elbette binlerce kod satırı içeren çeşitli kütüphaneler kullanarak başarabiliriz. Bu, Arduino'nun ve Açık kaynak topluluğunun gücüdür. Yapımcıların işini kolaylaştırır.

Bu projede ESP32 kartı için VS1053 kütüphanesini kullanıyorum.

Öncelikle Wi-Fi ağının SSID ve Şifresini tanımlamamız gerekiyor. Ardından, bazı Radyo İstasyonlarını buraya kaydetmemiz gerekiyor. Ana bilgisayar URL'sine, akışın bulunduğu yola ve kullanmamız gereken bağlantı noktasına ihtiyacımız var. Tüm bu bilgileri bu değişkenlere kaydediyoruz.

char ssid = "SSID'niz"; // ağınızın SSID'si (ad) char pass = "yourWifiPassword"; // ağ şifreniz

// Birkaç Radyo İstasyonu

char *host[4] = {"149.255.59.162", "radiostreaming.ert.gr", "realfm.live24.gr", "secure1.live24.gr"}; char *yol[4] = {"/1", "/ert-kosmos", "/realfm", "/skai1003"}; int bağlantı noktası[4] = {8062, 80, 80, 80};

Bu örneğe 4 radyo istasyonu ekledim.

Kurulum fonksiyonunda butonlara kesintiler ekliyoruz, MP3 dekoder modülünü başlatıyoruz ve Wi-Fi'ye bağlanıyoruz.

geçersiz kurulum () {

Seri.başla(9600); gecikme(500); SPI.begin();

pinMode(öncekiButton, INPUT_PULLUP);

pinMode(nextButton, INPUT_PULLUP);

ataşeKesme(dijitalPinToInterrupt(öncekiDüğme), öncekiButtonInterrupt, FALLING);

ataşeKesme(dijitalPinToInterrupt(nextButton), nextButtonInterrupt, FALLING); initMP3Decoder(); connectToWIFI(); }

Döngü fonksiyonunda öncelikle kullanıcının veri aldığımızdan farklı bir radyo istasyonu seçip seçmediğini kontrol ediyoruz. Eğer öyleyse, yeni radyo istasyonuna bağlanırız, yoksa akıştan veri alır ve MP3 Decoder modülüne göndeririz.

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

Bu kadar! Kullanıcı bir düğmeye bastığında, bir kesinti olur ve hangi akışa bağlanacağını söyleyen bir değişkenin değerini değiştirir.

void IRAM_ATTR öncekiButtonInterrupt() {

statik imzasız uzun last_interrupt_time = 0;

imzasız uzun interrupt_time = millis(); if (interrupt_time - last_interrupt_time > 200) { if(radioStation>0) radioStation--; başka radyoStation = 3; } last_interrupt_time = interrupt_time; }

Ekranı güncellemek için seri porta bazı komutlar göndermemiz yeterlidir.

void drawRadioStationName(int id){ Dize komutu; switch (id) { case 0: command = "p1.pic=2"; Serial.print(komut); endNextionCommand(); kırmak; //1940 UK Radyo durum 1: komut = "p1.pic=3"; Serial.print(komut); endNextionCommand(); kırmak; //KOSMOS YUNANCA durum 2: komut = "p1.pic=4"; Serial.print(komut); endNextionCommand(); kırmak; //GERÇEK FM YUNANCA durum 3: komut = "p1.pic=5"; Serial.print(komut); endNextionCommand(); kırmak; //SKAI 100,3 YUNAN } }

Şimdi Nextion Display GUI'ye bir göz atalım. Nextion GUI, bir arka plan resminden ve Radyo İstasyonunun adını gösteren bir resimden oluşur. ESP32 kartı, gömülü görüntülerden radyo istasyonunun adını değiştirmek için komutlar gönderir. Bu çok kolay. Daha fazla bilgi için lütfen bir süre önce hazırladığım Nextion ekran eğitimini izleyin. Dilerseniz kendi GUI'nizi hızlıca tasarlayabilir ve üzerinde daha fazla şey görüntüleyebilirsiniz.

Her zaman olduğu gibi, bu Eğitilebilir Tabloda ekli projenin kodunu bulabilirsiniz.

7. Adım: Son Düşünceler ve İyileştirmeler

Son Düşünceler ve İyileştirmeler
Son Düşünceler ve İyileştirmeler
Son Düşünceler ve İyileştirmeler
Son Düşünceler ve İyileştirmeler
Son Düşünceler ve İyileştirmeler
Son Düşünceler ve İyileştirmeler
Son Düşünceler ve İyileştirmeler
Son Düşünceler ve İyileştirmeler

Bu proje çok basit. Çalışmak için basit bir İnternet Radyosu proje iskeleti istedim. Artık projenin ilk versiyonu hazır olduğuna göre onu geliştirmek için birçok özellik ekleyebiliriz. Her şeyden önce, tüm elektronikleri barındıracak bir kasa tasarlamam gerekiyor.

Şimdiye kadar yapılmış En Güzel Radyolar hakkındaki bu kitapta, bu proje için bir muhafaza olarak seçilebilecek çok havalı radyolar var. Sanırım bu muhteşem Art Deco radyonun etrafına bir muhafaza inşa edeceğim. Ne dersiniz, bu radyonun görünüşünü beğendiniz mi yoksa daha modern bir şey mi tercih edersiniz? Başka muhafaza fikirleriniz var mı? Ayrıca, bu İnternet Radyosu projesini beğendiniz mi ve onu daha kullanışlı hale getirmek için hangi özellikleri eklememiz gerektiğini düşünüyorsunuz? Düşüncelerinizi ve Fikirlerinizi okumayı çok isterim, lütfen bunları aşağıdaki yorumlar bölümüne gönderin.

Önerilen: