Raspberry Pi – GPIO Pins grafisch schalten mit jgRaspiGPIO

Die GPIO Pins des Raspberry Pi lassen sich auf unterschiedlichste weise schalten. Richtig komfortable wird es aber erst mit einer grafischen Benutzeroberfläche. Dazu habe ich das Programm „jgRaspiGPIO“ geschrieben. Es bietet eine GUI mit Raspberry Pi Visualisierung wobei für jeden GPIO Pin einen Button vorhanden ist um den Schaltzustand zu Ändern. Der aktuelle Schaltzustand wird im Programm angezeigt. Der folgende Screenshot zeigt das Programm:

RaspiGPIOSwitcher

Der Weg zum Programmstart:
1. Programm herunterladen 😉

2. Wenn das Programm unter Windows heruntergeladen wird kann es mit WinSCP auf den Raspberry Pi übertragen werden. Dies ist hier beschrieben.

3. Voraussetzung für die Funktion von „jgRaspiGPIO“ ist eine Java JRE auf dem Raspberry Pi. Die aktuellen Versionen von Raspbian bringen Java bereits mit. Ob und welche Java Virtual Machine (JVM) installiert ist kann mit dem Befehl „java -version“ getestet werden.

4. Das Programm nutzt eine grafische Benutzeroberfläche. Wird der Raspberry Pi headless, d.h. ohne Monitor betrieben muss die Grafikausgabe über Netzwerk erfolgen. Dazu muss bei dem SSH Protokoll das X11 Forwarding aktiviert werden. Komfortabler ist der Zugriff von Windows auf den LXDE Desktop des Raspberry Pi mit xrdp.

5. Der Start der Software erfolgt mit Root-Rechten über folgenden Befehl in dem Verzeichnis in dem das Programm liegt:

sudo java -jar jgRaspiGPIO.jar

Hintergrundinformationen für Java Entwickler

Der „Raspi GPIO Switcher“ ist in Java geschrieben und nutzt die Pi4J Library. Um die GPIO Pins zu schalten werden nur wenige Befehle benötigt. Im wesentlichen sind dies folgende:

private static final GpioController gpioController = GpioFactory.getInstance();
// Pin als Ausgabe-Pin initialisieren
GpioPinDigitalOutput pin0 = gpioController.provisionDigitalOutputPin(RaspiPin.GPIO_00, PinState.LOW);       
// Schaltzustand ändern
pin0.toggle();

Für Maven Nutzer ist noch interessant, das die Library „pi4j-native“ ausgeschlossen wird. Ansonsten kann das Projekt nicht kompiliert werden, da versucht wird die nativen Zugriffskomponenten, die nicht in Java geschrieben sind, mit dem Java Kompiler zu kompilieren.

	<dependencies>
		<dependency>
			<groupId>com.pi4j</groupId>
			<artifactId>pi4j-core</artifactId>
			<version>0.0.5</version>
			<exclusions>
				<exclusion>
					<groupId>com.pi4j</groupId>
					<artifactId>pi4j-native</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
	</dependencies>

Der Quellcode kann hier heruntergeladen werden:

Veröffentlicht in Raspberry Pi und verschlagwortet mit , .

4 Kommentare

  1. Hallo,
    gutes Projekt !!!
    Ich bin Neuling in Rpi und Java-embedded,
    habe dein Projekt auch zum Laufen bekommen.
    Die Compilierung unter Netbeans ging einwandfrei.
    Nun zu meinen Fragen:
    ich würde gern wissen. wie du die Grafik programmiert hast.
    Im source befindet ja das .png aber weiter???!?
    Ich möchte gerne diverse Funktionen im Rpi über Buttons u.s.w steuern.

    Über eine Antwort würde ich mich freuen

    Gruß Manfred Arendt

    • Hallo Manfred,
      danke. Die Visualisierung ist recht einfach gestaltet. Das Programm nutzt als Hintergrundbild das *.png Bild das du im SourceCode gefunden hast. Als Basis habe ich da das Raspi-Layout aus der Software Fritzing genutzt und mit einem Bildbearbeitungsprogramm angepasst. Die statusabhängigen Visualisierungen im Programm sind Swing JLabel Komponenten, bei denen die Hintergrundfarbe gesetzt wird. Um schnell zu einem brauchbaren Layout zu kommen habe ich ein Absolut Layout verwendet, bei dem jeder Swing Komponente seine Position mitgegeben wird. Als IDE habe ich Eclipse verwendet. Da gibt es mit WindowBuilder einen grafischen GUI Designer mit dem sich die Komponenten verschieben lassen. So lässt sich das Layout leichter anpassen. Einen ähnlichen Designer wird es sicher auch für NetBeans geben.

      lg
      Marcus

  2. Hallo Marcus,
    danke für die schnelle Antwort!!!
    Wenn ich dein Projekt in Eclipse öffnen würde,
    könnte ich dann das Layout sehen?
    Die Java-swing-Komponenten habe ich im Code in Netbeans gesehen,
    nur kein Layout.
    In der Java-Programmierung mit GUI bin ich absoluter Neuling,
    programmiere sonst PIC-Controller von Microchip in C.
    Im Moment bin ich noch auf der Suche nach einer guten
    Step by Step Anleitung.

    Gruß. Manfred

    • Hallo Manfred,
      viele Java Entwickler entwickeln die GUI rein im Code ohne grafische Unterstützung. Mit dem angesprochenen WindowBuilder kannst du aber das Layout der Programmoberfläche in Eclipse sehen. Das Projekt importierst du über das Menü „File -> Import -> Existing Maven Project“. Ggf. must du Maven vorher installieren und in Eclipse verlinken. Das integrierte macht manchmal Probleme. Anschließend kannst du den WindowBuilder installieren (Details auf der Plugin Seite) und dann mit einem Rechtsklick auf die Klasse „JgRaspiGpioApp.java“ im Menü über „Open with -> WindowBuilder Editor“ die grafische Bearbeitung starten.

      Lg Marcus

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert