Skip to content

Raspberry Pi GPIO mit XMPP

Seit einiger Zeit liegen in meiner Schublade zwei Raspberry Pi herum. Die Zeit war reif, endlich etwas damit zu machen. Zunächst wollte ich etwas mit den General-Purpose-Input-Output (GPIO) spielen. Danach dachte ich jedoch, dass es doch mehr Spaß machen würde, wenn ich das Ganze mit XMPP verbinden kann. Dies ist dabei heraus gekommen.

Elektronische Verschaltung

Für die Nutzung der GPIO Pins am Raspberry sollte man sich zunächst einen Überblick über die PIN Belegung machen.

Pin Belegung Raspberry (CC 3.0)

Simple LED

Der einfachste Schritt ist eine LED über einen GPIO ein- und auszuschalten. Ich habe dazu eine LED verwendet, die bei 3.0V (3.6V max.) arbeitet, daher ohne weitere Wiederstände verwendbar ist. Diese habe ich mit dem Ground PIN P1-06 und dem GPIO-4 (Pin1-07) verbunden.

Um die Schaltung per Konsole zu testen ist Python ein bequemer Weg.

Und schon leuchtet die LED.

Taster

Um den Taster anzuschließen, wird die Schaltung etwas schwieriger. Hierzu bin ich nach dieser Anleitung vorgegangen und habe die Pull Down Schaltung gewählt. Die Schaltung habe ich dann mit GPIO 17 (Pin1-11) verbunden. Ein einfacher Test wie auch in der Anleitung beschrieben, lässt es einfach prüfen:

ergibt…

 

Schalter

Den Schalter habe ich mit der gleichen Schaltung an GPIO 22 (Pin1-15) angeschlossen.

Java GPIO

Mein nächster Schritt ist ein Java Programm, dass zunächst die GPIO Funktionen erledigen soll. Um Java auf dem PI ausführen zu können, habe ich zunächst Java 8 für ARM heruntergeladen und entpackt. Danach habe ich unter /opt/javalibs einen Ordner für Bibliotheken eingerichtet. Danach habe ich die Umgebungsvariablen JAVA_HOME und CLASSPATH eingerichtet und die PATH Variable entsprechend um das JAVA_HOME/bin Verzeichnis erweitert.

Schnell über die IDE ein Maven Projekt erstellt und die Dependency pi4j hinzugefügt.

Dann geht es weiter mit einer einfachen Klasse inkl. Main-Methode. Es ist zu beachten, dass PI4J eine eigene Pin Belegung 

Um das Programm einfach zu paketieren und per java -jar ausführbar zu machen, habe ich noch das Maven-Manifest Plugin entsprechend instruiert.

Nun die Libs auf dem PI unter /opt/javalibs kopieren, mit Maven das Jar erstellen und per SCP auf den PI bringen.

 

Java XMPP

Der letzte Schritt ist die Verwendung von XMPP um die LED von einem Chat-Client ein- und auszuschalten, bzw. per Knopfdruck eine Nachricht an den Chatpartner zu senden. Für XMPP habe ich die Smack Libs eingebunden.

In der Klasse XmppClient werden die XMPP Funktionen implementiert.

 

Nun muss in der Base Klasse noch XMPP mit dem GPIO verbunden. Das Prozedere mit dem XMPP einrichten habe ich hier nicht beschrieben.

Die empfangene Nachricht wird an die Main Klasse weitergeleitet. Ich habe dazu die Main Klasse zu einem Singleton ausgebaut (böses Pattern – ich weiß). Nun habe ich noch die Klasse um diese beiden Methoden erweitert:

Et voilà, wir können per Chat die LED steuern und bekommen Auskunft über Tastendrücke am PI.

 

(Urheberrecht)

Das Bild zur PIN Belegung stammt vom http://elinux.org/ Wiki und ist lizensiert durch die Creative Commons Attribution-ShareAlike 3.0 Unported License.

Be First to Comment

Leave a Reply

Your email address will not be published. Required fields are marked *