İçindekiler:

Alçakgönüllü Basit İnternet Radyosu: KISSIR: 13 Adım
Alçakgönüllü Basit İnternet Radyosu: KISSIR: 13 Adım

Video: Alçakgönüllü Basit İnternet Radyosu: KISSIR: 13 Adım

Video: Alçakgönüllü Basit İnternet Radyosu: KISSIR: 13 Adım
Video: BUNU YAŞAMAYAN YOKTUR 😂 #emirbeşli #shorts 2024, Kasım
Anonim
Alçakgönüllü Basit İnternet Radyosu: KISSIR
Alçakgönüllü Basit İnternet Radyosu: KISSIR
Alçakgönüllü Basit İnternet Radyosu: KISSIR
Alçakgönüllü Basit İnternet Radyosu: KISSIR

Bazen sadece dokunsal olması gerekir. Herhangi Bir Arayüz Yok. Sadece Düğmeler.

Bir internet radyo oynatıcısı olarak Raspberry Pi yeni bir şey değil ve dünyanın dört bir yanından internet istasyonlarını yayınlamak için monitörlü veya monitörsüz bir ahududu pi kullanarak bir internet radyo oynatıcısının nasıl oluşturulacağına dair birçok talimat var. Başsız kalmayı (monitör olmadan) seçecek olsaydınız, pi oynatıcıyı arayüzlemek için bir araca, ssh gibi ana bilgisayarla doğrudan iletişim kurmanın bir yolu değilse, genellikle bir web arayüzüne ihtiyacınız olacaktır. Bu talimat biraz farklı olacaktır; pi'ye komutlar göndermek için basit düğme basmalarını kullanacağız, böylece bir web arayüzü ve bir LCD ekran ihtiyacını ortadan kaldıracağız. Kulağa yeterince kolay geliyor, değil mi (?)

Renk kodlu düğmeleri kullanarak çok basit bir tasarımla başlayacağız, her renk bir internet radyo istasyonunu temsil edecek. Düğmeye basmayı işlemek için bazı python kodlarını tanıtacağız: Basın, pi'mizde ses çalmak için harika bir komut satırı aracı olan MPG123'ü kullanarak önceden kodlanmış bir internet radyo istasyonunu çalmak için bir komut yürütecektir.

Python becerilerinizin gelişmiş olması gerekmez. Aslında, kelimenin tam anlamıyla "Merhaba Dünya"dan bunu yazmaya geçtim ve göreceğiniz gibi, çok fazla kod ödünç aldım - bu yüzden yapabilirsem ve bir şekilde belgelendirebilirsem, başka birinin sorunu olmamalı.

Hadi gidelim!

Gereçler:

Gerekli Malzemeler

  • Raspberry pi/ pi zero w tüm donanımlarla birlikte: Güç kaynağı, SD kart ve Raspbian veya Raspbian lite.
  • Wifi ve internet erişimi
  • Bazı web tarama ve ahududu pi SSH yeteneği gerçekleştirmek için başka bir bilgisayar
  • Dijitalden Analoga Dönüştürücü (DAC) - isteğe bağlı, ancak minnettar olacaksınız.
  • amplifikatör
  • Hoparlörler
  • Bağlantı teli ve Jumper'lar
  • Havya ve lehim
  • Düğmeler için Perf Kurulu
  • Dokunsal düğmeler: Normalde Açık- her müzik türü için bir tane, bir güç düğmesi ve isteğe bağlı bir sessiz düğmesi (7 düğme önerilir)
  • Yukarıdakilerin tümü için bir konut birimi (isteğe bağlı ancak düzenli)

Adım 1: Ön koşullar:

Ön koşullar
Ön koşullar

Raspberry pi, DAC ve amplifikatörünüzü zaten kurduğunuzu varsayarak başlayacağız ve ayrıca internete erişiminiz olduğunu varsayacağız. Ses ekipmanı seçeneklerinin, tercihlerinin ve ses dinleme seçeneklerinin miktarı nedeniyle, kurulumunuzun zaten tamamlandığını varsayacağız: Bu projeye başlamadan önce hoparlörlerinizden ses geliyor olmalıdır. Ayrıca ahududu pi'ye ssh yapmamız gerekecek, bu nedenle pi konfigürasyonunu kullanarak arayüzlerin ssh'yi etkinleştirdiğinden emin olun. Raspbian lite kullanacağım ve bu proje için ayrılmış yeni bir sd kartta en son kopyanın yeni bir kurulumunu yapmanızı tavsiye ederim. Başarılı olursa, özel bir dinleme cihazı olarak 7/24 açık bırakılabilen bağımsız bir armatür inşa edeceğiz.

Adım 2: Python ve Pip'i kurun

Farklı bir bilgisayar kullanarak pi'ye ssh yapmayı ve bir ssh oturumu kullanarak gerekli tüm işlevleri yerine getirmeyi tercih ediyorum, ancak başlangıçta pi'yi bir monitör, klavye ve fareye kurmak ve pi'yi olana kadar doğrudan pi üzerinde çalışmak mümkün sanırım. çalışır ve ardından bağımsız olarak dağıtılır.

Önce sistemimizin ve python versiyonumuzun rutin bakım kontrolünü yapalım:

sudo apt-get güncellemesi

sudo apt-get yükseltme

Python'un kurulu olduğundan emin olun. Bir terminal oturumunda komut istemine aşağıdakini yazın:

piton --versiyon

Eğer python 2.7.13 (veya daha eski) görüyorsanız, hadi python 3.+'ı yükleyelim:

sudo apt-get install python3

sudo apt-get install python-pip

sudo apt-get install python3-pip

sudo pip3 kurulumu --upgrade pip

Adım 3: MPG123 ve Adafruit Blinka'yı kurun

Artık temel atıldığına göre, sadece birkaç kurulum daha:

MPG123, müziğimizi çalacak ses yazılımıdır. Kurulum gerçekten çok basit:

sudo apt-get install mpg123

Çok fazla araştırma yaptım ve Adafruit web sitesinde düğmelere basarak ses dosyalarını çalma hakkında harika bir şablon buldum, bu yüzden sıfırdan başlamak yerine Adafruit'tekilerin bizim için şimdiden alevlendirdiği yola devam edelim. Programları Adafruit Blinka'yı kurmamızı istiyor:

$ sudo pip3 adafruit-blinka yükleyin

Daha ileri gitmeden önce, Alsa kurulumuna sahip olduğumuzdan emin olmak için hızlı bir kontrol yapalım:

aplay --versiyon

sonuçlarımız şöyle olmalıdır: Jaroslav Kysela tarafından sürüm 1.1.3

Adım 4: Alsamixer'da Sesi %50'ye ayarlayın

Alsamixer'da Sesi %50'ye ayarlayın
Alsamixer'da Sesi %50'ye ayarlayın
Alsamixer'da Sesi %50'ye ayarlayın
Alsamixer'da Sesi %50'ye ayarlayın

Şimdi bir önlem alalım ve sağır edici sürprizlerden kaçınmak için sesimizi %50'ye ayarlayalım:

Komut istemine alsamixer yazın:

alsamixer

Kırmızı beyaz ve yeşil bir ekrana veya %100 maksimum ses seviyesine bakarsak, kulak zarlarımızı korumak için sesi %50'ye düşürmek iyi bir fikirdir. Gerekirse daha sonra (yukarı veya aşağı) her zaman ayarlayabiliriz.

Adım 5: Biraz Ev Ödevi: Dinlemeye Değer 5 Radyo İstasyonu Bulun

Bazı Ödevler: Dinlemeye Değer 5 Radyo İstasyonu Bulun
Bazı Ödevler: Dinlemeye Değer 5 Radyo İstasyonu Bulun
Bazı Ödevler: Dinlemeye Değer 5 Radyo İstasyonu Bulun
Bazı Ödevler: Dinlemeye Değer 5 Radyo İstasyonu Bulun

Her düğme için bir istasyona ihtiyacımız olacak. Aslında, istasyon için url'ye ihtiyacımız olacak. Düğmeye basmak, internet radyo istasyonunun url'sini basit, tek satırlık bir kodla arayacaktır. Ancak kendimizi aşıyoruz, bu yüzden yapacak bazı ödevlerimiz var; 5 radyo istasyonunu ve URL'lerini bulun. 5 radyo istasyonu bulmak zor değil, ancak URL'lerini bulmak zor olabilir. Nedenini birazdan açıklayacağım.

SomaFm *, özellikle ne dinlemek istediğiniz konusunda henüz bir fikriniz yoksa, başlamak için harika bir kaynaktır. Çok çeşitli eklektik müzik seçeneklerine sahipler, hiçbirini saldırgan bulmuyorum, reklam yok ve en iyi yanı: URL'lerini açıkça paylaşıyorlar. URL'yi almak için ilgilendiğiniz istasyonun bir resmine tıklayın ve sol taraftaki gezinme çubuğunda "Direct Stream Links" seçeneğine tıklayın. Oradan MP3 bölümünü bulun ve en yüksek oynatma hızının url'sini kazıyın (yani 128 atım 64). URL'yi şimdilik bir metin düzenleyiciye veya not defterine yapıştırın.

Örnek olarak, Christmas Rocks'ı kazımak için url şöyle olacaktır: (sunucu açıklamasına ihtiyacımız yok)

ice4.somafm.com/xmasrocks-128-mp3

SomaFm dünyasının dışında biraz daha zorlaşıyor. Birçok istasyon, reklam, pazarlama veya muhtemelen izleme için olsun, dinleyici ile istasyon arasında bir aracı kullanır - ve ben genellikle bu tür istasyonlardan kaçınmaya çalışırım. Aracılar, istasyonu onlar aracılığıyla dinlemenizi tercih ettiğinden, genellikle url'yi bulmak oldukça zordur; ve işte burada Vtuner devreye giriyor.

*En sevdiğiniz radyo istasyonuna bağış yapmayı düşünmenizi istemezsem kusura bakmayın, çünkü istasyonların çoğu yalnızca dinleyici desteğine güveniyor.

Adım 6: İsteğe Bağlı: URL'leri Vtuner Kullanarak Kazıyın

İsteğe bağlı: URL'leri Vtuner Kullanarak Kazıyın
İsteğe bağlı: URL'leri Vtuner Kullanarak Kazıyın
İsteğe bağlı: URL'leri Vtuner Kullanarak Kazıyın
İsteğe bağlı: URL'leri Vtuner Kullanarak Kazıyın

Şimdi eğlenceli kısım geliyor…. Vtuner ana sayfasında, sağ üst köşedeki devasa istasyon listesi bağlantısını kontrol edin. İlgilendiğiniz bir müzik türü seçin ve ardından istasyonların listesini göreceğiniz en yüksek hıza göre sıralayın. Beğenebileceğinizi düşündüğünüz bir istasyon seçin, bağlantıya veya oynat düğmesine tıklayın ve müziği örnekleyin. Sizin için değilse, endişelenmeyin, uzun süreli eğlence için uygun olanı bulana kadar işlemi tekrarlayın. Ekran resmimde Country müziğin dijital dürtü versiyonunu seçtim ve sonraki ekranda Hırvatistan'dan çaldığını fark ettim. Hırvatistan'dan Country Müziği kulağa oldukça ilginç geliyor.

Beğendim. Ama url'yi nasıl alabilirim? İstasyon görüntüsünün sağındaki, İstasyon adının altındaki beyaz alana sağ tıklayın ve "Sayfa Kaynağını Görüntüle"yi seçin ve yaklaşık 150. satıra gidin. "// Dene" yazan satırı arıyoruz. buz dökümü işlemek için". Ve url hemen altında bulunur!

orion.shoutca.st:8110/stream

Oldukça kaygan!

Listemizde en az 5 istasyon olana kadar bu adımı tekrarlayın.

Çift İsteğe Bağlı: Ekstra önlem olarak, ilgilendiğiniz 5 müzik türü bulabilirseniz (5 istasyon yerine), her tür için bir radyo istasyonu listesi oluşturun ve listeleri metin dosyaları olarak kaydedin. Buna daha sonra döneceğiz.

Adım 7: Düğmelerimizi Ayarlayın

Düğmelerimizi Ayarlayın
Düğmelerimizi Ayarlayın
Düğmelerimizi Ayarlayın
Düğmelerimizi Ayarlayın

En önemli kısım! Eski havyanın tozunu alın veya en azından fişini prize takın ve tozu fırınlayın. Lehimleme zamanı. Normalde açık olan 4 uçlu anlık buton kullanıyorum. Bir dizi düğme oluşturacağım (soldaki fotoğraf) ve bunları mükemmel bir panoya sabitleyeceğim. Fotoğrafta bunu söylemek zor, ancak düğme tırnaklarının yönü Kuzey-Güney yönünde ilerliyor. Sağ tarafta, topraklama kablolarım için bir topraklama rayını nereye koyduğumu ve her düğmenin karşı tarafına erkek uçlu atlama kabloları bağladığımı görebilirsiniz. Ray, 7 toprak bağlantısına sahip olmak yerine, herkes için pi ile bir toprak bağlantısını paylaşmamıza izin verecek. Sonuç, sağlanan pilot deliklerden bazı vidalar kullanılarak telsizin üstüne monte edilecek hassas bir gofret kartıdır. Üstten kestiğim oluğun içinden sadece düğme üstleri çıkacaktır. Üst yüzeyim sadece 1/4 kalınlığında olduğundan, fazla vidalamamaya dikkat etmek istiyorum. Mükemmel kartı radyoya bağlı tutmak için yapıştırıcı yardımcı olabilir.

8. Adım: GPIO Pinlerimizi Tanımlayın

GPIO Pinlerimizi Tanımlayın
GPIO Pinlerimizi Tanımlayın
GPIO Pinlerimizi Tanımlayın
GPIO Pinlerimizi Tanımlayın

Diğer tek talimatımda, eski Google AIY sürüm 1 ses şapkaları için yeni bir kullanım sundum. Oldukça popüler olmayan (ya da dar anlamda popüler olan) bu talimatta, şapkanın tasarımından ne kadar etkilendiğimden bahsetmiştim. Etrafta birkaç tane var, bu yüzden hem dac hem de amplifikatöre sahip olduğu için şapkayı kullanarak bir prototip oluşturacağım.

Şimdi buton basmalarımıza ev sahipliği yapacak altı pini belirleyelim. Google AIY şapkasının sol tarafında "servolar" yazan yere odaklanmanızı isteyeceğim. Bir önceki adımımızdaki erkek düğme uçlarımı takıp lehimleyeceğim Pin için 6 delikten oluşan bir sütun var. Google aiy ses şapkası olmadan çalışıyorsanız endişelenmeyin, sağdaki fotoğraf size yol gösterecektir. Her iki durumda da yukarıdan aşağıya (veya 0-5) 26, 06, 13, 05, 12 ve 24 gpio (BCM) pinleriyle çalışacağız. GPIO #24, isteğe bağlı bir duraklatma düğmesi için ayrılacaktır.

Toprak bağlantısını da takmayı unutmayın.

9. Adım: Kod

Kodun buradan çok değişeceğinden şüpheliyim, ancak python kodunun en son sürümü için lütfen github'ımı ziyaret edin. 2019-12-18 itibariyle pytiful3.py adlı bir kopyasını ekledim.

Göreceğiniz en verimli kod değil ve oldukça ayrıntılı, ancak işi hallediyor.

Oynamak için bir sanal alan oluşturarak başlayalım. Ana dizinimizden, ahududu pi'mizde kissir adında bir dizin oluşturun:

mkdir öpücük/

ve örnek dosyayı bir metin düzenleyicide açarak ve kullanarak pytiful3.py dosya içeriğini dizine kopyalayın.

sudo nano öpücük/pytiful3.py

dosya içeriğini yeni oluşturulan python betiğimize kopyalayın / yapıştırın. Çalışmamızı Ctrl-x, Y tuşlarını kullanarak kaydetmeyi ve enterlamayı unutmayınız.

Scripti hızlı bir şekilde gezmek isterseniz, ihtiyacımız olacak python modüllerini import ediyoruz ve ardından butonlarımızı tanımlıyoruz ve 7 butonun her birine bir gpio pini atıyoruz. 5 radyo istasyonu (istasyon tercihinize göre düzenlemekte özgürsünüz), bir durdurma düğmesi ve bir kapatma düğmesi olacaktır. while true döngüsü, bir düğmeye basılana kadar çalışır ve çalışır; bu, çoğu durumda mevcut herhangi bir mpg123 oynatmayı durdurur ve basılan düğmeye atanan istasyonu çalmaya başlar. Duraklat/durdur düğmesi aslında bir duraklatma düğmesi değil, internet radyosunu duraklatamadığımız için daha çok bir kapatma düğmesidir. İnternet radyosu kimseyi beklemez.

Adım 10: Sandbox'ımızda Test Edin

Sandbox'ımızda Test Edin
Sandbox'ımızda Test Edin

Telsizimizi dağıtmadan önce, hala ssh oturumumuzdayken, komut dosyamızın depolandığı kissir klasörüne gidin. Komut dosyasını komut satırından şunu yazarak manuel olarak çalıştırabiliriz:

python3 pytiful3.py

İlk önce koda göz attıysanız, muhtemelen neler olduğunu anlayabilmemiz için bazı baskı ifadeleri bıraktığımı fark etmişsinizdir. Her şey yolunda giderse, "Bir Düğmeye Basın" yazan bir istemimiz olacak. Bu bize betiğimizin çalıştığını ve bir ön kod kontrolünden geçtiğini söyler. İlk denememde sonsuz bir "müzik duraklatıldı - devam etmek için düğmeye basın" döngüsü vardı ve duraklatma düğmemin normalde açık yerine her zaman kapalı olacak şekilde kablolu olduğunu öğrendim. Umarım lehimleme adımında daha iyi şanslar elde etmişsinizdir.

İptal etmeniz gerekirse Ctrl-C komut dosyasını durduracaktır.

Yani "Bir düğmeye basın" görürseniz, ne bekliyoruz? Beş radyo istasyonu düğmemizden birini seçin.

Muhtemelen müzik çalmayı başlatmak için bir hoparlör sesi duyacaksınız ve şu an için bu konuda yardımcı olamam. Mpg123, os.system komutunda istasyon adresinden sonra "--preload 1" ekine izin veriyor, ancak bunun bir fark yaratıp yaratmadığını anlayamadım. Hafif bir arabelleğe izin vermelidir.

Merak etmiş olabileceğiniz bir başka kod parçası: mpg123 çağrısından sonra bir " -f 7000" bayrağı var. Bu, sesi maksimum sesten uzak bir mesafeye düşürür. Tam Hacim 32K olacaktır. Anladığım kadarıyla ses ölçeği doğrusal bir ölçek değil, bu yüzden maksimum sesin yalnızca beşte biri olduğunu söyleyemem ama yine de oldukça yüksek. Bunu yapmak zorundaydım çünkü ses kartım - Google AIY ses kartı, Alsamixer ile bazen iyi çalışmıyor.

Dilediğiniz gibi butonları seçmeye devam edin, arkanıza yaslanın, rahatlayın ve şimdilik dinlemenin rahatlığını yaşayın.

Adım 11: Kodumuzu Önyüklemede Otomatik Olarak Çalışacak Şekilde Ayarlayın

Bu nedenle, her şey yolunda gidiyorsa ve korumalı alan komut istemi girişimimizden memnun kaldıysanız, komut dosyası yüklemesini otomatikleştirmenin şimdi tam zamanı. Hala kissir dizininde olduğunuzdan emin olun ve komut dosyasını kullanıcı kutusuna yerleştirin:

sudo cp pytiful3.py /usr/local/bin/

Yürütülebilir hale getirin:

sudo chmod +x /usr/local/bin/pytiful3.py

Başlangıçta çalıştırmak için bir kabuk betiği yazın:

sudo nano pytiful3.sh

Ve aşağıdaki metni ekleyin:

#! /bin/sh ### BEGIN INIT INFO # Sağlar: pytiful3.py # Gerekli-Başlangıç: $remote_fs $syslog # Gerekli-Durdur: $remote_fs $syslog # Varsayılan-Başlangıç: 2 3 4 5 # Varsayılan-Durdur: 0 1 6 ### END INIT INFO # ses seviyesinin yüksek olmadığından emin olun YAPILACAKLAR # Başlangıçta sistem durumu "$1" tarafından istendiğinde belirli işlevleri gerçekleştirin) echo "pytiful3.py Başlatılıyor" /usr/local/bin/pytiful3.py &;; durdur) echo "pytiful3.py durduruluyor" pkill -f /usr/local/bin/pytiful3.py;; *) echo "Kullanım: /etc/init.d/pytiful3.sh {start|stop}" çıkış 1;; esac çıkış 0

init.d'ye taşıyın:

sudo mv pytiful3.sh /etc/init.d/

Yürütülebilir hale getirin:

sudo chmod +x /etc/init.d/pytiful3.sh

Komut dosyasını başlangıçta çalışacak şekilde kaydedin:

sudo update-rc.d pytiful3.sh varsayılanları

Adım 12: Tekrar Test Edin

Artık başlangıçta çalıştırmak için komut dosyamızı yüklediğimize göre, yaptığımız tüm değişikliklerin kullanıcı kutusuna getirilmesi gerektiğini ve güzel, kissir/pytiful3.py komut dosyamızın artık yalnızca bir yetim olduğunu unutmayın. Ama işin iyi tarafı, hala oynayabileceğimiz bir sanal alanımız var. Muhtemelen yakın gelecekte senaryoyla oynamaya, değişiklikler yapmaya ve yeni bir sürüm olarak kaydetmeye devam edeceğim. Hala çalışan bir proje.

Yeniden başlatma yapalım, pi'nin yeniden başlamasını bekleyelim ve yaklaşık bir dakika sonra tekrar bir düğmeye basalım.

Ses düzeyiniz çok düşükse, alsamixer ses düzeyinin %50 olduğunu unutmayın, böylece komut isteminden uygun şekilde yükseltebiliriz.

Yeni başlayanlar için, ses düzeyini 5 farklı kez değiştirmek yerine global bir ses düzeyi değeri gerekir.

Hey, 6. adımda yaptığımız radyo istasyonları listesi ne olacak? MPG123'ün rastgele bir seçim komutu olduğu ortaya çıktı. İstasyon url'lerinin bir listesini oluşturmak kadar basittir ve bir radyo istasyonu url'sini aramak yerine, sadece şunu kullanın:

"btn1234_choice = random.choice(btn1234)", istasyon listemizi belirledikten hemen sonra, burada btn1234_choice bizim listemizdir. Virgülle ayrılmış istasyon listemizin etrafında köşeli parantez kullanmayı unutmayın. Alt işlem komut çağrısı daha sonra rastgele seçimimizi oynatır:

subprocess.call(['mpg123', '-q', btn1234_choice, " --preload 1"])

Adım 13: Kutuyu Doldurun ve Bitirdik

Kutuyu Doldurun ve Bitirdik
Kutuyu Doldurun ve Bitirdik
Kutuyu Doldurun ve Bitirdik
Kutuyu Doldurun ve Bitirdik
Kutuyu Doldurun ve Bitirdik
Kutuyu Doldurun ve Bitirdik

Bu aşamaya geldiyseniz, iş tamamdır! Tebrikler - bağımsız bir internet radyo oynatıcısı oluşturdunuz.

Sahip olduğunuz donanıma (hoparlörler, dac ve amplifikatör) bağlı olarak, etraftaki bazı kabloları nasıl gizleyeceğinizi merak ediyor olabilirsiniz. Belki başka bir gün için başka bir talimat verilebilir, ancak bazı kabloları yerleştirmek için bir konut birimi yapmayı planlıyorsanız, kendinize bolca fazladan yer ayırmanızı öneririm.

Yukarıdaki fotoğraflarda görebileceğiniz gibi - Aslında iki tane öpücük yaptım, biri ilk denememde bir yapıştırıcı kazasının kalıntılarını kullanarak (çarpık mizahtan çarpık tahtalar geliyor). İkinci ünite, geleneksel hoparlörler yerine ses uyarıcıları kullanıyor ve ekran görüntülerimden birinde cihazın adını aldıysanız, adını slimbox koydum.

Bu projeyi oldukça eğlenceli buldum. Her iki seferde de. Kesinlikle zor bir proje değil, belki biraz zaman alıcı ama çok ödüllendirici. Umarım siz de keyifle dinlersiniz.

Önerilen: