Aus RN-Wissen.de
Wechseln zu: Navigation, Suche


Schnittstellen

Zusätzlich zu USB, Ethernet, analogen Audio/Video und HDMI bietet das Raspberry Pi verschiedene GPIO's (General Purpose Input/Output), die über die 2,54mm Stiftleiste 'P1' zugänglich sind.
Die GPIO Pins sind als 3,3V Signale ausgeführt und nicht 5V tolerant. Ein direkter Anschluss an TTL Level kann zur Zerstörung führen!<br\> Bestimmte Pins können auch für SPI, I²C und UART Schnittstellen genutzt werden.

P1 Pinout

Die nachfolgenden Tabelle zeigt das Pinout des Raspberry Pi Revision 1.0 (Sowohl Modell A als auch B):

Function Pin Pin Function
3,3V 1 2 5V
GPIO 0 (SDA) 3 4
GPIO 1 (SCL) 5 6 GND
GPIO 4 (GPCLK0) 7 8 GPIO 14 (TxD)
9 10 GPIO 15 (RxD)
GPIO 17 11 12 GPIO 18 (PCM_CLK)
GPIO 21 (PCM_DOUT) 13 14
GPIO 22 15 16 GPIO 23
17 18 GPIO 24
GPIO 10 (MOSI) 19 20
GPIO 9 (MISO) 21 22 GPIO 25
GPIO 11 (SCLK) 23 24 GPIO 8 (CE0)
25 26 GPIO 7 (CE1)

Mittlerweile gibt es eine neue Hardwareversion des Raspberry Pi, nämlich Revision 2.0 - u.A. erkennbar an den neu hinzugekommenen Bohrlöchern. Hier hat sich auch die Pinbelegung von P1 geändert (Änderungen sind fett geschrieben):

P1 Pinout (Rev 2.0)

Function Pin Pin Function
3,3V 1 2 5V
GPIO 2 (SDA1) 3 4
GPIO 3 (SCL1) 5 6 GND
GPIO 4 (GPCLK0) 7 8 GPIO 14 (TxD)
9 10 GPIO 15 (RxD)
GPIO 17 11 12 GPIO 18 (PCM_CLK)
GPIO 27 13 14
GPIO 22 15 16 GPIO 23
17 18 GPIO 24
GPIO 10 (MOSI) 19 20
GPIO 9 (MISO) 21 22 GPIO 25
GPIO 11 (SCLK) 23 24 GPIO 8 (CE0)
25 26 GPIO 7 (CE1)

Ansteuern der GPIO's

Einige kleine Programmbeispiele findet man hier: elinux.com (C,Python,Java,Shell,C#,Perl,Ruby)

Via Shell

Die GPIO können direkt über die Files im Ordner '/sys/class/gpio/' angesteuert werden. Dies muss jedoch mit root-Rechten gemacht werden. Zuerst müssen die Files via 'export' zugänglich gemacht werden. Da die GPIO's nach dem Systemstart als Eingänge geschaltet sind, müssen diese jetzt als Ausgänge definiert werden und können danach manipuliert werden.

Ein Beispiel anhand von GPIO 23:

$ cd /sys/class/gpio
$ su
root Passwort eingeben
$ echo "23" > export
$ echo "out" > gpio23/direction
$ echo "1" > gpio23/value

Via WiringPi

Alternativ zur direkten Ansteuerung kann das Programm 'WiringPi' installiert werden. Der Vorteil daran ist zum einen die einfachere Anwendung und dass dazu keine root Rechte benötigt werden.

Informationen zur installation findet man auf der Projektseite..
https://projects.drogon.net/raspberry-pi/wiringpi/download-and-install/

Eingang auslesen

gpio -g read 23

GPIO Pin als Ausgang definieren

gpio -g mode 23 out

Ausgang setzen

gpio -g write 23 1

Vollständige Informationen zu WiringPI findet man in der manpage

man gpio

Via PHP

Sollen die GPIO Pins über ein HTTP Webinterface bedient werden, so kann dies mit PHP realisiert werden. In diesem Beispiel wird dazu via @shell_exec() WiringPi angesprochen.

$val = trim(@shell_exec("/usr/local/bin/gpio -g read 23"));
$val = trim(@shell_exec("/usr/local/bin/gpio -g write 23 1"));

Anpassen der Pegel für 5V UART

Eine einfache Schaltung, wie die Pegel angepasst werden können. Man kann natürlich auch die anderen PINs darüber mit 5V verbinden, ist dann aber auf die Richtung festgelegt. PiPegelwandler.png


Siehe auch