Was stelle ich bereit?

-Software und Hardware Projekte
-Fehler Behebungen diverser Art

Raspberry PI Radio mit NewTron

Ich habe einen interessanten Beitrag von veloci auf  http://www.forum-raspberrypi.de/ gefunden, diesen würde ich gern verbreiten da er eine Modifikation von dem bekannten Tron-radio beinhaltet. Ein Touchdisplay wäre hier natürlich von Vorteil, ich selber habe ein 3.5inch Touchdisplay montiert und werde euch mein Fertiges Image auch zu Verfügung stellen.


Einleitung:

Vorrangiges Ziel war es, das Tron-Radio unabhängig von der Auflösung des Touchdisplays zu machen. Ich denke, dass mir dies mit “Newtron-Radio v2” gelungen ist.
Natürlich musste ich mir überlegen, wie das am einfachsten geht und bin zu dem Schluss gekommen, den Skin geometrisch einfach nachzubauen, so dass sich die Touchpositionen mit simplen Berechnungen ermitteln lassen.
Um den Skin selbst Auflösungsunabhängig darzustellen ergaben sich mehrere Möglichkeiten:
1. für jede bekannte Auflösung einen Satz von PNGs bereitstellen
2. Nur einen Satz PNGs benutzen und diesen beim Start skalieren
3. den Skin per Zeichenbefehlen im Programm selbst erzeugen
4. den Skin als SVG-Datei erzeugen und beim Start skalieren
Alle Varianten haben ihre Vor- und Nachteile. Letztlich habe ich mich für die letzte Variante entschieden, da sie meines Erachtens die grösste Flexibilität bietet. Allerdings hat sie den Nachteil, dass zusätzliche python-Module benötigt werden, da weder python noch pygame SVG-Unterstützung bieten. Ich bin dann noch einen Schritt weiter gegangen und habe den Skin in seine einzelnen Bestandteile zerlegt. Damit konnte ich dann sogar eine gewisse Reaktivität auf die Betätigung einiger Touchbuttons realisieren. Da der Skin zudem durchsichtig ist, kann man auch beliebige Hintergrundbilder einbinden.
Weitere Optimierungen gegenüber dem Original von 5volt-junkie betreffen die Geschwindigkeit und die Darstellung von überlangen Titeln oder Sendernamen – hier wird dann automatisch gescrollt. Desweiteren wurde eine einfache Playlistenauswahl integriert.
Featureerweiterungen wie z.B. WLan-konfiguration habe ich dagegen ersteinmal hintenangestellt und sind dementsprechend nicht vorhanden.

Das Programm ist so aufgebaut, dass die Displayauflösung automatisch ermittelt wird. Sollte das nicht funktionieren kann man im Skript selbst die Auflösung manuell festlegen.

Falls sie das Radio ausprobieren möchten folgt jetzt noch eine Kurzanleitung (genaueres finden Sie im tgz-Archiv in der Datei INSTALL.txt oder bei der Installer-Version nach der Installation in der Datei /usr/local/lib/newtron-v2/INSTALL.txt).

Anleitung für Raspbian Wheezy + Jessie
Es wird ein auf Raspbian wheezy oder jessie basierendes Image sowie ein fertig eingerichtetes Touchdisplay vorausgesetzt.
Für den Konsolenmodus muß das Touchdisplay so konfiguriert sein, dass es auch dort funktioniert. Das heißt, dass der Touchscreen auf ‘ts_calibrate’ ansprechen muss (resistive Displays).

 

Anleitung für die Installer Version (wheezy + jessie)

  • Das Display muss inkl. Touch im Desktopmodus bereits funktionieren!
  • Für den Konsolenmodus muss das Touchdisplay mit ‘ts_calibrate’ justiert werden (Ausnahme: kapazitive Touchdisplays)
  • Kopieren sie die Datei ‘newtron-radio-setup-v2.7.5.sh’ auf den pi
  • Wechseln sie auf der Kommandozeile in das Verzeichnis in dem die kopierte Datei liegt
  • Führen sie die kopierte Datei wie folgt aus:

 

  • (Sie können natürlich auch den Installer Ausführbar machen und die Installation mit ‘./newtron-radio-setup-v2.7.5.sh’ starten)
    Die Installation kann, je nach Netzgeschwindigkeit und bereits installierten Paketen, einige Zeit dauern
  • Nach der Installation befinden sich die Dateien des Radios unter /usr/local/lib/newtron-v2. Ein Startskript wurde unter dem Namen ‘newtron-radio’ im Verzeichnis /usr/local/bin angelegt.
  • Desktop Modus
    • Im Startmenü einfach Unterhaltungsmedien -> NewTron Radio auswählen.
      Oder auf der Kommandozeile einfach ‘newtron-radio’ eintippen eintippen und <Return> drücken.
    • Natürlich ist auch ein automatischer Start per autostart möglich:
      Im Startmenü unter Einstellungen ->’ Default applications for LXSession’ den Reiter Autostart auswählen.
      Dort unter ‘Manual autostarted applications’ einen neuen Eintrag mit dem Inhalt ‘@newtron-radio’ erstellen.
      Nach einem Neustart des LXDE-Desktops sollte nun das Radio automatisch ausgeführt werden.
  • Konsolenmodus
    • Um das Radio zu starten geben Sie einfach ‘newtron-radio’ an der Konsole ein.
    • Ein automatischer Start wird durch einen passenden Eintrag in /etc/rc.local ermöglicht.

 

 

Anleitung für das .tgz-Archiv (wheezy + jessie)

  • Melden sie sich zunächst als Benutzer ‘pi’ auf dem RaspberryPi an und kopieren Sie das tgz-Archiv in das Heimatverzeichnis von ‘pi’.
  • Um die Abhängigkeiten von ‘NewTRON-Radio’ zu erfüllen führen sie folgende Kommandos an der Kommandozeile aus:

 

  • Spätestens jetzt sollten sie das Touchdisplay konfigurieren (kein Bestandteil dieser Anleitung!)
  • Um das Radio zu starten geben Sie folgendes ein:

 

Konfiguration
Da das Radio bereits eine Textdatei ist, ist es unsinnig für die Einstellungen eine extra Konfigurationsdatei zu benutzen. Außerdem muss das Skript in manchen Fällen (bspw. Backlightsteuerung) sowieso angepasst werden.

Konfigurationseinstellungen die die Funktion beeinflussen werden direkt im Skript mit einem Texteditor (nano, vi, …) eingestellt.
Ein Teil der Einstellungen kann aber auch im Radio selbst geändert und gesichert werden (Skin, Screensavermode/-timer, x-/plus-button).
Gesicherte Einstellungen haben Vorrang vor im Skript geänderten Einstellungen.
Achtung: Die Sicherungsdatei ist keine Datei die man selbst ändern sollte, da diese bei jedem Speichen überschrieben wird!

Für die Wetteranzeige wird ein Key von OpenWeatherMap benötigt.
Diesen kann man sich einfach über http://openweathermap.org/appid besorgen.
Dieser Key ist dann im Skript in der Variablen OWM_KEY (Zeile 80) einzutragen.
Der OWM_KEY kann aber auch als Umgebungsvariable an das Skript übergeben werden: ‘export OWM_KEY=123456…abcdef’
Die Umgebungsvariable hat Vorrang vor der Einstellung im Skript.

Ort für Wetteranzeige: OWM_ID = ‘XXXXX’ (Zeile 75)
z.B. für Frankfurt: OWM_ID = ‘2925533’
Alternativ kann die OWM_ID (OpenWeatherMap City-ID) auch über die Umgebungsvariable OWM_ID eingestellt werden (.profile, /etc/profile.d/, rc.local, etc): ‘export OWM_ID=2925533’
Die ID erhält man, indem man den gewünschten Ort auf http://openweathermap.org auswählt.
Sie ist in der resultierenden URL abzulesen, z.B. für Frankfurt: http://openweathermap.org/city/2925533
Wenn dort jedoch nur Positionsangaben (long. und lat.) zurückgeliefert werden, sollte man sich die ID einer Stadt/Ort in der Nähe aus folgender Liste heraussuchen:http://bulk.openweathermap.org/sample/city.list.json.gz
Die Umgebungsvariable hat Vorrang vor der Einstellung im Skript.

Standardmäßig startet das Radio unter jessie im Fenstermodus mit einer Auflösung von 320×240 Pixeln und sichtbarem Mauszeiger.
Möchten Sie dies ändern, muss das Skript angepasst werden:
Mauszeiger verstecken: ShowCursor = False (Zeile 66)
Für Vollbild: Fullscreen = True (Zeile 67)
Fenstergrösse(wenn nicht Fullscreen):  x_w = xxx (Zeile 69), x_h = yyy (Zeile 70)
wobei xxx und yyy den jeweils gewünschten Wert darstellen.

Konfigurationseinstellungen die das Aussehen beeinflussen finden Sie in der Datei ‘skin.cfg’ des zugehörigen Skins. Für den Default-Skin ‘Tron’ ist also newtron-v2/skins/Tron/skin.cfg zu bearbeiten.

Ausserdem kann jeder seinen eigenen Skin erstellen und in ins ‘skins’-Verzeichnis kopieren.
Ein Skin besteht aus den Button-Grafiken, diversen Bildern (optional) und einer Konfigurationsdatei namens ‘skin.cfg’.
Sie können sich als Vorlage einen der bestehenden Skins (‘Tron’, Copper’, ‘Glass’) kopieren und anpassen.

Was man sonst noch alles modifizieren kann wird man schnell selbst feststellen…
Das Skript finden Sie unter ‘/usr/local/lib/newtron-v2/newtron-radio.py’ bzw. im Fall des .tgz-Archivs unter ‘newtron-v2/newtron-radio.py’ in dem Verzeichnis in dem sie das Archiv entpackt haben.

Eigene Playlisten gehören in das MPD-Playlist-Verzeichnis das in /etc/mpd.conf als ‘playlist_directory’ definiert ist. Normalerweise ist das ‘/var/lib/mpd/playlists’.

Eigene Musikdateien (und zugehörige Playlisten) gehören in das MPD-Music-Verzeichnis das in /etc/mpd.conf als ‘music_directory’ definiert ist. Normalerweise ist das ‘/var/lib/mpd/music’.

 

newtron-radio-setup-v2.7.5.sh
usbmount-setup-for-mpd.sh

Um NewTron-Radio auch als einfachen USB-Audio-Player zu verwenden, habe ich ein kleines Installationsskript geschrieben, das dabei hilft, USB-Medien automatisch einzubinden und im Radio verfügbar zu machen. Die USB-Laufwerke (ja, auch mehrere sind möglich) werden im Dateiauswahlfenster des Radios als usb0-usb9 angezeigt.

Die Installation ist einfach: Das Skript im binary-Modus* auf den pi kopieren und mit ‘sh ./usbmount-setup-for-mpd.sh’ starten. Danach steht die neue Funktionalität sofort zur Verfgügung.
ACHTUNG: Benutzer die bereits usbmount verwenden, sollten vorher die Datei /etc/usbmount/usbmount.conf sichern falls sie diese geändert haben (nur damit im Fehlerfall die ursprüngliche Konfiguration wiederhergestellt werden kann).

*) Im Skript sind Tabs, Leerzeichen und Zeilenumbrüche enthalten, die nicht verändert werden dürfen, wenn das Skript korrekt funktionieren soll. Copy & Paste per Maus und/oder Tastatur ist also nicht empfehlenswert.

newtron-radio-v2.7.5.tgz
NewTronFull

IMG_0385IMG_0386

 

 

 

 

 

 

 

 

Ich habe Meinen Raspi 2 mit einem Touchdisplay von WaveShare (3.5inch) ausgestattet. Mein fertiges Image stelle ich euch hier zu verfügung:

RaspianTouchNewtron

 





 

Es ist immerwieder schön wenn sich Projekte vergrößern und streuen. Dies ist auch mit diesem Projekt geschehen. Ein Nutzer namens Ottelo hat sich die Arbeit gemacht meine scripte von NewTron Radio zu verbessern und auch ein upgrade durchzuführen.

Betriebssystem

  • Raspbian PIXEL
  • 4.1.19-v7+
  • Jessie 8.0
  • shrinked auf ~3.5GB für 4GB SD-Karten
  • freier Speicher ~630MB

Auf dem Desktop habe ich zwei “Verknüpfungen” erstellt um zwischen HDMI und LCD wechseln zu können (Raspi rebootet dann 1x). Einfach die Datei unter /home/pi/Desktop ändern, um sie auf euer Display anzupassen.

 

Pakete

  • NewTron Radio 2.7.5. (vorinstalliert von Wagner / angepasste Lautstärkeeinstellung von ottelo)
  • LCD Touch Treiber Waveshare (vorinstalliert von Wagner / für 3.5″ und andere?)
  • Shairport-Sync 3.0.2 (mit ALAC, SOXR, OpenSSL)
  • Samba 4.2.14 (Windows Netzwerkordner, eingerichtet für alle)

Folgende Pakete habe ich entfernt um Speicherplatz zu sparen:

  • wolfram-engine
  • bluej
  • Greenfoot
  • nodered
  • nuscratch
  • scratch
  • sonic-pi
  • libreoffice
  • claws-mail
  • claws-mail-i18n
  • minecraft-pi
  • python_games

 

Install

Image mit Win32 DiskImager auf eine beliebige SD Karte übertragen (größer oder gleich 4GB). Danach auf das sichtbare Laufwerk (boot) eine Datei namens wpa_supplicant.conf erstellen. Datei mit dem Texteditor öffnen und folgendes einfügen:

 

 

 

SSID und WLAN Passwort einfügen. Danach verbindet sich der Raspberry Pi automatisch mit eurem Internet! Via Windows habt ihr auch Zugriff! SSH ist ebenfalls aktiviert.


NewTron Radio Änderungen im Script (Anpassung Volumensteuerung):

alle Volumenänderungsbefehle wurden vorher über mpc getätigt. Allerdings ist diese Steuerung nicht korrekt (Logaritmisch) und so ist es bereits bei ca. 60% leise. Über alsamixer kann jedoch korrekt von 0-100% gesteuert werden. Man muss jedoch die richtige Option (-M) angeben, damit man mit amixer korrekt einstellen kann. Mit amixer -M sset PCM xx% kann das Volumen korrekt gesetzt werden. Andersherum kann mit amixer -M get PCM | awk ‘$0~/%/{print $4}’ | tr -d ‘[]%’ das korrekte Volumen ausgegeben werden. Und so habe ich dann die Funktion setvol() im newtron-radio.py dementsprechend geändert und mit getvol() eine neue Funktion hinzugefügt.

 

Desktopverknüpfung zum Umschalten auf HDMI / LCD:

 

 

 

 

 

Samba Einstellungen:

 

Momentan so eingestellt, dass alle im gleichen Netzwerk auf den Raspi zugreifen können. Dies ist änderbar, in dem einfach in smb.conf letzte Zeile public=no eingestellt wird. Mit sudo smbpasswd -a pi kann das Passwort vergeben werden. Login wäre dann

 

Danke für deine Arbeit!

Ottelo´s Internetpräsenz: https://ottelo.jimdo.com/

Download des Images: 
NewTronRadioFULL_Image_Ottelo

Wenn es euch gefällt und auch wie gewollt funktioniert könnt ihr mir gerne einen Kaffee spendieren 🙂


Comments

comments