Freitag, 1. Mai 2015

Raspberry Pi - Java

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:
  1. Pi4J Download
  2. Windows/ Linux Entwicklungsumgebung
  3. Erstes Programm schreiben
  4. Publishen auf den Pi
  5. 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.

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.

  1. Neues Java Projekt erstellen 
    Quelle: Eigene Darstellung Eclipse
  2. 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
  3. 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
Jetzt ist eure Entwicklungsumgebung aufgesetzt :)

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

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
 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.

Quelle: Eigene Darstellung

Wenn wir keine Internetverbindung haben, leuchtet die LED Leuchte.

Das wars auch schon :) Ich hoffe euch hat das kleine Tutorial gefallen



Keine Kommentare:

Kommentar veröffentlichen