Der Raspberry Pi wurde in erster Linie zu Lehrzwecken entwickelt, um jungen Leuten die Möglichkeit zu bieten, ihre ersten Schritte im Programmieren mit einem preiswerten Linux-Computer zu wagen. Doch da Elektronikgeräte von Tag zu Tag leistungsstärker werden, und mit der Erweiterung des Raspberry Pi 3 um Bluetooth 4.1 und WLAN wird das Gerät nunmehr den Anforderungen von Profis gerecht.
Ein Standard-PC bietet keinen Zugang zu Prozessorpins – beispielsweise ist es nicht möglich, einen neuen Sensor, der über einen I2C-Bus kommuniziert, an einen PC anzuschließen. Der Raspberry Pi hingegen bietet Zugang zu GPIO. Diese Art von Funktion ist normalerweise Mikrocontrollern vorbehalten. Dies erfordert allerdings fundierte Programmierkenntnisse, was Anfängern Schwierigkeiten bereiten könnte. Der Raspberry Pi erlaubt ein Programmieren des GPIO dank einiger weniger Code-Zeilen in Python. Python ist eine der am einfachsten zu lernenden Programmiersprachen und hat eine große Community, die nicht ausschließlich aus Informatikern besteht. Der Raspberry Pi hat seinen eigenen Markt zwischen Standard-PCs und Mikrocontrollern geschaffen. Werfen wir einen Blick auf die Vorgehensweise zum Umschalten eines GPIO auf einem Raspberry.
Auf dem Raspberry Pi ist Raspbian als Standardbetriebssystem installiert, in das die Python-Bibliothek RPi.GPIO bereits geladen ist. Derzeit nutzt er die Version 0.6.2, die auf pypi.python.org zum Download bereitsteht.
Beispiele zur Verwendung dieser Bibliothek sind auf Open-Source-Websites zu finden.
Und es handelt sich um ein Python-Programm – die Bibliotheken müssen also importiert werden. Zwei Bibliotheken sind erforderlich: die RPI.GPIO-Bibliothek zur Ansteuerung von Pins und die Zeit-Bibliothek, die Nutzern ermöglicht, Zeitintervalle zwischen jedem Pinübergang festzulegen.
Dann ist es notwendig, den Typ des Nummerierungssystems anzugeben. Die Option BOARD nutzt die Pins genau so, wie sie auf dem Pi ausgelegt sind. Dieser Steckverbinder und diese Nummerierung ändern sich nicht von Version zu Version. Die BCM-Option nutzt die Broadcom SoC-Nummerierung, die je nach Pin-Version des Raspberry variiert. Die untere Tabelle zeigt die Unterschiede zwischen den beiden Nummerierungssystemen.
In unserem Programm wird die Platinennummer von der Befehlsfunktion GPIO.setmode verwendet und ausgewählt.
Dann wird Pin 12 als Ausgang konfiguriert und wir schalten diesen Pin um. In einer Endlosschleife wird der Pin eine Sekunde lang auf hoch (3V) gestellt, dann eine Sekunde lang geerdet (0V).
Der Formfaktor des Raspberry Pi erlaubt den einfachen physischen Zugang zu den GPIOs und ein Oszilloskop wird mit einem Masse-Pin (Pin 25) und Pin 12 verbunden.
Wie im Screenshot des Oszilloskops zu sehen ist, schaltet Pin 12 zwischen 0 und 3 V bei einer Frequenz von 0,5 Hz hin und her, wie im Python-Script programmiert.
Das Python-Script kann nicht in Echtzeitsystemen verwendet werden, da das Linux-Betriebssystem nicht den genauen Zeitpunkt zur Ansteuerung des Pins garantiert. Andere Prioritäten können die Ansteuerung eines GPIO verzögern, die keine hohe Priorität darstellt. Um jedoch mit der Außenwelt zu kommunizieren, handelt es sich hierbei um eine schnelle, effiziente und einfache Methode, die herkömmliche PCs nicht bieten.