• Erste Schritte
  • Hardware & GPIO
  • Projekte
  • Software
    • Webserver
  • Arduino & ESP8266
  • Hausautomatisierung
  • Sonstiges
    • News
Facebook Twitter YouTube
Tutorials for Raspberry Pi Tutorials for Raspberry Pi
  • Einstieg
    • Erste Schritte
      • Raspberry Pi 3 Einstieg - Starter KitWas brauche und wie starte ich? – Raspberry Pi Einstieg
    • Einrichtung
      • microsd_karte_menuRaspbian Betriebssystem auf eine SD Karte flashen – Einfach & Schnell
      • wlanbluetooth_menuWLAN und Bluetooth einrichten – Raspberry Pi 4
      • wifi_menuWLAN Stick installieren und einrichten – Alternative
      • bash_menuSSH Zugriff einrichten via Putty – Kommandozeilen Zugriff
      • rdp_menuRemotedesktop Verbindung aufbauen – Fernsteuerung
    • Einsteiger Projekte
      • Sinnvolles Raspberry Pi Zubehör
      • 15 Raspberry Pi Projekte für Anfänger
      • Ampelschaltung mit GPIOs
      • GPIOs mit Port Expander erweitern
      • Elektronischer Würfel
      • 13 tolle Projekte für Kinder und Jugendliche
      • Roboter selber bauen
      • In Visual Studio Code mit C++ programmieren
      • Wünsch dir ein Tutorial
    • Programmieren lernen
      • Teil 1: Einführung
      • Teil 2: GPIOs steuern
      • Teil 3: GUI erstellen
      • Teil 4: PWM
      • C# GUI Apps entwickeln
  • Hardware & GPIO
    • 50 der wichtigsten Raspberry Pi Sensoren und Module – Aufgelistet mit Links zu den TutorialsRaspberry Pi Sensoren
    • Beliebte Tutorials
      • Raspberry Pi Luftfeuchtigkeit/Temperatur SensorLuftfeuchtigkeit und Temperatur messen
      • Raspberry Pi WS2801B RGB LED Streifen anschließen und steuernWS2801 RGB LED Streifen anschließen und steuern
      • Raspberry Pi Funksteckdosen (433Mhz)Raspberry Pi Funksteckdosen (433Mhz)Funksteckdosen (433MHz) steuern
      • Raspberry Pi Relais ModulRaspberry Pi: Relais-Schalter per GPIO steuern
      • Raspberry Pi Servo MotorRaspberry Pi Servo Motor Steuerung
      • Amazon-Alexa-deutsch-auf-dem-Raspberry-Pi-installierenAmazon Alexa (Deutsch) auf dem installieren
      • Entfernung messen mit Ultraschallsensor HC-SR04 – Raspberry PiEntfernung messen mit Ultraschallsensor HC-SR04
      • 71-M-PU7vML.-S3L1500-Raspberry Pi’s über 433 MHz Funk kommunizieren
      • Raspberry Pi PIR Motion SensorBewegungsmelder PIR anschließen und steuern
      • Raspberry Pi USB Boot per Stick oder SSD Festplatte einrichtenUSB Boot per Stick oder SSD Festplatte
      • Analog
        • Raspberry Pi MCP3008 ADCMCP3008: Am Raspberry Pi analoge Signale auslesen
        • Raspberry Pi Gas Sensor MQ-2Raspberry Pi Gas Sensor (MQ-X) konfigurieren und auslesen
        • Raspberry Pi PulsmesserRaspberry Pi Pulsmesser: Herzfrequenz messen
        • Joystick am Raspberry Pi benutzen (mit MCP3008)Joystick am Raspberry Pi benutzen (mit MCP3008)
        • infrarot sharp distance senserInfrarot Abstandsmessung mit dem Raspberry Pi
        • Raspberry Pi Drehregler - Rotary EncoderKY040 Drehregler als Lautstärkeregler für den Raspberry Pi
        • Easpberry Pi Soil SensorBodenfeuchtigkeit mit dem Raspberry Pi messen
        • Raspberry Pi KeypadRaspberry Pi Keypad anschließen – Codeschloss
        • Raspberry Pi door sensorÜberwachung von Fenstern und Türen mit dem Raspberry Pi und Reed-Relais
        • Raspberry Pi Fotowiderstand HelligkeitssensorFotowiderstand (Helligkeitssensor) am Raspberry Pi
        • Raspberry Pi Waage selber bauen (mit Gewichtssensor HX711)Raspberry Pi Waage selber bauen (mit Gewichtssensor HX711)
      • Funk
        • 71-M-PU7vML.-S3L1500-Raspberry Pi’s über 433 MHz Funk kommunizieren lassen
        • Remote Control Raspberry Pi 433Mhz Radio TransmitterRaspberry Pi mit 433Mhz Funksender fernsteuern
        • Raspberry Pi Funksteckdosen (433Mhz)Raspberry Pi Funksteckdosen (433Mhz)Raspberry Pi Funksteckdosen (433MHz) steuern
        • Raspberry Pi MiFlora - Xiaomi Pflanzensensor in OpenHAB einbindenMiFlora – Xiaomi Pflanzensensor ins Smart Home einbinden
        • Raspberry Pi RFID RC522 TüröffnerRaspberry Pi RFID RC522 Tags auslesen (NFC)
        • Funkkommunikation zwischen Raspberry Pi's und Arduinos (2.4 GHz)Funkkommunikation (2.4 GHz): Arduino & Raspberry Pi
        • Raspberry Pi Radio ReceiverRaspberry Pi als Radioempfänger benutzen
        • Raspberry Pi Xbox 360 Wireless ControllerRaspberry Pi mittels Xbox 360 Controller steuern
        • Raspberry Pi GSM Modul - Huawei Internet SticksRaspberry Pi GSM Modul – Mobiles Internet
        • Raspberry Pi Bluetooth DatentransferRaspberry Pi Bluetooth Datentransfer zum Smartphone
      • Infrarot & Laser
        • Raspberry Pi Infrarot FernbedienungRaspberry Pi: Per IR Remote Befehle ausführen
        • infrarot sharp distance senserInfrarot Abstandsmessung mit dem Raspberry Pi
        • Raspberry Pi Laser Lichtschranke für weite DistanzenRaspberry Pi Laser Lichtschranke für weite Distanzen
        • Infrarot Raspberry Pi FernbedienungInfrarot Steuerung einrichten
        • Raspberry Pi Infrarot Lichtschranke bauen und Geschwindigkeit messenRaspberry Pi Infrarot Lichtschranke bauen
        • Raspberry Pi Fotowiderstand HelligkeitssensorFotowiderstand (Helligkeitssensor) am Raspberry Pi
      • Temperatur & Navigation
        • Raspberry Pi Luftfeuchtigkeit/Temperatur SensorRaspberry Pi: Luftfeuchtigkeit und Temperatur messen
        • Measuring Temperature with a Raspberry Pi Temperature Sensor (1-Wire)Raspberry Pi Temperatursensor (1-Wire): Temperatur messen
        • Raspberry Pi BMP180 SensorRaspberry Pi und I2C Luftdrucksensor BMP180
        • Raspberry Pi RTC Real Time ClockReal Time Clock Modul steuern
        • Rotation und Beschleunigung mit dem Raspberry Pi messenRotation und Beschleunigung mit dem Raspberry Pi messen
        • Raspberry Pi GPS ModulRaspberry Pi GPS Ortungs- / Navigationsgerät bauen
        • Raspberry Pi Kompass selber bauenRaspberry Pi Kompass selber bauen (HMC5883L)
        • Kontaktlosen Infrarot-Temperatursensor MLX90614 am Raspberry Pi auslesenMLX90614 – Kontaktlos Temperaturen messen
      • Displays
        • Raspberrry Pi HD44780 I2CHD44780 LCD Display per I2C ansteuern
        • Raspbery Pi LCD DisplayRaspberry Pi LCD Display: 16×2 Zeichen anzeigen
        • DisplayTipps & Tricks zum offiziellen 7″ Raspberry Pi Touchscreen
        • Raspberry Pi TouchscreenTestbericht zum 7″ Raspberry Pi Touchscreen Display
        • LCD Touch Display (3.2″) am Raspberry PiLCD Touch Display (3.2″) am Raspberry Pi
        • tft lcd touch displayRaspberry Pi LCD Touch Display Teil 2 – Anpassungen
        • Raspberry Pi LED MAX7219 Dot Matrix – ProjektübersichtRaspberry Pi LED Matrix – Projektübersicht
        • Raspberry Pi 7 Segment Anzeige Kathode mit MAX7219Raspberry Pi: 7 Segment Anzeigen mit MAX7219 steuern (Kathode)
        • 7 Segment Anzeige (Anode) mit MAX7219 MAX7221 und Raspberry Pi7 Segment Anzeige mit MAX7219 am Raspberry Pi (Anode)
        • Raspberry Pi Tablet Raspad TestberichtRaspberry Pi Tablet „Sunfounder RasPad“ Testbericht
      • Motoren & Sonstige
        • Raspberry Pi Stepper Motor Control with L293D / ULN2003ARaspberry Pi Schrittmotor ansteuern
        • Raspberry Pi Servo MotorRaspberry Pi Servo Motor Steuerung
        • Raspberry Pi PCA9685 mehrere Servos gleichzeitig steuernMehrere Servo Motoren per Raspberry Pi steuern
        • Raspberry Pi PIR Motion SensorBewegungsmelder PIR anschließen und steuern
        • How to use a Raspberry Pi Fingerprint Sensor for AuthenticationRaspberry Pi Fingerprint Sensor zur Authentifizierung nutzen
        • Raspberry Pi Akku AdapterRaspberry Pi mit Akkus/Batterien betreiben
        • Entfernung messen mit Ultraschallsensor HC-SR04 – Raspberry PiEntfernung messen mit Ultraschallsensor HC-SR04
        • Raspberry Pi WS2801B RGB LED Streifen anschließen und steuernWS2801 RGB LED Streifen anschließen und steuern
        • Raspberry Pi WS2812 RGB LED StripWS2812 RGB LED Streifen per Raspberry Pi steuern
        • Raspberry Pi Überwachungskamera LivestreamÜberwachungskamera Livestream einrichten
        • NoIRAufnahmen mit dem offiziellen Kamera Modul
        • Raspberry Pi Zero - establishing an Ethernet connection (ENC28J60)Raspberry Pi Zero – Ethernet Verbindung
  • Software
    • Webserver Installation
      • apache2_menu25Teil 1 – Apache2
      • php_menu25Teil 2 – PHP 5
      • mysql_menu25Teil 3 – MySQL
      • phpmyadmin_menu25Teil 4 – phpMyAdmin
      • ftp_menu25Teil 5 – FTP Server
      • dns_menu25Teil 6 – DNS Server via No-IP
      • home_menu25Homeverzeichnis ändern
      • share_25Samba Server: Dateien im Netzwerk teilen
      • nodejs_menu25Node.js Webserver installieren und GPIOs schalten
      • ssl_menu25SSL Zertifikat kostenlos mit Let’s Encrypt
      • wordpress_25Eigenen WordPress-Server einrichten
      • cloud-25Nextcloud auf dem Raspberry Pi installieren
    • Entertainment
      • led_menu25Raspberry Pi Ambilight für alle Geräte mit OSMC selber bauen
      • amazon_menu25Amazon Alexa (Deutsch) auf dem Raspberry Pi installieren
      • controller_25Raspberry Pi RetroPie – Spielekonsole selber bauen
      • kodi_menu25Mediencenter Raspbmc als SmartTV mit dem Raspberry Pi
      • android_25Android TV Box zum selber bauen
      • apple-2316234_640Raspberry Pi als AirPlay-Empfänger
      • jukebox_menu25Raspberry Pi als Jukebox (Spotify, Soundcloud, TuneIn, uvm.)
      • steam_25Steam Spiele streamen
      • minecraft_menu25Raspberry Pi Minecraft Server
      • youtube_25YouTube Live Streaming einrichten
      • qr-code-tutorials-raspberrypi.de_25Raspberry Pi QR / Barcode Scanner
    • Fernsteuerung
      • rdp_menuRaspberry Pi Remotedesktop Verbindung
      • ssh_menu25SSH Zugriff einrichten via Putty (Windows)
      • vnc_menu25Raspberry Pi mittels VNC fernsteuern
      • welcome_menu25SSH Terminal Begrüßung ändern
      • telegram1_menu25Telegram Messenger auf dem RaspberryPi
      • telegram2_menu25Mit Telegram Messenger Raspberry Pi steuern
      • bluet_menu25Raspberry Pi Bluetooth Datentransfer zum Smartphone
      • alexa_voice_25Eigenen Raspberry Pi Alexa Skill bauen
      • microphone_25Sprachsteuerung selber bauen
      • mqtt_25MQTT Broker/Client Funkkommunikation
      • mail_25Vom Raspberry Pi Emails senden
      • twitter_25Per Twitter Bot Nachrichten posten
    • Weitere
      • loggen_menu25Sensordaten mit ThingSpeak loggen und auswerten
      • mysql_datalogger25Per lokaler MySQL Datenbank zum Raspberry Pi Datenlogger
      • opencv_menu25OpenCV auf dem Raspberry Pi installieren
      • arduino_menu30tWiringPi installieren & Pinbelegung (Raspberry Pi)
      • radio_menu25Raspberry Pi als Radio Sendestation
      • win10_menu25Windows 10 IoT auf dem Raspberry Pi installieren
      • printer_25Drucker einrichten und per Knopfdruck Bilder drucken
      • gsm_menu25Raspberry Pi GSM Modul – Mobiles Internet (LTE, 3G, UMTS)
      • autostart_menu25Autostart: Programm automatisch starten lassen
      • machine-learning-25Raspberry Pi Machine Learning erlernen
  • Projekte
      • roboter_menu30tRoboter
        • Raspberry Pi Roboter ProjektRaspberry Pi Roboter Projektübersicht
        • Raspberry Pi Roboter Bausatz fertigTeil 1: Zusammenbau
        • Raspberry Pi Roboter - Linien folgenTeil 2: Linien folgen lassen
        • Raspberry Pi Roboter per Infrarot Fernbedienung steuernTeil 3: Per Infrarot Fernbedienung steuern
        • Raspberry Pi Roboter: Ultraschall AutopilotTeil 4: Automatisch Hindernissen ausweichen
        • Raspberry Pi Roboter der eigenen Stimme folgen lassenTeil 5: Der eigenen Stimme folgen lassen
        • Raspberry Pi Roboter mit Xbox 360 Controller fernsteuernTeil 6: Mit Xbox 360 Controller Roboter fernsteuern
        • Raspberry Pi Robot Arm 6DOF6-Gelenkigen Roboter Arm am Raspberry Pi betreiben (6 DOF)
      • led_menu30LED Matrix
        • Raspberry Pi LED MAX7219 Dot Matrix – ProjektübersichtMAX7219 LED Matrix – Projektübersicht
        • 8×8 LED Dot Matrix Parts8×8 LED Matrix – Zusammenbau und Installation
        • Raspberry Pi Bibliothek für mehrzeilige m x n MAX7219 LED MatrizenBibliothek für mehrzeilige m x n MAX7219 LED Matrizen
        • Graphiken auf mehrzeiligen Raspberry Pi LED Matrizen zeichnenGraphiken auf mehrzeiligen Raspberry Pi LED Matrizen zeichnen
        • Pong auf MAX7219 Matrizen spielen (mit Joystick) – Raspberry PiPong auf MAX7219 Matrizen spielen (mit Joystick)
        • Snake auf Raspberry Pi MAX7219 Matrizen spielenSnake auf Raspberry Pi MAX7219 Matrizen spielen
        • 7 Segment Anzeige (Anode) mit MAX7219 MAX7221 und Raspberry Pi7 Segment Anzeige (Anode) mit MAX7219/MAX7221
        • Raspberry Pi 7 Segment Anzeige Kathode mit MAX7219Raspberry Pi: 7 Segment Anzeigen mit MAX7219 steuern (Kathode)
      • wetterstation_menu30Wetterstation
        • Raspberry Pi Wetterstation mit OpenHAB 2 bauenEigene Raspberry Pi Wetterstation mit OpenHAB 2 bauen
        • Raspberry Pi Luftfeuchtigkeit/Temperatur SensorLuftfeuchtigkeit und Temperatur messen
        • raspberry_pi_thingspeak_daten_loggenSensordaten mit ThingSpeak loggen und auswerten
        • Raspberry Pi BMP180 SensorRaspberry Pi und I2C Luftdrucksensor BMP180
        • Measuring Temperature with a Raspberry Pi Temperature Sensor (1-Wire)Raspberry Pi Temperatursensor (1-Wire): Temperatur messen
        • ESP8266 NodeMCU Außenposten-Wetterstation für den Raspberry PiESP8266 Wetterstation Außenposten für den Raspberry Pi
        • Raspberry Pi Gas Sensor MQ-2Raspberry Pi Gas Sensor (MQ-X) konfigurieren und auslesen
      • arduino_menu30tArduino & ESP8266
        • ESP8266 Microcontroller BoardEinführung & Programmierung des ESP8266 NodeMCU Boards
        • Raspberry Pi + ESP8266 NodeMCU: Per WLAN Daten sendenRaspberry Pi + ESP8266 NodeMCU: Per WLAN Daten senden
        • ESP8266 NodeMCU Außenposten-Wetterstation für den Raspberry PiESP8266 Wetterstation Außenposten für den Raspberry Pi
        • Mit dem NodeMCU ESP8266 433MHz Funksteckdosen steuernMit dem NodeMCU ESP8266 433MHz Funksteckdosen steuern
        • ESP8266 NodeMCU HD44780 LCD Display per I2C steuernNodeMCU ESP8266: HD44780 LCD Display per I2C steuern
        • ESP8266 Grafikdisplay: Am SSD1306 OLED per I2C Bilder & Text anzeigen
        • ESP8266 Google Maps API RoutenplanerESP8266 Google Maps API Routenplaner auf LCD anzeigen
        • 2000px-Arduino_Logo.svgRaspberry Pi und Arduino – Einführung
        • arduino unoArduino und Raspberry Pi miteinander kommunizieren lassen
        • Funkkommunikation zwischen Raspberry Pi's und Arduinos (2.4 GHz)Funkkommunikation zwischen Raspberry Pi’s und Arduinos (2.4 GHz)
        • NodeMCU: ESP8266 mit Solarpanel und Akku mit Strom versorgenNodeMCU: ESP8266 mit Solarzelle und Akku mit Strom versorgen
        • ESP8266 Access Point: Günstigen Wlan Repeater selber bauenESP8266 Access Point: Günstigen Wlan Repeater selber bauen
      • Mini Projekte
        • Raspberry Pi Gewächshaus automatisch selber bauenAutomatisches Raspberry Pi Gewächshaus selber bauen
        • Eigene Raspberry Pi Gartenbewässerung mit Webseite bauenEigene Gartenbewässerung mit Webseite bauen
        • Raspberry Pi Radio StationRaspberry Pi als Radio Sendestation verwenden
        • Raspberry Pi Radio ReceiverRaspberry Pi als Radioempfänger benutzen (Autoradio, Car PC)
        • spotify-logo-primary-horizontal-dark-background-rgbRaspberry Pi als Jukebox (Spotify, Soundcloud, TuneIn, uvm.) – Online Radio
        • Raspberry Pi RetroPie Guide - SNES Classic Spielekonsole selber bauenRaspberry Pi RetroPie Guide – SNES Spielekonsole bauen
        • Android + Raspberry Pi: Funksteckdosen App BedienungRaspberry Pi + Android/iOS: Funksteckdosen per App schalten
        • Indirekte Deckenbeleuchtung selber bauen mit farbigem LED LichtIndirekte Deckenbeleuchtung selber bauen mit farbigem LED Licht
  • Sonstiges
    • Wünsch dir ein Tutorial
    • News
    • Reviews
      • Pi Cap – Kapazitives Raspberry Pi Erweiterungsboard
      • Raspberry Pi Tablet „Sunfounder RasPad“ – Testbericht & Einrichtung
      • Testbericht zum 7″ Raspberry Pi Touchscreen Display
      • CrowPi 2 Testbericht: Laptop & Lern-Kit für Kinder
      • Daten auf dem Wio Terminal LCD Screen anzeigen
    • Raspberry Pi Zero
      • Offizielles 5$ Raspberry Pi Zero Modul vorgestellt
      • Raspberry Pi Zero – Ethernet Verbindung herstellen (ENC28J60)
      • Raspberry Pi: WS2801 RGB LED Streifen anschließen und steuern
  • Hausautomation
    • OpenHAB
      • steckdose_25Sonoff S20 Wifi Steckdose steuern
      • wireless_25Funksteckdosen (433 MHz) schalten
      • schalter_25Relais steuern (Rollladen, Lichter, etc.)
      • wetterstation_menu30Wetterstation mit OpenHAB 2 bauen
      • ws28_25WS28xx RGB LED Streifen steuern
      • touchscreen_25Touchscreen Panel bei Näherung aktivieren
      • mqtt_25MQTT Datenabfrage: Raspberry Pi an ESP8266
      • spotify_25Remote Spotify Player im Smart Home
      • heizung_25eQ-3 Thermostat im Smart Home
    • Einführung
      • Raspberry Pi Smart Home OpenHAB installierenOpenHAB installieren & konfigurieren
      • Home Assistant auf dem Raspberry Pi – Erste Schritte
    • ESP8266 NodeMCU
      • esp8266_25Einführung & Programmierung
      • arduino_25ESP8266: Arduino IDE installieren
      • lcd_25NodeMCU HD44780 LCD
      • battery_25Batteriebetrieb via Deep-Sleep
      • wifi_menuPer WLAN Daten senden
      • wetterstation_menu30Wetterstation Außenposten
      • maps_25Google Maps Routenplaner
      • wireless_25NodeMCU Funksteckdosen steuern
      • mail_25Vom NodeMCU Emails versenden
      • rgb_25WS2812B LEDs am Smartphone steuern
      • solar_25ESP8266 Stromversorgung mit Solarzelle
    • Überwachung
      • Aufnahmen mit dem offiziellen Kamera Modul des Raspberry Pi
      • Raspberry Pi: Überwachungskamera Livestream einrichten
      • mailbox_25Briefkasten Sensor – Email Benachrichtigung bei neuer Post
      • Raspberry Pi Überwachungskamera mit Webcam betreiben
      • Überwachung von Fenstern und Türen mit dem Raspberry Pi und Reed-Relais
      • ESP32 Cam Livestream Tutorial für Kamera Modul
    • Raspberry Pi + Android: Benachrichtigungen von Bewegungsmelder
    • Raspberry Pi + Android/iOS: Funksteckdosen per App schalten
    • Raspberry Pi + Android: Schwenkbarer Kamera-Livestream
      • Smart Home
        • Amazon Alexa (Deutsch) auf dem Raspberry Pi installieren
        • Raspberry Pi Funksteckdosen (433MHz) steuern – Tutorial
        • Raspberry Pi Sprachsteuerung selber bauen (Hausautomatisierung)
Tutorials for Raspberry Pi Tutorials for Raspberry Pi
Home»Software»Raspberry Pi: Java 11 mit Spring Boot installieren und GPIOs steuern

Raspberry Pi: Java 11 mit Spring Boot installieren und GPIOs steuern

Facebook Twitter LinkedIn Tumblr Email Reddit
Raspberry-Pi-Java-11-Spring-Boot-installieren-GPIOs
Teilen
Facebook Twitter LinkedIn Email Tumblr Reddit Telegram WhatsApp

Java ist die mit am häufigsten verwendete Programmiersprache weltweit. Auch auf dem Raspberry Pi läuft Java problemlos. Mittels einer Erweiterung können wir ebenfalls die GPIOs steuern und auslesen. Dazu nutzen wir noch Spring-Boot. So ist es uns möglich, mit sehr wenig Aufwand einen kompletten Webserver mit API’s zu erstellen, der unseren Pi quasi fernsteuert.

Wir werden in diesem Tutorial zunächst Java 11 mit Maven einrichten. Anschließend schauen wir uns die IDE’s Visual Studio Code sowie IntelliJ IDEA an. Danach erstellen wir zunächst eine einfache Web-API, welche wir anschließend so erweitern, dass wir über den Webserver auch GPIOs steuern können. Dafür haben wir einen kleinen Testaufbau vorbereitet.

 

Zubehör

Um dem Tutorial folgen zu können, brauchen wir folgendes Zubehör:

  • einen Raspberry Pi mit mindestens 4GB RAM
  • 32GB+ SD Karte
  • eine LED
  • 330Ω Vorwiderstände
  • optional: Breadboard

Dieser Kurz ersetzt keine grundlegenden Java oder Spring Boot Kenntnisse. Daher eignet sich ein Online Java Kurs zum Anfang sehr gut, sowie der Einstieg in Spring Boot.

 

Der Raspberry Pi sollte bereits mit Raspbian OS laufen, welches wir einfach auf die SD-Karte flashen können. Falls du am Raspberry Pi remote arbeiten willst, kannst du eine Remotedesktopverbindung aufbauen.

 

Aufbau

Raspbery Pi GPIO Belegung
GPIO Belegung

Um GPIOs schalten zu können bzw. auszulesen, erstellen wir einen kleinen Testaufbau. Du kannst aber im Prinzip jeden anderen GPIO nehmen. Dazu passt du später einfach den Code mit den GPIO Nummern an.

Zunächst einmal erstellen wir eine folgende Schaltung auf unseren Breadboard:

An GPIO 17 wird das längere Ende einer LED angeschlossen. Das andere Ende kommt über einen 330 Ω Widerstand an GND (Pin 6). Den Taster schließen wir an 3.3V (Pin 1 oder Pin 17)  sowie GPIO 22 an. Welche Richtung ist dabei egal.

Raspberry Pi LED Button Test Circuit

 

 

Auf dem Raspberry Pi Java 11 installieren

Fangen wir mit der Installation von Java 11 und Maven an, die nicht auf allen Betriebssystemen vorinstalliert sind. Dazu updaten wir vorher die Paketquellen. Öffne ein Terminal (oder logge dich per SSH ein) und gib folgendes ein:

sudo apt update
sudo apt install default-jdk maven --yes

Danach prüfen wir, ob Java richtig installiert wurde und ob es auch Version 11 ist:

java -version

Hier sollte so etwas stehen wie:

openjdk version "11.0.13" 2021-10-19
OpenJDK Runtime Environment (build 11.0.13+8-post-Raspbian-1deb11u1)
OpenJDK Server VM (build 11.0.13+8-post-Raspbian-1deb11u1, mixed mode)

Die pigpio Bibliothek ist auf den neueren Raspberry Pi OS Versionen bereits enthalten und muss nicht manuell installiert werden.

 

Optional: Visual Studio Code für Java nutzen

Um unsere Anwendung zu bearbeiten, können wir prinzipiell jeden Editor nehmen. Eine IDE vereinfacht allerdings viele Aufgaben. Die Installation von VS Code ist denkbar einfach. Nach der Installation öffnen wir auf der linken Seite den Extensions Tab und suchen nach „Extensions Pack for Java„:

Visual Studio Code Java Extension Pack

Das Java Extension Pack enthält einige gebündelte Erweiterungen, die für die Java Entwicklung nützlich sind. Microsoft empfiehlt außerdem noch das Spring Boot Extension Pack.

Gehe anschließend zurück in den Explorer Tab. Hier werden wir gleich unser Projekt öffnen.

 

Optional: IntelliJ IDE verwenden

Neben Visual Studio ist IntelliJ IDEA die beliebteste und beste IDE für Java Anwendungen. In der Community Edition kostet sie zudem nichts. Zudem gibt es IntelliJ sowohl für Windows, als auch für Mac und Linux. Daher können wir IntelliJ auch auf dem Raspberry Pi installieren und benutzen. Allerdings ist die Leistung nicht besonders gut, da IntelliJ IDEA relativ viele Ressourcen verbraucht. Daher empfehle ich einen anderen Editor auf dem Raspberry Pi.

Falls du dennoch IntelliJ nutzen willst, öffne die Website auf dem Raspberry Pi und lade das Community-Paket herunter: https://www.jetbrains.com/idea/download/

IntelliJ Java IDE for Linux

Das heruntergeladene Archiv (.tag.gz) entpacken wir (2x Rechtsklick -> Extract Here, alternativ mit tar -xvzf) und öffnen den extrahierten Ordner. Darin ist ein Ordner mit dem Namen bin, in dem sich die idea.sh Datei befindet. Diese öffnen wir per Doppelklick, wodurch sich IntelliJ öffnet. Nachdem du die AGB akzeptierst hast, dauert es einen Moment, bis sich die IDE öffnet. Danach kannst du ein neues Projekt starten oder ein existierendes Projekt importieren. Damit fahren wir fort.

Raspberry Pi IntelliJ GUI

Tipp: Sollte sich nichts, hilft es, die Anwendung per Terminal zu starten und die Fehlermeldung anzusehen. Bei „Out of Memory“ Fehlern, hilft unter Umständen bereits ein Reboot des Raspberry Pi’s. Alternativ kann auch der verfügbare RAM Speicher für die JVM erhöht werden.

 

Erstes Java Spring Boot Projekt erstellen

Wir können unser Projekt einerseits von Grund auf aufbauen, was etwas mehr Aufwand ist. Oder wir nutzen den Spring Initializr, der uns ein fertiges Beispielprojekt erstellt, welches wir dann anpassen können. Gehe dazu am Raspberry Pi auf https://start.spring.io/

Hier geben wir dem Maven-Projekt einen Namen und stellen die Version etc. ein. Hier ein Beispiel:

Spring Boot Inititializer - Maven Project

Ein Klick auf Generate wird eine demo.zip herunterladen. Entpacke die Datei z.B. in das Home-Verzeichnis. Anschließend können wir den Ordner in unserer IDE auswählen und den Projektordner öffnen (Trust Project).

Zunächst führen wir ein maven compile aus (unten links in VS Code):

Raspberry Pi VS Code Maven Compile

Nun können wir die Anwendung auch bereits starten. Per Rechtsklick auf die DemoApplication.java Datei -> Run Java startet das Projekt. Allerdings macht das Programm noch nicht viel. Im Log sehen wir aber, dass die Spring Boot Anwendung erfolgreich gestartet ist:

[INFO] Attaching agents: []

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v2.6.2)

...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  17.952 s

Alternativ kannst du über den Run-Tab eine launch.json Datei erstellen und dort deine Konfiguration und Debugging-Einstellungen hinterlegen.

VS Code Run Java Application

Viel macht die Java Anwendung aber bisher nicht. Das werden wir in den nächsten Schritten ändern.

 

Java Anwendung am Raspberry Pi per Kommandozeile starten

Solltest du keine IDE verwenden oder aus anderen Gründen das Terminal bevorzugen, kannst du die Anwendungen auch so kompilieren. Dazu kannst du im Projekt auch folgendes zum Installieren der Maven Pakete und starten der Anwendung aufrufen:

mvn compile
mvn spring-boot:run

Falls deine Anwendung später vollständig ist, kannst du auch eine .jar Datei daraus erstellen. Diese befindet sich anschließend im target Ordner,

mvn package

Diese kann dann mittels java -jar gestartet werden.

 

Projekt kompilieren und als Webserver API nutzen

Wir fangen damit an, einen öffentlichen REST Endpunkt zu erstellen. Bevor wir aber eine Datei erstellen und die Anwendung starten können, fehlen uns noch Abhängigkeiten. Um diese zu installieren, öffnen wir die pom.xml Datei und fügen innerhalb der <dependencies> ... </dependencies> Folgendes am Ende hinzu:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

Anschließend müssen wir diese Abhängigkeit noch importieren. Dies geht wieder in der Sidebar unter Maven -> install.

Jetzt fügen wir unserer Raspberry Pi Java Anwendung einen Controller hinzu. Erstelle einen neuen Ordner controller und darin eine Datei mit dem Namen GpioController.java

Spring Boot Raspberry Pi GpioController Class

Die Datei bekommt folgenden Inhalt:

package com.example.demo.controller;

import org.springframework.web.bind.annotation.*;
@RestController
public class GpioController {
    
    @GetMapping("/read/{number}")
    public Integer readGPIO(@PathVariable Integer number){
        return number;
    }
   
}

Nun kannst du die DemoApplication.java Datei wieder ausführen. In der Konsole siehst du jetzt die Logs, allerdings läuft die Anwendung weiter. Denn nun wartet unser Server auf eingehende Verbindungen. Öffne den Browser auf dem Raspberry Pi und rufe folgende URL auf:

http://localhost:8080/read/25

Die Zahl 25 kannst du natürlich durch eine beliebige Nummer ersetzen. Als Ergebnis bekommen wir unsere Zahl angezeigt.

Spring Boot Simple Server Response

Übrigens: Wenn du den Standardport (8080) ändern willst, kannst du dies in der resources/application.properties Datei: server.port=8081

 

GPIOs per Java Code am Raspberry Pi steuern

Nun aber zum eigentlich interessanten Teil: Wir wollen die GPIO Pins des Raspberry Pi’s steuern. Dazu brauchen wir eine externe Bibliothek. Wir nutzen hierfür Pi4J. Die Version v2 ist mit Java 11 und kann als Maven Dependency eingebunden werden.

Dazu bearbeiten wir wieder die pom.xml und ändern sie wie folgt. Anschließend führen wir noch mvn clean install aus.

XHTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.2</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>11</java.version>
        <pi4j.version>2.1.1</pi4j.version>
 
        <!-- BUILD PLUGIN VERSIONS -->
        <exec-maven-plugin.version>1.6.0</exec-maven-plugin.version>
        <maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
 
 
        <!-- include Pi4J Core -->
        <dependency>
            <groupId>com.pi4j</groupId>
            <artifactId>pi4j-core</artifactId>
            <version>${pi4j.version}</version>
        </dependency>
 
        <!-- include Pi4J Plugins (Platforms and I/O Providers) -->
        <dependency>
            <groupId>com.pi4j</groupId>
            <artifactId>pi4j-plugin-raspberrypi</artifactId>
            <version>${pi4j.version}</version>
        </dependency>
        <dependency>
        <groupId>com.pi4j</groupId>
            <artifactId>pi4j-plugin-pigpio</artifactId>
            <version>${pi4j.version}</version>
        </dependency>
 
    </dependencies>
 
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <!-- JAVA COMPILER -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>${maven-compiler-plugin.version}</version>
                <configuration>
                    <release>${java.version}</release>
                    <showDeprecation>true</showDeprecation>
                    <showWarnings>true</showWarnings>
                    <verbose>false</verbose>
                </configuration>
            </plugin>
 
            <!-- DEFAULT JAR EXECUTABLE CLASS -->
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>${exec-maven-plugin.version}</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>java</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <executable>java</executable>
                    <arguments>
                        <argument>--module-path</argument>
                        <argument>${project.build.directory}/distribution</argument>
                        <argument>--module</argument>
                        <argument>com.pi4j.example/com.pi4j.example.MinimalExample</argument>
                    </arguments>
                </configuration>
            </plugin>
 
            <!-- BUILD THE FINAL JAR FILE IN THE /target/distribution PATH -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.1.2</version>
                <configuration>
                    <outputDirectory>${project.build.directory}/distribution</outputDirectory>
                </configuration>
            </plugin>
 
            <!-- COPY ANY RUNTIME SCRIPTS TO THE /target/distribution PATH  -->
            <plugin>
                <artifactId>maven-antrun-plugin</artifactId>
                <version>1.8</version>
                <executions>
                    <execution>
                        <id>copy</id>
                        <phase>package</phase>
                        <configuration>
                            <target>
                                <!-- <copy todir="${project.build.directory}/distribution" overwrite="true" flatten="true">
                                    <fileset dir="assets" includes="*.sh" ></fileset>
                                </copy> -->
                                <chmod dir="${project.build.directory}/distribution" perm="ugo+rx" includes="**/*.sh"/>
                            </target>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
 
            <!-- DOWNLOAD RUNTIME DEPENDENCIES -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>process-sources</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/distribution</outputDirectory>
                            <includeScope>runtime</includeScope>
                            <excludeTransitive>false</excludeTransitive>
                            <overWriteReleases>false</overWriteReleases>
                            <overWriteSnapshots>true</overWriteSnapshots>
                            <overWriteIfNewer>true</overWriteIfNewer>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
 
</project>
 

Für den Start benötigen wir Root-Rechte, was behoben werden soll. Daher funktioniert der Aufruf über das VS Code UI nicht und wir müssen die Anwendung per Terminal starten:

sudo mvn spring-boot:run

Die Beispiele kannst du übrigens hier nachsehen.

Das war’s! Drücke nun den Taster und rufe die URL auf:

http://localhost:8080/read/22

Falls du die LED anschalten willst, so ist das die URL:

http://localhost:8080/set/17/true

Und zum Ausschalten:

http://localhost:8080/set/17/false

 

Fazit und Alternativen

Java mit Spring Boot ist einer einfache und starke Methode um API’s zu erstellen. Da wir Java Anwendungen auch auf dem Raspberry Pi laufen lassen können, liegt es nahe, dass wir auch die GPIO’s steuern wollen. Das ist mittels Pi4J möglich und funktioniert auch sehr gut. Allerdings gibt es definitiv einfachere und schlankere Möglichkeiten ein Webinterface für die Raspberry Pi Pins bereitzustellen. Hier bieten sich z.B. Python (mit FastAPI) oder auch Node.JS an. Welche Programmiersprache man bevorzugt liegt natürlich beim Anwender.

Persönlich entwickle ich lieber an einem PC und schiebe dann die JAR Datei auf den Pi, aber das ist Geschmackssache. In diesem Fall wird es am PC auch schwierig, sobald wir die GPIOs testen möchten.

API Java Programmieren lernen Programmierung Visual Studio Code webserver
Teilen Facebook Twitter Pinterest LinkedIn Tumblr Email
Vorheriger BeitragHow-To: Bluetooth Verbindung Zwischen ESP32 und Raspberry Pi’s
Nächster Beitrag How-To: Bluetooth Connection between ESP32’s and Raspberry Pi’s

Ähnliche Beiträge

Mit der Raspberry Pi REST API via Python alle GPIOs steuern

Supercomputer: Wir bauen ein Raspberry Pi Kubernetes Cluster

TensorFlow Lite mit Google Coral TPU am Raspberry Pi 4 nutzen

10.1″ Raspberry Pi 4 Tablet – Review des RasPad 3

Hinterlasse einen Kommentar Antwort abbrechen

Raspberry Pi: 7 Segment Anzeigen mit MAX7219 steuern (Kathode)

Programmieren lernen am Raspberry Pi – Teil 4: LEDs mit PWM dimmen

Raspberry Pi Remotedesktop Verbindung

Raspberry Pi KI: Objekterkennung mittels TensorFlow und Kamera

Eigenen Raspberry Pi Alexa Skill entwickeln und Pi fernsteuern

Raspberry Pi Laser Lichtschranke für weite Distanzen

Blog abonnieren

Abboniere Raspberry Pi Tutorials, um kein Tutorial mehr zu verpassen!

Tutorials for Raspberry Pi
Facebook Twitter YouTube
  • Kontakt & Impressum
  • Unterstützen
  • Datenschutz

Tippe den Suchbegriff oben ein und drücke Enter, um danach zu suchen. Drücke Esc, um abzubrechen.