22 Temmuz 2021 Perşembe

Raspberry Pi ile İnternet Radyosu

 Radyo yayınlarının internet üzerinden yayınlanması uygulaması öyle ilerledi ki artık neredeyse mahallî yayın yapan radyoların bile internet üzerinde yayınları bulunuyor. Özellikle VHF bandında yayın yapan -ve FM radyolar olarak bilinen- radyoların yayın anteninden itibaren -coğrafî yapıya göre- en fazla 50 ilâ 80 km. arasında dinlenebildiği de göz önünde tutulunca, "mesafe tanımayan" internet radyolarının önemi daha da artıyor. Bu amaçla üretilmiş ticarî radyo alıcıları olduğu gibi, internet üzerinde pek çok uygulama reçetesi de bulmak mümkün. Radyoya olan merakım sebebiyle, bu konuya el atmış ve ESP32'li bir radyonun (KaRadio) yapılış safhalarını adım adım anlatmış idim. ( https://qsl.net/ta2ei/devreler/alici/int_radyo/int_radyo.htm )

Bir süre önce internette Raspberry Pi ile yapılan bir internet radyosu uygulaması ararken Bob Rathbone adlı IT danışmanı ve yazılımcının sayfasını buldum. ( https://bobrathbone.com/ )

Bu sayfada Raspberry Pi (RPI) ile yapılmış çeşitli projeler var. Bunların arasında benim ilgimi çeken RPI üzerinde çalışan internet radyosu oldu. 2 ve 4 satırlı, 8, 16 ve 20 sütünlu alfanümerik LCD, bunların I2C'li olanları, Adafruit'in beş tuşlu LCD'si, RPI 7 inch LCD, Adafruit 3.5 inch LCD, 0.96 inch OLED gibi bir çok ekran türünü destekleyen, sesin kulaklık çıkışından, HDMI'dan, RPI için DAC kartlarından alınabildiği oldukça ilginç bir devre idi.  Tam 308 sayfalık bir de yapım kitapçığı  (v7.2) vardı. Her şey en acemi kullanıcıların bile anlayabileceği bir şekilde ayrıntılı olarak anlatılmış bu kitapta.

Radyo, RPI 3, 4, 400 ve Zero-W'da çalışabiliyor.

Ben, önce bir RPI 3 üzerinde denemeye karar verdim. Her ne kadar Yazarın önerileri arasında olmasa da, elimde Waveshare 3.5 inch rezistif dokunmatik LCD ekran vardı. Onu kullanmaya karar verdim. Sesi de RPI'ın 4 boğumlu3.5 mm'lik jack çıkışından almaya karar verdim.


Dikkat! Yukarıdaki resimden de anlaşılacağı üzere, GND (şase, toprak) bağlantısı son boğumda değil sondan bir önceki boğumdadır.
Yapım kitapçığında anlatıldığı üzere, önce Raspberry Pi Masaüstünü kurdum. ( Raspberry Pi Masaüstünü kurmak ile alâkalı bilgiler https://qsl.net/ta2ei/muhtelif/RPi/raspberry.htm adresinde vardır.) 
HDMI üzerinden monitöre bağlı iken statik IP adresi belirleme ve SSH'yı etkinleştirme işlemlerini yaptım.
Masaüstünü ve birkaç yazılımı da kurduktan sonra karşıma radyonun yapılandırma ekranı geldi ve donanımıma göre gerekli yapılandırmaları yaptım.
Yukarıda da belirttiğim üzere, yapılandırmada Waveshare ile ilgili bir seçenek yok. Bunun yerine "küçük 2.8 inch LCD ekran" seçeneğini seçtim.
 Ayarlardan sonra sistemi yeniden başlattım ve BBC radyoyu dinlemeye başladım.
Artık Waveshare ekranı kullanmaya sıra gelmişti. Elimdeki ekran 3.5 inch A tipi olduğu için https://www.waveshare.com/wiki/3.5inch_RPi_LCD_(A) adresindeki yönergelere uygun olarak LCD sürücüsünü de kurdum ve radyo Waveshare ekranda da çalıştı. Buraya kadar herşey iyi gitti.

Radyoyu kablosuz olarak dinlemek de mümkün.
Evet, RPI'da bluetooth (BT) olduğuna göre bu radyoyu bir BT hoparlör seti ya da BT kulaklık ile de dinlemek mümkün. Nitekim Yazar, radyo yapılandırmasının ses bölümünde BT seçeneği de vermiş. RPI masaüstünden JBL Go2 BT hoparlörümü tanıtmaya karar verdim. Ama masaüstünde BT simgesi yoktu. Komut satırına
sudo systemctl status bluetooth
yazdığımda, BT'un "ölü" olduğu mesajını aldım.
Devrenin yazarı ile mesajlaşarak fikrini sormak da dâhil bir sürü şey denedim ama BT'u "canlandıramadım."
En baştan başlayarak sistemi yeni baştan kurmaya karar verdim. SD karta temiz bir imaj atıp adım adım izlemeye başladım. Masaüstü monitörümde herşey normaldi. Waveshare LCD'yi kullanmak için ilgili sürücüyü yüklediğimde BT simgesi tekrar kayboldu. Denediğim herşeyi bir daha denedim, olmadı.
Üçüncü defa sistemi baştan kurmaya karar verdim. Yine olmadı. Bu sırada, Waveshare'in wiki sayfasındaki bir not dikkatimi çekti: "Executing apt-get upgrade will cause the LCD to fail to work properly.yazıyordu. Hmmmmm... demek upgrade işlemi ile uyumsuz bâzı unsurlar işin içini giriyordu.
Bunun üzerine daha eski sürümleri denemeye kadar verdim. 
 RPI'a 2020-05-27-raspios-buster-armhf_minimum sürümünü kurdum. Kurulum ekranında "sistemi güncellemek istiyor musunuz" sorusunu "atla" diyerek geçtim.
Kurulum bitince, henüz Waveshare sürücüsünü kurmadan, masaüstü monitörünü kullanarak BT hoparlörümü sisteme tanıttım.
Bir sonraki adımda Waveshare sürücüsünü yükledim ve
 sudo apt-get update
komutu ile sistemi güncelledim.
Daha sonra Yazarın kitabında belirttiği gibi ffmpeg, anacron, scratch, mpd mpc python3-mpd python3-rpi.gpio'u yükleyip son olarak  radiod_7.2_armhf.deb paketini kurdum.
 Radyo, JBL Go2 BT hoparlörü ile problemsizce çalıştı.

GÜNCELLEME: (26.07.2021)
Yazar Bob Rathbone, Waveshare LCD sürücülerinden kaynaklanan BT problemini çözmüş. Problemin kaynağının, Waveshare sürücüsünün kurulurken, config.txt dosyasını değiştirmesi olduğunu ve çözümünün config.txt dosyasına aşağıdaki iki satırı ilave etmek olduğunu belirtiyor:

dtoverlay=pi3-miniuart-bt
core_freq=250


Yine Waveshare sürücüsünün, config.txt dosyasını DOS biçimine çevirdiğini, bu dosyayı yeniden unix sistemine çevirmek için dos2unix yazılımının kullanılmasının gerektiğini belirtiyor. (s. 105 - 106)

Âcil duruma hazırlık

Güncelleme : 5  Geçenlerde basında şöyle bir haber yer aldı: 'İngiltere Başbakan Yardımcısı Oliver Dowden, bir felaket sonucu internet v...