Aus RN-Wissen.de
Wechseln zu: Navigation, Suche
Rasenmaehroboter fuer schwierige und grosse Gaerten im Test

(Schnittstellen)
K (Siehe auch)
 
(13 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
=Schnittstellen=  
 
=Schnittstellen=  
Zusätzlich zu USB, Ethernet, Analog 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/>
+
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 als 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 files im Ordner '/sys/class/gpio/' gesteuert werden, dies muss jedoch via root gemacht werden.
+
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üßen die files via 'export' zugänglich gemacht werden. Da die GPIO's nach dem Systemstart Eingänge sind, müßen diese jetzt als Ausgänge definiert werden und können danach manipuliert 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:
 
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==
tbd
+
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

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


LiFePO4 Speicher Test