Kampi (Diskussion | Beiträge) (→Schnittstellen) |
Frank (Diskussion | Beiträge) K (→Siehe auch) |
||
(12 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
=Schnittstellen= | =Schnittstellen= | ||
− | Zusätzlich zu USB, Ethernet, | + | 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.<br/> |
− | 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! | + | 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. | Bestimmte Pins können auch für SPI, I²C und UART Schnittstellen genutzt werden. | ||
==P1 Pinout== | ==P1 Pinout== | ||
+ | Die nachfolgenden Tabelle zeigt das Pinout des Raspberry Pi Revision 1.0 (Sowohl Modell A als auch B): | ||
{| {{Blauetabelle}} | {| {{Blauetabelle}} | ||
|Function | |Function | ||
Zeile 49: | Zeile 50: | ||
|- | |- | ||
|GPIO 21 (PCM_DOUT) | |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)=== | ||
+ | {| {{Blauetabelle}} | ||
+ | |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 | |13 | ||
| | | | ||
Zeile 92: | Zeile 183: | ||
=Ansteuern der GPIO's= | =Ansteuern der GPIO's= | ||
+ | Einige kleine Programmbeispiele findet man hier: [http://elinux.org/RPi_Low-level_peripherals elinux.com] (C,Python,Java,Shell,C#,Perl,Ruby) | ||
+ | |||
==Via Shell== | ==Via Shell== | ||
− | Die GPIO können direkt über die | + | Die GPIO können direkt über die Files im Ordner '/sys/class/gpio/' angesteuert werden. Dies muss jedoch mit root-Rechten gemacht werden. |
− | Zuerst | + | 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: | Ein Beispiel anhand von GPIO 23: | ||
Zeile 113: | Zeile 206: | ||
https://projects.drogon.net/raspberry-pi/wiringpi/download-and-install/ | https://projects.drogon.net/raspberry-pi/wiringpi/download-and-install/ | ||
+ | Eingang auslesen | ||
+ | <pre>gpio -g read 23</pre> | ||
+ | GPIO Pin als Ausgang definieren | ||
+ | <pre>gpio -g mode 23 out</pre> | ||
+ | |||
+ | Ausgang setzen | ||
+ | <pre>gpio -g write 23 1</pre> | ||
+ | |||
+ | Vollständige Informationen zu WiringPI findet man in der manpage | ||
+ | <pre>man gpio</pre> | ||
==Via PHP== | ==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. | ||
+ | <pre> | ||
+ | $val = trim(@shell_exec("/usr/local/bin/gpio -g read 23")); | ||
+ | $val = trim(@shell_exec("/usr/local/bin/gpio -g write 23 1")); | ||
+ | </pre> | ||
+ | |||
+ | =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. | ||
+ | [[Bild:PiPegelwandler.png]] | ||
+ | |||
+ | |||
+ | =Siehe auch= | ||
+ | |||
+ | * [[Bücher zum Thema Mikrocontroller Schwerpunkt Raspberry PI]] | ||
+ | * [[Raspberry Pi]] | ||
+ | * [[Embedded_Linux_Einstieg_leicht_gemacht]] | ||
+ | |||
+ | |||
+ | |||
+ | [[Kategorie:Microcontroller]] |
Aktuelle Version vom 6. November 2013, 11:59 Uhr
Inhaltsverzeichnis
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.