Java auf dem Raspberry Pi
Wie gehts und was sollte man beachten?
Wichtig ist erstmal, die Installation von Java. Perfekt, im Raspian ist Java bereits enthalten.
Wenn ihr also das Image von https://www.raspberrypi.org/downloads/ bereits auf eurem Raspi installiert habt ist in diesem Schritt nichts mehr zu tun :)
Installationsschritte:
- Pi4J Download
- Windows/ Linux Entwicklungsumgebung
- Erstes Programm schreiben
- Publishen auf den Pi
- Ausführen des Java Programms
1 Pi4J
Bei dem Projekt pi4J handelt es sich um eine freundliche und objektorientierte I/O API für die Steuerung der GPIOs des Raspberry Pi.
Für die Installation auf dem Pi braucht ihr nur einige wenige Befehle:
curl -s get.pi4j.com | sudo bash
Hier werden alle benötigten Pakete für den Pi heruntergeladen und installiert.
Wer sich die Details anschauen möchte kann diese unter http://pi4j.com/install.html finden.
Auf dem Pi können jetzt Java Programme dei GPIOs ansteuern.
Wer sich die Details anschauen möchte kann diese unter http://pi4j.com/install.html finden.
Auf dem Pi können jetzt Java Programme dei GPIOs ansteuern.
2 Entwicklungsumgebung
Ob Windows, MacOS oder Linux, als kostenfreie Entwicklungsumgebung für Java bietet sich Eclipse an. Herunterladen könnt ihr Eclipse unter eclipse-ide-java-developers.
Nach dem Download einfach die ZIP Datei entpacken und die Eclipse.exe starten.
Um in Eclipse auch die benötigten Bibliotheken verwenden zu können, müsst ihr die JAR Dateien runterladen http://pi4j.com/download.html dort pi4j-1.0.zip anklicken und runterladen.
- Neues Java Projekt erstellen
Quelle: Eigene Darstellung Eclipse - Zip Datei entpacken und die JAR Dateien zu eurem Java Projekt hinzufügen. Am besten in einen Ordner mit dem Namen "lib".
Quelle: Eigene Darstellung Eclipse - Rechtsklick auf euer Projekt > build path > configure build path. Dort mit Add JARs euer Projekt auswählen und den Inhalt des lib Ordners hinzufügen
Quelle: Eigene Darstellung Eclipse
3 Erstes Programm
Für einen ersten Test wird nicht viel benötigt. Eine kleine LED reicht aus.
Folgender Code aktiviert eure LED sowie keine Internetverbindung bei dem Raspberry möglich ist.
Die LED muss an den GPIO_0 (Null) angeschlossen werden. Zusätzlich die Stromversorgung (in meinem Fall 3,3V) und GND (-).
Das Ganze sollte jetzt so aussehen
Folgender Code aktiviert eure LED sowie keine Internetverbindung bei dem Raspberry möglich ist.
Die LED muss an den GPIO_0 (Null) angeschlossen werden. Zusätzlich die Stromversorgung (in meinem Fall 3,3V) und GND (-).
Das Ganze sollte jetzt so aussehen
Quelle: Eigene Darstellung |
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import com.pi4j.io.gpio.GpioController;
import com.pi4j.io.gpio.GpioFactory;
import com.pi4j.io.gpio.GpioPinDigitalOutput;
import com.pi4j.io.gpio.PinState;
import com.pi4j.io.gpio.RaspiPin;
/**
* This example code demonstrates how to perform simple state control of a GPIO
* pin on the Raspberry Pi.
*
*/
public class ControlGpioExample {
public static void main(String[] args) throws InterruptedException {
ControlGpioExample controller = new ControlGpioExample();
System.out.println("<--Pi4J--> GPIO Control Example ... started.");
// create gpio controller
final GpioController gpio = GpioFactory.getInstance();
// provision gpio pin #01 as an output pin and turn on
final GpioPinDigitalOutput pin = gpio.provisionDigitalOutputPin(
RaspiPin.GPIO_00, "MyLED", PinState.HIGH);
int i = 3;
while (i > 0) {
i--;
controller.alarm(pin);
Thread.sleep(3000);
}
gpio.shutdown();
}
private void alarm(GpioPinDigitalOutput pin) {
boolean inetAvailable = this.isInternetAvailable();
System.out.println("Internet is : " + inetAvailable);
if (inetAvailable) {
// turn off gpio pin #01
pin.high();
System.out.println("--> GPIO state should be: OFF");
} else {
// set shutdown state for this pin
pin.setShutdownOptions(true, PinState.LOW);
pin.low();
System.out.println("--> GPIO state should be: ON");
}
}
private boolean isInternetAvailable() {
Socket socket = null;
boolean reachable = false;
try {
String host = "google.de";
System.out.println("try to ping " + host);
socket = new Socket(host, 80);
reachable = true;
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (socket != null)
try {
socket.close();
} catch (IOException e) {
}
}
return reachable;
}
}
In Anlehnung an: http://pi4j.com/example/control.html
Das Programm könnt ihr in Eclipse mit Rechtsklick auf euer Projekt und EXPORT als runnable JAR File exportieren.
Quelle: Eigene Darstellung |
4 Publishen auf den Pi
Jetzt könnt ihr es mit Hilfe von WinSCP (WinSCP) auf euren Raspi übertragen.5 Programm ausführen
In der Konsole in den Ordner navigieren in dem ihr die JAR Datei abgelegt habt.
und dann wie folgt aufrufen
und dann wie folgt aufrufen
java -jar DATEINAME.jar
Als Ergebnis solltet so aussehen. Die Exception ist an dieser Stelle absichtlich, weil wir sehen wollen ob wir eine Internetverbindung haben.
Wenn wir keine Internetverbindung haben, leuchtet die LED Leuchte.
Das wars auch schon :) Ich hoffe euch hat das kleine Tutorial gefallen
Das wars auch schon :) Ich hoffe euch hat das kleine Tutorial gefallen
Keine Kommentare:
Kommentar veröffentlichen