Kleines Internetradio

  • MIt Hilfe guter Forumsunterstützung konnte ich mein erstes kleines Projekt abschließen. Wobei "Projekt" eigentlich zu hochtrabend ist, es ist eher eine Art weiterer Serviervorschlag, wie man mit dem Raspberry ein simples, preiswertes und mobiles Internetradio zusammenbasteln kann. Das ist dabei herausgekommen:




    Zutaten:

    Raspberry Zero W (10,08 €)

    Powerbank 6700 mAh (Affiliate-Link) (13,99 €)

    Mini-Bluetooth-Lautsprecher (Affiliate-Link) (13,89 €)

    USB-Soundkarte (Affiliate-Link) (6,99 €)

    1 Kippschalter, 2 LEDs + Fassungen, 1 Klinkenbuchse

    Kabel, Stecker

    1 NFC-Sticker

    8 Magnete

    Volumio


    Das Gehäuse habe ich aus Karton geschnitten und mit Folie beklebt. Das Ergebnis ist stabiler, als ich dachte. Ich habe das so zusammengebaut, dass man alles jederzeit schnell auseinandernehmen und wieder zusammensetzen kann, wenn man die Teile mal vorübergehend für andere Projekte braucht. Deshalb wird das Gehäuse mit Magneten geschlossen. Auch die Lautsprecher sind außen mit Magneten am Gehäuse angebracht. Unter den Deckel habe ich einen NFC-Sticker angebracht und so beschrieben, dass das Smartphone bei Berührung sofort das Volumio-Webinterface startet. Gemessen an Preis und Größe sind die Lautsprecher erstaunlich klar im Klang. Auf Bässe muss man natürlich verzichten. Als Küchenradio eignet sich das gut. Für die anspruchsvolleren Klänge gibt es ja noch die Klinkenbuchse für den Anschluss an die Stereoanlage. Ich habe die Lautsprecher per Klinkenkabel angeschlossen. Die Bluetoothverbindung über wenige Zentimeter ist ja nicht gerade erforderlich und so hält der Akku noch länger durch.

    Volumio finde ich klasse, so dass ich softwaremäßig das Rad nicht neu erfinden musste (und es auch nicht gekonnt hätte). Zwischenzeitlich hatte ich auch ein 5-Zoll-Touch-Display angeschlossen, weil ich dachte, das wäre noch komfortabler, aber zumindest für das Volumio-UI finde ich die mobile Steuerung per Smartphone einfacher und bequemer.


    Hier das Innenleben:



  • Hier noch ein par Ergänzungen.

    Mit eurer Hilfe ist der Lautstärkeregler jetzt eingebaut:







    Noch etwas zur Software: Volumio ist ja schon (für meine Zwecke) perfekt, da muss nicht viel erledigt werden. Zwei Dinge habe ich noch angepasst. Im Headless-Betrieb ist es nicht so doll, wenn die Netzwerkverbindung abreißt - dann kann man den Raspi nur noch durch Stromentzug abwürgen, um wieder Zugriff zu bekommen. Deshalb habe ich die automatische Wiederherstellung der Internetverbindung eingerichtet. Das geht so:



    Code
    1. cd /etc/ifpluged/action.d
    2. sudo mv ifupdown ifupdown.bak
    3. sudo cp /etc/wpa_supplicant/ifupdown.sh ./ifupdown



    Muss nur einmal durchgeführt werden und funktioniert gut.


    Die maximale Lautstärke bei Verwendung von Volumio war mir nicht ausreichend. Deshalb setze ich die Lautstärke der Soundkarte beim Systemstart auf 100%, dann kann man mit Volumio erheblich weiter aufdrehen. Ich habe dazu einen Cronjob eingerichtet:


    Code
    1. sudo crontab -e


    dort eingefügt:


    Code
    1. @reboot amixer -c 5 cset numid=6 100%


    (5 ist die id meiner Soundkarte und 6 die id des Volume-Controls)


    Außerdem starte ich hier (ebenfalls mit @reboot-Tag) das Script, das die Wifi-LED steuert (unter Verwendung des Snippets von hyle).


    Hier habe ich mal eine andere Low-Budget-Box (Affiliate-Link) aufgesattelt. Die hat eine höhere Ausgangsleistung als die oben erwähnte, einen etwas satteren Klang, eine höhere Akku-Kapazität und zusätzliche Bedienelemente. Den aktuellen Amazon-Preis würde ich dafür nicht zahlen, aber bei Ebay gibt es die aktuell neu und versandkostenfrei für 15,99. Da kann man nicht meckern.





    Edit: ups, im Code oben werden die Zeilenumbrüche verschluckt. Wie füge ich die hier richtig ein ?

  • Dies ist die zweite Version des Radios. Mit Touch-Display kann es jetzt auch stand-alone betrieben werden. Hab dieses Display verbastelt: klick! (Affiliate-Link). Das finde ich für diese zwecke super, da die GPIOs frei zugägnglich bleiben und vor allem, weil das HDMI-Audiosignal zum Klinken-Ausgang des Displays durchgeschliffen wird. So braucht man nicht einmal mehr eine separate Soundkarte :-)

    Außerdem habe ich noch einen amtlichen Shutdown-Button angebracht.



  • Deine Gehäuse sind ja alle wunderschön! Gefällt mir sehr gut, danke für die Fotos!

  • Danke für das Lob! :-)

    In Ermangelung eines 3D-Printers und wegen eines nur sehr überschaubaren Werkzeugkastens ist alles aus Pappe (Passepartout-Karton) und Klebefolie zusammengeschnitten. Die Frontbeschriftung ist mittels Bedruckung eines simplen Fotopapiers, das ich anschließend laminiert habe, hergestellt. Alles also relativ simple. Bin sehr erstaunt, dass das Ergebnis nicht viel weniger robust erscheint, als ein Kunststoffgehäuse. Die Bastelei hat ca. 3 Nachmittage gebraucht, hat aber viel Spaß gemacht. :-)

  • Hallo Herr Kaiser,

    leider scheitere ich an der Einbindung des Quimat 3,5'' Zoll Touchbildschirms.

    Ich kann nur über den Web-Browser des PC's auf Volumio zugreifen. Auf dem TFT Schirm am PC

    wird nur sehr klein ein Logon angezeigt.

    Was muß in Volumio definiert werden?

    Könnest Du eine kurze Anleitung hier hinterlassen?

    Grüße, Thomas

  • Hallo Mollo,

    hab deinen Beitrag erst jetzt gesehen. Bist du zwischenzeitlich weitergekommen? Falls nicht: Hast du die notwendigen Treiber installiert? Über das Web-Interface von Volumio kannst du das Touch-Display-Plugin installieren. Alternativ kannst du nach dem Login auf Kommandozeilenebene auch die mit dem Display mitgelieferten Treiber installieren. Eine Einleitung dazu ist in den Amazon-Kundenbewertungen zum Display zu finden. Ich kann dir leider nicht genau sagen, wie ich vorgegangen bin, weil ich vor längerer Zeit den Raspi für ein anderes Touch-Display eingerichtet hatte, und da funktionierte jetzt das hier genannte Display out of the box.

    Falls das Problem noch nicht gelöst ist, kannst du ja vielleicht deinen aktuellen Stand kurz darstellen - am besten in einem neuen Thread in der Abteilung "Hardwar/Displays", dann finden es andere Interessenten leichter.

  • Inzwischen bin ich von Volumio abgekommen. Für die Steuerung per Web-Interface ist es eine feine Sache, aber Bedienung auf dem 3,5-Zoller macht nicht wirklich Spaß. Die Bedienelemente, insbesondere die Scrollbar, sind zu klein. Da wird die Steuerung zum Glückspiel. Außerdem muss man durch zu viele Ebenen navigieren, um den gewünschten Sender zu erreichen.


    Deshalb hab ich jetzt eine eigene, mpd/mpc-basierte Internetradio-Anwendung geschrieben mit einem per Kivy gebastelten UI. Mein Ziel war die möglichst einfache und bequeme Bedienung per Touch. Die App hat nur 2 Screens, zwischen denen einfach hin- und hergeswiped werden kann. Funktioniert ganz gut :-)







  • Moin, ich versuche gerade deinen Aufbau nachzuvollziehen.

    Bisher hab ich das I-Radio für meinen Sohn mittels eines alten Galaxy Nexus und einem PAM8406 Link gelöst.

    Leider gibt das Handy so langsam den Geist auf und ich suche nach einer günstigen Nachfolgelösung.


    Schematischer Aufbau:


    1. Powerbank --> USB Zero. Dazwischen an den + Pol einen Klickschalter, keinerlei Softwaresteuerung oder?

    2. Zero --> Soundkarte --> von der Soundkarte Klinke nach aussen geführt--> keine Software extra dafür?

    3. Wlan Led per GPIO angesteuert, siehe deine Info im Text

    4. Power LED vom Board abgenommen und nach vorne geführt


    5. Lautstärkeregler ?? Zwischen das Klinkenkabel gehängt und via Poti geregelt oder wie gelöst?


    Fehlt mir noch etwas?


    Meine Überlegung wäre:

    Zero W, Steuerung über HDMI Display. Dort Sound vom Klinkenanschluss abgreifen und in den PAM8406 oder ein stärkeres Modell einzuspeisen und damit zwei Omnes Audio BB3.AL Speaker anzutreiben.

  • Hi Doni,


    zu deinen Punkten:


    1. Ich hab zweierlei Schalter für das Hoch- bzw. Runterfahren eingebaut. Unten links in dem Bild von der neuesten Version des Radios der Kippschalter (einfach zwischen Powerbank und Raspi gschaltet) stellt die Stromversorgung her, so dass das Radio beim Einschalten automatisch hochfährt. Der Taster unten rechts ist mit GPIO-Pins verbunden und für das sichere Herunterfahren zuständig. Ich habe das Script, das die Wifi-LED steuert, um eine Abfrage des Buttonstatus erweitert, so dass es beim Drücken des Tasters den Shutdown veranlasst. Danach kann mit dem Kippschalter die Stromversorung wieder komplett getrennt werden.


    2. Der Sound über den Klinkenausgang des Raspberry ist wohl nicht so ideal. Deshalb habe ich oben in der ersten Version eine USB-Soundkarte mit Klinkenausgang angeschlossen, in der zweiten Version das HDMI-Audio-Signal über den Klinkenausgang des Displays abgegriffen.

    !

    3., 4., 5. Ja, genau so!

  • Bezgl. Soundausgabe hatte ich auch schon überlegt evtl. noch ein phat Dac auf den Zero zu setzen. Den gibts über China ja für wenige €.

    Einen "hifiberry Amp+ Hat" äqvivalent für den Zero habe ich noch nicht in günstig gefunden daher leider keine Option.


    Würdest du mir dein Script zum Nachbau zur Verfügung stellen? Gerne per PM. Mein Programmierkentnisse sind noch sehr rudimentär und das mit den power off Knoft ist da doch sehr praktisch und geht schneller als in der App immer auf herrunterfahren zu drücken.


    Danke

  • Würdest du mir dein Script zum Nachbau zur Verfügung stellen? Gerne per PM. Mein Programmierkentnisse sind noch sehr rudimentär

    Ich bin auch kein Python-Profi. Deshalb ist das Script vermutlich stilistisch verbesserungsfähig - aber es funktioniert.

    Danke nochmal an hyle für den entscheidenden Hinweis!





    Das Skript wird automatisch beim Booten gestartet (sudo crontab -e und dann angefügt: @reboot python3 wifiLedButton.py

  • So, meine erste "vernünftige" Python-Kivy-App ist quasi fertig.


    Ich habe einige Buttons noch mit Bestätigungsdialogen verknüpft, damit man keine versehentlichen Aktionen auslöst, und mit der Ausgabe von Meldungen versehen, damit man erfährt, ob Aufträge im Hintergrund ausgeführt worden sind. Das Radio hat noch eine Art Favoritenfunktion. Wenn man zufällig einen Song hört, der einem gefällt und den man sich merken möchte, betätigt man den Stern-Button. Dann werden Datum, Sender und Titel in der Datei "guteSongs.txt" gespeichert. Wenn man den Mail-Button drückt, wird einem die so erstellte Liste per Mail zugeschickt.


    Ich bin ja CreativeCommons- und OpenSource-Fan. Besteht Interesse? Dann kann ich den Code hier gerne zur Verfügung stellen.