GPIO: Erste Schritte mit dem Raspberry Pi

Vor einiger Zeit habe ich eine Artikelserie über das Thema Hausautomatisierung geschrieben. Mittlerweile steht das ganze Zeug leider relativ ungenutzt in der Gegend rum. Das soll sich nun ändern. Und zwar möchte ich nun etwas mit GPIO rumspielen – also den Pins auf dem Raspberry. Ich habe sowohl das Model der ersten generation, als auch der zweiten Generation hier. Da die Pins vom neueren Modell vom Touch-Display belegt sind, nutze ich das ältere Modell. Aber es sollte alles auch mit der neusten Generation funktionieren.

Also habe ich mir ein Start-Kit bestellt, damit ich nicht alles einzeln zusammensuchen muss. Sicher etwas teurer, dafür hat man jede Menge Kram zum spielen dabei. Alles verpackt in einer kleinen praktischen Plastikbox.

Als erstes habe ich wiringPi installiert. Der Build dauert eine ganze Weile – also ruhig einen Kaffee holen in der Zeit.

Ob alles geklappt hat, kann man folgendermaßen testen:

pi@raspberry:~$ gpio -v
gpio version: 2.31
Copyright (c) 2012-2015 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty

Raspberry Pi Details:
  Type: Model B, Revision: 03, Memory: 512MB, Maker: Sony 
  * Root or sudo required for GPIO access.

Fein. Und was nun?

Also eine runde Programmieren. Wahlweise mit C, Python oder eben per Shell. Für mich auch endlich mal eine Chance, etwas in Python einzusteigen. Das hatte ich schon viel zu lange vor. Aber soll ja nicht allzu schwer sein, wenn man schon Erfahrung in C, Java, PHP o.ä. hat.

Dank dem mitgelieferten Manual, hatte ich das erste C-Programm schnell (ab)geschrieben:

#include <wiringPi.h>
#include <stdio.h>

#define LedPin 0
#define SecondPin 3

int main(void)
{
    if (wiringPiSetup() == -1) {
        printf("Das war nix");
        return 1;
    }

    pinMode(LedPin, OUTPUT);

    while(1) {
        digitalWrite(LedPin, LOW);
        digitalWrite(SecondPin, HIGH);
        printf("led on!\n");
        delay(500);

        digitalWrite(LedPin, HIGH);
        digitalWrite(SecondPin, LOW);
        printf("led off!\n");
        delay(500);
    }
}

Schnell kompiliert und ausgeführt:

gcc test.c -o led -lwiringPi
sudo ./led

Dann noch alles ein wenig verkabeln, und schon steht die erste kleine Anwendung: Eine blinkende LED! Der Wahnsinn, oder?

GPIO erste Schritte

Schon jetzt könnte ich meine erste kleine Anwendung schreiben: Status-LEDs für unsere Continous Integration-Umgebung. Heißt: Geht ein Build kaputt, leuchtet eine rote LED auf. Ist alles wieder heile, wird die LED grün. Cool, oder?

Wenn man keine Lust hat alles in C zu schreiben, könnte man die C-Programme natürlich auch mit anderen Sprachen (wie PHP) aufrufen und die LEDs so steuern.

Alternativ kann man die LED in diesem Beispiel natürlich auch per Shell an- und ausschalten:

/usr/local/bin/gpio -g write 17 1
/usr/local/bin/gpio -g write 17 0

[asa]B00T2U7R7I[/asa]

[asa]B00HU0Z4C2[/asa]


Beitrag veröffentlicht

in

, , , ,

von

Schlagwörter: