O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Raspberry Pi programmieren mit Java

Book Description

  • Alle Java-Grundlagen, die Sie für Ihren RPi brauchen
  • Einsatz von Temperatursensoren, Relais, A/D-Wandlern, analogen und digitalen Eingängen und Sensoren
  • Beispielprojekte aus der Hausautomation: Heizungssteuerung, Zeitschaltuhr, Alarmanlage, Audio- und Lichtsteuerung, Füllstandsanzeige, Daten speichern und visualisieren

Der Raspberry Pi ist ein preiswerter und äußerst energiesparsamer Computer in der Größe einer Kreditkarte. In Kombination mit der Programmiersprache Java bietet er eine hervorragende Umgebung für die schnelle Realisierung technischer Ideen und Projekte.

Dieses Buch vermittelt Ihnen anhand vieler anschaulicher Beispiele genau die Java-Kenntnisse, die auf die Hardware des Raspberry Pi und das Linux-Betriebssystem Raspbian zugeschnitten sind.

In jedem Kapitel werden neue Techniken der Java-Programmierung eingeführt, die Sie daraufhin in einem Praxisbeispiel einsetzen:

  • Funktionen für Datum und Zeit: Akkus laden mit zeitgesteuerten Relais und eine Spiegelreflexkamera steuern
  • Digitale Eingänge und Sensoren: Bewegungsmelder, Ultraschallsensor zur Abstandsmessung, Anschluss analoger Sensoren über einen Schmitt-Trigger zur Schwellenwerterkennung
  • Analoge Eingänge und Sensoren: Einsatz externer Analog-Digital-Wandler und deren Ansteuerung über den SPI-Bus, Messen von Temperatur und Lichtstärke
  • Swing zum Erzeugen grafischer Oberflächen mit Java wie z.B. zum Anzeigen von Messwertdiagrammen
  • Messwerte in eine Datei speichern am Beispiel eines Datenloggers
  • Threads zur parallelen Verarbeitung von Daten
  • Reguläre Ausdrücke für die komplexe Suche von Zeichenketten
  • Füllstandsanzeige: Ermitteln des Wasserstandes in einer Zisterne mit einem Distanzsensor und grafische Darstellung als Funktion über die Zeit
  • Mit Java einen eigenen http-Server programmieren und diesen für verschiedene Projekte als Webservice einsetzen: Messwerte abfragen, Heizungssteuerung, Zeitschaltuhr mit Autostart
  • E-Mails mit Java verarbeiten: Alarmanlage, die durch einen Bewegungsmelder ausgelöst wird und eine E-Mail verschickt
  • Einsatz des I²C-Busses am Beispiel eines Temperatursensors
  • Einen Ultraschallsensor über die serielle Schnittstelle RS232 mit dem RPi verbinden
  • Textausgabe mit LCD-Displays
  • Einsatz der Entwicklungsumgebung BlueJ

Das Buch richtet sich nicht nur an Java-Entwickler, sondern auch an Umsteiger von anderen Programmiersprachen wie C oder Python. Im Anhang finden Java-Einsteiger einen umfangreichen Java-Grundlagenkurs.

Table of Contents

  1. Impressum
  2. Einleitung
  3. Kapitel 1: Der Raspberry Pi
    1. 1.1 Das ​Board
      1. 1.1.1 Der ​Prozessor
      2. 1.1.2 Die ​GPU (​Graphics Processing Unit)
      3. 1.1.3 ​Audio
      4. 1.1.4 ​Netzwerk und USB
      5. 1.1.5 ​CSI (​Camera Serial Interface)
      6. 1.1.6 ​DSI (​Display Serial Interface)
      7. 1.1.7 Status-LEDs
      8. 1.1.8 Der Schacht für die ​SD-Karte
      9. 1.1.9 GPIO ​(General Purpose Input and Output)
    2. 1.2 Ein Gehäuse für den Raspberry Pi
    3. 1.3 Das richtige ​Netzteil
    4. 1.4 Tastatur, Maus und ​HDMI-Kabel
    5. 1.5 Die ​SD-Karte
  4. Kapitel 2: Booten und konfigurieren
    1. 2.1 Das ​Betriebssystem auf die ​SD-Karte laden
    2. 2.2 Booten
      1. 2.2.1 Reboot und richtig ​ausschalten
      2. 2.2.2 Mögliche Fehler
    3. 2.3 Der Raspberry Pi und das ​Netzwerk
    4. 2.4 Der ​Desktop
    5. 2.5 Den Raspberry Pi headless betreiben
    6. 2.6 Der Raspberry Pi und das WLAN
    7. 2.7 Ein Backup
  5. Kapitel 3: Linux auf dem Raspberry Pi​
    1. 3.1 Verzeichnisse
    2. 3.2 ​Dateien
    3. 3.3 ​Suchen
    4. 3.4 Berechtigungen
    5. 3.5 Benutzer verwalten
    6. 3.6 Administrator werden
    7. 3.7 Dateien und Verzeichnisse packen
    8. 3.8 ​Softwarepakete verwalten
    9. 3.9 ​Netzwerk
    10. 3.10 ​Prozesse
    11. 3.11 Gemischtes
  6. Kapitel 4: Projektvorbereitung
    1. 4.1 BlueJ installieren
    2. 4.2 Pi4J installieren
    3. 4.3 Pi4J in BlueJ einbinden
    4. 4.4 Das Buchprojekt ​installieren
    5. 4.5 Ein Projekt anlegen und Pi4J testen
    6. 4.6 Ein Überblick über das ​Buchprojekt
    7. 4.7 Das Gertboard
      1. 4.7.1 Das Testprogramm
      2. 4.7.2 Die Klasse TestLED
  7. Kapitel 5: Datum und Zeit
    1. 5.1 Die ​Date-Klasse
      1. 5.1.1 Jede Zeitangabe gehört zu einer ​Zeitzone und einem ​Sprachraum
    2. 5.2 Die Klassen ​Calendar und ​GregorianCalendar
    3. 5.3 Datum und Zeit formatieren und parsen
    4. 5.4 An welchem Wochentag habe ich Geburtstag?
    5. 5.5 Wie viele Arbeitstage liegen zwischen Weihnachten und Silvester?
    6. 5.6 ​Relais schalten
    7. 5.7 Akkus zeitgesteuert laden
    8. 5.8 Zeitsteuerung einer ​Kamera
    9. 5.9 Die ​Navigation in BlueJ
  8. Kapitel 6: Digitale Eingänge und Sensoren
    1. 6.1 Den Raspberry Pi über einen Taster steuern
    2. 6.2 Externe Prozesse über einen Taster steuern
    3. 6.3 Der Bewegungsmelder HC-SR501
    4. 6.4 Licht und Musik über den ​​​Bewegungsmelder steuern
    5. 6.5 ​Abstandsmessung mit dem Ultraschallsensor HC-SR04
    6. 6.6 Schmitt-Trigger für analoge Sensoren
  9. Kapitel 7: Swing lernen​
    1. 7.1 Ein ​Fenster erzeugen
    2. 7.2 Swing-Komponenten
    3. 7.3 Auf ​Ereignisse reagieren und Text verarbeiten
    4. 7.4 Auf Ereignisse in einer ​Auswahlliste reagieren
    5. 7.5 Auf Ereignisse in Checkboxen und Radiobuttons reagieren
    6. 7.6 Auf Ereignisse in einer Liste reagieren
    7. 7.7 Noch etwas über Ereignisse
  10. Kapitel 8: Analoge Eingänge und Sensoren
    1. 8.1 Den MCP3002 an den Raspberry Pi anschließen
    2. 8.2 ​Temperaturmessung mit einem ​NTC-Widerstand
      1. 8.2.1 Kennlinie linearisieren
      2. 8.2.2 Der passende Verstärker
      3. 8.2.3 Die Schutzschaltung
    3. 8.3 LDR-Sensoren
    4. 8.4 Analoge ​Distanzsensoren
  11. Kapitel 9: Messwerte speichern
    1. 9.1 Auf ​Dateien und ​Verzeichnisse zugreifen
      1. 9.1.1 Dateisystem
      2. 9.1.2 In eine Datei schreiben
      3. 9.1.3 Aus einer Datei lesen
    2. 9.2 Listen,​ Mengen un​d assoziative Speicher
      1. 9.2.1 Mit Listen arbeiten
      2. 9.2.2 Mit Mengen arbeiten
      3. 9.2.3 Arbeiten mit assoziativem Speicher
    3. 9.3 Zeichenketten ​formatieren
    4. 9.4 Einen ​Datenlogger schreiben
    5. 9.5 Temperatur und Beleuchtungsstärke loggen
  12. Kapitel 10: Messwertgrafiken mit Swing
    1. 10.1 Das Prinzip der ​Komponentenentwicklung
    2. 10.2 Die Hilfsklasse ComputeDiagram
    3. 10.3 Die Swing-Komponente JDiagram
    4. 10.4 ​​Diagramme in einer Swing-Anwendung anzeigen
    5. 10.5 Geloggte Messwerte anzeigen
  13. Kapitel 11: Threads und reguläre Ausdrücke
    1. 11.1 Threads implementieren
      1. 11.1.1 Threads ​​anlegen und starten
      2. 11.1.2 Threads ​beenden
      3. 11.1.3 Daten ​teilen
      4. 11.1.4 Auf das Ende warten
    2. 11.2 ​Reguläre Ausdrücke
      1. 11.2.1 Zeichenklassen
      2. 11.2.2 Vordefinierte Zeichenklassen
      3. 11.2.3 Häufigkeit
  14. Kapitel 12: Füllstandsanzeige für eine Zisterne​
    1. 12.1 Die Schaltung
    2. 12.2 Der HTTP-Server stellt sich vor
    3. 12.3 Den Webserver bauen
      1. 12.3.1 Die Klasse RaspiHttpServer
      2. 12.3.2 Die Klasse HttpHandlerZisterne
      3. 12.3.3 Die Klasse Scheduler
      4. 12.3.4 Die Klasse Sensor
    4. 12.4 Der ​Client
      1. 12.4.1 Die Klasse HttpClient
      2. 12.4.2 Die Swing-Anwendung
  15. Kapitel 13: Eine Heizungssteuerung​
    1. 13.1 Die Schaltung
    2. 13.2 Das Programmkonzept
      1. 13.2.1 Die Klasse RaspiHttpServer
      2. 13.2.2 Die Klasse HttpHandlerHeizung
      3. 13.2.3 Die Klasse Scheduler
      4. 13.2.4 Die Klasse Sensor
    3. 13.3 Der Client
      1. 13.3.1 Die Klasse HttpClient
      2. 13.3.2 Die Klasse JTempPanel
      3. 13.3.3 Die Klasse Gui
  16. Kapitel 14: Eine Zeitschaltuhr​
    1. 14.1 Die Schaltung
    2. 14.2 Das Programmkonzept
      1. 14.2.1 Die Klasse RaspiHttpServer
      2. 14.2.2 Die Klasse SchedulerPort
      3. 14.2.3 Die Klasse HttpHandlerZeitschaltuhr
    3. 14.3 Der Client
      1. 14.3.1 Die Klasse HttpClient
      2. 14.3.2 Die Klasse ZeitschaltuhrProperties
      3. 14.3.3 Die Klasse GuiUtil
      4. 14.3.4 Die Klasse Gui
    4. 14.4 Einen ​​Autostart für den Server einrichten
    5. 14.5 Hinweise zum Betrieb des Servers
    6. 14.6 Eine ​Desktop-Verknüpfung erstellen
  17. Kapitel 15: E-Mail-Alarm​
    1. 15.1 Das Package raspi.mail
      1. 15.1.1 Die Klasse MailService
      2. 15.1.2 Die Klasse EMail
    2. 15.2 Das Projekt
      1. 15.2.1 Die Klasse AlarmProperties
    3. 15.3 Die Klasse AlarmService
    4. 15.4 Die Klasse Shutdown
    5. 15.5 Die Klasse Alarm
    6. 15.6 ​Autostart
  18. Kapitel 16: Der I2C-Bus​
    1. 16.1 Den I2C-Bus ​einrichten
    2. 16.2 Den I2C-Bus mit Pi4j steuern
    3. 16.3 Eine Hilfsklasse für I2C-Geräte
    4. 16.4 Der Temperatursensor ​MCP9808
    5. 16.5 Die Arbeitsweise des ​MCP9808
    6. 16.6 Die Klasse ​MCP9808
    7. 16.7 Den Sensor ​testen
    8. 16.8 Den Sensor im Komparator-Modus testen
  19. Kapitel 17: Die serielle Schnittstelle RS232
    1. 17.1 Die Schnittstelle konfigurieren
    2. 17.2 Mit Pi4J die serielle Schnittstelle steuern
    3. 17.3 Der Ultraschall-​Entfernungssensor SRF02
    4. 17.4 Die Klasse SRF02
    5. 17.5 Entfernungsmessung
    6. 17.6 ​Kurze Distanzen
    7. 17.7 Die Sensoradresse ändern
  20. Kapitel 18: Textausgabe mit LCD-Displays
    1. 18.1 Der Befehlssatz des HD 44780
      1. 18.1.1 Clear Display
      2. 18.1.2 Cursor Home
      3. 18.1.3 Entry Mode Set
      4. 18.1.4 Display On/Off Control
      5. 18.1.5 ​Cursor / Display Shift
      6. 18.1.7 RAM Address Set und Data write
      7. 18.1.8 CG RAM Address Set
      8. 18.1.9 Und noch zwei Lesebefehle
    2. 18.2 Die Initialisierung des Displays
    3. 18.3 Das Programmkonzept
    4. 18.4 Die Klasse DisplayHD44780
    5. 18.5 Die Klasse PinDirect
    6. 18.6 Das Display ​testen
      1. 18.6.1 Die Klasse Test8Bit
      2. 18.6.2 Die Klasse Test4Bit
      3. 18.6.3 Die Klasse TestDisplay
    7. 18.7 Das Display über den MCP23017 ansteuern
      1. 18.7.1 Die Klasse PinMCP23017
      2. 18.7.2 Die Klasse Test8BitMCP23017
      3. 18.7.3 Die Klasse Test4BitMCP23017
  21. Anhang A: Java
    1. A.1 Der erste Programmcode
    2. A.2 Java-Konzepte
      1. A.2.1 Objekte
      2. A.2.2 ​Klassen und ​Instanzen
      3. A.2.3 ​Vererbung
      4. A.2.4 Interface
      5. A.2.5 ​Package
    3. A.3 Java-Grundlagen
      1. A.3.1 Variable
      2. A.3.2 ​Arrays
      3. A.3.3 Operatoren
      4. A.3.4 Programmfluss
    4. A.4 Java ist objektorientiert
      1. A.4.1 ​Klasse
      2. A.4.2 ​Variablen
      3. A.4.3 ​Methoden
      4. A.4.4 Konstruktoren
      5. A.4.5 this
      6. A.4.6 Zugriffsrechte
      7. A.4.7 static und final
      8. A.4.8 Anonyme innere Klassen
      9. A.4.9 ENUM-Datentypen
      10. A.4.10 ​Interfaces
      11. A.4.11 Vererbung
      12. A.4.12 Methoden ​überschreiben
      13. A.4.13 Super
      14. A.4.14 Überschreiben unterbinden
      15. A.4.15 ​​​​Abstrakte Klassen und Methoden
    5. A.5 ​Wrapper-Klassen für numerische Datentypen
    6. A.6 Zeichenkette ​(String)
    7. A.7 ​Character
    8. A.8 Boolean
    9. A.9 Exceptions
    10. A.10 ​Garbage-Collector
    11. A.11 Packages