Inhaltsverzeichnis:

Halten Sie es stumpfes einfaches Internetradio: KISSIR - Gunook
Halten Sie es stumpfes einfaches Internetradio: KISSIR - Gunook

Video: Halten Sie es stumpfes einfaches Internetradio: KISSIR - Gunook

Video: Halten Sie es stumpfes einfaches Internetradio: KISSIR - Gunook
Video: Eine gute HiFi-Anlage - Teil 2 2024, November
Anonim
Keep It Stoopid Simple Internetradio: KISSIR
Keep It Stoopid Simple Internetradio: KISSIR
Keep It Stoopid Simple Internetradio: KISSIR
Keep It Stoopid Simple Internetradio: KISSIR

Manchmal muss es einfach taktil sein. Keine Schnittstelle jeglicher Art. Nur Knöpfe.

Raspberry Pi als Internet-Radio-Player ist nichts Neues, und es gibt viele Anleitungen zum Erstellen eines Internet-Radio-Players mit einem Himbeer-Pi mit oder ohne Monitor, um Internet-Stationen aus der ganzen Welt zu streamen. Wenn Sie kopflos (ohne Monitor) arbeiten möchten, benötigen Sie immer noch eine Schnittstelle zum pi-Player, normalerweise eine Webschnittstelle, wenn nicht ein direktes Mittel zur Kommunikation mit dem Host, wie z. B. ssh. Dieses anweisbare wird etwas anders sein; Wir verwenden einfache Tastendrücke, um Befehle an den Pi zu senden, wodurch eine Webschnittstelle und ein LCD-Bildschirm überflüssig werden. Klingt einfach genug, oder (?)

Wir beginnen mit einem sehr einfachen Design mit farbcodierten Schaltflächen, wobei jede Farbe einen Internetradiosender darstellt. Wir werden etwas Python-Code einführen, um den Tastendruck zu handhaben: Der Druck führt einen Befehl aus, um einen vorcodierten Internetradiosender mit MPG123 abzuspielen, einem großartigen Befehlszeilentool zum Abspielen von Audio auf unserem Pi.

Ihre Python-Kenntnisse müssen nicht fortgeschritten sein. Tatsächlich bin ich buchstäblich von "Hello World" dazu übergegangen, dies zu schreiben, und wie Sie sehen werden, habe ich mir viel Code ausgeliehen - wenn ich es also kann und es einigermaßen dokumentiert habe, sollte jeder andere kein Problem haben.

Lass uns gehen!

Lieferungen:

Benötigte Materialien

  • Raspberry pi/ pi zero w mit allen Befestigungen: Netzteil, SD-Karte und Raspbian oder Raspbian lite.
  • WLAN und Internetzugang
  • Ein weiterer PC zum Surfen im Internet und die Möglichkeit, SSH mit dem Himbeer-Pi zu verbinden
  • Digital-Analog-Wandler (DAC) - optional, aber Sie werden dankbar sein.
  • Verstärker
  • Lautsprecher
  • Anschlusskabel und Jumper
  • Lötkolben und Lot
  • Perfboard für die Knöpfe
  • Taktile Tasten: Normalerweise offen – eine für jedes Musikgenre, eine Einschalttaste und eine optionale Stummschalttaste (7 Tasten empfohlen)
  • Eine Wohneinheit für all das (optional, aber ordentlich)

Schritt 1: Voraussetzungen:

Voraussetzungen
Voraussetzungen

Wir gehen davon aus, dass Sie Ihren Raspberry Pi, DAC und Verstärker bereits eingerichtet haben und gehen davon aus, dass Sie Zugang zum Internet haben. Aufgrund der Vielzahl von Audiogeräten, Präferenzen und Optionen für das Hören von Audio gehen wir davon aus, dass Ihre Einrichtung bereits abgeschlossen ist: Sie sollten bereits Ton aus Ihren Lautsprechern hören, bevor Sie mit diesem Projekt beginnen. Wir müssen auch eine SSH-Verbindung zum Raspberry Pi herstellen. Stellen Sie daher mit der Pi-Konfiguration sicher, dass die Schnittstellen SSH aktiviert haben. Ich werde Raspbian lite verwenden und empfehle Ihnen eine Neuinstallation der neuesten Kopie auf einer neuen SD-Karte, die für dieses Projekt bestimmt ist. Bei Erfolg werden wir ein eigenständiges Gerät bauen, das rund um die Uhr als dediziertes Abhörgerät eingeschaltet bleiben kann.

Schritt 2: Python und Pip installieren

Ich bevorzuge es, mit einem anderen PC per SSH auf das Pi zuzugreifen und alle erforderlichen Funktionen mit einer SSH-Sitzung auszuführen, aber ich denke, es ist möglich, das Pi zunächst auf einen Monitor, eine Tastatur und eine Maus einzurichten und direkt auf dem Pi zu arbeiten, bis es soweit ist arbeiten und dann als Standalone bereitstellen.

Lassen Sie uns zunächst eine routinemäßige Wartungsprüfung unseres Systems und unserer Python-Version durchführen:

sudo apt-get update

sudo apt-get upgrade

Stellen Sie sicher, dass Python installiert ist. Geben Sie in einer Terminalsitzung Folgendes an der Eingabeaufforderung ein:

python --version

Wenn Sie Python 2.7.13 (oder früher) sehen, installieren wir Python 3.+:

sudo apt-get install python3

sudo apt-get install python-pip

sudo apt-get install python3-pip

sudo pip3 install --upgrade pip

Schritt 3: MPG123 und Adafruit Blinka installieren

Jetzt, wo das Fundament gelegt ist, nur noch ein paar Installationen:

MPG123 ist die Audiosoftware, die unsere Musik abspielt. Die Installation ist ganz einfach:

sudo apt-get install mpg123

Ich habe viel recherchiert und auf der Adafruit-Website eine großartige Vorlage zum Abspielen von Sounddateien mithilfe von Tastendrücken gefunden. Anstatt also bei Null anzufangen, können wir den Weg fortsetzen, den die Leute von Adafruit bereits für uns gebahnt haben. Ihr Programm verlangt, dass wir Adafruit Blinka installieren:

$ sudo pip3 installiere adafruit-blinka

Bevor wir fortfahren, führen wir eine kurze Überprüfung durch, um sicherzustellen, dass wir Alsa eingerichtet haben:

aplay --version

unsere Ergebnisse sollten lauten: Version 1.1.3 von Jaroslav Kysela

Schritt 4: Stellen Sie die Lautstärke in Alsamixer auf 50 % ein

Stellen Sie die Lautstärke im Alsamixer auf 50 % ein
Stellen Sie die Lautstärke im Alsamixer auf 50 % ein
Stellen Sie die Lautstärke im Alsamixer auf 50 % ein
Stellen Sie die Lautstärke im Alsamixer auf 50 % ein

Lassen Sie uns nun eine Vorsichtsmaßnahme treffen und unsere Lautstärke auf 50% einstellen, um ohrenbetäubende Überraschungen zu vermeiden:

Geben Sie an der Eingabeaufforderung alsamixer ein:

alsamixer

Wenn wir einen Bildschirm mit Rot-Weiß-Grün oder 100 % der maximalen Lautstärke betrachten, ist es eine gute Idee, die Lautstärke auf 50 % zu reduzieren, um unser Trommelfell zu schonen. Wir können bei Bedarf jederzeit später (nach oben oder unten) anpassen.

Schritt 5: Einige Hausaufgaben: Finden Sie 5 Radiosender, die es wert sind, gehört zu werden

Einige Hausaufgaben: Finden Sie 5 Radiosender, die es wert sind, gehört zu werden
Einige Hausaufgaben: Finden Sie 5 Radiosender, die es wert sind, gehört zu werden
Einige Hausaufgaben: Finden Sie 5 Radiosender, die es wert sind, gehört zu werden
Einige Hausaufgaben: Finden Sie 5 Radiosender, die es wert sind, gehört zu werden

Wir brauchen eine Station für jede Taste. Eigentlich brauchen wir die URL für die Station. Der Tastendruck ruft die URL des Internetradiosenders in einem einfachen, einzeiligen Code-Bit auf. Aber wir sind uns selbst voraus, also haben wir einige Hausaufgaben zu erledigen; Finde 5 Radiosender und ihre URLs. 5 Radiosender zu finden ist nicht schwer, aber ihre URLs zu finden kann schwierig sein. Ich erkläre Ihnen gleich warum.

SomaFm * ist eine großartige Quelle für den Anfang, besonders wenn Sie noch keine Ahnung haben, was Sie gerade hören möchten. Sie haben eine große Auswahl an vielseitigen Musikangeboten, von denen ich keine anstößig finde, keine Werbung und das Beste daran: Sie teilen ihre URLs offen. Um die URL zu erhalten, klicken Sie auf ein Bild des Senders, an dem Sie interessiert sind, und klicken Sie in der linken Navigationsleiste auf "Direct Stream Links". Suchen Sie von dort aus den MP3-Abschnitt und kratzen Sie die URL mit der höchsten Wiedergaberate (dh 128 Beats 64). Fügen Sie die URL vorerst in einen Texteditor oder einen Notizblock ein.

Als Beispiel, um Christmas Rocks zu kratzen, wäre die URL: (wir brauchen die Serverbeschreibung nicht)

ice4.somafm.com/xmasrocks-128-mp3

Außerhalb der Welt von SomaFm wird es etwas schwieriger. Viele Sender nutzen einen Mittelsmann zwischen Hörer und Sender, sei es für Werbung, Marketing oder eventuell Tracking - und ich versuche generell solche Sender zu vermeiden. Da die Zwischenhändler es vorziehen, den Sender über sie zu hören, ist es normalerweise ziemlich schwierig, die URL zu finden; und hier kommt Vtuner ins Spiel.

*Ich wäre nachlässig, wenn ich Sie nicht bitten würde, eine Spende für Ihren Lieblingsradiosender zu erwägen, da viele der Sender ausschließlich auf die Unterstützung der Hörer angewiesen sind.

Schritt 6: Optional: Scrapieren von URLs mit Vtuner

Optional: Scrapieren Sie die URLs mit Vtuner
Optional: Scrapieren Sie die URLs mit Vtuner
Optional: Scrapieren Sie die URLs mit Vtuner
Optional: Scrapieren Sie die URLs mit Vtuner

Jetzt kommt der spaßige Teil…. Auf der Vtuner-Homepage sehen Sie sich den riesigen Senderlisten-Link in der oberen rechten Ecke an. Wählen Sie ein Musikgenre, das Sie interessiert, und sortieren Sie dann nach der schnellsten Geschwindigkeit, wo Sie eine Liste der Sender sehen. Wählen Sie einen Sender, der Ihnen gefallen könnte, klicken Sie auf den Link oder die Play-Schaltfläche und probieren Sie die Musik aus. Wenn es nichts für Sie ist, keine Sorge, wiederholen Sie den Vorgang, bis wir einen für den langfristigen Genuss gefunden haben. In meinem Screenshot habe ich die digitale Impulsversion von Country-Musik gewählt und auf dem nächsten Bildschirm habe ich bemerkt, dass sie aus Kroatien gespielt wird. Country Music aus Kroatien klingt ziemlich interessant.

Ich mag das. Aber wie komme ich an die URL? Führen Sie einfach einen Rechtsklick auf den weißen Bereich rechts neben dem Stationsbild unter dem Stationsnamen aus, wählen Sie "Seitenquelle anzeigen" und scrollen Sie nach unten bis zu Zeile 150. Wir suchen nach der Zeile mit der Aufschrift "// Try um mit Eiswürfeln umzugehen". Und die URL ist gleich darunter zu finden!

orion.shoutca.st:8110/stream

Ziemlich glatt!

Wiederholen Sie diesen Schritt, bis wir mindestens 5 Stationen auf unserer Liste haben.

Doppelt Optional: Wenn Sie 5 Musikgenres finden, an denen Sie interessiert sind (im Gegensatz zu 5 Sendern), erstellen Sie eine Liste von Radiosendern für jedes Genre und speichern Sie die Listen als Textdateien. Wir kommen später darauf zurück.

Schritt 7: Richten Sie unsere Tasten ein

Richten Sie unsere Schaltflächen ein
Richten Sie unsere Schaltflächen ein
Richten Sie unsere Schaltflächen ein
Richten Sie unsere Schaltflächen ein

Der wichtigste Teil! Entstauben Sie den alten Lötkolben oder stecken Sie ihn zumindest ein und backen Sie den Staub ab. Es ist Zeit zum Löten. Ich verwende 4 Zinken-Momentandruckknöpfe, normalerweise geöffnet. Ich baue eine Reihe von Knöpfen (linkes Foto) und befestige sie an einem Perfboard. Auf dem Foto ist es schwer zu sagen, aber die Richtung der Knopfzinken verläuft alle von Nord nach Süd. Auf der rechten Seite können Sie sehen, wo ich eine Erdungsschiene für meine Erdungskabel verlegt und einige männliche Überbrückungskabel an der gegenüberliegenden Seite jedes Knopfes befestigt habe. Anstatt 7 Masseverbindungen zu haben, ermöglicht uns die Schiene, eine Masseverbindung zum Pi für alle zu teilen. Das Endergebnis ist eine empfindliche Waferplatine, die mit einigen Schrauben durch die vorgesehenen Führungslöcher an der Oberseite des Radios befestigt wird. Nur die Knopfoberseiten erscheinen durch die Nut, die ich aus der Oberseite herausgeschnitten habe. Da meine Oberseite nur 1/4 dick ist, möchte ich darauf achten, nicht zu stark zu schrauben. Kleber kann hilfreich sein, um das Perfboard am Radio zu halten.

Schritt 8: Identifizieren Sie unsere GPIO-Pins

Identifizieren Sie unsere GPIO-Pins
Identifizieren Sie unsere GPIO-Pins
Identifizieren Sie unsere GPIO-Pins
Identifizieren Sie unsere GPIO-Pins

In meinem einzigen anderen instructable präsentierte ich eine neue Verwendung für die alten Google AIY Version 1 Voice Hats. In diesem weithin unbeliebten (oder knapp beliebten) anweisbaren erwähnte ich, wie beeindruckt ich vom Design des Hutes selbst war. Ich habe ein paar herumliegen, also werde ich einen Prototyp mit dem Hut bauen, da er sowohl den DAC als auch den Verstärker an Bord hat.

Lassen Sie uns nun sechs Pins identifizieren, die unsere Tastendrücke hosten. Ich bitte Sie, sich auf die linke Seite des Google AIY-Huts zu konzentrieren, wo "Servos" steht. Es gibt eine Spalte mit 6 Ösen für den Pin, an denen ich meine männlichen Knopfenden aus unserem vorherigen Schritt anbringen und löten werde. Sollten Sie ohne den google aiy voice Hut arbeiten, keine Sorge, das Foto rechts führt Sie. In beiden Fällen arbeiten wir mit den gpio (BCM)-Pins 26, 06, 13, 05, 12 und 24 von oben nach unten (oder 0-5). GPIO #24 wird für eine optionale Pause-Taste reserviert.

Vergessen Sie nicht, auch den Masseanschluss anzubringen.

Schritt 9: Code

Ich bezweifle, dass sich der Code von hier aus viel ändern wird, aber für die neueste Version des Python-Codes besuchen Sie bitte meinen Github. Ich habe eine Kopie vom 18.12.2019 namens pytiful3.py angehängt.

Es ist nicht der effizienteste Code, den Sie jemals sehen werden, und er ist ziemlich ausführlich, aber er erledigt seine Arbeit.

Beginnen wir damit, eine Sandbox zum Spielen zu erstellen. Erstellen Sie aus unserem Home-Verzeichnis ein Verzeichnis auf unserem Himbeer-Pi namens Kissir:

mkdir küssen/

und kopieren Sie den Inhalt der Datei pytiful3.py in das Verzeichnis, indem Sie die Beispieldatei in einem Texteditor öffnen und verwenden

sudo nano kissir/pytiful3.py

Kopieren / fügen Sie den Dateiinhalt in unser neu erstelltes Python-Skript ein. Vergessen Sie nicht, unsere Arbeit mit Strg-x, Y und Enter zu speichern.

Wenn Sie eine kurze Tour durch das Skript wünschen, importieren wir die benötigten Python-Module, definieren unsere Schaltflächen und weisen jeder der 7 Schaltflächen einen gpio-Pin zu. Es gibt 5 Radiosender (können Sie diese nach Ihren Wünschen anpassen), eine Halt-Taste und eine Herunterfahren-Taste. Die while-True-Schleife läuft und läuft, bis eine Taste gedrückt wird, was in den meisten Fällen eine vorhandene mpg123-Wiedergabe stoppt und die Wiedergabe des Senders startet, der der gedrückten Taste zugeordnet ist. Die Pause/Halt-Taste ist nicht wirklich eine Pause-Taste, sondern eher ein Notausschalter, da wir das Internetradio nicht anhalten können. Internetradio wartet auf niemanden.

Schritt 10: Testen Sie in unserer Sandbox

Testen Sie in unserer Sandbox
Testen Sie in unserer Sandbox

Bevor wir unser Radio bereitstellen, navigieren Sie noch in unserer SSH-Sitzung zum Kissir-Ordner, in dem unser Skript gespeichert ist. Wir können das Skript einfach manuell über die Befehlszeile ausführen, indem wir Folgendes eingeben:

python3 pytiful3.py

Wenn Sie sich zuerst den Code angesehen haben, ist Ihnen wahrscheinlich aufgefallen, dass ich einige print-Anweisungen hinterlassen habe, damit wir sagen können, was passiert. Wenn alles gut geklappt hat, erhalten wir eine Eingabeaufforderung mit der Aufschrift "Drücken Sie einen Knopf". Das sagt uns, dass unser Skript ausgeführt wird und eine vorläufige Codeprüfung bestanden hat. Mein erster Versuch hatte eine Endlosschleife von "Musik pausiert - Taste drücken, um fortzufahren", und ich fand heraus, dass meine Pausentaste so verdrahtet war, dass sie immer geschlossen und nicht normalerweise geöffnet war. Hoffentlich hattest du mehr Glück mit dem Lötschritt.

Strg-C stoppt das Skript, wenn Sie abbrechen müssen.

Wenn Sie also "Drücken Sie eine Taste" sehen, worauf warten wir noch? Wählen Sie einen unserer fünf Radiosender-Buttons aus.

Es besteht die Möglichkeit, dass Sie wahrscheinlich einen Lautsprecherknall hören, um die Musikwiedergabe zu starten, und da kann ich im Moment nicht helfen. Mpg123 erlaubt ein "--preload 1"-Suffix nach der Stationsadresse im os.system-Befehl, aber ich konnte nicht sagen, ob es einen Unterschied machte. Es sollte einen leichten Puffer ermöglichen.

Ein weiterer Code, über den Sie sich vielleicht schon gewundert haben: Nach dem Aufruf von mpg123 befindet sich ein Flag " -f 7000". Dadurch wird die Lautstärke auf eine weite Entfernung der maximalen Lautstärke reduziert. Das volle Volumen wäre 32K. Soweit ich weiß, ist die Lautstärkeskala keine lineare Skala, daher kann ich nicht sagen, dass sie nur ein Fünftel der maximalen Lautstärke ist, aber immer noch viel laut. Ich musste dies tun, weil meine Soundkarte - die Google AIY Voice-Soundkarte, manchmal nicht gut mit Alsamixer spielt.

Wählen Sie weiterhin Tasten nach Belieben aus, lehnen Sie sich zurück, entspannen Sie sich und genießen Sie vorerst den Komfort Ihres Hörens.

Schritt 11: Richten Sie unseren Code so ein, dass er beim Booten automatisch ausgeführt wird

Wenn also alles gut läuft und Sie unsere Sandbox-Eingabeaufforderung genossen haben, ist jetzt ein guter Zeitpunkt, das Laden des Skripts zu automatisieren. Stellen Sie sicher, dass Sie sich noch im Kissir-Verzeichnis befinden, und platzieren Sie den Skriptcode in der Benutzerablage:

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

Mach es ausführbar:

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

Schreiben Sie ein Shell-Skript, um es beim Start auszuführen:

sudo nano pytiful3.sh

Und fügen Sie folgenden Text ein:

#! /bin/sh ### BEGIN INIT INFO # Liefert: pytiful3.py # Erforderlicher-Start: $remote_fs $syslog # Erforderlicher-Stopp: $remote_fs $syslog # Standard-Start: 2 3 4 5 # Standard-Stop: 0 1 6 ### END INIT INFO # sicherstellen, dass die Lautstärke nicht zu hoch ist TODO # Bestimmte Funktionen ausführen, wenn der Systemfall "$1" in start dazu aufgefordert wird) echo "Starting pytiful3.py" /usr/local/bin/pytiful3.py &;; stop) echo "pytiful3.py wird gestoppt" pkill -f /usr/local/bin/pytiful3.py;; *) echo "Verwendung: /etc/init.d/pytiful3.sh {start|stop}" exit 1;; esac-Ausgang 0

Verschieben Sie es nach init.d:

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

Mach es ausführbar:

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

Registrieren Sie das Skript, das beim Start ausgeführt werden soll:

sudo update-rc.d pytiful3.sh Standardeinstellungen

Schritt 12: Erneut testen

Jetzt, da wir unser Skript geladen haben, um beim Start ausgeführt zu werden, denken Sie daran, dass alle Änderungen, die wir vornehmen, in die Benutzerablage übertragen werden müssen, und unser schönes Skript kissir/pytiful3.py ist jetzt nur noch ein Waisenkind. Aber auf der positiven Seite haben wir noch eine Sandbox zum Spielen. Ich werde wahrscheinlich weiter mit dem Skript spielen, Änderungen vornehmen und es in naher Zukunft als neue Version speichern. Es ist immer noch ein funktionierendes Projekt.

Lassen Sie uns einen Neustart durchführen, warten Sie, bis der Pi neu gestartet wird, und drücken Sie nach etwa einer Minute erneut eine Taste.

Wenn Ihre Audiolautstärke sehr niedrig ist, denken Sie daran, dass wir die Lautstärke des alsamixer bei 50% haben, damit wir sie über die Eingabeaufforderung entsprechend erhöhen können.

Für den Anfang ist ein globaler Lautstärkewert erforderlich, anstatt die Lautstärke fünfmal ändern zu müssen.

Hey, was ist mit der Liste von Radiosendern, die wir in Schritt 6 erstellt haben? Nun, es stellt sich heraus, dass MPG123 einen zufälligen Auswahlbefehl hat. Es ist so einfach wie das Erstellen einer Liste von Sender-URLs, und anstatt eine Radiosender-URL anzufordern, verwenden Sie einfach

"btn1234_choice = random.choice(btn1234)", unmittelbar nach der Identifizierung unserer Stationsliste, wobei btn1234_choice unsere Liste ist. Vergessen Sie nicht, unsere Stationsliste durch Kommas getrennt in eckigen Klammern zu setzen. Der Befehlsaufruf des Unterprozesses spielt dann unsere zufällige Auswahl ab:

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

Schritt 13: Boxen Sie es ein und wir sind fertig

Einpacken und fertig
Einpacken und fertig
Einpacken und fertig
Einpacken und fertig
Einpacken und fertig
Einpacken und fertig

Wenn Sie diesen Schritt erreicht haben, ist die Arbeit abgeschlossen! Herzlichen Glückwunsch - Sie haben gerade einen eigenständigen Internetradio-Player gebaut.

Abhängig von Ihrer Ausrüstung (Lautsprecher, DAC und Verstärker) fragen Sie sich vielleicht, wie Sie einige der herumliegenden Kabel verstecken können. Vielleicht ein weiteres anweisbares für einen anderen Tag, aber wenn Sie planen, eine Wohneinheit zu bauen, um einige der Drähte zu verstauen, empfehle ich, sich viel zusätzlichen Raum zu geben.

Wie Sie auf den Fotos oben sehen können, habe ich tatsächlich zwei Kissirs gemacht, eine mit den Resten eines Verklebungsfehlers bei meinem ersten Versuch (aus verzerrtem Humor entstehen verzerrte Bretter). Das zweite Gerät verwendet Klangerreger anstelle von herkömmlichen Lautsprechern, und wenn Sie den Namen des Geräts auf einem meiner Screenshots aufgegriffen haben, habe ich es Slimbox genannt.

Ich fand dieses Projekt ziemlich lustig. Beide Male. Sicherlich kein schwieriges Projekt, vielleicht ein wenig zeitaufwendig, aber sehr lohnend. Ich wünsche Ihnen auch viel Spaß beim Zuhören.

Empfohlen: