Spisu treści:

Jednoprzyciskowe Radio Streaming Box: 7 kroków (ze zdjęciami)
Jednoprzyciskowe Radio Streaming Box: 7 kroków (ze zdjęciami)

Wideo: Jednoprzyciskowe Radio Streaming Box: 7 kroków (ze zdjęciami)

Wideo: Jednoprzyciskowe Radio Streaming Box: 7 kroków (ze zdjęciami)
Wideo: 目を奪うスタイル家族に最強 TOYOTA NOAH S-Z HYBRID WHITE 2WD 7人乗り INTERIOR & EXTERIOR 内装 外装 装備 トヨタ ノア ハイブリッド S-Z 2024, Listopad
Anonim
Jednoprzyciskowe pudełko do przesyłania strumieniowego radia
Jednoprzyciskowe pudełko do przesyłania strumieniowego radia

Zbudowałem pudełko na pasek mojego przyjaciela, które ma w środku Raspberry Pi i za naciśnięciem jednego przycisku przesyła dźwięk do strony internetowej za pomocą Darkice i Icecast, jednocześnie podświetlając znak „On-Air”. Myślałem, że to jest coś, co ludzie już robią, ale po intensywnych poszukiwaniach nic nie znalazłem i postanowiłem to rozgryźć i uczynić to instruktażowym.

Użyłem Raspberry Pi 3+ B, ale o ile wiem, działałoby na każdym Pi (być może numery pinów GPIO będą się różnić, nie mogę tego jednak potwierdzić). Użyłem pakietu NOOBS dla systemu operacyjnego i kupiłem super prostą kartę dźwiękową do wejścia. Dodałem również przycisk bezpiecznego wyłączania i diodę LED aktywności, aby chronić Pi.

Będziesz potrzebować:

Malina Pi

Pakiet NOOBS na karcie SD

Włącznik/wyłącznik (użyłem takiego dużego czerwonego przycisku zatrzymania awaryjnego, ale może to być dowolny przełącznik „klik”)

Naciśnij przycisk

1 dioda LED

Znak „On-Air”, zrobiłem własny z tablicą LED

Lutownica i mała płytka przyłączeniowa (właśnie wyciąłem pasek z jednej z tych, które miałem w pobliżu)

Karta dźwiękowa (użyłem super prostej takiej jak ta)

Krok 1: Skonfiguruj swój serwer

W przypadku rzeczywistej stacji radiowej, której używamy, nie zrobiłem tej części, ponieważ nie miałem dostępu do serwera, a mój przyjaciel to zrobił, ale na stronie Icecast jest podstawowy przewodnik po konfiguracji i udało mi się uzyskać działa od Pi na początku tylko po to, aby zobaczyć, jak to działa. Alternatywnie możesz założyć konto na internet-radio.com i działa ono z Darkice.

Krok 2: Skonfiguruj Pi i zainstaluj Darkice

Uzyskaj kartę SD z pakietem NOOBS. Po otwarciu Raspbian i zainstalowaniu wszystkich aktualizacji otwórz okno Terminal i wpisz:

aktualizacja sudo apt-get

sudo apt-get zainstaluj darkice

Darkice jest częścią Debiana, więc zainstaluje się automatycznie, zajmie to kilka chwil.

Po zakończeniu w wierszu wpisz:

ciemność

Daje komunikat o błędzie i nie uruchamia się, ale to jest w porządku. W wiadomości powie coś takiego:

Używając pliku konfiguracyjnego: /etc/darkice.cfg

Musisz edytować ten plik, więc w monicie wpisz:

sudo nano /etc/darkice.cfg

Edytuj plik, który się otworzy, korzystając z informacji na tej stronie wiki. Radioreference, po zakończeniu naciśnij CTRL-X, aby zamknąć, Y, aby zapisać i powinieneś wrócić do monitu terminala. Zawsze dobrze jest zrestartować komputer po zainstalowaniu nowego programu, więc wpisz:

restart

a po ponownym uruchomieniu Pi ponownie otwórz okno terminala. Teraz po wpisaniu „Darkice” powinno działać bez żadnych komunikatów o błędach. Jeśli wejdziesz na https://TWÓJADRESSERWERA:8000/ (8000 lub inny port, do którego przypisany jest twój serwer icecast), powinieneś otrzymać stronę ze statystykami, informującą, że jesteś połączony. Jeśli nie, dostosuj plik konfiguracyjny (linia wejściowa audio sprawiała mi pewne problemy, ale wypróbowałem wszystkie opcje i ostatecznie znalazłem swoją kartę dźwiękową). Gdy Darkice działa poprawnie, przejdź do następnego kroku.

Krok 3: Przycisk przesyłania strumieniowego i znak na żywo

Przycisk strumienia i znak na antenie
Przycisk strumienia i znak na antenie

Zrobiłem w tym celu kilka różnych samouczków, ponieważ nie było konkretnego przypisywania akcji do przycisku w Pythonie. Największym problemem, z jakim się spotkałem, było sprawienie, aby Darkice działał w tle (a tym samym nie zamroził skryptu Pythona, gdy zaczął działać), ale poprosiłem przyjaciela kodera, aby przyszedł i pomógł, a on wymyślił sposób na to, aby to zrobić, pisząc arkusze, coś, co nie dostać. Najwyraźniej byłoby to możliwe, używając '&' gdzieś w kodzie, ale nie jestem programistą i to, co mam, działa, więc postanowiłem nie zadzierać z tym. Gdy wszystko działało, zacząłem zmniejszać wszystkie kable z płytki stykowej, aż zostałem z następującą konfiguracją:

GPIO16 do zewnętrznego złącza 3-punktowego.

GPIO7 do dodatniego zacisku tablicy LED dla znaku ON-Air.

GPIO25 do przełącznika typu click.

Druga strona przełącznika zatrzaskowego jest podłączana do złącza 3-punktowego.

Ujemny zacisk matrycy LED jest również podłączony do złącza 3-punktowego.

(Pozostałe elementy na schemacie są wyjaśnione w następnym kroku).

Skrypt Pythona, który otrzymaliśmy, jest następujący (proszę zauważyć, że jest to Instruktaż dla całego projektu, tak naprawdę nie wiem wystarczająco dużo, aby wyjaśnić kod. Połączyłem go z różnymi innymi samouczkami dla różnych funkcji):

import timeimport os import RPi. GPIO jako GPIO GPIO.setwarnings(False) GPIO.setmode(GPIO. BOARD) ledPin = 12 buttonPin = 16 GPIO.setup(ledPin, GPIO. OUT) GPIO.setup(buttonPin, GPIO. IN, pull_up_down =GPIO. PUD_UP)

przełącz = Fałsz

def start_darkice():

print('wywołanie podprocesu') #result = subprocess.call('sh screen -S darkice -d -m darkice') os.system('screen -S darkice -d -m darkice') print('resuming') def stop_darkice(): os.system('screen -X -S zakończenie darkice')

podczas gdy prawda:

buttonState = GPIO.input(buttonPin) if buttonState == True: jeśli nie toggle: toggle = True print('włączanie darkice') start_darkice() #print ('BUTTON STATE TRUE') GPIO.output(ledPin, GPIO. HIGH)

w przeciwnym razie:

if toggle: toggle = False print('stopping darkice') stop_darkice() #print ('BUTTON STATE FALSE') GPIO.output(ledPin, GPIO. LOW) time.sleep(1)

Plik py jest dołączony do tej instrukcji, możesz go po prostu pobrać i wykonać krok 5, jeśli chcesz.

Krok 4: Przycisk bezpiecznego wyłączania i dioda LED aktywności

Przycisk bezpiecznego wyłączania i dioda LED aktywności
Przycisk bezpiecznego wyłączania i dioda LED aktywności

Tylko dla bezpieczeństwa i przedłużenia żywotności Pi dodałem przycisk bezpiecznego wyłączania i zewnętrzną diodę LED aktywności, aby ludzie wiedzieli, kiedy można bezpiecznie odłączyć urządzenie. Z łatwością znalazłem samouczki dla obu z nich, ale zauważyłem, że Raspberry Pi 3 B+ ma przypisany pin GPIO LED ACT, podczas gdy wcześniejsze modele nie, co może być problematyczne, jeśli masz starsze Pi.

Podłącz dodatni zacisk diody LED do GPIO13, a ujemny do GPIO26. Aby dioda ACT działała, musisz edytować plik config.txt w katalogu BOOT. Możesz to znaleźć w przeglądarce Raspbian lub za pomocą:

sudo nano /usr/boot/config.txt

Kiedy edytujesz plik, po prostu dodaj następujące wiersze:

# Użyj zewnętrznej diody LED jako diody SD ACT dtoverlay=pi3-act-led, gpio=19

Teraz zewnętrzna dioda LED będzie migotać wraz z aktywnością karty SD.

Podłącz zaciski przełącznika wciskanego do GPIO3 i GPIO8. Znalazłem następujący kod z samouczka i działa dobrze:

import timefrom gpiozero import Button z podprocesu import check_call z sygnału import pauza

def zamknięcie():

check_call(['sudo', 'wyłączanie'])

shutdown_btn = Przycisk (2, hold_time=1)

shutdown_btn.when_held = wyłączenie

pauza()

czas.sen(1)

Ten plik py jest również dołączony do pobrania, jeśli chcesz. Mój przycisk musi być przytrzymany przez 1 sekundę, jeśli chcesz to zmienić, zmień wartość 'hold-time='.

Krok 5: Spraw, aby skrypty Pythona były uruchamiane z rozruchu

Ponownie, istnieje wiele samouczków na ten temat, użyłem tego od Dexter Industries i wykonałem krok pierwszy, edytując plik rc.local.

sudo nano /etc/rc.local

W tym miejscu musisz dodać pełną ścieżkę do pliku na końcu dokumentu, dodając „&” na końcu każdej linii. Powinieneś dodać jedną linię dla każdego z plików:

sudo python /home/pi/NAZWAPLIKU, py &

sudo python /home/pi/NAZWAPLIKU2.py &

tuż przed linią

wyjście 0

Znak „&” na końcu każdej linii jest ważny, aby zapewnić pętle programu.

Krok 6: Zbuduj pudełko

Zbuduj pudełko
Zbuduj pudełko
Zbuduj pudełko
Zbuduj pudełko
Zbuduj pudełko
Zbuduj pudełko

To zależy wyłącznie od Ciebie. To naprawdę musi być tylko wielkości Pi, ale umieściłem kompresor w mojej konfiguracji, aby utrzymać strumień radiowy na dość stałym poziomie, dzięki czemu pudełko jest nieco większe. Mój ma z przodu otwór na znak On-Air i jeden na Big Red Button, dodatkowo zrobiłem małą kartę instruktażową dla DJ-ów i umieściłem ją pod przyciskiem. Z boku pudełka znajduje się otwór na przycisk, dioda ACT i wejście audio, a także inkrustowane instrukcje dla personelu baru, jak bezpiecznie zamknąć pudełko.

Krok 7: Instalacja

Instalacja
Instalacja
Instalacja
Instalacja
Instalacja
Instalacja
Instalacja
Instalacja

Zamocuj wszystkie oddzielne elementy w pudełku, pamiętając, że zawsze dobrze jest pozwolić na cyrkulację powietrza wokół Pi, aby zapobiec przegrzaniu. Podłącz kable audio do miksera, naciśnij przycisk i ciesz się transmisją!

Zalecana: