Raspberry Pi 3B

Elektronik

Hier möchten wir euch einige Projekte vorstellen, für die ein ganz wenig Vorkenntnisse in Elektronik oder Computerwissen vorteilhaft wären. Aber auch hier gilt: Einfach mal machen!

Raspberry Pi

Einleitung

Der Raspberry Pi ist ein Einplatinencomputer, mittlerweile in der vierten Generation. Der Computer ist etwa so groß wie eine Scheckkarte, stellt aber einen (mehr oder weniger) kompletten PC dar. Durch den vergleichsweise geringen Preis, wenig notwendigem Platz und recht geringe Stromkosten bietet sich der Raspberry (und seine “Derivate”) geradezu an, die verschiedensten Projekte mit Ihm zu verwirklichen. Ich möchte hier ein wenig die Grundlagen vorstellen und dann verschiedene Projekte vorstellen, die wir schon realisiert haben.

Sprungmarke Inhalt

Inhalt

Sprungmarke Installation

Installation und Inbetriebnahme

Zuerst möchte ich ein wenig die notwendige Hardware beschreiben. Für die allermeisten Anwendungen reicht die Performance der 3. Generation vollkommen aus. Vorteilhaft (gegenüber der 4. Generation) finde ich, dass hier noch ein “normaler” HDMI-Ausgang vorhanden ist.

Vorbereitungen

Ich habe einmal alle notwendigen Komponenten für die Grundkonfiguration zusammengestellt:

Hardwareausstattung – Amazon-Link (Affiliate Link)

Komponente      Kosten       Kommentar
Raspberry Pi 3 Bca. 45 EURintegr. WLAN und Bluethooth
Speicherkarteca. 7 EUR16 GB, class 10 reicht völlig aus
Gehäuseca. 5 EUR 
Netzteilca. 14 EURBeim Netzteil sollte man nicht sparen, die Spannungsstabilität ist sehr wichtig

Betriebsystem

Bevor es nun losgeht, habe ich überlegt, welches Betriebssystem ich nutzen möchte. In den allermeisten Fällen wird eine Linux-Distribution verwendet. Welche jedoch im Einzelfall genutzt wird, ist sehr stark von der Anwendung abhängig. Der einfachste Fall, sozusagen die “Standard-Version” ist das Raspian. Raspian ist die offizielle und von der Raspberry Pi Foundation empfohlene Betriebssystem für den Pi. Die notwendigen “Installations”-Dateien findet man hier. Es sollte die aktuellste Version “Raspbian Buster with desktop and recommended software” geladen werden.

Neben dem “Original” Raspberry Pi gibt es mittlerweile mehrere Derivate, z.T. mit recht unterschiedlichen Vor- und Nachteilen. So bietet z.B. der Bananapi schon in einer sehr frühen Entwicklungsstufe eine SATA- und eine GBit-Schnittstelle. Die grundsätzlichen Einrichtung dieser Verwandten ist sehr vergleichbar, ich zeige hier z.B. wie ich einen Bananapi der ersten Generation BPI-M1 eingerichtet habe. Das entsprechende Image habe ich hier gefunden. Vor einiger Zeit war “Raspbian For BananaPi ” mein Favorit, seit der Umstellung aus “Jessi” laufen hier die Updates aber nicht mehr. Auch “Bananian” wird z.T. nicht mehr richtig unterstützt. Deshalb habe ich mich für “Lubuntu For BananaPi” entschieden.

Nach dem Download muss das Image auf die SD-Karte geschrieben werden. Um das mit einem Windows-PC zu erledigen, brauchen wir eine Zusatzsoftware. Win32DiskImager eignet sich aus meiner Sicht hierfür sehr gut und kann bei sourceforge.net geladen werden.

Nach der Installation wird die SD-Karte in einen entsprechenden Slot an den Windows-PC angeschlossen und der Win32DiskImager gestartet. Nun wählt man noch das entsprechende Laufwerk (mit der SD-Karte) und die geladene Image-Datei aus und mit “write” geht’s los. Achtung: Alle Daten auf der SD-Karte werden gelöscht, also bitte lieber zweimal hinschauen.

Erster Start

Nachdem der Schreibvorgang abgeschlossen ist, kann Win32DiskImager geschlossen werden, die SD-Karte wird vom Windows-PC abgemeldet und mechanisch entfernt. Nun kann ich die SD-Karte in den Pi einbauen, Tastatur, Maus, Netzwerkkabel und Monitor sowie die Spannungsversorgung anschließen. Wenn alles stimmt, sollten nach wenigen Sekunden auf dem Monitor die ersten Meldungen erscheinen. Der erste Start dauert etwas, i.d.R. sollte aber die grafische Benutzeroberfläche schlussendlich bereit sein. Für die Anmeldung kann es verschiedene Kombinationen geben, diese sind abhängig von der benutzten Distribution. Im Betriebssystem “Lubuntu” habe ich mich z.B. mit der Kombination “bananapi/bananapi” eingeloggt. Welche Kombination von Benutzername und Passwort funktioniert finde ich in der Regel an der “Download-Stelle”.

Lubuntu for BananaPi
Hier habe ich die entsprechenden Daten für das Image “Lubuntu For BananaPi” von der Lemaker-Seite kopiert.

Erste Konfiguration

Mit diesen Anmeldeinformationen kann ich nun ein Terminalfenster öffnen und einige Einstellungen durchführen. Als erstes ändere ich immer die Passwörter für alle “Standard-Accounts”. Mit passwd kann ich das für den jeweiligen Account machen, für den ich gerade angemeldet bin.
Wenn ich mir nicht sicher bin, welches System denn aktuell vorhanden ist, kann ich dies (bei vielen Distributionen) mit folgendem Befehl schnell herausfinden.
cat /sys/firmware/devicetree/base/model.

Möchte ich nur wissen, welches Betriebssystem ich eigentlich installiert habe, nutze ich:
cat /etc/os-release.

Nach einem Neustart sollten wir das Betriebssystem auf den neuesten Stand bringen (sudo apt-get -y update && sudo apt-get -y upgrade).

Um jetzt komfortabel mit dem Pi zu arbeiten, richte ich mich zuerst eine Möglichkeit ein, per Fernwartung (Remote-Desktop) auf den Pi zugreifen zu können. Dafür installiere ich XRDP:
sudo apt-get install xrdp.
Alternativ nutze ich sehr gerne MobaXterm, ein Programm mit dem man sich per SSH auf einen (linux-) Rechner aufschalten kann. Dies funktioniert mittlerweile mit fast allen Raspi-Images, ggf. muss nur der SSH-Zugang einmalig aktiviert werden.
Mit dem Befehl sudo raspi-config kommt man bei vielen Raspberry-Distributionen jetzt in das Grundkonfigurationsmenü. Hier solltet Ihr als erstes das File-System vergrößern (1 Expand Filesystem) und, sofern nicht schon erledigt, möglichst das Passwort ändern (2 Change User Password, Standard für den Raspberry Pi ist hier "pi/raspberry", für andere Distributionen bekommt ihr die entsprechenden Kombinationen beim Download-Anbieter). Abschließend ggf. noch die Ländereinstellungen anpassen (Internationalisation Options).
Falls Ihr ein Betriebssystem ausgewählt habt, bei dem “raspi-config” nicht vorhanden ist (z.B.: Lubuntu) könnt Ihr die wichtigsten Einstellungen auch manuell machen. Dafür installieren ich (auf einem anderen System, also z.B. einem zweiten Pi, ich kann mit gparted die aktuell genutzten Partitionen nicht ändern) zuerst ein Festplatten-Tool:
sudo apgt-get install gparted
Das tool starte ich mit sudo gparted, ich erhalte Informationen, bei deren Interpretation ein Artikel von Fabian Deitelhoff hilft.

Partitionsübersicht mit gparted
Partitionen einer “frischen” bananapi-lubuntu-SD

Es sind drei “Bereiche” auf der SD-Karte zu erkennen, ich möchte die beiden größeren verbinden. Dafür wähle ich mit Klick die ext4 Partition aus und klicke dann auf “Resize/Move”, dann ziehe ich den Balken mit dem Ende der Partition ganz nach rechts, danach mit “Apply” bestätigen. Nun gparted beendetn, die SD-Karte ordnungsgemäß abmelden und entnehmen und dann wieder in unseren Pi einbauen und starten.

Optimierungen

Ich greife wie erwähnt häufig per “Fernwartung” auf den Pi zu, dafür kann ich bei Bedarf den SSH-Zugriff noch optimieren. Da wir ein “Standard-Image” geladen und installiert haben, ist hier auch noch der “Standard-SSH-Schlüssel” enthalten. Den sollten wir nicht nutzen sondern mit sudo rm /etc/ssh/ssh_host_* löschen. Beim anschließenden Rekonfigurieren (sudo dpkg-reconfigure openssh-server) wird automatisch ein neuer und dann auch einmaliger Schlüssel generiert. Unter den “Advanced Options” beim Konfigurationsmenu kann der SSH-Zugriff erlaubt werden, manuell können wir das aber auch mit sudo systemctl enable ssh und sudo systemctl start ssh starten wir SSH automatisch und manuell.

Da ich häufig mit einer “minimal-Ausstattung” arbeite, habe ich noch ein Virtuelles Keyboard installiert. Das geht im Terminal mit:
sudo apt-get install matchbox-keyboard
Nun sollte das Programm unter “Menü/Zubehör” sichtbar sein. Falls nicht, unter “Menu/Einstellungen/Main Menu Editor” einschalten.

Das wars erstemal, die Grundkonfiguration sollte jetzt laufen.

zurück zum Inhalt

Sprungmarke Jukebox

Jukebox

Eine einfache Anwendung, für die sich der Rasperry hervorragend eignet ist eine Jukebox oder Musikbox. Dafür habe ich mir aber noch ein ganz wenig Hardware besorgt. Ich möchte die Musik direkt an eine Stereoanlage geben und nutze dort den Cinch-Eingang. Dementsprechend kann ich den Sound nicht sinnvollerweise über die hdmi-Schnittstelle ausgeben. Der Pi hat zwar einen Audio-Ausgang (3,5mm Klinke), die Qualität ist aber wirklich nicht gut. Schon eine ganz günstige USB-Soundkarte schlägt die direkte Ausgabe um Längen, ich nutze einen Stick von CSL. Da mein Pi auch andere Aufgaben erledigen soll, nutze ich keine eigene Distributionen. Diese sind explixit für nur eine Anwendung ausgelegt. Ich habe mich stattdessen für MPD (music player daemon) entschieden. Diese Anwendung kann “auf” die gängigen linux-Betriebssysteme installiert werden.

Der Musik Player Daemon

Für die Installation halte ich mich grundsätzlich an die Anleitung von Stefan´s Webblog.

Als erstes (nach dem obligatorischen sudo apt-get -y update && sudo apt-get -y upgrade) installiere ich mpd und die alsa-Tools:
sudo apt-get install mpd mpc alsa-utils
Zuerst die Originaldatei sichern, dann noch einige Einstellungen in der mpd-Konfiguration:
sudo cp /etc/mpd.conf /etc/mpd_orig.conf
sudo leafpad /etc/mpd.conf

Hier ermögliche ich den Zugriff über das Netz, indem ich eine Zeile mit einer Raute auskommentiere:
#bind_to_address "localhost"
Da ich meine Musik-Dateien gerne in meinem home-Verzeichnis ablegen möchte, ändere ich noch einen Pfad:
#music_directory "/var/lib/mpd/music"
music_directory "/home/bananapi/Music"

Hier kann natürlich auch ein anderer Pfad eingegeben werden.
Jetzt noch den mpd-daemon neu starten und aktuallisieren:
sudo /etc/init.d/mpd restart
mpc update

Fertig, nun sollte der Daemon erreichbar sein. Als Frontend nutze ich aktuell eine Android-App auf meinem Handy: MPD Remote.

Optimierungen

Jetzt sollte der MPD-Server zwar laufen, leider ist der Ton (wenn überhaupt) nicht ordentlich. Ich nutzte für die Audioausgabe nicht den vorhandenen Klinken-Anschluss sondern eine externe USB-Soundkarte.

Soundkarte – Amazon-Link (Affiliate Link)

KomponenteKostenKommentar
CSL-Soundkarteca. 6 EURgünstige externe USB-Soundkarte
HiFiBerryca. 33 EUR Hochauflösender Digital-Analog-Konverter
Gehäuseca. 33 EURStahlgehäuse für Hifiberry und Raspberry

Für meine Zwecke reicht die Qualität der einfachen USB-Soundkarte von CSL aus. Wer eine sehr hochwertige Soundausgabe wünscht, kann auch zu einem speziellen HAT greifen, der über die GPIO angesprochen wird. Beim WIKI der ubuntuuser gibt es hilfreiche Tipps.
Nachdem ich die Karte in den USB-Slot gesteckt habe prüfe ich, ob das USB-Device erkannt wurde:

bananapi@lemaker:~$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 004: ID 413c:3016 Dell Computer Corp. Optical 5-Button Wheel Mouse
Bus 004 Device 003: ID 413c:2005 Dell Computer Corp. RT7D50 Keyboard
Bus 004 Device 005: ID 0d8c:013c C-Media Electronics, Inc. CM108 Audio Controller
Bus 004 Device 002: ID 05e3:0608 Genesys Logic, Inc. Hub
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 002: ID 0bda:8179 Realtek Semiconductor Corp. RTL8188EUS 802.11n Wireless Network Adapter
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Unter Bus 004 Device 005: ist der Audio Controller aufgeführt. Da ich schon ALSA installiert habe, kann ich nun weitere Infos erhalten:

bananapi@lemaker:~$ cat /proc/asound/cards
0 [sunxicodec ]: sunxi-CODEC - sunxi-CODEC
sunxi-CODEC Audio Codec
1 [Device ]: USB-Audio - USB PnP Sound Device
C-Media Electronics Inc. USB PnP Sound Device at usb-sw-ehci-1.2, full speed

Jetzt schaue ich noch, welche Kartennummer ALSA für die Karte festgelegt hat, hier orientiere ich mich an einem Artikel aus den raspberry.tips:

bananapi@lemaker:~$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: sunxicodec [sunxi-CODEC], device 0: M1 PCM [sunxi PCM]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: Device [USB PnP Sound Device], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0

Also in diesem Fall card 1. Nun muss ich diese Karte noch als Standard-Ausgabe definieren, vorher wieder eine Sicherheiskopie:
sudo cp /etc/asound.conf /etc/asound_orig.conf
sudo leafpad /etc/asound.conf

Meine Konfigurations sieht dann so aus:

asound.conf


pcm.!default {
    type hw
    card 1    #If you want to set HDMI as output ,turn 0 to 1.
    device 0
  }
  ctl.!default {
    type hw
    card 1   #If you want to set HDMI as output ,turn 0 to 1.
  }

Nach einem sudo reboot sollte dann alles laufen.

zurück zum Inhalt