Proste radio internetowe: KISSIR: 13 kroków
Proste radio internetowe: KISSIR: 13 kroków
Anonim
Proste radio internetowe: KISSIR
Proste radio internetowe: KISSIR
Proste radio internetowe: KISSIR
Proste radio internetowe: KISSIR

Czasami musi to być po prostu namacalne. Brak jakiegokolwiek interfejsu. Tylko przyciski.

Raspberry Pi jako odtwarzacz radia internetowego nie jest niczym nowym, a istnieje wiele instrukcji, jak stworzyć radio internetowe za pomocą Raspberry Pi z monitorem lub bez, aby przesyłać strumieniowo stacje internetowe z całego świata. Jeśli zdecydujesz się na tryb bezgłowy (bez monitora), nadal będziesz potrzebował środków do interfejsu odtwarzacza pi, zwykle interfejsu internetowego, jeśli nie bezpośredniego środka komunikacji z hostem, takiego jak ssh. Ta instrukcja będzie nieco inna; użyjemy prostych naciśnięć przycisków, aby wysłać polecenia do pi, eliminując w ten sposób potrzebę interfejsu internetowego i ekranu LCD. Brzmi dość łatwo, prawda (?)

Zaczniemy od bardzo podstawowego projektu za pomocą przycisków oznaczonych kolorami, każdy kolor będzie reprezentował internetową stację radiową. Wprowadzimy kod Pythona do obsługi naciśnięcia przycisku: Prasa wykona polecenie, aby odtworzyć wstępnie zakodowaną internetową stację radiową za pomocą MPG123, świetnego narzędzia wiersza poleceń do odtwarzania dźwięku na naszym pi.

Twoje umiejętności Pythona nie muszą być zaawansowane. W rzeczywistości dosłownie przeszedłem od "Hello World" do pisania tego i jak zobaczysz, pożyczyłem dużo kodu - więc jeśli mogę to zrobić i mam to trochę udokumentowane, nikt inny nie powinien mieć problemu.

Chodźmy!

Kieszonkowe dzieci:

Potrzebne materiały

  • Raspberry pi/pi zero w ze wszystkimi mocowaniami: zasilacz, karta SD i Raspbian lub Raspbian lite.
  • Wifi i dostęp do internetu
  • Kolejny komputer do przeglądania stron internetowych i możliwość SSH do Raspberry Pi
  • Przetwornik cyfrowo-analogowy (DAC) - opcjonalny, ale będziesz wdzięczny.
  • Wzmacniacz
  • Głośniki
  • Przewód przyłączeniowy i zworki
  • Lutownica i lut
  • Perf Board na guziki
  • Przyciski dotykowe: normalnie otwarte - jeden dla każdego gatunku muzyki, przycisk zasilania i opcjonalny przycisk wyciszania (zalecane 7 przycisków)
  • Jednostka mieszkalna dla wszystkich powyższych (opcjonalna, ale uporządkowana)

Krok 1: Wymagania wstępne:

Wymagania wstępne
Wymagania wstępne

Zaczniemy zakładając, że masz już skonfigurowane raspberry pi, przetwornik cyfrowo-analogowy i wzmacniacz, a także założymy, że masz dostęp do Internetu. Ze względu na wiele możliwości wyboru sprzętu audio, preferencji i opcji odsłuchu audio, zakładamy, że konfiguracja jest już zakończona: dźwięk powinien już wydobywać się z głośników przed rozpoczęciem tego projektu. Będziemy również musieli ssh do raspberry pi, więc korzystając z konfiguracji pi, upewnij się, że interfejsy mają włączony ssh. Będę używał Raspbian lite i zalecam zainstalowanie najnowszej kopii na nowej karcie SD dedykowanej dla tego projektu. Jeśli się powiedzie, zbudujemy samodzielne urządzenie, które będzie można pozostawić włączone 24/7 jako dedykowane urządzenie odsłuchowe.

Krok 2: Zainstaluj Pythona i Pip

Wolę ssh do pi za pomocą innego komputera i wykonywać wszystkie wymagane funkcje za pomocą sesji ssh, ale myślę, że można wstępnie skonfigurować pi do monitora, klawiatury i myszy i pracować bezpośrednio na pi, dopóki nie zostanie działa, a następnie wdraża jako samodzielny.

Najpierw zróbmy rutynową kontrolę konserwacyjną naszego systemu i wersji Pythona:

aktualizacja sudo apt-get

sudo apt-get upgrade

Upewnij się, że zainstalowano Python. W sesji terminalowej wpisz w wierszu polecenia:

python --wersja

Jeśli widzisz Pythona 2.7.13 (lub wcześniejszego), zainstalujmy Pythona 3.+:

sudo apt-get zainstaluj python3

sudo apt-get zainstaluj python-pip

sudo apt-get zainstaluj python3-pip

sudo pip3 zainstaluj -- uaktualnij pip

Krok 3: Zainstaluj MPG123 i Adafruit Blinka

Teraz, gdy fundament został położony, jeszcze tylko kilka instalacji:

MPG123 to oprogramowanie audio, które będzie odtwarzać naszą muzykę. Instalacja jest naprawdę prosta:

sudo apt-get zainstaluj mpg123

Zrobiłem wiele badań i znalazłem świetny szablon na stronie Adafruit dotyczący odtwarzania plików dźwiękowych za pomocą naciśnięć przycisków, więc zamiast zaczynać od zera, kontynuujmy szlak, który ludzie z Adafruit już dla nas wyznaczyli. Ich program prosi o zainstalowanie Adafruit Blinka:

$ sudo pip3 zainstaluj adafruit-blinka

Zanim przejdziemy dalej, wykonajmy szybkie sprawdzenie, aby upewnić się, że mamy konfigurację Alsy:

Odtwórz --wersja

nasze wyniki powinny brzmieć: wersja 1.1.3 autorstwa Jaroslava Kysela

Krok 4: Dostosuj głośność do 50% w Alsamixerze

Ustaw głośność na 50% w Alsamixerze
Ustaw głośność na 50% w Alsamixerze
Ustaw głośność na 50% w Alsamixerze
Ustaw głośność na 50% w Alsamixerze

Teraz podejmijmy środek ostrożności i ustawmy głośność na 50%, aby uniknąć ogłuszających niespodzianek:

W wierszu polecenia wpisz alsamixer:

alsamixer

Jeśli patrzymy na ekran czerwono-biało-zielony lub 100% maksymalnej głośności, dobrym pomysłem jest zmniejszenie głośności do 50%, aby oszczędzić nasze bębenki. W razie potrzeby zawsze możemy dostosować się później (w górę lub w dół).

Krok 5: Trochę pracy domowej: znajdź 5 stacji radiowych, których warto posłuchać

Trochę pracy domowej: znajdź 5 stacji radiowych, których warto posłuchać
Trochę pracy domowej: znajdź 5 stacji radiowych, których warto posłuchać
Trochę pracy domowej: znajdź 5 stacji radiowych, których warto posłuchać
Trochę pracy domowej: znajdź 5 stacji radiowych, których warto posłuchać

Będziemy potrzebować jednej stacji na każdy przycisk. Właściwie będziemy potrzebować adresu URL stacji. Naciśnięcie przycisku spowoduje wywołanie adresu URL internetowej stacji radiowej za pomocą prostego, jednowierszowego kodu. Jednak wyprzedzamy siebie, więc mamy trochę pracy domowej do odrobienia; znajdź 5 stacji radiowych i ich adresy URL. Znalezienie 5 stacji radiowych nie jest trudne, ale znalezienie ich adresów URL może być trudne. Za chwilę wyjaśnię dlaczego.

SomaFm * to świetne źródło na początek, zwłaszcza jeśli nie masz jeszcze pomysłu na to, czego chcesz słuchać. Mają szeroką gamę eklektycznych wyborów muzycznych, z których żaden nie uważam za obraźliwy, żadnych reklam, a najlepsze: otwarcie udostępniają swoje adresy URL. Aby pobrać adres URL, kliknij obraz interesującej Cię stacji, a na pasku nawigacyjnym po lewej stronie kliknij „Bezpośrednie łącza do strumienia”. Stamtąd znajdź sekcję MP3 i zeskrob adres URL najwyższej szybkości odtwarzania (tj. 128 uderzeń 64). Na razie wklej adres URL do edytora tekstu lub notatnika.

Na przykład, aby zeskrobać Christmas Rocks, adres URL to: (nie potrzebujemy opisu serwera)

ice4.somafm.com/xmasrocks-128-mp3

Poza światem SomaFm robi się trochę bardziej zgrabnie. Wiele stacji korzysta z pośrednika między słuchaczem a stacją, czy to w celach reklamowych, marketingowych, czy ewentualnie do śledzenia - i generalnie staram się unikać tego typu stacji. Ponieważ pośrednicy wolą, abyś słuchał stacji za ich pośrednictwem, zwykle znalezienie adresu URL jest dość trudne; i tu właśnie pojawia się Vtuner.

*Byłbym niedbały, gdybym nie poprosił Cię o rozważenie przekazania darowizny na rzecz Twojej ulubionej stacji radiowej, ponieważ wiele stacji polega wyłącznie na wsparciu słuchaczy.

Krok 6: Opcjonalnie: Zdrap adres URL za pomocą Vtunera

Opcjonalnie: Zdrap adres URL za pomocą Vtuner
Opcjonalnie: Zdrap adres URL za pomocą Vtuner
Opcjonalnie: Zdrap adres URL za pomocą Vtuner
Opcjonalnie: Zdrap adres URL za pomocą Vtuner

Teraz nadchodzi zabawna część… Na stronie głównej Vtunera sprawdź ich ogromny link do listy stacji w prawym górnym rogu. Wybierz gatunek muzyki, który Cię interesuje, a następnie posortuj według największej prędkości, gdzie zobaczysz listę stacji. Wybierz stację, która Twoim zdaniem może Ci się spodobać, kliknij łącze lub przycisk odtwarzania i wypróbuj muzykę. Jeśli to nie dla Ciebie, nie martw się, powtarzaj ten proces, aż znajdziemy odpowiedni do długotrwałej przyjemności. Na moim zrzucie ekranu wybrałem cyfrową, impulsową wersję muzyki country, a na następnym ekranie zauważyłem, że gra ona z Chorwacji. Ciekawie brzmi muzyka country z Chorwacji.

Lubię to. Ale jak uzyskać adres URL? Po prostu kliknij prawym przyciskiem myszy białe miejsce po prawej stronie obrazu stacji, pod nazwą stacji, wybierz „Wyświetl źródło strony” i przewiń w dół do wiersza 150. Szukamy wiersza z napisem „// Spróbuj radzić sobie z lodem”. A adres URL znajduje się bezpośrednio pod spodem!

orion.shoutca.st:8110/stream

Całkiem zgrabny!

Powtarzaj ten krok, aż na naszej liście będzie co najmniej 5 stacji.

Podwójne Opcjonalne: Aby uzyskać dodatkową miarę, jeśli możesz znaleźć 5 gatunków muzyki, którymi jesteś zainteresowany (w przeciwieństwie do 5 stacji), utwórz listę stacji radiowych dla każdego gatunku i zapisz listy jako pliki tekstowe. Wrócimy do tego później.

Krok 7: Skonfiguruj nasze przyciski

Skonfiguruj nasze przyciski
Skonfiguruj nasze przyciski
Skonfiguruj nasze przyciski
Skonfiguruj nasze przyciski

Najważniejsza część! Odkurz starą lutownicę lub przynajmniej podłącz ją i upiecz kurz. Czas na lutowanie. Używam 4 bolcowych przycisków chwilowych, normalnie otwartych. Zbuduję szereg przycisków (zdjęcie po lewej) i przymocuję je do jakiejś płyty perforowanej. Na zdjęciu trudno to stwierdzić, ale wszystkie bolce guzików biegną w kierunku północ-południe. Po prawej stronie widać, gdzie poprowadziłem szynę uziemiającą dla moich przewodów uziemiających i przymocowałem kilka męskich kabli rozruchowych po przeciwnej stronie każdego przycisku. Zamiast mieć 7 połączeń uziemiających, szyna pozwoli nam dzielić jedno połączenie uziemiające z pi dla wszystkich. Efektem końcowym jest delikatna płytka waflowa, która zostanie zamontowana pod spodem na górze radia za pomocą śrub przez dostarczone otwory pilotowe. Przez rowek, który wyciąłem z góry, pojawią się tylko wierzchołki guzików. Ponieważ moja górna powierzchnia ma tylko 1/4 cala grubości, chcę uważać, aby nie przekręcić. Klej może być pomocny w utrzymaniu płyty perforowanej przymocowanej do radia.

Krok 8: Zidentyfikuj nasze piny GPIO

Zidentyfikuj nasze szpilki GPIO
Zidentyfikuj nasze szpilki GPIO
Zidentyfikuj nasze szpilki GPIO
Zidentyfikuj nasze szpilki GPIO

W mojej jedynej innej instrukcji przedstawiłem nowe zastosowanie starych czapek głosowych Google AIY w wersji 1. W tym bardzo niepopularnym (lub wąsko popularnym) podręczniku wspomniałem, jak pod wrażeniem projektu samego kapelusza. Mam kilka leżących dookoła, więc będę budować prototyp za pomocą kapelusza, ponieważ ma on na pokładzie zarówno przetwornik, jak i wzmacniacz.

Zidentyfikujmy teraz sześć pinów, które będą obsługiwać nasze naciśnięcia przycisków. Poproszę, abyś skupił się na lewej stronie czapki Google AIY, gdzie jest napisane „serwa”. Jest kolumna z 6 oczkami na szpilkę, do której przymocuję i przylutuję męskie końcówki guzików z naszego poprzedniego kroku. Jeśli pracujesz bez czapki głosowej Google Aiy, nie martw się - zdjęcie po prawej stronie poprowadzi Cię. W obu przypadkach będziemy pracować z pinami gpio (BCM) 26, 06, 13, 05, 12 i 24 od góry do dołu (lub 0-5). GPIO #24 będzie zarezerwowane dla opcjonalnego przycisku pauzy.

Nie zapomnij również podłączyć uziemienia.

Krok 9: Kod

Wątpię, czy kod zmieni się znacznie od tego momentu, jednak po najnowszą wersję kodu Pythona odwiedź mój github. Załączam kopię z dnia 18.12.2019 o nazwie pytiful3.py.

Nie jest to najbardziej wydajny kod, jaki kiedykolwiek zobaczysz, i jest dość szczegółowy, ale wykonuje swoją pracę.

Zacznijmy od stworzenia piaskownicy do zabawy. Z naszego katalogu domowego stwórzmy katalog na naszym raspberry pi o nazwie kissir:

mkdir pocałunek/

i skopiuj zawartość pliku pytiful3.py do katalogu, otwierając przykładowy plik w edytorze tekstu i używając

sudo nano kissir/pytiful3.py

skopiuj / wklej zawartość pliku do naszego nowo utworzonego skryptu Pythona. Nie zapomnij zapisać naszej pracy za pomocą Ctrl-x, Y i enter.

Jeśli chcesz szybko zapoznać się ze skryptem, importujemy moduły Pythona, których będziemy potrzebować, a następnie definiujemy nasze przyciski i przypisujemy pin gpio do każdego z 7 przycisków. Będzie 5 stacji radiowych (możesz je edytować zgodnie z preferencjami stacji), przycisk zatrzymania i przycisk zamknięcia. Pętla while true działa i działa do momentu naciśnięcia przycisku, co w większości przypadków spowoduje zatrzymanie dowolnego istniejącego odtwarzania mpg123 i rozpoczęcie odtwarzania stacji przypisanej do przycisku, który został naciśnięty. Przycisk pauzy/zatrzymania nie jest tak naprawdę przyciskiem pauzy, ale raczej wyłącznikiem awaryjnym, ponieważ nie możemy wstrzymać radia internetowego. Radio internetowe na nikogo nie czeka.

Krok 10: Przetestuj w naszej piaskownicy

Przetestuj w naszej piaskownicy
Przetestuj w naszej piaskownicy

Zanim uruchomimy nasze radio, będąc jeszcze w sesji ssh, przejdź do folderu kissir, w którym przechowywany jest nasz skrypt. Możemy po prostu uruchomić skrypt ręcznie z wiersza poleceń, wpisując:

python3 pytiful3.py

Jeśli najpierw zajrzałeś do kodu, prawdopodobnie zauważyłeś, że zostawiłem kilka instrukcji print, abyśmy mogli powiedzieć, co się dzieje. Jeśli wszystko przebiegło pomyślnie, pojawi się komunikat „Naciśnij przycisk”. To mówi nam, że nasz skrypt działa i przeszedł wstępne sprawdzenie kodu. Moja pierwsza próba miała nieskończoną pętlę „wstrzymania muzyki – naciśnij przycisk, aby kontynuować” i dowiedziałem się, że przycisk pauzy jest podłączony tak, aby był zawsze zamknięty, zamiast normalnie otwarty. Mam nadzieję, że będziesz miał więcej szczęścia z krokiem lutowania.

Ctrl-C zatrzyma skrypt, jeśli musisz przerwać.

Więc jeśli widzisz "Naciśnij przycisk", na co czekamy? Wybierz dowolny z naszych pięciu przycisków stacji radiowych.

Możliwe, że usłyszysz trzask z głośnika, który zainicjuje odtwarzanie muzyki, ale w tej chwili nie mogę w tym pomóc. Mpg123 pozwala na dodanie sufiksu „--preload 1” po adresie stacji w poleceniu os.system, jednak nie mogłem stwierdzić, czy to miało znaczenie. Powinno pozwolić na niewielki bufor.

Kolejny fragment kodu, nad którym być może się zastanawiałeś: po wywołaniu mpg123 pojawia się flaga „-f 7000”. Zmniejsza to głośność do dużej odległości maksymalnej głośności. Pełny wolumen wyniósłby 32 KB. Jak rozumiem, skala głośności nie jest skalą liniową, więc nie mogę powiedzieć, że jest to tylko jedna piąta maksymalnej głośności, ale nadal jest bardzo głośna. Musiałem to zrobić, ponieważ moja karta dźwiękowa - głosowa karta dźwiękowa Google AIY, czasami nie gra dobrze z Alsamixerem.

Kontynuuj wybieranie przycisków według własnego uznania, usiądź wygodnie, zrelaksuj się i ciesz się komfortem słuchania.

Krok 11: Skonfiguruj nasz kod, aby uruchamiał się automatycznie podczas rozruchu

Więc jeśli wszystko działa dobrze i podobało Ci się nasze przedsięwzięcie z wierszem poleceń w piaskownicy, teraz jest dobry moment na zautomatyzowanie ładowania skryptu. Upewnij się, że nadal jesteś w katalogu kissir i umieść kod skryptu w bin użytkownika:

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

Spraw, aby był wykonywalny:

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

Napisz skrypt powłoki, aby uruchomić go przy starcie:

sudo nano pytiful3.sh

I wstaw następujący tekst:

#! /bin/sh ### BEGIN INIT INFO # Zapewnia: pytiful3.py # Wymagane-Start: $remote_fs $syslog # Wymagane-Stop: $remote_fs $syslog # Domyślne-Start: 2 3 4 5 # Domyślne-Stop: 0 1 6 ### END INIT INFO # upewnij się, że poziom głośności nie jest głośny DO ZROBIENIA # Wykonywanie określonych funkcji na żądanie systemowe "$1" na początku) echo "Uruchamianie pytiful3.py" /usr/local/bin/pytiful3.py &;; stop) echo "Zatrzymywanie pytiful3.py" pkill -f /usr/local/bin/pytiful3.py;; *) echo "Stosowanie: /etc/init.d/pytiful3.sh {start|stop}" exit 1;; esac wyjście 0

Przenieś go do init.d:

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

Spraw, aby był wykonywalny:

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

Zarejestruj skrypt do uruchomienia przy starcie:

sudo update-rc.d domyślne pytiful3.sh

Krok 12: Przetestuj ponownie

Teraz, gdy mamy już załadowany skrypt, który uruchamia się przy starcie, pamiętaj tylko, że wszelkie zmiany, które wprowadzamy, muszą zostać przeniesione do kosza użytkownika, a nasz piękny skrypt kissir/pytiful3.py jest teraz tylko sierotą. Ale z drugiej strony, wciąż mamy piaskownicę do zabawy. Prawdopodobnie będę dalej bawić się skryptem, wprowadzać zmiany i zapisać go jako nową wersję w najbliższej przyszłości. To wciąż działający projekt.

Zróbmy restart, poczekaj na ponowne uruchomienie pi, a po około minucie ponownie naciśnij przycisk.

Jeśli głośność dźwięku jest bardzo niska, pamiętaj, że mamy głośność alsamixera na poziomie 50%, więc możemy ją odpowiednio zwiększyć z wiersza polecenia.

Na początek jedna rzecz, która jest potrzebna, to globalna wartość głośności, zamiast konieczności zmiany poziomu głośności 5 razy.

Hej, a co z tą listą stacji radiowych, którą stworzyliśmy w kroku 6? Okazuje się, że MPG123 ma polecenie wyboru losowego. To tak proste, jak utworzenie listy adresów URL stacji i zamiast wywoływania jednego adresu URL stacji radiowej, po prostu użyj

"btn1234_choice = random.choice(btn1234)", zaraz po zidentyfikowaniu naszej listy stacji, gdzie btn1234_choice jest naszą listą. Nie zapomnij użyć nawiasów kwadratowych wokół naszej listy stacji oddzielonych przecinkami. Wywołanie polecenia podprocesu następnie odtwarza nasz losowy wybór:

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

Krok 13: Pudełko i gotowe

Zapakuj to i gotowe
Zapakuj to i gotowe
Zapakuj to i gotowe
Zapakuj to i gotowe
Zapakuj to i gotowe
Zapakuj to i gotowe

Jeśli dotarłeś do tego kroku, praca jest zakończona! Gratulacje - właśnie zbudowałeś samodzielny odtwarzacz radia internetowego.

W zależności od posiadanego sprzętu (głośniki, przetwornik cyfrowo-analogowy i wzmacniacz), możesz się zastanawiać, jak ukryć niektóre przewody. Być może kolejna instrukcja na kolejny dzień, ale jeśli planujesz zrobić jednostkę mieszkaniową, w której można schować niektóre przewody, radzę dać sobie dużo dodatkowego miejsca.

Jak widać na powyższych zdjęciach - właściwie zrobiłem dwa kissiry, jeden wykorzystując resztki wpadki po kleju w mojej pierwszej próbie (z wypaczonego humoru pochodzą wypaczone deski). Drugie urządzenie używa wzbudników dźwięku zamiast konwencjonalnych głośników, a jeśli wyłapałeś nazwę urządzenia na jednym z moich zrzutów ekranu, nazwałem je slimbox.

Ten projekt wydał mi się całkiem fajny. Oba razy. Z pewnością nie jest to trudny projekt, może trochę czasochłonny, ale bardzo satysfakcjonujący. Mam nadzieję, że spodoba ci się również słuchanie.