In Verbindung mit Volumio/ Multi-Room war ich viel zu lange auf der Suche nach einem White Noise Regen-Track im Internet. Auf Youtube gibt es einige, da kommt aber entweder plötzlich Donner, die Lautstärke schwankt stark, oder die Qualität ist mies – also hab ich hier einen 1,5h langen Regen-White-Noise-Track selbst gemacht. Ohne Donner und schön gleichmäßig. Vielleicht hilft’s jemandem!
Kategorie: sonstiges
DIY e-Paper Display mit Raspberry Pi Zero & Waveshare e-Paper HAT
Vor kurzem bin ich in einem Raspberry Pi-Shop auf ein relativ günstiges e-Paper-Display gestoßen. Texte oder Bilder werden hier dauerhaft durch farbige Pigmente angezeigt, ohne dass dafür eine Erhaltungsspannung erforderlich ist. Ihr kennt das vielleicht von E-Book-Readern. Da ich zufällig ein Raspberry Pi Zero übrig hatte, hab ich mich kurzerhand an einem DIY e-Paper Projekt versucht.
Einkaufsliste:
Alternativ kann man auch den 5€ günstigeren Raspberry Pi zero W nehmen und selbst einen Header drauflöten.
Das Display kann man ganz einfach direkt auf die GPIO-Pinleiste des Pi Zeros aufstecken.
Software
Auf der Herstellerseite des Displays gibt es eine sporadische Anleitung und einen GitHub-link. Die Code-Beispiele auf GitHub scheinen etwas aktueller zu sein, als die auf der Hersteller-Seite verlinkten. Außerdem hat mir dieser DIY Blog-Artikel geholfen.
Los geht’s mit ein paar „apt-gets“:
sudo apt-get update
sudo apt-get install python3-pip python3-pil python3-numpy
sudo pip3 install RPi.GPIO
Als nächstes laden wir die Display-Treiber und libraries vom Hersteller runter. Es gibt keinen Universaltreiber, jedes Display hat einen dazugehörigen Treiber.
Wir kopieren zunächst einfach die komplette GitHub-Repo:
git clone https://github.com/waveshare/e-Paper
Das sollte ein neues Verzeichnis erstellt haben, in dem die komplette Ordnerstruktur der GitHub-Repo liegt. Wir wechseln in das Verzeichnis, das die Raspberry-Pi-Python3-Beispiele enthält:
cd e-Paper/Raspberry Pi/python3/examples
und führen das zum Display passende Python-Script aus:
python3 epd_2in7_test.py
Nun sollte der Democode laufen und Bilder und Texte auf dem Display darstellen! Cool!
Ihr merkt, dass der Aufbau etwas dauert. Für eine „Uhr“, die jede Minute einen Refresh macht, ist es aber ausreichend.
Als Beispiel
…hier mal mein „Uhr“-Script auf GitHub.
Es ist ein „work-in-progress“, das sind die bisherigen Funktionen:
- Datum und Uhrzeit anzeigen (wow)
- Die Temperatur des Raspberry Pis anzeigen
- Meinen ThingSpeak-channel auslesen (zeigt Temperatur und Luftfeuchtigkeit)
- meinen Google Calendar auslesen (zeigt Geburtstage von Freunden/Familie an)
- die Track ID (Interpret & Liedname) des aktuellen Songs auf meinem Volumio Multiroom Audio Player anzeigen
DIY Raspberry Pi Multi-Room-Audio-System mit Volumio
UPDATE 2021:
Viel einfacher, stabiler und auch flexibler (da einfach auf ein bestehendes Rasperry Pi OS installierbar) geht es mit LMS (Logitech Media Server) und Squeezelite (Client / Player).
Mich hatte in der ursprünglichen Recherche nach einem Multiroom-System das „Logitech“ im Namen abgeschreckt. Der Name täuscht aber, es ist kein proprietäres System – Logitech entwickelt tatsächlich quelloffen… Die Software scheint viel öfter geupdatet zu werden als Volumio und scheint mir auch insgesamt solider. Außerdem gibt es sehr viele ports auf die verschiedensten Hardware-Plattformen.
Hätte ich das mal früher probiert.. naja, deswegen ist Bob auch für Recherchen (und Archiv) zuständig, und nicht ich 😉
Mehr über das Setup mit LMS und Squeezelite steht hier.
Ursprünglicher Beitrag von 2018:
Volumio ist super, um eine Raspberry Pi in einen dedizierten Audioplayer, mit allen denkbaren Funktionen zu verwandeln. Insbesondere die Spotify-Integration hat mir bei Volumio gut gefallen.
Mein Volumio-Player ist ein Raspberry Pi Zero W, auf das ich ein Hifi-Berry DAC+ Zero Raw gelötet habe, und dient als Spotify-Connect-Player für die Wohnzimmer-Hifi-Anlage.
(Edit Januar 2020: Mittlerweile ist es ein Pi 3 B+ mit einem Hifi-Berry DAC+)
Durch Zufall bin ich dann auf die Möglichkeit gestoßen, aus mehreren, mit Volumio bestückten Raspberry-Pis, ein Multi-Room-System zu bauen. Jeder Lautsprecher, jede Bluetooth-Box mit Aux-Eingang wird dann zum Multi-Room-Device. Natürlich vorausgesetzt, man besitzt noch weitere Raspberry Pis…
Möglich macht’s das Snapcast-Plugin von Saiyato.
Im Netz gibt es schon einige Anleitungen, wie man Volumio + Snapcast installiert, allerdings waren die nie vollständig. Deswegen hier mal die notwendigen Schritte:
- Volumio auf dem Raspberry Pi installieren
- SSH auf dem Volumio aktivieren (über das Webinterface unter „http://volumio.local/dev“)
- Das Snapcast Plugin via SSH installieren (SSH username=volumio, pass=volumio)
git clone https://github.com/Saiyato/volumio-snapcast-plugin.git
cd volumio-snapcast-plugin/
rm volumio-snapcast-plugin.zip
volumio plugin install
(EDIT: Mittlerweile kann man das Snapcast plugin auch über das Webinterface installieren! Unter Plugins -> Misc. Punkt 2 und 3 ist damit überflüssig)
- Das Plugin über das Volumio-Webinterface konfigurieren. Das ist relativ selbsterklärend. Es gibt einen Snapcast Server und dazugehörige Clients.
- Nun sollte man bereits ein funktionierendes Multi-Room-System haben. Der Server streamt einen synchronen Stream an alle Clients. Wichtig ist, dass man auch beim Server selbst eine Client-Instanz aktiviert und hier „localhost“ einstellt, damit der Server selbst auch Snapcast zur (dann mit den Clients synchronen) Audio-Wiedergabe benutzt. Ganz praktisch ist noch die Android-App „SnapDroid“, mit der man die Lautstärke der einzelnen Multi-Room-Instanzen fernsteuern kann
Vorteil der Snapcast-Lösung gegenüber anderen Multi-Room-Systemen ist, dass Snapcast das Audiosignal nach der Quelle abgreift und als Audio-Stream an die Clients verteilt. Nur so kann man mit nur einem Spotify-Account mehrere Clients gleichzeitig bedienen.
Als Codecs stehen PCM, ogg und FLAC zur Auswahl. FLAC zusammen mit „-c flac:4“ in der „Additional CLI commands“ klingt und funktioniert am besten, hier gibt’s noch Infos dazu.
Will man Spotify Connect benutzen, wird es trotzdem etwas komplizierter:
- Auf dem Snapcast-Server „Volumio Spotify Connect 2“ über das Plugin-Menü im Webinterface installieren und aktivieren, falls noch nicht gemacht
- Unter den Snapcast-Plugin-Settings sowohl beim Server, als auch bei allen Clients, überall 44,1 kHz einstellen, da es sonst zu lustigen Fehlern beim Resampling kommt (Spotify-Musik läuft sonst z.B. zu schnell/hochgepitched)
- Unter den Snapcast-Plugin-Settings des Servers im Abschnitt „Spotify Integration“ „volspotconnect2“ einstellen, und auf save klicken
- das Snapcast-Plugin-Fenster neu laden
- Das Auswahlfeld unter „Patch Spotify Configuration File“ sollte nun automatisch entsprechend den oberen Einstellungen aktualisiert worden sein. In unserem Fall sollte da „volspotifyconnect2“ stehen.
- Nun auf „patch file“ klicken
- Zum Spotify Connect Plugin wechseln
- Hier einfach direkt auf „save“ klicken (die vorhin gepatchte File wird nun aktiviert)
- Fertig
Will man das Spotify Standalone-Plugin von Volumio nutzen, geht man analog der oberen Schritte vor. Allerdings ist zum Zeitpunkt dieses Blogeintrags das standalone Spotify Plugin verbuggt, da Spotify die API vor kurzem verändert hat – man kann seine Playlists nicht mehr durchsuchen. Einen etwas umständlichen temporären Fix gibt es hier (Kurzversion: Diese index.js zusammen mit dem refresh token, den man bei Zeile 451 der index.js einfügt, ersetzt die bestehende index.js unter /data/plugins/music_service/spop. Danach Volumio neustarten!).
(Edit Dezember 2019: Es gibt nun eine aktualisiertes Spotify Plugin (V 2.00 direkt im Volumio-Plugins-Menü installierbar) mit eingebauter auth-Funktion!)
Àpropos „Fix“: Aus irgendeinem Grund ist bei Volumio keine Zeitzone eingestellt, es wird UTC angenommen. Um nicht bei der Weck- und Einschlaffunktion, oder bei etwaigen cronjobs, umständlich rumrechnen zu müssen, gibt man folgendes via SSH ein:
sudo nano /etc/default/crda
im Editor dann vervollständigen:
REGDOMAIN=ETSI
speichern und schließen, dann:
timedatectl set-ntp true
sudo dpkg-reconfigure tzdata
hier dann dem Menü folgen und die richtige Zeitzone einstellen, in meinem Fall Europe>Berlin. Überprüfen, ob es geklappt hat, geht mit:
date
Bonus!
Wer wie ich einen alten Laptop in einer Schublade liegen hat, kann zusätzlich noch die x86-Version von Volumio auf einem bootfähigen USB Stick installieren und den Laptop damit booten. Damit erhält man dann automatisch die Volumio-Kiosk-Version, d.h. man braucht zur Steuerung von Volumio kein Webiterface, sondern kann dies direkt am Laptop-Display tun, was z.B. für Parties ganz praktisch sein dürfte.
Nachtrag 1!
Wer wie ich Volumio als Spotify-Wecker mit dem Standalone-Spotify (SPOP) benutzten will, bekommt einige Stolpersteine in den Weg geschmissen. Die integrierte Weckfunktion von volumio funktioniert nicht mit Spotify-Wiedergabelisten.
Lösung: cronjob! Das muss man zunächst installieren:
sudo apt-get install cron
mit
crontab -e
erstellt man einen neuen crontab:
# unter der woche
30 7 * * 1-5 /volumio/app/plugins/system_controller/volumio_command_line_client/volumio.sh next
15 8 * * 1-5 /volumio/app/plugins/system_controller/volumio_command_line_client/volumio.sh pause
#samstag und sonntag
25 9 * * 6,7 /volumio/app/plugins/system_controller/volumio_command_line_client/volumio.sh next
30 10 * * 6,7 /volumio/app/plugins/system_controller/volumio_command_line_client/volumio.sh pause
Im obigen Beispiel „klingelt’s“ unter der Woche von 7:30 bis 8:15, am Wochenende von 9:25 bis 10:30 Uhr.
Wenn man die Zeitzone wie vorher beschrieben eingestellt/gefixt hat, passt hier auch alles (mit „date“ kann mans noch mal prüfen).
Nun muss man noch die Spotify-Tracks oder Spotify-Playlists (Achtung: Spotify-Playlists werden ab 100 Tracks gecropped!) in die Warteschlange von Volumio schieben, und am besten die zufällige Wiedergabe einstellen.
Fertig! Von nun an hat man einen Spotify-Wecker! Klappt natürlich auch mit Snapcast!
Hier ist übrigens meine Aufwach-Playlist, in 100-Track-Parts gesplittet, damit beim Import in die Volumio-Warteschlange nichts gecropped wird: Part 1, Part 2, Part 3, Part 4
Nachtrag 2:
um die Android-App RasPi Check mit Volumio benutzen zu können (praktisch, um z.B. die CPU-Temperatur zu checken), tippt man folgendes in SSH:
sudo apt-get install binutils
sudo nano /etc/rc.local
Oberhalb der Zeile mit „exit 0“ fügt man nun folgendes ein:
# make /dev/vchiq accessible for the video group
chgrp video /dev/vchiq
chmod g+rw /dev/vchiq
speichern und schließen. Nun sollte RasPi Check nach einem Reboot wie gewohnt funktionieren
Nachtrag 3:
Das ist ganz praktisch, wenn man wie ich volumio auch als „Radiowecker“ benutzt:
Ein “ Lautstärke-fade-in“ script, welches nach dem Start von Volumio ausgeführt wird, hab ich hier als Variante, die die Snapclient volumes steuert (benötigt python und eine externe library „snapcast.control„) und hier als Variante, die die Lautstärke via CLI command steuert.
Die Snapclient-Variante funktioniert auch bei DACs, die keinen Hardware Mixer haben, wie z.B. der HifiBerry Zero.
Nachtrag 4:
Es gibt mittlerweile einen Windows Client!
Projekt: RetroPie
Ich hatte mir schon vor einiger Zeit ein Raspberry Pi (1. Generation) zugelegt, da mich das Thema „Einplatinen Computer“ interessiert hat und das Teil auch ziemlich stark gehyped wurde.
Damals hatte ich die Pi dann zuerst als Mediacenter (mit Kodi) genutzt, was einigermaßen flüssig lief – Ein im Alltag viel bequemerer Chromecast hat die Pi dann allerdings schnell ersetzt. Seitdem fristet die kleine Platine ihr Dasein als NAS-Server mehrerer Backup-Festplatten, und darf alle paar Monate mal kurz hochfahren, um Fotos zu backuppen.
Damals hatte ich auch schon auf dem Schirm, dass es ein Projekt names RetroPie gibt – ein ehrgeiziges Community-Projekt, welches eine riesige Anzahl von Emulatoren alter Konsolen und Spielesysteme in einer stylischen Bedienoberfläche zusammenfasst.
Die 1. Generation der Pi schien mir allerdings zu Schwach auf der Brust, um Spiele flüssig zu emulieren.
Seitdem ist einiges passiert: Die Raspberry Pi ist nach wie vor ein Dauerbrenner auf dem Einpatinen-Markt, mittlerweile gibt es schon die 3. Generation, mit einer entsprechend schnelleren CPU, on-chip WLAN und bluetooth. Für den Preis unschlagbar für ein Retro-Gaming Projekt mit:
Nach dem Kauf des neuen Pi (3b+) bin ich nun, nach viel rumgebastel und ausprobieren, ganz zufrieden mit dem Endprodukt:
Ein minimalistisches Setup mit allen relevanten Konsolen / Spielesystemen meiner Kindheit, das Nostalgie-Tränen ins Auge schießen lässt – und einer so großen Auswahl an Retro-Spielen, dass ich die nächsten paar Jahre nur damit beschäftigt sein könnte, jedes Spiel mal kurz auszuprobieren.
Einkaufsliste
- Raspberry Pi 3b+ (36 €)
- Gehäuse mit Netzstecker, Heat-Sinks und Lüfter (16€)
- 16 GB SD-Karte, Class 10 (10€)
- USB SNES-Controller (18€)
- Xbox Classic Controller mit USB Adapter (hatte ich beides noch rumliegen), für Spiele mit Analog-Stick
- …und natürlich muss man sämtliche Spiele auf legalem Weg erwerben oder freeware– / open-source-Inhalte nutzen.
Das Setup
Das „Betriebssystem“ RetroPie ist schnell installiert – einfach das Boot-Image auf die SD-Karte kopieren und die Pi damit booten. Der Rest ist selbsterklärend.
ROMs (Spielmodule) können einfach über Samba-Share auf den Pi kopiert werden.
Alle Spielesystemen der 90er Jahre (älter als N64) laufen flüssig und ohne Probleme.
Bei MAME (Arcade)-ROMs ist es wichtig, die genaue ROM-Version zu kennen, die verschiedenen Versionen sind untereinander nicht kompatibel.
Hier gibt es eine Liste aller verfügbaren Systeme.
Übertakten
Um N64-Spiele flüssig emulieren zu können, muss man den Grafik-Chip der Pi moderat übertakten. Mit Heat-Sinks und einem Gehäuse mit Lüfter ist das aber kein Problem.
Meine Pi 3b+ läuft mit folgenden Einstellungen, unter realer (N64-Emulations-) Last bei ~ 50° C. Also weit unterhalb dem Schwellenwert von ~80° C, ab dem die Pi anfangen würde, herunterzudrosseln.
gpu_freq=525
core_freq=525
sdram_freq=550
sdram_over_voltage=2
sdram_schmoo=0x02000020
over_voltage=3
v3d_freq=525
avoid_pwm_pll=1
disable_splash=1
Die CPU-Frequenz kann man unangetastet lassen, das „Nadelöhr“ für N64-Emulation ist tatsächlich die GPU. Außerdem ist diese Kombatibilitätsliste hilfreich, da es für jede N64-ROM einen zugehörigen „optimalen“ Emulator gibt. Ein Großteil der „wichtigen“ Spiele funktionieren mit den obigen Einstellungen flüssig.
Style
„EmulationStation“ ist die Bedienoberfläche von RetroPie. Mit ein bischen Arbeit und dem richtigem Theme kann diese ziemlich stylisch aussehen.
Mit einem „Scraper“ (Script, welches das Internet nach Metadaten zu allen auf der Pi verfügbaren ROMs durchsucht und automatisch eine lokale Meta-Datenbank erstellt (mit Screenshots, Spielbeschreibungen, Erscheinungsjahr, etc), wie z.B. Skyscraper, kann man sogar Videos mit in die Spieleübersicht einbetten.
Ausblick
Die RetroPie-Community ist, wie auch die Raspberry Pi Community, ziemlich groß und aktiv. Bei über 20 Millionen verkauften Pis kein Wunder. Ständig wird hier weiterentwickelt und auch viel gebastelt.
RetroPie basiert auf Raspbian (dem „offiziellen“ Betriebssystem der Raspberry Pi Foundation). Für dieses wurden bereits viele Spiele geportet (z.B. Quake 1-3), diese sind in RetroPie bequem über den Paket-Manager installierbar. Und: Quake 3 läuft flüssig…
Raspbian selbst (also die Standard-Desktop-Version) ist auch über den Paket-Manager nachinstallierbar und kann dann jederzeit aus dem „Ports“-Menü gestartet werden – damit hat man dann ein „ganz normales“ Raspberry Pi mit dem Standardbetriebssystem in der Hinterhand.