Inhaltsverzeichnis:

Ein-Knopf-Radio-Streaming-Box - Gunook
Ein-Knopf-Radio-Streaming-Box - Gunook

Video: Ein-Knopf-Radio-Streaming-Box - Gunook

Video: Ein-Knopf-Radio-Streaming-Box - Gunook
Video: Aiwa TPR-950 топовая магнитола в 1978 году 2024, September
Anonim
Ein-Knopf-Radio-Streaming-Box
Ein-Knopf-Radio-Streaming-Box

Ich habe eine Box für die Bar meines Freundes gebaut, die einen Raspberry Pi enthält und mit einem Knopfdruck Audio auf eine Website mit Darkice und Icecast streamt, während gleichzeitig ein 'On-Air'-Schild beleuchtet wird. Ich dachte, dies wäre etwas, was die Leute bereits taten, aber nach ausgiebiger Suche fand ich nichts und beschloss, es für mich selbst herauszufinden und dieses Instructable zu machen.

Ich habe einen Raspberry Pi 3+ B verwendet, aber soweit ich das beurteilen kann, würde er auf jedem Pi funktionieren (vielleicht würden die GPIO-Pin-Nummern variieren, das kann ich jedoch nicht bestätigen). Ich habe das NOOBS-Paket für das Betriebssystem verwendet und eine super einfache Soundkarte für den Eingang gekauft. Ich habe der Box auch eine sichere Abschalttaste und eine Aktivitäts-LED hinzugefügt, um den Pi zu schützen.

Du wirst brauchen:

Himbeer-Pi

NOOBS-Paket auf einer SD-Karte

Ein/Aus-Schalter (Ich habe einen großen roten Not-Aus-Schalter wie diesen verwendet, aber es kann jede Art von "Klick" -Schalter sein)

Druckknopf

1 LED

Ein 'On-Air'-Schild, das ich mit einem LED-Array selbst gemacht habe

Lötkolben und kleine Anschlussplatine (ich habe gerade einen Streifen von einem davon abgeschnitten, den ich herum hatte)

Soundkarte (ich habe so eine supereinfache verwendet)

Schritt 1: Richten Sie Ihren Server ein

Für den eigentlichen Radiosender, den wir verwenden, habe ich diesen Teil nicht gemacht, da ich keinen Zugriff auf den Server hatte und mein Freund hat es getan, aber es gibt eine grundlegende Einrichtungsanleitung auf der Icecast-Website und ich habe es geschafft, Es funktioniert am Anfang vom Pi aus, nur um zu sehen, wie es läuft. Alternativ können Sie auch einen Account bei internet-radio.com erstellen und es funktioniert mit Darkice.

Schritt 2: Richten Sie den Pi ein und installieren Sie Darkice

Besorgen Sie sich eine SD-Karte mit dem NOOBS-Paket. Sobald Sie Raspbian geöffnet und alle Updates installiert haben, öffnen Sie ein Terminal-Fenster und geben Sie Folgendes ein:

sudo apt-get update

sudo apt-get install darkice

Darkice ist Teil von Debian, daher wird es automatisch installiert, es dauert ein paar Augenblicke.

Wenn es fertig ist, geben Sie an der Eingabeaufforderung Folgendes ein:

Dunkeleis

Es wird eine Fehlermeldung ausgegeben und nicht ausgeführt, aber das ist in Ordnung. In der Nachricht steht etwa:

Verwenden der Konfigurationsdatei: /etc/darkice.cfg

Sie müssen diese Datei bearbeiten, also geben Sie an der Eingabeaufforderung Folgendes ein:

sudo nano /etc/darkice.cfg

Bearbeiten Sie die geöffnete Datei mit den Informationen auf dieser wiki. Radioreference-Seite. Wenn Sie fertig sind, drücken Sie STRG-X zum Schließen, Y zum Speichern und Sie sollten zur Terminal-Eingabeaufforderung zurückkehren. Es ist immer gut, nach der Installation eines neuen Programms neu zu starten, also geben Sie Folgendes ein:

neustarten

und wenn der Pi neu gestartet wurde, öffnen Sie erneut ein Terminalfenster. Wenn Sie jetzt 'Darkice' eingeben, sollte es ohne Fehlermeldungen laufen. Wenn Sie zu https://YOURSERVERADDRESS:8000/ gehen (8000 oder welcher Port Ihrem Icecast-Server zugewiesen ist), sollten Sie eine Statistikseite erhalten, die besagt, dass Sie verbunden sind. Wenn nicht, optimieren Sie die Konfigurationsdatei (die Audioeingabezeile gab mir einige Probleme, aber ich habe alle Optionen ausprobiert und schließlich meine Soundkarte gefunden). Sobald Darkice richtig läuft, fahren Sie mit dem nächsten Schritt fort.

Schritt 3: Stream-Button und On-Air-Zeichen

Stream-Button und On-Air-Schild
Stream-Button und On-Air-Schild

Ich habe dafür eine Reihe verschiedener Tutorials gemacht, da es in Python kein spezielles gab, um einer Schaltfläche eine Aktion zuzuweisen. Das größte Problem, mit dem ich konfrontiert war, war, Darkice dazu zu bringen, im Hintergrund zu laufen (und somit das Python-Skript nicht einzufrieren, wenn es anfing zu laufen), aber ich bat einen befreundeten Programmierer, zu kommen und zu helfen, und er fand einen Weg, wie man es beim Schreiben von Blättern tun konnte, etwas, das ich nicht bekommen. Anscheinend könnte es auch möglich sein, irgendwo im Code ein '&' zu verwenden, aber ich bin kein Programmierer und das, was ich habe, funktioniert, also habe ich mich entschieden, nicht damit herumzuspielen. Nachdem alles funktioniert hatte, fing ich an, alle Kabel vom Steckbrett abzuschneiden, bis ich mit dem folgenden Setup übrig war:

GPIO16 an einen externen 3-Punkt-Anschluss.

GPIO7 an den Pluspol des LED-Arrays für das ON-Air-Zeichen.

GPIO25 zum Klick-Schalter.

Die andere Seite des Klickschalters wird an den 3-Punkt-Stecker angeschlossen.

Der Minuspol des LED-Arrays wird auch an den 3-Punkt-Anschluss angeschlossen.

(Die anderen Komponenten im Diagramm werden im nächsten Schritt erklärt).

Das Python-Skript, mit dem wir geendet haben, ist wie folgt (bitte beachten Sie, dass dies ein Instructable für das gesamte Projekt ist, ich weiß nicht wirklich genug, um den Code zu erklären. Ich habe es aus verschiedenen anderen Tutorials für verschiedene Funktionen zusammengefügt):

import timeimport os import RPi. GPIO als 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)

toggle = Falsch

def start_darkice():

print('Aufruf des Unterprozesses') #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 darkice quit')

während Wahr:

buttonState = GPIO.input(buttonPin) if buttonState == True: wenn nicht toggle: toggle = True print('Darkice einschalten') start_darkice() #print ('BUTTON STATE TRUE') GPIO.output(ledPin, GPIO. HIGH)

anders:

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

Die py-Datei ist an dieses Instructible angehängt, Sie können es einfach herunterladen und Schritt 5 befolgen, wenn Sie möchten.

Schritt 4: Taste zum sicheren Herunterfahren und Aktivitäts-LED

Taste zum sicheren Herunterfahren und Aktivitäts-LED
Taste zum sicheren Herunterfahren und Aktivitäts-LED

Aus Sicherheitsgründen und um die Lebensdauer des Pi zu verlängern, habe ich einen sicheren Abschaltknopf und eine externe Aktivitäts-LED hinzugefügt, damit die Leute wissen, wann es sicher ist, die Box zu trennen. Ich habe leicht Tutorials für beide gefunden, aber mir ist aufgefallen, dass der Raspberry Pi 3 B+ einen der ACT-LED zugewiesenen GPIO-Pin hat, während dies bei früheren Modellen nicht der Fall ist, und das könnte problematisch sein, wenn Sie einen älteren Pi haben.

Befestigen Sie den Pluspol der LED an GPIO13 und den Minuspol an GPIO26. Damit die ACT-LED funktioniert, müssen Sie die Datei config.txt im BOOT-Verzeichnis bearbeiten. Diese finden Sie im Raspbian-Browser oder mit:

sudo nano /usr/boot/config.txt

Wenn Sie die Datei bearbeiten, fügen Sie einfach die folgenden Zeilen hinzu:

# Externe LED als SD verwenden ACT LED dtoverlay=pi3-act-led, gpio=19

Jetzt flackert die externe LED bei der Aktivität der SD-Karte.

Bringen Sie die Druckschalteranschlüsse an GPIO3 und GPIO8 an. Ich habe den folgenden Code aus einem Tutorial gefunden und es funktioniert gut:

import timefrom gpiozero import Button from subprocess import check_call from signal import pause

def Shutdown():

check_call(['sudo', 'poweroff'])

shutdown_btn = Button(2, hold_time=1)

shutdown_btn.when_held = Herunterfahren

Pause()

Zeit. Schlaf(1)

Diese py-Datei ist auch angehängt, damit Sie sie herunterladen können, wenn Sie möchten. Meine Taste muss 1 Sekunde lang gehalten werden, wenn Sie dies ändern möchten, ändern Sie den Wert für 'hold-time='.

Schritt 5: Lassen Sie die Python-Skripte vom Boot aus ausführen

Auch hier gibt es viele Tutorials zu diesem Thema, ich habe dieses von Dexter Industries verwendet und Schritt eins mit der Bearbeitung der Datei rc.local befolgt.

sudo nano /etc/rc.local

Hier müssen Sie den vollständigen Dateipfad am Ende des Dokuments hinzufügen, komplett mit einem '&' am Ende jeder Zeile. Sie sollten für jede der Dateien eine Zeile hinzufügen:

sudo python /home/pi/DATEINAME, py &

sudo python /home/pi/DATEINAME2.py &

kurz vor der linie

Ausgang 0

Das '&' am Ende jeder Zeile ist wichtig, um die Programmschleifen sicherzustellen.

Schritt 6: Bauen Sie die Box

Baue die Box
Baue die Box
Baue die Box
Baue die Box
Baue die Box
Baue die Box

Dies liegt ganz bei Ihnen. Es muss wirklich nur die Größe des Pi haben, aber ich habe einen Kompressor in mein Setup eingebaut, um den Radiostream auf einem ziemlich konstanten Niveau zu halten, sodass die Box etwas größer ist. Meiner hat vorne ein Loch für das On-Air-Schild und eines für den Big Red Button, außerdem habe ich eine kleine Anleitungskarte für die DJs gemacht und unter dem Button eingelegt. An der Seite der Box befindet sich ein Loch für den Drucktaster, die ACT-LED und den Audio-Eingang sowie eine eingelegte Anleitung für das Barpersonal zum sicheren Herunterfahren der Box.

Schritt 7: Installation

Installation
Installation
Installation
Installation
Installation
Installation
Installation
Installation

Befestigen Sie alle separaten Komponenten in Ihrer Box und denken Sie daran, dass es immer gut ist, eine gewisse Luftzirkulation um den Pi zu ermöglichen, um eine Überhitzung zu vermeiden. Schließen Sie die Audiokabel Ihres Mischpults an, drücken Sie den Knopf und genießen Sie die Übertragung!

Empfohlen: