Raspberry Pi Einführung

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

von Robert Knauer

Dieser Artikel nimmt am Artikelwettbewerb 2012/2013 teil.

Wichtig: Alle Informationen und Anleitungen in diesem Artikel beziehen sich auf das Model B mit erweitertem Arbeitsspeicher.

Der Raspberry Pi

Der Raspberry Pi ist ein Einplatinen-Computer im Kreditkarten-Format mit einem SoC (System-on-a-Chip) von Broadcom. Dieser verfügt über folgende Eigenschaften:

  • eine 700MHz ARMv6-CPU
  • eine Broadcom VideoCore IV GPU
  • 512 MB Arbeitsspeicher

Außerdem kann der Raspberry Pi über folgende Schnittstellen mit der Außenwelt kommunizieren:

  • 2 USB 2.0 Host-Anschlüsse
  • einen Composite Video-Ausgang
  • einen HDMI-Ausgang (Video+Audio)
  • einen 3,5mm Klinke-Audio-Ausgang
  • einen SD-/MMC-Karten-Slot (Unterstützung für SDIO und SDHC)
  • einen Ethernet-Port (10/100 MBit)
  • 21 GPIO-Pins, teilweise gedacht als UART, SPI und I2C

Die Energieversorgung wird über einen microUSB-Anschluss gewährleistet. Man sollte jedoch darauf achten, dass der USB-Anschluss, über den man den Raspberry Pi mit Energie versorgt mindestens 700 mA liefern kann, da in der USB 2.0 Spezifikation nur 500 mA vorgesehen sind. In diesem Artikel wird noch darauf eingegangen, wie man sich selbst ein entsprechendes Netzteil bauen kann, alternativ funktioniert auch ein entsprechend starkes USB-Ladegerät in Verbindung mit einem USB-A auf microUSB-B Kabel. (siehe #Stromversorgung)

Um diese umfangreichen Möglichkeiten zu nutzen muss man mit einem anderen Computer ein Betriebssystem auf die SD-Karte laden, das dann vom Raspberry Pi gebootet wird. Am naheliegendsten ist hier natürlich Linux (Raspbian, Fedora, Debian und Arch Linux sind offiziell unterstützt), aber auch Plan 9 wurde schon auf dem kleinen Computer zum Laufen gebracht.

In diesem Artikel soll Schritt für Schritt der Weg vom Anschließen des Computers über das Einrichten von Arch Linux ARM bis zum Verwenden der verschiedenen Schnittstellen des Raspberry Pi beschrieben werden.

Bezugsquellen & Zubehör

Der Raspberry Pi kann über verschiedene Quellen bezogen werden. Wichtig ist darauf zu achten, dass man das Model B mit 512 MB Arbeitsspeicher bestellt, da alle Anleitungen in diesem Artikel nur damit getestet sind und unter anderen Modellen eventuell nicht funktionieren. Ein in Deutschland ziemlich bekannter Elektronik-Versand, bei dem man den Raspberry Pi bestellen kann, ist Pollin, dort ist er zur Zeit für 38,95 € erhältlich. (Bestell-Nr.: 701 697, Stand: 17.06.2013)

Doch neben dem eigentlichen Computer braucht man natürlich noch etwas Zubehör, wenn man es nicht eh schon zu Hause rumliegen hat:

  • ein Netzteil, das 5V bei mindestens 700 mA auf einem microUSB-Stecker liefert (siehe Raspberry Pi#Stromversorgung)
  • eine SD(HC)-Speicherkarte
  • einen SD(HC)-Cardreader an einem anderen Computer
  • ein RJ45-Netzwerkkabel
  • ein Ethernet-Netzwerk mit Zugang zum Internet

Mit diesem Zubehör kann man nur über SSH zugreifen, wenn man direkt am Raspberry Pi arbeiten will und später evtl. auch eine grafische Oberfläche einrichten will braucht man noch folgendes:

  • ein HDMI-Kabel und einen Fernseher bzw. Monitor mit HDMI-Eingang oder
  • ein Composite-Kabel und einen Fernseher mit entsprechendem Video-Eingang
  • eine USB-Tastatur
  • eine USB-Maus (für eine grafische Oberfläche)
  • evtl. einen aktiven USB-Hub, wenn die Ports des Raspberry Pi nicht genug Leistung für Maus und Tastatur liefern können

Das Betriebssystem

Als Betriebssystem für die Anleitungen in diesem Artikel wird Arch Linux ARM verwendet, das Meiste funktioniert jedoch auch unter anderen Linux-Distributionen und alles andere zumindest mit kleinen Anpassungen. Es basiert auf den Prinzipien und teilweise auch der Software von Arch Linux, hat aber vollständig unabhängige Paketquellen, in denen nur für ARM kompilierte Software verfügbar ist.

Arch Linux ist ein gutes Betriebssystem für einen Computer wie den Raspberry Pi, da es am Anfang sehr leichtgewichtig ist und vorerst keine grafische Oberfläche installiert hat (was gut ist wenn man den Raspberry Pi als Server verwenden will). Andererseits kann aber auch problemlos eine grafische Oberfläche nachinstalliert werden, wenn man den Raspberry Pi als Desktop-Computer, HTPC oder ähnliches verwenden will.

Man muss jedoch auch sagen, dass Arch Linux kein Betriebssystem für jemanden ist, der Linux noch nie verwendet hat. Man sollte schon etwas Erfahrung mit dem Arbeiten auf der Konsole haben, da grundlegende Dinge über Linux hier nicht erklärt werden. Außerdem ist es teilweise notwendig, sich selbst weiterführende Informationen zu Arch Linux anzusehen, die in diesem Artikel verlinkt werden.

Anschluss & Installation

Nun muss man zuerst alles anschließen. Die Netzwerk-Buchse wird über das Netzwerk-Kabel mit dem Ethernet-Netzwerk verbunden. Hier ist wichtig, dass in dem Netzwerk ein DHCP-Server läuft (also IP-Adressen automatisch bezogen werden können) und Zugriff zum Internet möglich ist. Wenn man sich für die Variante mit eigenem Bildschirm entschieden hat muss man außerdem die HDMI-Buchse mit dem Fernseher oder Monitor bzw. den Composite-Ausgang mit dem Fernseher verbinden und Tastatur und Maus über USB anschließen. Dann folgt die Installation von Arch Linux ARM auf die SD-Karte.

Arch Linux ARM für Raspberry Pi kann man über folgende Links downloaden:

Wenn der etwa 185 MB große Download abgeschlossen ist und man über HTTP gedownloadet hat sollte man zuerst die Checksum überprüfen. Eine Anleitung dazu findet befindet sich auf der Downloadseite.

  • SHA-1: 706037373bbb33ab6fb0af147a6e795bd04f1503

Nachdem man das getan oder falls man über Torrent gedownloadet hat (dann passiert das automatisch) kann man das zip-Archiv entpacken.

Man erhält eine etwa 2,0 GB große Datei namens archlinux-hf-2013-06-06.img. Diese muss man nun auf die SD-Karte bringen. Unter Linux funktioniert das mit dem kleinen Programm dd, das in den GNU coreutils enthalten ist und damit auf fast jedem System vorinstalliert sein sollte. Dazu gibt man folgendes in die Konsole ein (als root, /dev/sdX durch den Pfad zur Gerätedatei der SD-Karte ersetzen, Pfad der img-Datei anpassen):

  • dd if=/pfad/zur/archlinux-hf-2013-02-11.img bs=1M of=/dev/sdX

Unter Windows kann man dafür Image Writer for Windows benutzen.


Danach entfernt man die Karte aus dem Cardreader des Computers und setzt sie in den Raspberry Pi ein. Dann verbindet man die Stromversorgung, indem man den microUSB-Stecker des Netzteils in die entsprechende Buchse auf der Platine steckt.

Der erste Start

Wenn man ein Display angeschlossen hat, erscheint nach ein paar Sekunden ein Login-Prompt auf dem Bildschirm. Als Username gibt man root ein, wenn man dann nach dem Passwort gefragt wird gibt man wieder root ein.

Wenn man kein Display angeschlossen hat, muss man die IP-Adresse, die der Raspberry Pi sich vom DHCP-Server geholt hat, herausfinden. Wenn der DSL-Router diesen Dienst bereitstellt, kann man meistens auf der Web-Oberfläche eine Liste der verteilten IP-Adressen sehen. Alternativ kann man auch mit nmap einen Netzwerk-Scan machen, der die IP-Adressen von allen Computern im Netzwerk anzeigt. Das funktioniert unter Linux, indem man nmap -sn SUBNETZ im Terminal eingibt. Davor ersetzt man SUBNETZ durch das Subnetz, in dem auch der Raspberry Pi ist, in CIDR-Notation. Wenn man z.B. in einem Netz ist, in dem IP-Adressen von 192.168.1.0 bis 192.168.1.255 verteilt werden, muss man 192.168.1.0/24 verwenden.

Nachdem man die IP-Adresse herausgefunden hat, verbindet man sich per SSH zu ihr und loggt sich als root, Passwort root ein. Unter Linux funktioniert das mit

  • ssh root@IP-ADRESSE

Unter Windows verwendet man am besten PuTTY.

Egal für welche Möglichkeit man sich entschieden hat, sitzt man jetzt vor einer root-Shell des Raspberry Pi, erkennbar am Shell-Prompt [root@alarmpi ~]#.

Konfiguration

Nun geht es an die Konfiguration von Arch Linux ARM, diese erfolgt vollständig über das Editieren von Dateien auf der Konsole.

Lokalisierung

Man editiert die Datei /etc/locale.gen:

  • nano /etc/locale.gen

und entfernt die Raute vor der Zeile mit der entsprechenden Sprache-Land-Kodierungs-Kombination, also z.B. vor de_DE.UTF-8 UTF-8 für Deutschland. Danach speichert man mit Strg+O -> Enter und Strg+X und erstellt die Lokalisierung neu:

  • locale-gen

Danach editiert man die Datei /etc/locale.conf:

  • nano /etc/locale.conf

Man ändert LANG=en_US.UTF-8 zur entsprechenden Sprache, also z.B. LANG=de_DE.utf8 und speichert mit Strg+O -> Enter und Strg+X.

Tastatur-Layout

Um das Tastatur-Layout auf der Konsole anzupassen, muss man die Datei /etc/vconsole.conf ändern:

  • nano /etc/vconsole.conf

Man ändert KEYMAP=us zu z.B. KEYMAP=de-latin1 für QWERTZ und speichert wieder mit Strg+O -> Enter und Strg+X.

Zeitzone

Um die Zeitzone zu ändern muss man einen Symlink zu /etc/localtime erstellen:

  • ln -sf /usr/share/zoneinfo/ZEITZONE /etc/localtime

Also für Deutschland (Europe/Berlin):

  • ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime

Um alle Änderungen zu übernehmen startet man den Raspberry Pi am besten neu:

  • reboot

Wenn man per SSH verbunden war, wird die Verbindung geschlossen und man muss sich neu verbinden.

Aktualisierung

Da das Image, das man auf die SD-Karte geschrieben hat, schon etwas veraltet sein kann, sollte man das System über die Paketverwaltung aktualisieren:

  • pacman -Syu

Dieses Kommando downloadet die Datenbanken und alle neuen Pakete und installiert diese anschließend.

Dieses Kommando sollte man jede Woche mindestens einmal ausführen, um das System aktuell zu halten. Arch Linux ARM muss nie neu installiert werden, allein durch dieses Kommando wird es immer aktuell gehalten.

Dateisystem vergrößern

Da das Image darauf ausgelegt ist, dass es auch auf nur 2GB großen SD-Karten geschrieben werden kann, ist auch das Haupt-Dateisystem etwa 2GB groß, selbst wenn man Arch Linux ARM auf eine größere SD-Karte geschrieben hat.

Doch das ist kein großes Problem. Um das Haupt-Dateisystem so zu vergrößern, dass es die gesamte SD-Karte ausfüllt, muss man den Raspberry Pi ausschalten und die SD-Karte in einen Cardreader an einem Linux-PC einsetzen.

In der folgenden Anleitung wird angenommen, dass die SD-Karte unter /dev/sdb und das Haupt-Dateisystem der SD-Karte unter /dev/sdb2 ist. Wenn das nicht zutrifft muss man die Pfade entsprechend ändern.

Zuerst muss man sicherstellen, dass keines der Dateisysteme gemountet ist:

  • umount /dev/sdb1
  • umount /dev/sdb2

Danach muss man einen Dateisystem-Test durchführen:

  • fsck -n /dev/sdb2

... und das Journal entfernen:

  • tune2fs -O "^has_journal" /dev/sdb2

Dann bearbeitet man die Partitionstabelle mit fdisk:

  • fdisk /dev/sdb

Man kommt in eine Kommandozeile, in der man folgendes nacheinander eingibt:

  • d
  • 2
  • n
  • p
  • 2
  • <ohne Eingabe Enter>
  • <ohne Eingabe Enter>
  • w

Dadurch wird die zweite Partition gelöscht und neu angelegt, und zwar über den gesamten freien Bereich der SD-Karte. Dann muss man wieder einen Dateisystem-Test durchführen:

  • e2fsck -f /dev/sdb2

... und das Dateisystem vergrößern:

  • resize2fs /dev/sdb2

Jetzt erfolgt erneut ein Dateisystem-Test:

  • fsck -n /dev/sdb2

... und die Wiederherstellung des Journals:

  • tune2fs -j /dev/sdb2

Jetzt kann man die SD-Karte aus dem Cardreader nehmen, in den Raspberry Pi einsetzen und ihn starten.

Wenn alles glatt gelaufen ist bootet der Raspberry Pi ganz normal und man hat plötzlich mehr Speicherplatz zur Verfügung. Aus

# df -h /    
Dateisystem    Größe Benutzt Verf. Verw% Eingehängt auf
/dev/root       1,8G    805M  869M   49% /

wird bei einer 16GB SD-Karte zum Beispiel:

# df -h /    
Dateisystem    Größe Benutzt Verf. Verw% Eingehängt auf
/dev/root        15G    905M   14G    7% /

Dieser Abschnitt basiert auf einer Anleitung zum Verändern der Größe von ext3-Partitionen von HowtoForge.

Paketverwaltung

Arch Linux ARM setzt pacman als Paket-Manager ein. Das erste Kommando, das zur System-Aktualisierung, wurde schon in einem anderen Kapitel genannt:

  • pacman -Syu

Dieses setzt sich aus zwei Teil-Kommandos zusammen:

  • pacman -Sy

zum Downloaden der Paket-Datenbanken und

  • pacman -Su

zum Downloaden und Installieren der neuen Pakete.

Um ein neues Paket zu installieren verwendet man folgendes Kommando:

  • pacman -S PAKETNAME

oder um davor noch die Datenbanken zu aktualisieren:

  • pacman -Sy PAKETNAME

Um ein Paket zu löschen verwendet man:

  • pacman -R PAKETNAME

oder um alle danach nicht mehr benötigten Abhängigkeiten mit zu löschen:

  • pacman -Rs PAKETNAME

Es gibt noch viele weitere Kommandos, z.B. zum Suchen von Paketen, Anzeigen von Informationen, Auflisten von Dateien. Einen Überblick findet man im Arch Linux Wiki oder eine Auflistung aller Optionen in der Manpage:

  • man pacman

Nach der Installation sind standardmäßig alle fünf Paketquellen von Arch Linux ARM aktiviert, eine Liste aller enthaltenen Pakete findet man auf der Website.

Datensicherung

Um neue Betriebssysteme auf dem Raspberry Pi auszuprobieren braucht man nicht zehn verschiedene SD-Karten, die man immer wechselt. Es reicht eine SD-Karte, von der man ein Backup macht, bevor man ein neues Betriebssystem aufspielt. Aber auch wenn man das nicht vorhat macht sich eine Datensicherung immer gut.

Dafür gibt es unter Linux verschiedene Möglichkeiten, einmal natürlich das Tool dd, mit dem man den gesamten Inhalt der SD-Karte Byte für Byte auf ein anderes Medium, z.B. die Festplatte, kopieren kann. Hier werden aber auch eigentlich leere Teile der SD-Karte mit gesichert, wodurch bei einer 16GB SD-Karte auch (unkomprimiert) ein 16GB-Backup entsteht, egal wie viel Daten man nun eigentlich auf der Karte gespeichert hat. Abhilfe schafft partclone, das die einzelnen Partitionen sichert, und zwar auch nur die wirklich verwendeten Teile. Die Handhabung ist etwas komplexer als bei dd, eine gute Anleitung und ein ausführlicherer Vergleich der beiden Tools ist auf bitblokes.de zu finden.

Unter Windows gibt es das Tool Win32DiskImager welches komplette bitweise Images (von SD-Karten und USB-Medien) lesen und schreiben kann.

SoC-Konfiguration

Generelle Einstellungen für den SoC, die noch vor dem Starten des Betriebssystems geladen werden, kann man in der Datei /boot/config.txt ändern.

Hier ist es z.B. möglich, Parameter für die Video-Ausgabe zu setzen, die Speicher-Aufteilung zwischen CPU und GPU zu ändern oder die CPU zu übertakten. Generell sollte man eher vorsichtig mit diesen Optionen umgehen, da sie bei falscher Verwendung auch mal dazu führen können, dass das Betriebssystem nicht mehr bootet oder das System instabil wird.

Eine genaue Auflistung der möglichen Konfigurations-Optionen findet man auf eLinux.org.

Die GPIO-Schnittstelle

Die GPIO-Schnittstelle (P1-Anschluss)

Für Bastler besonders interessant ist die GPIO-Schnittstelle, diese kann man über verschiedene Wege ansteuern.

Belegung der Schnittstelle

Wichtig: Alle GPIO-Pins haben einen Pegel von 3,3V und sind nicht kompatibel zu 5V! Wenn man versucht, 5V anzuschließen, kann das zur Zerstörung des Raspberry Pi führen! Für Informationen zum Anschließen von 5V-Chips, siehe Pegelwandler oder Raspberry Pi#Erweiterungs-Boards.

Im oberen Bild ist die Belegung der Anschlüsse zu sehen, die man als GPIO oder zur Stromversorgung nutzen kann. Die Beschriftungen sind genau so wie auf der Platine angebracht und sollen eine Orientierung ermöglichen. Die 3,3V Anschlüsse (P1-1, P1-17, P2-1 und P5-2) dürfen maximal mit 50 mA belastet werden. Bei den 5V Anschlüssen (P1-2, P1-4 und P5-1) gibt es keine feste Grenze, hier kommt es auf den aktuellen Stromverbrauch des restlichen Boards und der Leistung des Netzteils an. Die Pins GPIO2 (P1-3) und GPIO3 (P1-5) sind jeweils mit einem 1,8 kΩ Pull-Up-Widerstand ausgestattet.

Der Anschluss P3 ist noch ein JTAG-Interface, der Anschluss P6 kann mit einem Reset-Knopf ausgestattet werden. Wenn man die beiden Pins verbindet verursacht das einen Soft Reset der CPU.

Hier eine Übersicht der Alternativ-Funktionen der Pins:

  • P1-07 (GPIO4): GPCLK0 (General Purpose Clock)
  • P1-12 (GPIO18): PWM (Pulsweitenmodulation)
  • P1-13 (GPIO27): PCM (Puls-Code-Modulation) oder GPCLK1 (General Purpose Clock)

Ansteuerung per sysfs

Ganz nach den UNIX-Prinzipien gibt es die Möglichkeit, auf die Schnittstelle über Dateien im sysfs zuzugreifen. Dafür existiert das Verzeichnis /sys/class/gpio/.

Um einen GPIO-Pin zu verwenden muss man ihn zuerst aktivieren, indem man die Pin-Nummer in /sys/class/gpio/export schreibt. Wenn man über die Kommandozeile z.B. Pin 4 aktivieren will benutzt man folgendes Kommando:

  • echo 4 > /sys/class/gpio/export

Dadurch wird automatisch ein Verzeichnis /sys/class/gpio/gpio4/ erstellt. Nun kann man über die darin enthaltene Datei direction den Pin als Out- bzw. Input festlegen (standardmäßig sind alle Inputs):

  • echo in > /sys/class/gpio/gpio4/direction

für einen Input und

  • echo out > /sys/class/gpio/gpio4/direction

für einen Output. Jetzt kann man den Wert des Pins auslesen:

  • cat /sys/class/gpio/gpio4/value

oder ihn setzen, wenn es ein Output-Pin ist:

  • echo 1 > /sys/class/gpio/gpio4/value
  • echo 0 > /sys/class/gpio/gpio4/value

Wenn man den Pin nicht mehr benutzen will sollte man ihn wieder deaktivieren:

  • echo 4 > /sys/class/gpio/unexport

Dadurch verschwindet das Verzeichnis /sys/class/gpio/gpio4/ wieder. All das kann man natürlich nicht nur auf der Shell verwenden, sondern auch in jeder Programmiersprache, indem man einfach in die entsprechenden Dateien schreibt bzw. aus ihnen liest.

Beispiel: Shell-Blinklicht

Dieses kleine Shellscript aktiviert den GPIO-Pin, den man als Argument übergeben hat, setzt ihn als Output und schaltet ihn alle 500ms um:

#!/bin/bash
## Check arguments:
if [[ ! $# -eq 1 ]]; then
        echo "Usage: $0 GPIO" > /dev/stderr
        exit 1
fi
## Activate GPIO:
echo "Activating GPIO$1"
echo $1 > /sys/class/gpio/export || exit 1
## Create trap:
trap "echo 'Deactivating GPIO$1' && echo in > /sys/class/gpio/gpio$1/direction && echo $1 > /sys/class/gpio/unexport" EXIT
## Set as output:
echo "out" > /sys/class/gpio/gpio$1/direction || exit 1
## Reset value:
echo 0 > /sys/class/gpio/gpio$1/value || exit 1
## Blink loop:
while true; do
        echo "Switching GPIO$1 on"
        echo 1 > /sys/class/gpio/gpio$1/value || exit 1
        sleep 0.5
        echo "Switching GPIO$1 off"
        echo 0 > /sys/class/gpio/gpio$1/value || exit 1
        sleep 0.5
done

Wenn man an dem entsprechenden Pin eine LED anschließt eignet sich das Script gut zum Testen der GPIO-Schnittstelle.

Ansteuerung per Python-Modul

Mit dem Modul RPi.GPIO kann man unter Python die GPIO-Pins steuern und auslesen. Auf der Projekt-Website gibt es auch ein Beispiel, mit dem man die Handhabung schnell lernt.

Jedes Python-Script, das dieses Modul nutzen will, muss als root laufen.

Ansteuerung mit Java

Das Pi4J-Projekt ermöglicht unter Java die Verwendung der GPIO-Pins, dem UART, des I2C-Bus und der SPI-Schnittstelle. Eine ausführliche Anleitung gibt es auf der Website.

Jedes Java-Programm, dass dieses Modul nutzen will, muss als root laufen.

Ansteuerung mit WiringPi

WiringPi bietet ein Kommandozeilen-Tool (gpio, Details siehe man gpio), das man auch als normaler Nutzer (ohne root-Rechte) verwenden kann und eine C-Bibliothek (Header-Datei wiringPi.h und Linker-Option -lwiringPi), mit der man die GPIO-Pins in C-Programmen verwenden kann.

Auf der Website gibt es Beispiele und eine Installationsanleitung. Bei Arch Linux ARM ist es auch in den Paketquellen und kann per Paketverwaltung installiert werden:

  • pacman -S wiringpi

Der I2C-Bus

Auch auf den I2C-Bus des Raspberry Pi kann man zugreifen. Die Pins dafür liegen an P1-03 (GPIO2, SDA) und P1-05 (GPIO3, SCL).

Ansteuerung per devfs

Den I2C-Bus kann man direkt über die Datei /dev/i2c-0 oder /dev/i2c-1 erreichen, je nach Version des Boards und gewünschter Schnittstelle.

Ansteuerung per i2c-tools

Komfortabler geht das aber über die i2c-tools. Dazu muss man erst einmal das Paket aus den Arch Linux ARM Paketquellen installieren:

  • pacman -S i2c-tools

Nun muss man die nötigen Kernel-Module laden:

  • modprobe i2c-bcm2708
  • modprobe i2c-dev

Soll das beim Systemstart automatisch passieren, legt man eine *.conf-Datei im Verzeichnis /etc/modules-load.d/ mit folgendem Inhalt an:

i2c-bcm2708
i2c-dev

Jetzt sollten folgende Kommandozeilen-Tools funktionieren:

  • i2cdetect zum Auflisten der I2C-Busse und zum Anzeigen der Eigenschaften und Geräte
  • i2cdump zum Herausfinden von I2C-Registern
  • i2cget zum Lesen von I2C-Registern
  • i2cset zum Setzen von I2C-Registern

Die Manpages und Hilfe-Meldungen der einzelnen Tools geben Auskunft über die genaue Verwendung. Wichtig ist, dass man den I2C-Bus 0, nicht den I2C-Bus 1 verwendet. Ein kleines Beispiel gibt es auch in der Ausgabe 5 des MagPi im Artikel „Temperature Sensor“. Dort wird ein Temperatursensor per I2C ausgelesen.

Errata

Der I2C Controller kann aufgrund eines Implementierungsfehlers des Chips nicht zuverlässig mit clock stretching genutzt werden. Insbesondere bei Mikrocontrollern als I2C Slave ist dies jedoch nur schwer zu vermeiden, weshalb die Kopplung eines Mikrocontrollers per I2C problematisch ist. Siehe http://www.advamation.de/technik/raspberrypi/rpi-i2c-bug.html.

Der UART

Die Pins für den UART liegen auch an P1. TXD an Pin 08 (GPIO14), RXD an Pin 10 (GPIO15) und RTS an Pin 11 (GPIO17).

Zugreifen kann man über das devfs, genauer gesagt über die Datei /dev/ttyAMA0. Um zu testen, ob das funktioniert, kann man minicom benutzen:

  • pacman -S minicom
  • minicom -b 115200 -o -D /dev/ttyAMA0

Die SPI-Schnittstelle

Die Pins für die SPI-Schnittstelle liegen genau wie I2C und UART an P1. MOSI an Pin 19 (GPIO10), MISO an Pin 21 (GPIO9), SCLK an Pin 23 (GPIO11), CS0 an Pin 24 (GPIO8) und CS1 an Pin 26 (GPIO7).

Der Zugriff erfolgt über die Dateien /dev/spidev0.0 (Gerät an CS0) und /dev/spidev0.1 (Gerät an CS1), in die man direkt schreiben und aus denen man auch direkt lesen kann.

Audio-Ausgabe

Der 3,5mm Klinke-Anschluss

Der Raspberry Pi verfügt über zwei Möglichkeiten der Audio-Ausgabe, einmal digital per HDMI und wenn kein Display angeschlossen ist wird automatisch auf die analoge Ausgabe per 3,5mm-Klinken-Anschluss umgeschaltet.

Nach der Installation von Arch Linux ARM funktioniert jedoch vorerst keine der beiden Möglichkeiten, da das nötige Kernel-Modul nicht automatisch geladen wird.

Manuell lässt es sich mit modprobe laden, beim nächsten Neustart ist das Problem dann jedoch wieder da:

  • modprobe snd_bcm2835

Wenn man will, dass das Modul bei jedem Start automatisch geladen wird, muss man eine *.conf Datei im Verzeichnis /etc/modules-load.d/ erstellen und dort den Namen des Moduls hineinschreiben. Es bietet sich z.B. der Name sound.conf an, über die Kommandozeile ist die Datei schnell erstellt:

  • echo "snd_bcm2835" > /etc/modules-load.d/sound.conf

Jetzt sollte die Audio-Ausgabe problemlos funktionieren. Testen kann man das beispielsweise per aplay, das im Paket alsa-utils enthalten ist:

  • pacman -S alsa-utils
  • aplay name_der_datei.wav

In diesem Paket ist auch alsamixer enthalten, ein Programm mit dem man über eine ncurses-Oberfläche die Ausgabe-Lautstärke regeln kann.

Man muss beachten, dass nur root und Nutzer in der Gruppe audio auf die Soundkarte zugreifen können. Wenn man nicht als root arbeiten will sollte man seinen Benutzer der Gruppe hinzufügen:

  • gpasswd -a USERNAME audio

Standard-Ausgabegerät

Normalerweise wird der Sound automatisch über HDMI ausgegeben, wenn das angeschlossene Gerät das unterstützt, andernfalls über den Klinke-Anschluss. Will man das ändern, z.B. weil man einen Monitor per HDMI angeschlossen hat, den Sound aber trotzdem über die Anlage hören will, geht das ganz schnell über die Kommandozeile:

  • amixer -c 0 cset numid=3 <nummer>

Dabei muss man <nummer> durch eine 0 für automatisches Wechseln, eine 1 für den Klinke-Anschluss oder eine 2 für den HDMI-Anschluss ersetzen. Soll das bei jedem Systemstart automatisch ausgeführt werden, erstellt man bei Arch Linux eine Service-Datei für systemd, z.B. so:

[Unit]
Description=Set Default Audio Output

[Service]
Type=oneshot
ExecStart=/usr/bin/amixer -c 0 cset numid=3 <nummer>

[Install]
WantedBy=multi-user.target

Hier ersetzt man wieder <nummer> durch das gewünschte Ziel, speichert die Datei unter /etc/systemd/system/default-audio.service ab und aktiviert den soeben erstellten Service noch:

  • systemctl enable default-audio.service

Ab dem nächsten Systemstart wird dadurch das Ausgabegerät automatisch eingestellt.

Erweiterungs-Boards

Für die GPIO-Schnittstelle des Raspberry Pi gibt es verschiedene Erweiterungs-Boards, die zusätzliche Schnittstellen bereitstellen und 3,3V zu 5V Pegelwandler besitzen. Durch diese kann man den Raspberry Pi in bestehende, 5V-basierte Schaltungen und Projekte einbinden.

Prototyping-Board für den Raspberry Pi

In der Ausgabe 16 des embedded projects journal wurde auf Seite 13 ein Prototyping-Board für den Raspberry Pi vorgestellt.

Das Board besitzt eine Spannungsversorgung, an die man 7 bis 15V anschließen kann und die auch den Raspberry Pi mitversorgt. Dadurch wird ein per microUSB angeschlossenes Netzteil überflüssig. Außerdem gibt es einen Pegelwandler, der acht GPIO-Pins des Raspberry Pi als 5V-GPIO-Pins zur Verfügung stellt und einen I2C-Pegelwandler, durch den auch hier der Anschluss von 5V-Chips möglich wird.

Weitere Informationen gibt es im embedded projects journal und auf der Website des Projekts.

Berrybush Pi

Ebenfalls in der Ausgabe 16 des embedded projects journal wurde auf Seite 28 der „Berrybush Pi“ vorgestellt, der ein paar mehr Schnittstellen als das Prototyping-Board bietet.

Auch dieses Board bietet eine Spannungsversorgung für den Raspberry Pi und acht 5V-GPIO-Pins, diese sind jedoch mit Darlington-Transistoren und LEDs zur Status-Anzeige ausgestattet. Außerdem gibt es eine 3,3V (sic) SPI-Schnittstelle, die einfach zum Raspberry Pi durchgeschleift wird, einen 5V-I2C-Bus (mit Pegelwandler zum Raspberry Pi), einen RS485-Bus und eine RS232-Schnittstelle, die jedoch in den RS485-Bus gespeist wird.

Als kleines Highlight gibt es noch die Möglichkeit, ein LCD anzuschließen. Dafür sind Portexpander und Potentiometer für Helligkeit und Kontrast vorhanden.

Genauere Informationen, Schaltpläne und Bilder gibt es im embedded projects journal.

Weitere Informationen

Arduino Shield Bridge

Mit diesem Board aus Spanien kann man Arduino-Aufsteckplatinen mit dem Raspberry Pi verwenden. Cooking-hacks.com

Dazu existiert eine Library "arduPi": "In order to make complete the compatibility we have created the arduPi library which allows to use Raspberry with the same code used in Arduino. To do so, we have implemented conversion functions so that you can control in the same way as in Arduino all the I/O interfaces: i2C, SPI, UART, analog, digital, in Raspberry Pi."

I/O Module seriell/USB

Alternativ bieten sich Schnittstellen-Erweiterungen über seriellen Port oder USB an, zum Beispiel mit einem handelsüblichen AVR Mikrocontroller-Modul und der Firmware von Stefan Frings [1].

Gertboard

Webseite: http://www.raspberrypi.org/archives/tag/gertboard Eine I/O-Aufsteckplatine mit zusätzlichem Mikrocontroller (bisher PIC, jetzt ATMega)

I2C-Repeater-Board für Raspberry PI

Die kleine Platine von "Horter & Kalb" wird direkt auf die GPIO-Schnittstelle des Raspberry PI gesteckt. Es macht die Pegelanpassung von 3,3 auf 5V für den SDA- und den SCL-Pin.

Außerdem kann auch das INT-Signal, welches von digitalen Eingabebaugruppen verwendet wird, über den GPIO 17 abgefragt werden.

Das Board ist hier ausführlich beschrieben: http://www.horter.de/blog/i2c-repeater-pegelanpassung-fuer-raspberry-pi/

Im Onlineshop unter www.horter.de ist der Bausatz für 9,90€ zu haben.

Projekte

Um den Raspberry Pi hat sich inzwischen eine große Community gebildet, von der immer wieder neue Projekte mit und Erweiterungen für den Raspberry Pi entwickelt werden. Eine Quelle, über die man von den Projekten erfährt ist z.B. der offizielle Raspberry Pi Blog, aber es gibt auch noch viele andere Möglichkeiten, sich zu informieren.

Einige dieser Möglichkeiten und einige ausgewählte Projekte werden in diesem Artikel vorgestellt.

The MagPi

The MagPi ist ein freies Online-Magazin, das (normalerweise) monatlich erscheint und in dem interessante Projekte genauer vorgestellt werden. Außerdem gibt es Programmier-Tutorials, Anleitungen für Linux-Software und Interviews.

Ausgabe 1

Die Ausgabe 1 vom Mai 2012 behandelt folgende Themen:

  • „The Pioneers“ - eine kleine Übersicht, wie es zur Entwicklung des Raspberry Pi kam
  • „Skutter“ - ein Roboterarm für den Raspberry Pi
  • „RacyPy“ - eine Linux Live-CD, basierend auf Puppy Linux und speziell angepasst für einen leichten Einstieg in die Programmierung
  • eine Anleitung zum Installieren von Debian in einer virtuellen Maschine
  • „Scratch“ - eine Programmiersprache und Entwicklungsumgebung zum kinderleichten Einstieg in die Programmierung
  • „the python pit“ - ein Einstieg in die Programmierung mit Python

Ausgabe 2

Die Ausgabe 2 vom Juni 2012 behandelt folgende Themen:

  • „PiSetup“ - eine Anleitung zum Einrichten des Raspberry Pi
  • „In Control“ - ein Einstieg in die GPIO-Programmierung mit dem Raspberry Pi und Python
  • „Pi Dissection“ - ein genauerer Blick auf die Einzelteile des Raspberry Pi
  • Fortsetzung von „Skutter“ aus Ausgabe 1
  • „Command Line Clinic“ - eine Einführung in die Benutzung der Linux-Shell
  • „Computer Music“ - eine Anleitung zur Installation von „Schism Tracker“, einem Sequencer-Programm
  • Fortsetzung der Debian-Anleitung aus Ausgabe 1, diesmal mit einer Anleitung zum Einrichten und Verwenden von Python
  • Fortsetzung von „the python pit“ aus Ausgabe 1

Ausgabe 3

Die Ausgabe 3 vom Juli 2012 behandelt folgende Themen:

  • eine Anleitung zum automatischen Starten der grafischen Oberfläche von Debian
  • Fortsetzung von „In Control“ aus Ausgabe 2
  • Fortsetzung von „Command Line Clinic“ aus Ausgabe 2
  • Fortsetzung von „Skutter“ aus Ausgabe 1 und 2
  • „To Protect and Serve your Raspberry Pi“ - eine einfache Anleitung, um die GPIO-Pins des Raspberry Pi vor Kurzschlüssen zu schützen
  • „Meeting Pi“ - Vorschäge, wie man Kinder an den Raspberry Pi heranführen kann
  • „The C Cave“ - ein C-Tutorial
  • Fortsetzung von „Scratch“ aus Ausgabe 1
  • Fortsetzung von „the python pit“ aus Ausgabe 1 und 2
  • „Programming Fundamentals“ - ein Artikel, der die Grundlagen (fast) aller Programmiersprachen auf einfachem Weg zeigen will

Ausgabe 4

Die Ausgabe 4 vom August 2012 behandelt folgende Themen:

  • Fortsetzung von „In Control“ aus Ausgabe 2 und 3
  • „3-Axis Accelerometer“ - eine Anleitung für einen Beschleunigungs-Sensor am Raspberry Pi
  • „Kernow Pi Launch“ - ein Artikel darüber, wie der Raspberry Pi an Schulen gebracht wurde
  • „MagPi Exclusive Interview“ - ein Interview mit Eben und Liz von der Raspberry Pi Foundation
  • „How to customise your LXDE menu“ - eine Anleitung zum Anpassen von LXDE
  • Fortsetzung von „Command Line Clinic“ aus Ausgabe 2 und 3
  • Fortsetzung von „The C Cave“ aus Ausgabe 3
  • Fortsetzung von „Scratch“ aus Ausgabe 1 und 3
  • Fortsetzung von „the python pit“ aus Ausgabe 1, 2 und 3

Ausgabe 5

Die Ausgabe 5 vom September 2012 behandelt folgende Themen:

  • „Steady Hands“ - eine Anleitung zum Bau eines „Heißer Draht“-Spiels mit dem Raspberry Pi
  • „Temperature Sensor“ - eine Anleitung zum Anschluss eines I2C-Temperatursensors an den Raspberry Pi
  • „XBMC Media Center“ - eine Einführung in Rasbbmc, einer HTPC-Distribution für den Raspberry Pi
  • „Squeezy or Wheezy?“ - ein Vergleich von Debian 6 „Squeeze“ und Debian 7 „Wheezy“
  • Fortsetzung von „Command Line Clinic“ aus Ausgabe 2, 3 und 4
  • Fortsetzung von „The C Cave“ aus Ausgabe 3 und 4
  • Fortsetzung von „Scratch“ aus Ausgabe 1, 3 und 4
  • „RasPiThon 2012“ - ein Bericht über den Rasbperry Pi Programmier-Marathon
  • Fortsetzung von „the python pit“ aus Ausgabe 1, 2, 3 und 4

Ausgabe 6

Die Ausgabe 6 vom Oktober 2012 behandelt folgende Themen:

  • „Skutter Returns“ - Fortsetzung von „Skutter“ aus Ausgabe 1, 2 und 3
  • „Portable Power for your Pi“ - eine Anleitung für eine mobile Stromversorgung
  • „Star Letter: An FET Buffer Stage for GPIO Access“ - eine Möglichkeit, wie man die GPIO-Pins des Raspberry Pi belastbarer machen kann
  • „Pumpkin Pi“ - ein Kürbis mit Bewegungs-Sensor und RGB-LEDs
  • „Camera Pi“ - ein Interview mit David Hunt, einem Bastler, der seine Kamera mit einem Raspberry Pi ausgestattet hat
  • „Our Raspberry Pi Summer“ - ein Beispiel für ein kleines Spiel, das mit Scratch programmiert wurde
  • „Baby steps in a Big World“ - ein Ada-Tutorial
  • Fortsetzung von „The C Cave“ aus Ausgabe 3, 4 und 5
  • Fortsetzung von „Scratch“ aus Ausgabe 1, 3, 4 und 5
  • Fortsetzung von „the python pit“ aus Ausgabe 1, 2, 3, 4 und 5

Ausgabe 7

Die Ausgabe 7 vom November 2012 behandelt folgende Themen:

  • „Raspberry Pi & Arduino“ - ein Artikel über die Kommunikation zwischen Arduino und Raspberry Pi mithilfe von Python
  • „A little Ray of Sunshine“ - eine Solar-Stromversorgung für den Raspberry Pi und andere USB-Geräte
  • „The Raspberry Ladder Board“ - ein Board zum Einstieg in die GPIO-Programmierung mit dem Raspberry Pi
  • „Interrupts and Other Activities with GPIO Pins” - eine Anleitung für Interrupts und GPIO-Pins im Allgemeinen auf dem Raspberry Pi
  • „Raspbian“ - ein Interview mit Mike Thompson, dem Erfinder von Raspbian
  • „Turbopi“ - eine Anleitung zum Übertakten des Raspberry Pi
  • „Pi-Evolution“ - eine Übersicht über die Entwicklung des Raspberry Pi
  • „Make“ - eine Einführung in GNU Make und Makefiles
  • „Welcome to the C++ Cache!“ - eine Einführung in C++
  • Fortsetzung von „Scratch“ aus Ausgabe 1, 3, 4, 5 und 6
  • Fortsetzung von „the python pit“ aus Ausgabe 1, 2, 3, 4, 5 und 6

Ausgabe 8

Die Ausgabe 8 vom Dezember 2012 behandelt folgende Themen:

  • „Skutter Returns“ - Fortsetzung von „Skutter“ aus Ausgabe 1, 2 und 3 bzw. „Skutter Returns“ aus Ausgabe 6
  • „The Santa Trap“ - Heimautomation mit dem Raspberry Pi
  • „Control your Arduino board with Raspberry Pi and Python“ - ein Python-Modul zum Steuern eines Arduino
  • „PiGauge“ - eine Anleitung, wie man Servo-Motoren übers Internet mithilfe des Raspberry Pi steuern kann
  • „Quick2Wire“ - Erweiterungs-Board für den Raspberry Pi
  • „Kickstarter“ - eine Vorstellung der Kickstarter-Kampagne, um The MagPi auf Papier zu bannen
  • „Programming the Raspberry Pi: Getting Started with Python“ - eine kurze Vorstellung des gleichnamigen Buches von Simon Monk
  • „pibow interview“ - ein Interview mit den Erfindern des PiBow, einem Gehäuse für den Raspberry Pi
  • „CESIL Pi“ - ein CESIL Programmier-Tutorial für den Raspberry Pi
  • Fortsetzung von „Welcome to the C++ Cache!“ aus Ausgabe 7
  • Fortsetzung von „Baby steps in a Big World“ aus Ausgabe 6
  • „MySQL Database Bootcamp“ - eine Einführung in MySQL
  • Fortsetzung von „the python pit“ aus Ausgabe 1, 2, 3, 4, 5, 6 und 7

Ausgabe 9

Die Ausgabe 9 vom Februar 2013 (Januar wurde ausgelassen) behandelt folgende Themen:

  • „adafruit Interview“ - Interview mit der Gründerin von adafruit, einem Shop für DIY Elektronik
  • „WebIOPi“ - eine REST-Schnittstelle, um die GPIO-Pins des Raspberry Pi per Javascript zu steuern
  • „Backup your Raspberry Pi“ - eine Anleitung für die Datensicherung der SD-Karte
  • „Pi Interface Board Review Quick2Wire“ - ein genauerer Blick auf das Erweiterungs-Board „Quick2Wire“, das in Ausgabe 8 schon kurz gezeigt wurde
  • „RISC OS Pi“ - eine Anleitung zur Installation von RISC OS auf dem Raspberry Pi
  • „Installing & Configuring ArchLinux“ - eine Anleitung zur Installation von Arch Linux auf dem Raspberry Pi, die auch die Installation von XFCE umfasst
  • „Introducing Vala“ - ein kleines Vala Programmier-Tutorial für den Raspberry Pi und das LedBorg Erweiterungs-Board
  • Fortsetzung von „The C Cave“ aus Ausgabe 3, 4, 5 und 6
  • Fortsetzung von „Scratch“ aus Ausgabe 1, 3, 4, 5, 6 und 7
  • Fortsetzung von „the python pit“ aus Ausgabe 1, 2, 3, 4, 5, 6, 7 und 8

Ausgabe 10

Die Ausgabe 10 vom März 2013 behandelt folgende Themen:

  • Fortsetzung von „WebIOPi“ aus Ausgabe 9
  • „Try a Cocktail of Projects“ - ein Artikel, der verschiedene Erweiterungs-Möglichkeiten für den Raspberry Pi zeigt
  • „Backing up - part 2“ - Fortsetzung von „Backup your Raspberry Pi“ aus Ausgabe 9
  • „Bash Gaffer Tape“ - ein Bash-Tutorial
  • „Charm on the Raspberry Pi“ - ein Charm Programmier-Tutorial für den Raspberry Pi
  • „C++ Cache”: Fortsetzung von „Welcome to the C++ Cache!“ aus Ausgabe 7 und 8
  • Fortsetzung von „Scratch“ aus Ausgabe 1, 3, 4, 5, 6, 7 und 9
  • Fortsetzung von „the python pit“ aus Ausgabe 1, 2, 3, 4, 5, 6, 7, 8 und 9

Ausgabe 11

Die Ausgabe 11 vom April 2013 behandelt folgende Themen:

  • Heizungssteuerung mithilfe des Raspberry Pi über ein Smartphone
  • eine Vorstellung vom „Power and I/O Expansion Board“
  • eine Anleitung zum Einrichten eines WLAN-Access-Points auf dem Raspberry Pi (per USB-WLAN-Dongle)
  • Vorstellung von der Minecraft Pi-Edition
  • „Printing with Cups“: Configuring Cups
  • „Setting up a simple intranet“ mit einer Anleitung zum Einrichten vom Apache HTTPD
  • eine Einführung in die Assembler-Programmierung auf dem Raspberry Pi
  • Fortsetzung von „Charm on the Raspberry Pi“ aus Ausgabe 10
  • kurze Anleitung zum Verwenden von Farben auf der Kommandozeile
  • Fortsetzung von „Scratch“ aus Ausgabe 1, 3, 4, 5, 6, 7, 9 und 10

Raspberry Pi multi-effects

Ein Musiker hat mit einem Raspberry Pi, einem Arduino Uno und einer USB-Soundkarte ein Gitarren-Effektboard gebaut und das Ganze in seinem Blog beschrieben. Das alles sieht im Video noch etwas sperrig aus, es sollte aber kein Problem sein, die Soundkarte und den Raspberry Pi auch noch mit ins Effektboard zu integrieren.

Als Software verwendet er Raspbian, also das Standard-Betriebssystem des Raspberry Pi, und Pure Data, eine Echtzeit-Umgebung für Audio-, Video- und Grafik-Verarbeitung. Diese ist jedoch auch in den Arch Linux ARM Paketquellen verfügbar, einem Versuch, das ganze auch mit Arch Linux auszuprobieren, steht also theoretisch nichts im Wege.

Die Installation und Konfiguration von Pure Data hat er ebenfalls in seinem Blog beschrieben.

Raspberry Pi guitar tuner

Ein anderer Nutzer hat ein Gitarren-Stimmgerät gebaut. Dazu hat er einen Raspberry Pi, eine USB-Webcam zur Ton-Aufnahme, eine 7-Segment-Anzeige zur Anzeige des Tons und 15 LEDs zur Anzeige der Abweichung vom Ton verwendet.

Ausgewertet und angesteuert wird das Ganze über ein selbstgeschriebenes Java-Programm, ein Video und ein paar zusätzliche Informationen gibt es auf YouTube.

Circadian Lighting

Auch für Menschen, die sich mit dem Morgen manchmal schwer tun, gibt es ein Projekt mit dem Raspberry Pi, das im Blog vorgestellt wurde. In Verbindung mit ein paar RGB-LEDs kann man den Raspbrry Pi zu einem Wecker machen, der einen nicht mit lautem, nervigen Piepsen aus dem Schlaf reißt, sondern langsam in Verbindung mit einem künstlichen Sonnenaufgang weckt. Fehlt nur noch ein Relais, über das die Kaffeemaschine angeschaltet wird, und der Morgen ist perfekt.

Bei diesem Projekt gibt es sogar den Quellcode, eine Hardware-Liste und ein Video, das einige der Funktionen zeigt. Und mit ein paar Python-Kenntnissen kann man alles seinen Bedürfnissen anpassen und erweitern.

Raspberry Leaf

Die einfachsten Ideen sind doch manchmal die Besten. „Dr. Monk” hat in seinem Blog eine Pinbelegung des Raspberry Pi veröffentlicht, die (in der richtigen Größe ausgedruckt) genau auf den P1-GPIO-Anschluss des Raspberry Pi passt. So vergisst man nie die Pinbelegung, wenn man gerade mal wieder mit dem Raspberry Pi bastelt und auch ein falsches Anschließen, das zur Zerstörung des Mini-Computers oder der angeschlossenen Teile führen kann, passiert nicht mehr so leicht.

raspberry-tools

Eine Tool-Sammlung für den Raspberry Pi, veröffentlicht unter der GNU General Public License Version 2 und gehostet auf github. Momentan enthält diese Sammlung nur ein Programm, es folgen aber noch weitere nützliche Tools.

scope

Scope ist Teil von raspberry-tools. Es zeichnet digitale Signale von einem oder mehreren GPIO-Pins auf und bereitet die Daten für eine Auswertung mit xoscope auf.

Wenn man sich den Quellcode geholt hat, muss man erst einmal das Hauptprogramm für den Raspberry Pi kompilieren. Das geht entweder direkt auf dem Raspberry Pi oder per Cross-Compiler.

  • g++ -o RasPi_logGPIO RasPi_logGPIO.cpp

Nachdem sowohl die entstandene Datei RasPi_logGPIO als auch das Script RasPi_logGPIO.sh im gleichen Ordner auf dem Raspberry Pi sind, kann man die Aufzeichnung starten:

  • ./RasPi_logGPIO.sh [Liste mit GPIO-Pins] > ausgabedatei.txt

Für die Pins 14, 31 und 23 sieht das Kommando z.B. so aus:

  • ./RasPi_logGPIO.sh 14 31 23 > ausgabedatei.txt

Die Aufzeichnung kann mit Strg+C gestoppt werden.

Jetzt kann man die entstandene Datei (z.B. hier ausgabedatei.txt) normalisieren und ins xoscope-Format umwandeln, das funktioniert auch problemlos auf einem anderen Computer:

  • ./RasPi_normalizeGPIO.py ausgabedatei.txt > ausgabedatei.dat

Nun entsteht die Datei ausgabedatei.dat, die man mit xoscope ansehen kann:

Dazu muss man nur die Datei laden und die entsprechenden Memory-Einträge anzeigen lassen. In diesem Beispiel ist Pin 14 in Mem A, Pin 31 in Mem B und Pin 23 in Mem C, also genau in der Reihenfolge, in der man die Pin-Nummern dem Programm übergeben hat.

Anhang

Stromversorgung

Der microUSB-Anschluss zur Stromversorgung

Um den Raspberry Pi mit Strom zu versorgen gibt es verschiedene Möglichkeiten. Entscheidend ist nur, dass möglichst konstante 5V bei bis zu 700 mA auf einem microUSB-Stecker geliefert werden.

mit USB-Netzteil

Wenn man ein genügend starkes USB-Netzteil mit einem microUSB-Kabel verbindet hat man eine passende Stromversorgung für den Raspberry Pi. Gut funktioniert zum Beispiel das iPhone-Ladegerät, aber auch andere, günstigere Netzteile sollten keine Probleme machen.

Netzteil selbst bauen

Wenn man kein USB-Netzteil zur Hand hat kann man auch selbst ein Steckernetzteil, das 5V Gleichspannung liefert, mit einem microUSB-Kabel zusammenlöten.

Dafür braucht man erst einmal ein microUSB-Kabel und ein passendes Steckernetzteil. (siehe Abb. 1) Man entfernt den USB-A-Stecker und befreit das Kabelende ein Stück von seinem Mantel, es kommen vier Adern zum Vorschein. (siehe Abb. 2) Uns interessiert die grüne und die weiße Ader nicht, da wir keine Daten übertragen wollen. Jetzt muss auch noch der Stecker vom Netzteil entfernt und die Adern abisoliert werden. (siehe Abb. 3) Bei manchen Netzteilen ist eine Markierung für Plus- oder Minus-Pol angebracht. Wenn das nicht der Fall ist, muss man mit einem Multimeter nachmessen. (siehe Abb. 4) Nun isoliert man auch noch die schwarze und rote Ader des USB-Kabels ab und verlötet die schwarze Ader mit dem Minus-Pol des Netzteils und die rote Ader mit dem Plus-Pol des Netzteils. Danach packt man um die Adern jeweils einen Schrumpfschlauch zur Isolation. Wenn man um die ganze Verbindung noch einen großen Schrumpfschlauch packt wird die Verbindung nochmal um einiges stabiler. (siehe Abb. 5) Es ist auch möglich den Raspberry Pi über jedes alte PC Netzteil zu betreiben, bei einem alten 300 Watt Netzteil hat man einen Verlust im Leerlauf von ca. 8 Watt. Dafür kann man aber einige andere Komponenten (LEDs, usw.) mitbetreiben. Hier ein Link zu einem deutschen Youtube Video: http://www.youtube.com/watch?v=hqevlVn1Osk

Wer kein Micro-USB Kabel opfern möchte, kann zwar den GPIO-Pinheader verwenden, dabei umgeht man aber die interne Eingangssicherung sowie die TVS-Diode (Überspannungsschutz). Siehe Schema, Seite 1: http://www.raspberrypi.org/wp-content/uploads/2012/04/Raspberry-Pi-Schematics-R1.0.pdf

USB-Geräte

Die beiden USB Host-Anschlüsse

Generell kann man am Raspberry Pi alle USB-Geräte verwenden, die vom Linux-Kernel unterstützt werden und somit auch an anderen Linux-PCs funktionieren.

Es ist allerdings zu beachten, dass die USB-Ports nur vergleichsweise wenig Strom liefern können (nicht die vollen 500 mA, die laut USB2.0 Standard maximal möglich sind), für größere Verbraucher wie z.B. 2,5-Zoll-Festplatten ohne externe Stromversorgung muss man daher einen externen USB-Hub mit Stromversorgung verwenden.

Maus & Tastatur

Da es für Mäuse und Tastaturen Standard-Profile gibt, die auch von allen (bis auf extrem wenige Ausnahmefälle) Geräten eingehalten werden, sollte es hier keine Probleme geben. Die Eingabegeräte sollten sofort verwendbar sein und auch Hot-Plugging stellt im Normalfall kein Problem dar.

USB-Sticks & USB-Festplatten

Wenn man seinem Raspberry Pi zusätzlichen Speicherplatz verpassen will bietet es sich an, USB-Sticks bzw. -Festplatten anzuschließen. Da es auch hier Standard-Profile gibt sollten diese sofort vom Linux-Kernel erkannt werden. Einhängen (mounten) muss man sie jedoch unter Arch Linux ARM generell selbst, wenn man nicht einen fstab-Eintrag erstellt hat oder eine Desktop-Oberfläche installiert hat, die das automatisch erledigt.

WLAN-Sticks

Wird der WLAN-Stick vom Kernel erkannt (erkennbar daran, dass ein entsprechendes Interface von ifconfig -a aufgelistet wird), kann man ein Netzwerk-Profil mit netcfg (Quasi-Standard unter ArchLinux, bei dem die Profile über Konfigurationsdateien erstellt werden), dem NetworkManager oder Wicd erstellen. Sollte die Karte nicht erkannt werden, hilft eventuell ein Blick auf die Wireless Setup Seite im ArchLinux Wiki.

TV-Karten

Will man den Raspberry Pi als HTPC verwenden, kann es sinnvoll sein, eine TV-Karte per USB anzuschließen. Hier gibt es generell 4 Möglichkeiten:

  • DVB-T, also digitales Fernsehen, das per Funk ausgestrahlt wird - kostenlos, jedoch nicht überall verfügbar
  • DVB-S, also digitales Fernsehen, das per Satellit ausgestrahlt wird - kostenlos und generell überall verfügbar, jedoch wird eine Satelliten-Schüssel benötigt
  • DVB-C, also digitales Fernsehen, das über das Kabelnetz ausgestrahlt wird - Kosten für den Kabelanschluss fallen an, Sender-Angebot vom Kabelanbieter abhängig
  • Analog-TV, also analoges Fernsehen, das über das Kabelnetz ausgestrahlt wird - Kosten für den Kabelanschluss fallen an, kein HD, Sender-Angebot vom Kabelanbieter abhängig

Nicht alle Geräte werden von Linux unterstützt, eine Übersicht, die nach Übertragungstechnik (DVB-T/-S/-C oder Analog) und Anschluss-Art (beim Raspberry Pi immer USB) geordnet ist, findet man im LinuxTVWiki, zu dem man natürlich auch selbst beitragen kann, wenn man ein Gerät getestet hat.

Soundkarten

Da der Klinke-Ausgang des Raspberry Pi nicht mit einem D/A-Wandler, sondern nur per PWM funktioniert, ist die Sound-Qualität nicht gerade überragend. Wenn man das verbessern will, oder wenn man Sound per Line-Eingang oder per Mikrofon aufnehmen will, bietet es sich an, eine USB-Soundkarte anzuschließen.

Ist man unsicher, ob die Soundkarte unterstützt wird, hilft ein Blick ins Wiki vom ALSA-Projekt.

Downloads

Siehe auch