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

Comments

comments

  • ottelo

    wie komme ich eigentlich aus dem Programm zurück zur Raspbian Oberfläche?

    • ottelo

      Ahhhh ich Idiot hab’s selbst rausgefunden. Pfeil nach rechts paarmal drücken dann kann man von dort aus raus gehen. Danke fürs Image!!!!

  • Markus

    Ich wollte das Image RaspianTouchNewtron auf dem Pi3 mit 5″ WaveShare Display ausführen. Da bekomme ich jedoch kein Bild. Kann ich das Image anpassen? Bin noch Anfänger 🙁

    • ottelo

      Denk mal ja. Dazu würde ich via SSH (z.B. MobaXterm Programm) auf den Rpi3 gehen und einloggen via user=pi. Dann der Anleitung hier folgen: http://www.waveshare.com/wiki/5inch_HDMI_LCD

      Method 1. Driver installation

      Anstatt den Treiber manuell runterzuladen einfach in die console tippen (Link natürlich einfügen):
      wget LINK-EINFACH-KOPIEREN-
      danach normal weitermachen nach Anleitung
      tar xzvf /boot/LCD-show-170309.tar.gz
      …usw

  • ottelo

    Für alle die noch andere Pakete installiert haben wollen oder andere Images (Raspbian Lite), für die habe ich hier fertige Images: https://ottelo.jimdo.com/

  • Markus

    Ich habe mich exakt an die Anleitung von der Waveshare Seite gehalten. Jetzt sehe ich, wie der Raspberry bis Mounting fuse control file system bootet, und dann abbricht.
    Wenn ich den Treiber und die zusätzlichen Zeilen aus der config.txt entferne, sehe ich zwar auf dem Display nichts, kann mich aber über putty auf den Pi schalten.

    Vielen Dank für eure Hilfe!!!

    https://uploads.disquscdn.com/images/37a345a37316f0adaaadb57a9f95f6a49f48597cb16cc9e8670fb87890b0ff1a.jpg

    • ottelo

      Denk mal das liegt daran, dass du ein HDMI Kabel angeschlossen hast. Dann zeigt er nur boot logs auf dem Bildschirm.

  • TREVE

    Herzlichen Dank für alle Arbeit. Es funktioniert so weit alles super.

    Ich möchte nur gerne einen USB Audio Ausgang (PCM2704 DAC) anschliessen. Unter MPD Audio Outputs steht nur „My ALSA Device“. Mein USB DAC steht nicht dabei.

    Wer kann mich weiter helfen?

  • Tom R

    …super Anleitung – jetzt hätte ich noch eine Frage zum Nachbauen; das Touchdisplay gibt es als …LCD(A) und als …LCD(B) – kann mir da jemand den Unterschied sagen, nicht dass ich das falsch bestelle!?!
    Gruß, Tom

  • Tom R

    Hallo nochmal…
    habe mir jetzt das Display bestellt, das Image für den Rpi2 runtergeladen – auf SD Karte geschrieben, Wlan Verbindung per .conf erstellt…
    Beim Starten wird der Bildschirm weiß …aber mehr tut sich leider nicht?!?
    Per Putty komme ich auch drauf – weiß aber leider nicht, was ich dort machen soll/muss?!
    Vielleicht hat ja jemand ne Idee
    LG Tom

    P.s. hatte dass Display (A) bestellt… https://uploads.disquscdn.com/images/77c9ffbe0177c6d8ff282f8b99349819d2d89e343c5f8c3282434e0e6c984b9b.jpg https://uploads.disquscdn.com/images/a984ff25a783273f725e608a77361ba315b416aa6e151c3b9a16890445f91583.jpg

    • Maddin Wagner

      Moin, versuch mal die Treiber neu zu installieren. Siehe: http://www.waveshare.com/wiki/3.5inch_RPi_LCD_(A)

      • Tom R

        …bin gerade am Verzweifeln; das mit dem Treiber hatte nicht funktioniert.
        Dann habe ich mir nen Raspi3 bestellt und Ottelos aktuellstes Image installiert -> weißer BIldschirm…
        Dann von der Waveshare Homepage das Raspi-Image mit integriertem Treiber installiert -> weißer Bildschirm…
        Hat jemand ne Idee wie ich das Display testen kann, ob das nen Defekt hat?!?
        Grüße, Tom

        • Maddin Wagner

          Hast du mal ne andere SD-Karte versucht? Image neu geflasht? es klappt auf anhieb tadellos

          • Tom R

            Guten Morgen,
            …ich habe inzwischen 3 verschiedene SD Karten im Einsatz, und die Images schon mehrfach neu geflasht 🙁
            Jetzt warte ich auf Antwort von Waveshare, wegen möglicherweise defektem Display…
            Gruß

          • Maddin Wagner

            Also ein Weißes Display besagt eigentlich nur das es keinen Input bekommt. Ich tendiere das du die Treiber nicht richtig installiert hast.
            Anbei nochmal ne Kurzfassung:

            Command line

            sudo raspi-config
            select Advanced
            select A5 Device Tree. Enable
            Select A6 SPI. Enable.
            Exit and Reboot automatically
            Command line

            Just for good practice

            sudo apt-get update && sudo apt-get upgrade
            Then we use wget to take the drivers from the manufacturer

            wget http://www.waveshare.com/w/upload/9/9d/LCD-show-151020.tar.gz

            tar xvf LCD-show-151020.tar.gz
            Then we need to go to the directory

            cd LCD-show
            Finally we need to run the driver

            sudo ./LCD35-show

            http://www.waveshare.com/wiki/3.5inch_RPi_LCD_%28A%29

          • Tom R

            Hi,
            …ich habs jetzt nochmal versucht – genau nach der Kurzanleitung…
            -> weißes Display!?
            Ich werd es jetzt auf alle Fälle zurück schicken.

            Nur nochmal zum Mitschreiben – das ist doch das, das ihr auch benutzt (habt); mit dem auch die fertigen Images funktionieren!?!

            https://www.amazon.de/gp/product/B01HR4CL6M/ref=ox_sc_sfl_title_1?ie=UTF8&psc=1&smid=A3U321I9X7C9XA

            Gruß Tom