GPIOs steuern mit wiringPi

WiringPi ist ein Programm mit dem man die GPIO Pins des Banana Pi ganz einfach ansteuern kann. Unter den Raspberry Pi Anwendern wird wiringPi vorzusweise verwendet. Das Tool ist auch für den Banana Pi verfügbar.

Die Programmbibliothek kann mit wenig Aufwand in die Programmiersprachen C/C++, Phyton, Java und PHP eingebunden werden. Die durch die Libary bereitgestellten Funktionen ermöglichen unteranderem das Schalten eines High- und Low-Zustandes auf gewünschte GPIO-Pins. Gleichermaßen können die Pins als Eingang genutzt und mit wiringPi ausgewertet werden. In diesem Artikel zeige ich wie man wiringPi installiert und einsetzt.

Zu Beginn öffnen wir das Terminal und laden uns wiringPi von Github herunter.

git clone https://github.com/LeMaker/WiringBPi.git

Wenn der Download abgeschlossen ist sollte im Verzeichnis /home/bananapi ein neuer Ordner erscheinen: wiringBPi. In diesem Ordner ist die Programmbibliothel von wiringPi abgelegt.

Um wiringPi verwenden zu können, müssen wir die Software im nächsten Schritt installieren. Zur Installation bringt die Software einen Skript mit, den wir im folgenden ausführen. Hierfür wechseln wir in das entsprechende Verzeichnis und setzen optional Zugriffsrechte.

cd /home/bananapi/wiringBPi
chmod +x build

Jetzt können wir den Installationsskript ausführen. Dies nimmt einen kurzen Augenblick in Anspruch.

sudo ./build

Screenshot Banana Pi - wiringPi
Screenshot Banana Pi – wiringPi

Nach dieser langen Ausgabe ist wiringPi erfolgreich installiert und kann verwendet werden. WiringPi ist sehr vielseitig und kann daher mit den Programmiersprachen C/C++, Phyton, Java und PHP genutzt werden. Außerdem ist das Schalten der GPIO Pins über die Konsole möglich. In diesem Tutorial beschränke ich mich auf die Ansteuerung des Pin Headers via Konsole und mit C/C++.

Grundlegend ist festzuhalten das die GPIO Pins als Eingang oder Ausgang konfiguriert werden können. Weiterhin gilt ein Pegel von 5 Volt bedeutet High und ein Pegel von 0 Volt bedeutet Low. Dies ist bei der Beschaltung des Banana Pi zu beachten: Zum einen um eine korrekte Funktionalität zu gewährleisten und zum anderen um den Banana Pi nicht zu beschädigen. Neben den Zuständen High und Low unterstützen einige Pins Funktionen wie PWM und UART.

GPIOs über Terminal steuern

Um herauszufinden wie die GPIO Pins momentan konfiguriert und beschalten sind, kann man folgenden Befehl im Terminal absetzen.

gpio readall

gpio readall - Screenshot Raspbian

Im folgenden wollen wir den GPIO Pin 17 ansteuern. Physikalisch ist das Pin 11 und aus Sicht von wiringPi ist es Pinnummer 0. Anhand der angezeigten Tabelle vom Befehl gpio readall kann dies nachvollzogen werden. Weitere Informationen zum Aufbau und Pindefinitionen gibt es hier.

Wenn wir Pin 17 beschalten wollen müssen wir diesem zunächst sagen, ob er als Eingang oder Ausgang fungieren soll. In diesem Tutorial möchte ich GPIO Pin 17 als Ausgang schalten. Dazu verwenden wir im folgenden Befehl den Parameter out. Als Eingang würde man in nehmen.

gpio export 17 out

Anschließend soll an GPIO Pin 17 ein High-Zustand (5 Volt) angelegt werden.

gpio -g write 17 1

Ruft man jetzt die Pinübersicht mit gpio readall erneut auf, wird ersichtlich, dass
der GPIO Pin 17 bzw. physikalisch 11 bzw. wiringPi Pin 0 auf Output und High geschalten ist. Wenn man anschließend vom High zum Low wechseln möchte, ersetzt man die 1 durch eine 0: gpio -g write 17 0

LED ansteuern mit wiringPi

Ansteuerung mit C/C++

Die Beschaltung der GPIO Pins mit Hilfe von wiringPi ist in Verbindung mit einer Programmiersprache wie zum Beispiel C/C++ sehr vielseitig und nützlich. Dazu muss die Programmbibliothek von wiringPi wie beschrieben installiert sein.

Im folgenden erstellen wir eine kleine C-Anwendung mit der wir über Pin 11 (GPIO 17, wiringPi 0) eine LED zum blinken bringen möchten. Dazu erstellen wir über das Terminal die Datei blinken.c .

sudo nano blinken.c

Der Inhalt der C-Anwendung kann wie folgt aussehen:

#include <wiringPi.h>

int main ()
{
// wiringPi initialisieren
if (wiringPiSetup() == -1) {
return 1;
}

// Pin 11 auf Ausgang schalten (GPIO 17, wiringPi 0)
// Achtung! wiringPi Layout nutzen
pinMode (0, OUTPUT);

// Dauerschleife
while(1) {

// Pin 11 High, LED an
digitalWrite (0, HIGH);
delay(500);

// Pin 11 Low, LED aus
digitalWrite(0, LOW);
delay(500);

}

return 0 ;
}

Nachdem wiringPi initialisiert ist geht das C-Programm in eine While-Schleife. Innerhalb der Schleife wird Pin 11 (GPIO 17, wiringPi 0) auf High geschalten. Anschließend wartet das Programm mit Hilfe des delay-Befehls 500 ms und schaltet dann den Pin und damit die LED wieder ab.

Mit den Tastenkombinationen Strg+X, Y und Enter schließen und speichern wir unseren C-Skript ab. Anschließend kompilieren wir den Quellcode.

gcc -o blinken blinken.c -lwiringPi

Jetzt können wir unser Programm ausführen.

sudo ./blinken

Beschaltet man über Pin 11 eine LED, so würde diese jetzt im Takt von 500 ms blinken. Wie man eine LED hardwareseitig installiert erkläre ich im nächsten Schritt.

LED verbinden

LED ansteuern
LED ansteuern
Für dieses Beipiel verwende ich eine Standard LED (2,1 Volt), einen 140 Ohm Vorwiderstand, ein Breakboard und Jumperkabel.

Zunächst verbinden wir den Vorwiderstand mit der LED. Dabei ist auf die richtige Polung der Leuchtdiode zu achten (Anode +, Kathode -). Anschließend muss Pin 11 des Banana Pis (GPIO 17, wiringPi 0) mit dem Vorwiderstand verbunden werden. Den Masse Pin (GND) des Banana Pi wird abschließend mit der Kathode (-) der LED verbunden.

Warum benötigen wir einen Vorwiderstand?

Der Vorwiderstand einer LED dient der Strombegrenzung und Spannungsanpassung. In unserem Falle bekommen wir vom Banana Pi eine 5 Volt Betriebsspannung. Die Standard-LED arbeitet in der Regel mit etwa 2,1 Volt und hat eine Stromaufnahme von ca. 20 mA. Daher liegen zwischen den 5 Volt Betriebsspannung und 2,1 Volt für die LED ganze 2,9 Volt die über den Vorwiderstand abfallen müssen.

Vorwiderstand dimensionieren

Mit Hilfe des Ohmschen Gesetzes kann der Vorwiderstand dimensioniert werden. Wir wissen das über dem Widerstand 2,9 Volt abfallen müssen und das durch diesen 20 mA durchfließen (Reihenschaltung).

R= U/I = 2,9 Volt / 0,02 A = 145 Ohm

Der Vorwiderstand sollte etwa 145 Ohm groß sein. Je nach LED und deren Farbe kann die Arbeitsspannung und Stromaufnahme abweichen. Hierbei sollte das jeweilige Datenblatt beachtet werden.

Led Ansteuerung mit Banana Pi
Led Ansteuerung mit Banana Pi

Quellen (Stand:03.11.14): Wikipedia, wiki.lemaker.org

Weiterlesen

Interview mit Noah Brandt: Banana Pi Forum

Heute im Interview ist Noah Brandt, der Betreiber des deutschprachigen Banana Pi Forums. Thema des Interviews ist die Entstehung, Entwicklung und Zukunft des Forums. Dabei stehen die Entwicklung der Besucheraktivitäten, das Feedback der Community und weitere kleine Projekte rund um das Hilfeforum im Vordergrund. Zu Beginn möchte ich mich gleich im Voraus bei Noah Brandt für die Beantwortung meiner Fragen bedanken!

Screenshot forum-bananapi.de
Screenshot forum-bananapi.de

Wodurch wurde dein Interesse für den Banana Pi geweckt?

Zunächst bin ich durch Zufall im Netz auf den Banana Pi gestoßen und war total begeistert: Ein Raspberry Pi mit doppelter Leistung, dass fand ich super!

Wofür verwendest du deinen Banana Pi?

Ich habe momentan 2 Banana Pis mit denen ich viel bastel und ganz verschiedene Sachen ausprobiere. Außerdem arbeite ich derzeit an einem XBMC auf Android der über ein Banana Pi NAS Filme streamt.

Wie kam es zum Banana Pi Forum?

Zu der Idee kam ich, weil ich darin eine Marktlücke sah und den Banana Pi auch in Deutschland bekannt machen will! Mein Ziel ist es eine große deutschsprachige Community aufzubauen. Insgesamt sehe ich im Banana Pi einfach eine größere Chancen als im Raspberry Pi. Wer weiß aber wie das 2017 schon wieder aussieht, wenn es den neuen Raspi gibt.

Wie groß ist das Interesse und die Aktivität der Nutzer im Forum?

Momentan sind im Banana Pi Forum schon über 100 Mitglieder registriert. Davon lesen und schreiben schätzungsweise 70 bzw. 35 Nutzer regelmäßig. Die Aktivität hält sich also noch in Grenzen, steigt aber kontinuierlich an.

Neben dem Forum betreibst du einen Blog: Gibt es noch weitere Projekte die du im Zusammenhang mit dem
Banana Pi Forum betreibst?

Na klar! Da wäre zunächst mein Blog, in dem ich so ziemlich über alles schreibe. Großtenteils beschäftige ich mich in den Artikeln mit den Themen Banana und Raspberry Pi.

Weiterhin betreibe ich testweise einen eigenen Link Shortener über den ich in Zukunft alle Links im Forum nach außen laufen lassen möchte. Die Dienste Twitter und Co. handhaben das ähnlich.

Um Blogger für den Banana Pi zu begeistern und sie mit Klicks „anzulocken“ betreibe ich noch einen News Aggregator. Im Prinzip handelt es sich dabei um ein System wie Raspifeed, nur für den Banana Pi.

Zu guter Letzt habe ich einen Image Mirror aufgesetzt. Dadurch können Anwender ihre Betriebsysteme auch von einem deutschen zuverlässigen Server herunterladen.

Welches Feedback erlangt dein Projekt von der Community?

Viele sind sehr froh das es endlich eine deutsche Community gibt in der man Fragen stellen. Über einnen Foren-internen Teamspeck Server stehe ich, wenn es die Zeit zulässt, ebenfalls gerne bereit um zu helfen! Insgesamt ist das Feedback von sehr positiver Natur.

Wo soll das Banana Pi Forum in der Zukunft stehen?

Wünschenswert wäre es, wenn das deutschsprachige Banana Pi Forum immer weiter wächst und die erste Anlaufstelle für Fragen und Tutorials ist. Dazu gehört auch ein gutes Ranking bei Google und Co. Dazu muss ich allerdings auch sagen, dass ich merke das die Community nicht so schnell wächst wie die vom Raspberry Pi. Außerdem gibt es natürlich immer wieder das Problem das manche Themen acht Mal gefragt werden, wodurch man dann im Ranking wegen doppeltem Content wieder abgestuft wird.

Wir tun jedoch wirklich alles um der Community zu helfen. Dazu kommt nun auch noch ein Thread mit häufig gestellten Fragen, der denke ich sehr hilfreich sein kann: http://forum-bananapi.de/Thread-FAQ

Besteht eine Zusammenarbeit mit anderen Bloggern, Vertriebsunternehmen oder LeMaker?

Ich arbeite daran! Mit LeMaker besteht bereits eine Partnerschaft, die ich hoffentlich soweit ausbauen kann, bis wir offizielles deutsches LeMaker Forum sind.

Auf Werbepartner-Suche sind wir ebenfalls. Nur schon mal als Vorwarnung: Sollten Wir genug Sponsoren zusammen bekommen, werden bald ein paar kostenlose Banana Pis verlost! 😉

Was machst du, wenn du nicht gerade im Forum unterwegs bist?

Dann lerne ich für die Schule! Nebenbei mache ich nämlich auch noch Abitur, um dann natürlich Informatik zu studieren.

Schlusswort

Anhand des Interviews und den Informationen von Noah Brandt ist zu erkennen, dass das Interesse an einer deutschsprachigen Community durchaus da ist. Die steigende Aktivität im Banana Pi Forum unterstützt diese Aussage. Ich bedanke mich bei Noah Brandt an der Teilnahme am Interviewund hoffe weiterhin auf eine gute Zusammenarbeit!

Da Interview wurde ebenfalls auf Einplatinencomputer veröffentlicht.

Weiterlesen