Raspberry Pi Audio Player für Blinde: Unterschied zwischen den Versionen

Aus Schaffenburg
Zur Navigation springen Zur Suche springen
 
(20 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
[[Kategorie:Tipps_und_Tricks]]
{{Infobox Projekt
|name            = R-Pi Audio Player für Blinde
|status          = experimentell
|beschreibung    = Audioplayer mit extrem einfacher Bedienung
|autor          = [[Benutzer:JanT|Jan]]
|owner          = Jan
|image          = RPi-Audioplayer.jpeg
|version        = 1.0
}}
 
Dieser Audioplayer richtet sich an Blinde, speziell ältere Blinde, die den Umgang mit Technik nicht gewohnt sind. Er basiert auf Debian plus MPD und einem Pythonscript. Er bekommt Hardwaretasten über den GPIO und evtl auch einen Lautstärkeregler und ein kleines Display. Außerdem USB Automount.
Dieser Audioplayer richtet sich an Blinde, speziell ältere Blinde, die den Umgang mit Technik nicht gewohnt sind. Er kann aber auch für eigene Projekte verwendet werden.
 
Die Daisy-Player, die im Handel erhältlich sind, sind nicht nur extrem teuer sondern auch unbedienbar für meine Zielgruppe.
 
Die Eckpunkte:
* möglichst einfach und unkompliziert
* eher großes Gehäuse und sehr große Tasten
* ohne viel Aufwand mit Inhalt füttern
* erweiterter Zugang für Wartung
 
Batteriebetrieb oder Bluetooth sind für mich eher zweitrangig, können aber nachgerüstet werden.


= Hardware =  
= Hardware =  
== Material ==  
== Material ==  
Meine Hardware sieht folgendermaßen aus:
Für den Audioplayer sind als Hardware ein 1B oder Zero völlig ausreichend.
* Raspberry Pi Zero W
Hier ein paar Vorschläge:
* HiFiBerry DAC+ Zero, passt auch bei (fast) allen anderen PI
* eine Handvoll Taster
* SD-Karte 8? GB


Der Zero hat keinen Audioanschluß. Der Hat liefert zwei Chinch-Anschlüsse.
* Hauptplatine
Der Pi 1B hat einen miserablen Audioanschluss. Die späteren Modelle sind etwas besser, für Hifi aber vermutlich ebenfalls kaum geeignet.
** Raspberry Pi Zero W
*** Falls in Kombination mit Tastern und HiFiBerry geplant, bitte eine Version ohne GPIO-Leiste kaufen und später nur die genutzten Pins auflöten.
*** keine Klinke
*** eingebautes WLAN und BT
** Raspberry Pi 1B  
*** sehr schlechte Qualität an Klinkeausgang
* Audio
** HiFiBerry DAC+ Zero mit 2x Chinch
*** passt bei allen Pi mit Standard-GPIO,
*** belegt ab Werk ''ALLE'' GPIO, das kann aber umgangen werden
** Klinke-Buchse, sofern vorhanden und Qualität ausreichend für die eigenen Bedürfnisse
** Bluetooth, onboard bei Zero W und ab 2B?
** beliebige? USB Soundkarte
* Bedienung
** eine Handvoll Taster
** Handy mit beliebiger App, die den MPD steuern kann (Netzwerk notwendig)
** TODO kleines Display
* System
** (Micro-)SD-Karte mindestens 8 GB
* Medienvorrat
** SD remote bestücken (Netzwerk notwendig)
** Online-Quelle (Netzwerk notwendig)
** Auf Auto Mount USB-Stick
*** für Raspberry Zero ist ein MicroUSB-Adapter und/oder USB-Hub notwendig
* Wifi und BT
** Kann mittels einfacher USB-Dongles nachgerüstet werden, falls das Modell diese nicht mitbringt
* Stromversorgung
** Original-Netzteil, angeblich "einzig", da geglättete VCC
** Beliebiges 5V USB-Netzteil (Audioqualität vergleichen)
** TODO Lithium Akku
*** Waveshare Battery Hat für 14500 Lithium-Akku
**** Falls nicht kompatibel mit HiFiBerry kann es auch über USB angeschlossen werden
* TODO Gehäuse


== Taster ==
== Taster ==
Für den Anschluss der Taster gilt folgendes:
Die GPIO-Pins des Pi sind nicht geschützt. Bei falschem Anschluss ist ruck zuck der Spannungsregler defekt. Dieser kann nicht getauscht werden. Totalschaden. Aus diesem Grund müssen einige Vorsichtsmaßnahmen getroffen werden:  
* Die GPIO-Pins des Pi sind nicht geschützt. Bei falschem Anschluss ist ruck zuck der Spannungsregler defekt. Dieser kann nicht getauscht werden. Totalschaden. Aus diesem Grund müssen einige Vorsichtsmaßnahmen getroffen werden:  
* Wir verwenden grundsätzlich GND als Input für die Buttons
** Wir verwenden grundätzlich GND als Input für die Buttons
* Wir blockieren alle anderen Anschlüsse durch leere Stecker so, dass nur die gewünschten Anschlüsse verwendet werden können.
**
* Wir setzen die Pins derart ein, dass der Stecker verkehrtherum aufgesteckt werden kann, ohne Schäden zu verursachen.


Für mich sieht die Lösung so aus:
* Der HifiBerry verwendet die Pins 12,27,28,35,38 und 40, außerdem benötigt er natürlich Spannungsversorgung.
* Ich habe mühsam die GPIO-Leiste zum Teil abgelötet und die Pins 5 bis 10 sowie 13 und 14 durch eine gewinkelte Leiste ersetzt.
* Darauf kommt ein 2x5 Stecker.
* Wir verwenden nun die beiden äußeren Paare sowie das mittlere Paar für jeweils einen Taster.
* Falls der Stecker falschherum aufgesteckt ist, passiert nichts anderes als der Tausch zweier Taster.
* Als GPIO für unsere drei Taster dienen nun also 3,15 und 27.


= Software =  
= Software =  
Mein Player basiert auf Rasberry OS (bisher Raspbian). Die aktuelle Version ist ein Debian Buster (10). Das ganze sollte aber auch auf anderen Systemen lauffähig sein.


== System installieren und einrichten ==  
== System installieren und einrichten ==  
* Installiere Debian/Raspian auf der SD-Karte.
=== System ===
* Starte mit Monitor, Tastatur und Netzwerk
* Download Raspberry Pi OS Lite von https://www.raspberrypi.org/software/operating-systems/#raspberry-pi-os-32-bit
* Installiere Debian/Raspian auf der SD-Karte
* Starte mit Monitor, Tastatur und Netzwerk-Kabel
 
=== Netzwerkzugriff ===
* Login pi/raspberry
* Login pi/raspberry
* Ändere das Passwort mit passwd
* Ändere das Passwort mit passwd?
* Aktiviere den SSH Server mittels  
* Aktiviere den SSH Server mittels  
     sudo systemctl enable ssh
     sudo systemctl enable ssh
     sudo systemctl start ssh
     sudo systemctl start ssh
* /etc/hostname setzen, anschliessend Reboot?
* NTP einrichten, um die Uhrzeit automatisch einzustellen
    sudo systemctl enable systemd-timesyncd.service
    sudo nano /etc/systemd/timesyncd.conf


* Am besten jetzt auch den Wifi-Zugriff einrichten
    # Inhalt beispielsweise
** TODO
    [Time]
* HOSTNAME setzen
    NTP=0.de.pool.ntp.org 1.de.pool.ntp.org 2.de.pool.ntp.org 3.de.pool.ntp.org
* Nun kann remote auf die Kiste zugegriffen werden
 
* NTP einrichten, um die Uhrzeit automatisch einzustellen
    sudo systemctl start systemd-timesyncd.service
     /etc/systemd/timesyncd.conf
   
    # Alternativ...
    sudo apt install ntp
 
https://github.com/adafruit/Raspberry-Pi-Installer-Scripts/issues/92
https://bugs.launchpad.net/raspbian/+bug/1920806
 
=== Wifi - optional, aber zu empfehlen ===
* Network-Manager installieren
    sudo apt install network-manager-gnome
* mittels NMCLI Wifi einrichten, siehe https://www.makeuseof.com/connect-to-wifi-with-nmcli/ https://kifarunix.com/connect-to-wifi-in-linux-using-nmcli-command/
 
=== Paketmanagement ===
 
* Update durchführen
    sudo apt update
    sudo apt upgrade
 
* Weitere Pakete installieren
** Pakete für MPD
     sudo apt install mpd mpc
 
** Pakete für manuelle Audiosteuerung???


* Installiere folgende Pakete:
** Pakete für das Pythonscript
     sudo apt install mpd git libespeak1
     sudo apt install git libespeak-ng1 python3-pip  
    sudo apt install python3-pip python3-mpd python3-gst-1.0 python3-rpi.gpio
Optional, um manuell mit den GPIO zu experimentieren
    sudo apt install mpc gpio-utils


Mittels pip3:
** Weitere Pakete für das Pythonscript, alternativ!! per APT oder per PIP3:
    sudo apt install python3-mpd python3-gst-1.0 python3-rpi.gpio
    pip3 install python3-mpd? python3-gst-1.0? python3-rpi.gpio? ???


** Weitere Pakete mittels PIP3
     pip3 install pyttsx3
     pip3 install pyttsx3


Auf anderen Plattformen könnten die Pakete anders heissen.
** Optional Pakete für die Ansteuerung der GPIOs von der Kommandozeile
Es könnte von Vorteil sein, die Python-Pakete via Pip3 zu installieren, damit sie aktueller sind.
    sudo apt install gpio-utils
 
** TODO Pakete für Google TTS
    mpg123, ...
 
** TODO Pakete für System TTS


== MPD einrichten ==
== MPD einrichten ==
* Medienverzeichnis
* Medienverzeichnis
* Audiodevice
* Audiodevice
    sudo mkdir /var/log/mpd
    # chown?


== Python Skript einrichten ==
== Python Skript einrichten ==
Zeile 76: Zeile 172:
     ...
     ...


== Quellen einrichten ==
= Quellen einrichten =
=== Webradios ===
== Webradios ==
* In Playlists "playlist.m3u" anlegen mit den URLs der Webradios.
* In Playlists "playlist.m3u" anlegen mit den URLs der Webradios.


=== Lokale Medien ===
== Lokale Medien ==
* Dateien in den Musik-Folder legen
* Dateien in den Musik-Folder legen


==== Lokale Medien auf Auto-Mount USB-Stick ====
== Lokale Medien auf Auto-Mount USB-Stick ==

Aktuelle Version vom 14. Mai 2021, 14:25 Uhr

Crystal Clear action run.png
R-Pi Audio Player für Blinde

Status: experimentell

RPi-Audioplayer.jpeg
Beschreibung Audioplayer mit extrem einfacher Bedienung
Ansprechpartner Jan
Version 1.0


Dieser Audioplayer richtet sich an Blinde, speziell ältere Blinde, die den Umgang mit Technik nicht gewohnt sind. Er basiert auf Debian plus MPD und einem Pythonscript. Er bekommt Hardwaretasten über den GPIO und evtl auch einen Lautstärkeregler und ein kleines Display. Außerdem USB Automount. Dieser Audioplayer richtet sich an Blinde, speziell ältere Blinde, die den Umgang mit Technik nicht gewohnt sind. Er kann aber auch für eigene Projekte verwendet werden.

Die Daisy-Player, die im Handel erhältlich sind, sind nicht nur extrem teuer sondern auch unbedienbar für meine Zielgruppe.

Die Eckpunkte:

  • möglichst einfach und unkompliziert
  • eher großes Gehäuse und sehr große Tasten
  • ohne viel Aufwand mit Inhalt füttern
  • erweiterter Zugang für Wartung

Batteriebetrieb oder Bluetooth sind für mich eher zweitrangig, können aber nachgerüstet werden.

Hardware

Material

Für den Audioplayer sind als Hardware ein 1B oder Zero völlig ausreichend. Hier ein paar Vorschläge:

  • Hauptplatine
    • Raspberry Pi Zero W
      • Falls in Kombination mit Tastern und HiFiBerry geplant, bitte eine Version ohne GPIO-Leiste kaufen und später nur die genutzten Pins auflöten.
      • keine Klinke
      • eingebautes WLAN und BT
    • Raspberry Pi 1B
      • sehr schlechte Qualität an Klinkeausgang
  • Audio
    • HiFiBerry DAC+ Zero mit 2x Chinch
      • passt bei allen Pi mit Standard-GPIO,
      • belegt ab Werk ALLE GPIO, das kann aber umgangen werden
    • Klinke-Buchse, sofern vorhanden und Qualität ausreichend für die eigenen Bedürfnisse
    • Bluetooth, onboard bei Zero W und ab 2B?
    • beliebige? USB Soundkarte
  • Bedienung
    • eine Handvoll Taster
    • Handy mit beliebiger App, die den MPD steuern kann (Netzwerk notwendig)
    • TODO kleines Display
  • System
    • (Micro-)SD-Karte mindestens 8 GB
  • Medienvorrat
    • SD remote bestücken (Netzwerk notwendig)
    • Online-Quelle (Netzwerk notwendig)
    • Auf Auto Mount USB-Stick
      • für Raspberry Zero ist ein MicroUSB-Adapter und/oder USB-Hub notwendig
  • Wifi und BT
    • Kann mittels einfacher USB-Dongles nachgerüstet werden, falls das Modell diese nicht mitbringt
  • Stromversorgung
    • Original-Netzteil, angeblich "einzig", da geglättete VCC
    • Beliebiges 5V USB-Netzteil (Audioqualität vergleichen)
    • TODO Lithium Akku
      • Waveshare Battery Hat für 14500 Lithium-Akku
        • Falls nicht kompatibel mit HiFiBerry kann es auch über USB angeschlossen werden
  • TODO Gehäuse

Taster

Die GPIO-Pins des Pi sind nicht geschützt. Bei falschem Anschluss ist ruck zuck der Spannungsregler defekt. Dieser kann nicht getauscht werden. Totalschaden. Aus diesem Grund müssen einige Vorsichtsmaßnahmen getroffen werden:

  • Wir verwenden grundsätzlich GND als Input für die Buttons
  • Wir blockieren alle anderen Anschlüsse durch leere Stecker so, dass nur die gewünschten Anschlüsse verwendet werden können.
  • Wir setzen die Pins derart ein, dass der Stecker verkehrtherum aufgesteckt werden kann, ohne Schäden zu verursachen.

Für mich sieht die Lösung so aus:

  • Der HifiBerry verwendet die Pins 12,27,28,35,38 und 40, außerdem benötigt er natürlich Spannungsversorgung.
  • Ich habe mühsam die GPIO-Leiste zum Teil abgelötet und die Pins 5 bis 10 sowie 13 und 14 durch eine gewinkelte Leiste ersetzt.
  • Darauf kommt ein 2x5 Stecker.
  • Wir verwenden nun die beiden äußeren Paare sowie das mittlere Paar für jeweils einen Taster.
  • Falls der Stecker falschherum aufgesteckt ist, passiert nichts anderes als der Tausch zweier Taster.
  • Als GPIO für unsere drei Taster dienen nun also 3,15 und 27.

Software

Mein Player basiert auf Rasberry OS (bisher Raspbian). Die aktuelle Version ist ein Debian Buster (10). Das ganze sollte aber auch auf anderen Systemen lauffähig sein.

System installieren und einrichten

System

Netzwerkzugriff

  • Login pi/raspberry
  • Ändere das Passwort mit passwd?
  • Aktiviere den SSH Server mittels
   sudo systemctl enable ssh
   sudo systemctl start ssh
  • /etc/hostname setzen, anschliessend Reboot?
  • NTP einrichten, um die Uhrzeit automatisch einzustellen
   sudo systemctl enable systemd-timesyncd.service
   sudo nano /etc/systemd/timesyncd.conf
   # Inhalt beispielsweise
   [Time]
   NTP=0.de.pool.ntp.org 1.de.pool.ntp.org 2.de.pool.ntp.org 3.de.pool.ntp.org
   sudo systemctl start systemd-timesyncd.service
   
   # Alternativ...
   sudo apt install ntp

https://github.com/adafruit/Raspberry-Pi-Installer-Scripts/issues/92 https://bugs.launchpad.net/raspbian/+bug/1920806

Wifi - optional, aber zu empfehlen

  • Network-Manager installieren
   sudo apt install network-manager-gnome

Paketmanagement

  • Update durchführen
   sudo apt update
   sudo apt upgrade
  • Weitere Pakete installieren
    • Pakete für MPD
   sudo apt install mpd mpc
    • Pakete für manuelle Audiosteuerung???
    • Pakete für das Pythonscript
   sudo apt install git libespeak-ng1 python3-pip 
    • Weitere Pakete für das Pythonscript, alternativ!! per APT oder per PIP3:
   sudo apt install python3-mpd python3-gst-1.0 python3-rpi.gpio
   pip3 install python3-mpd? python3-gst-1.0? python3-rpi.gpio? ???
    • Weitere Pakete mittels PIP3
   pip3 install pyttsx3
    • Optional Pakete für die Ansteuerung der GPIOs von der Kommandozeile
   sudo apt install gpio-utils
    • TODO Pakete für Google TTS
   mpg123, ...
    • TODO Pakete für System TTS

MPD einrichten

  • Medienverzeichnis
  • Audiodevice
   sudo mkdir /var/log/mpd
   # chown?

Python Skript einrichten

   # 
   cd
   git clone https://github.com/JPT77/RaspberryMediaPlayer.git
   cd RaspberryMediaPlayer
   sudo nano playerbuttonmonitor.service
   # check path to playerbuttonmonitor.py
   cp playerbuttonmonitor.service /etc/sytemd/system
   cd /etc/sytemd/system
   chown root:root playerbuttonmonitor.service
   ??? sudo systemctl enable playerbuttonmonitor.service
   sudo systemctl start playerbuttonmonitor.service


Audio einrichten

   check your audio volume using alsamixer
   check your audio device using ...
   ...

Quellen einrichten

Webradios

  • In Playlists "playlist.m3u" anlegen mit den URLs der Webradios.

Lokale Medien

  • Dateien in den Musik-Folder legen

Lokale Medien auf Auto-Mount USB-Stick