27

Raspberry Pi programmieren mit Java - mitp-Verlag | Der ... · 5 Inhaltsverzeichnis Einleitung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Raspberry Pi programmieren mit Java - mitp-Verlag | Der ... · 5 Inhaltsverzeichnis Einleitung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Page 2: Raspberry Pi programmieren mit Java - mitp-Verlag | Der ... · 5 Inhaltsverzeichnis Einleitung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5

Inhaltsverzeichnis

Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

1 Der Raspberry Pi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

1.1 Das Board . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

1.1.1 Der Prozessor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

1.1.2 Die GPU (Graphics Processing Unit) . . . . . . . . . . . . . . . . . . . . . . . . . 20

1.1.3 Audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

1.1.4 Netzwerk und USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

1.1.5 CSI (Camera Serial Interface) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

1.1.6 DSI (Display Serial Interface) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

1.1.7 Status-LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

1.1.8 Der Schacht für die SD-Karte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

1.1.9 GPIO (General Purpose Input and Output) . . . . . . . . . . . . . . . . . . . . 25

1.2 Ein Gehäuse für den Raspberry Pi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

1.3 Das richtige Netzteil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

1.4 Tastatur, Maus und HDMI-Kabel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

1.5 Die SD-Karte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

2 Booten und konfigurieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

2.1 Das Betriebssystem auf die SD-Karte laden . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

2.2 Booten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

2.2.1 Reboot und richtig ausschalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

2.2.2 Mögliche Fehler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

2.3 Der Raspberry Pi und das Netzwerk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

2.4 Der Desktop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

2.5 Den Raspberry Pi headless betreiben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

2.6 Der Raspberry Pi und das WLAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

2.7 Ein Backup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

3 Linux auf dem Raspberry Pi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

3.1 Verzeichnisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

3.2 Dateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

3.3 Suchen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

3.4 Berechtigungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

3.5 Benutzer verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

© des Titels »Raspberry Pi programmieren mit Java« (ISBN 9783958450554) 2016 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/055

Page 3: Raspberry Pi programmieren mit Java - mitp-Verlag | Der ... · 5 Inhaltsverzeichnis Einleitung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Inhaltsverzeichnis

6

3.6 Administrator werden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

3.7 Dateien und Verzeichnisse packen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

3.8 Softwarepakete verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

3.9 Netzwerk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

3.10 Prozesse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

3.11 Gemischtes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

4 Projektvorbereitung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

4.1 BlueJ installieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

4.2 Pi4J installieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

4.3 Pi4J in BlueJ einbinden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

4.4 Das Buchprojekt installieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

4.5 Ein Projekt anlegen und Pi4J testen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

4.6 Ein Überblick über das Buchprojekt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

4.7 Das Gertboard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

4.7.1 Das Testprogramm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

4.7.2 Die Klasse TestLED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

5 Datum und Zeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

5.1 Die Date-Klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

5.1.1 Jede Zeitangabe gehört zu einer Zeitzone und einem Sprachraum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

5.2 Die Klassen Calendar und GregorianCalendar . . . . . . . . . . . . . . . . . . . . . . . . 100

5.3 Datum und Zeit formatieren und parsen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

5.4 An welchem Wochentag habe ich Geburtstag? . . . . . . . . . . . . . . . . . . . . . . . . 104

5.5 Wie viele Arbeitstage liegen zwischen Weihnachten und Silvester? . . . . . . . 106

5.6 Relais schalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

5.7 Akkus zeitgesteuert laden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113

5.8 Zeitsteuerung einer Kamera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117

5.9 Die Navigation in BlueJ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

6 Digitale Eingänge und Sensoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123

6.1 Den Raspberry Pi über einen Taster steuern . . . . . . . . . . . . . . . . . . . . . . . . . . 123

6.2 Externe Prozesse über einen Taster steuern . . . . . . . . . . . . . . . . . . . . . . . . . . 129

6.3 Der Bewegungsmelder HC-SR501 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134

6.4 Licht und Musik über den Bewegungsmelder steuern . . . . . . . . . . . . . . . . . . 135

6.5 Abstandsmessung mit dem Ultraschallsensor HC-SR04 . . . . . . . . . . . . . . . . 143

6.6 Schmitt-Trigger für analoge Sensoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147

7 Swing lernen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151

7.1 Ein Fenster erzeugen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151

7.2 Swing-Komponenten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155

7.3 Auf Ereignisse reagieren und Text verarbeiten . . . . . . . . . . . . . . . . . . . . . . . . 157

© des Titels »Raspberry Pi programmieren mit Java« (ISBN 9783958450554) 2016 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/055

Page 4: Raspberry Pi programmieren mit Java - mitp-Verlag | Der ... · 5 Inhaltsverzeichnis Einleitung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Inhaltsverzeichnis

7

7.4 Auf Ereignisse in einer Auswahlliste reagieren . . . . . . . . . . . . . . . . . . . . . . . . 160

7.5 Auf Ereignisse in Checkboxen und Radiobuttons reagieren . . . . . . . . . . . . . . 162

7.6 Auf Ereignisse in einer Liste reagieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166

7.7 Noch etwas über Ereignisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

8 Analoge Eingänge und Sensoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171

8.1 Den MCP3002 an den Raspberry Pi anschließen . . . . . . . . . . . . . . . . . . . . . . 173

8.2 Temperaturmessung mit einem NTC-Widerstand . . . . . . . . . . . . . . . . . . . . . 178

8.2.1 Kennlinie linearisieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178

8.2.2 Der passende Verstärker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182

8.2.3 Die Schutzschaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185

8.3 LDR-Sensoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188

8.4 Analoge Distanzsensoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193

9 Messwerte speichern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199

9.1 Auf Dateien und Verzeichnisse zugreifen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199

9.1.1 Dateisystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199

9.1.2 In eine Datei schreiben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200

9.1.3 Aus einer Datei lesen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202

9.2 Listen, Mengen und assoziative Speicher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203

9.2.1 Mit Listen arbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204

9.2.2 Mit Mengen arbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205

9.2.3 Arbeiten mit assoziativem Speicher . . . . . . . . . . . . . . . . . . . . . . . . . . 206

9.3 Zeichenketten formatieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208

9.4 Einen Datenlogger schreiben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211

9.5 Temperatur und Beleuchtungsstärke loggen . . . . . . . . . . . . . . . . . . . . . . . . . . 227

10 Messwertgrafiken mit Swing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233

10.1 Das Prinzip der Komponentenentwicklung . . . . . . . . . . . . . . . . . . . . . . . . . . . 233

10.2 Die Hilfsklasse ComputeDiagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235

10.3 Die Swing-Komponente JDiagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243

10.4 Diagramme in einer Swing-Anwendung anzeigen . . . . . . . . . . . . . . . . . . . . . 256

10.5 Geloggte Messwerte anzeigen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259

11 Threads und reguläre Ausdrücke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263

11.1 Threads implementieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263

11.1.1 Threads anlegen und starten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264

11.1.2 Threads beenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266

11.1.3 Daten teilen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267

11.1.4 Auf das Ende warten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272

11.2 Reguläre Ausdrücke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273

11.2.1 Zeichenklassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275

© des Titels »Raspberry Pi programmieren mit Java« (ISBN 9783958450554) 2016 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/055

Page 5: Raspberry Pi programmieren mit Java - mitp-Verlag | Der ... · 5 Inhaltsverzeichnis Einleitung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Inhaltsverzeichnis

8

11.2.2 Vordefinierte Zeichenklassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276

11.2.3 Häufigkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276

12 Füllstandsanzeige für eine Zisterne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279

12.1 Die Schaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280

12.2 Der HTTP-Server stellt sich vor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283

12.3 Den Webserver bauen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286

12.3.1 Die Klasse RaspiHttpServer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286

12.3.2 Die Klasse HttpHandlerZisterne . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288

12.3.3 Die Klasse Scheduler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294

12.3.4 Die Klasse Sensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297

12.4 Der Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298

12.4.1 Die Klasse HttpClient . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298

12.4.2 Die Swing-Anwendung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301

13 Eine Heizungssteuerung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309

13.1 Die Schaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309

13.2 Das Programmkonzept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312

13.2.1 Die Klasse RaspiHttpServer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313

13.2.2 Die Klasse HttpHandlerHeizung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314

13.2.3 Die Klasse Scheduler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321

13.2.4 Die Klasse Sensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326

13.3 Der Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328

13.3.1 Die Klasse HttpClient . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328

13.3.2 Die Klasse JTempPanel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332

13.3.3 Die Klasse Gui . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336

14 Eine Zeitschaltuhr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347

14.1 Die Schaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347

14.2 Das Programmkonzept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347

14.2.1 Die Klasse RaspiHttpServer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350

14.2.2 Die Klasse SchedulerPort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350

14.2.3 Die Klasse HttpHandlerZeitschaltuhr . . . . . . . . . . . . . . . . . . . . . . . . 351

14.3 Der Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359

14.3.1 Die Klasse HttpClient . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362

14.3.2 Die Klasse ZeitschaltuhrProperties . . . . . . . . . . . . . . . . . . . . . . . . . . 363

14.3.3 Die Klasse GuiUtil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364

14.3.4 Die Klasse Gui . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368

14.4 Einen Autostart für den Server einrichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378

14.5 Hinweise zum Betrieb des Servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379

14.6 Eine Desktop-Verknüpfung erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380

© des Titels »Raspberry Pi programmieren mit Java« (ISBN 9783958450554) 2016 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/055

Page 6: Raspberry Pi programmieren mit Java - mitp-Verlag | Der ... · 5 Inhaltsverzeichnis Einleitung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Inhaltsverzeichnis

9

15 E-Mail-Alarm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381

15.1 Das Package raspi.mail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382

15.1.1 Die Klasse MailService . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382

15.1.2 Die Klasse EMail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390

15.2 Das Projekt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391

15.2.1 Die Klasse AlarmProperties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394

15.3 Die Klasse AlarmService . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396

15.4 Die Klasse Shutdown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399

15.5 Die Klasse Alarm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400

15.6 Autostart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405

16 Der I2C-Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407

16.1 Den I2C-Bus einrichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411

16.2 Den I2C-Bus mit Pi4j steuern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414

16.3 Eine Hilfsklasse für I2C-Geräte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416

16.4 Der Temperatursensor MCP9808 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421

16.5 Die Arbeitsweise des MCP9808 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424

16.6 Die Klasse MCP9808 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426

16.7 Den Sensor testen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434

16.8 Den Sensor im Komparator-Modus testen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440

17 Die serielle Schnittstelle RS232 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445

17.1 Die Schnittstelle konfigurieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448

17.2 Mit Pi4J die serielle Schnittstelle steuern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449

17.3 Der Ultraschall-Entfernungssensor SRF02 . . . . . . . . . . . . . . . . . . . . . . . . . . . 451

17.4 Die Klasse SRF02 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454

17.5 Entfernungsmessung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461

17.6 Kurze Distanzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463

17.7 Die Sensoradresse ändern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464

18 Textausgabe mit LCD-Displays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467

18.1 Der Befehlssatz des HD 44780 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470

18.1.1 Clear Display . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470

18.1.2 Cursor Home . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470

18.1.3 Entry Mode Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470

18.1.4 Display On/Off Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471

18.1.5 Cursor / Display Shift . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471

18.1.6 Function Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472

18.1.7 RAM Address Set und Data write . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472

18.1.8 CG RAM Address Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474

18.1.9 Und noch zwei Lesebefehle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474

© des Titels »Raspberry Pi programmieren mit Java« (ISBN 9783958450554) 2016 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/055

Page 7: Raspberry Pi programmieren mit Java - mitp-Verlag | Der ... · 5 Inhaltsverzeichnis Einleitung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Inhaltsverzeichnis

10

18.2 Die Initialisierung des Displays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474

18.3 Das Programmkonzept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476

18.4 Die Klasse DisplayHD44780 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477

18.5 Die Klasse PinDirect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483

18.6 Das Display testen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487

18.6.1 Die Klasse Test8Bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488

18.6.2 Die Klasse Test4Bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489

18.6.3 Die Klasse TestDisplay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490

18.7 Das Display über den MCP23017 ansteuern . . . . . . . . . . . . . . . . . . . . . . . . . . 491

18.7.1 Die Klasse PinMCP23017 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493

18.7.2 Die Klasse Test8BitMCP23017 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496

18.7.3 Die Klasse Test4BitMCP23017 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497

A Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499

A.1 Der erste Programmcode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499

A.2 Java-Konzepte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502

A.2.1 Objekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502

A.2.2 Klassen und Instanzen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503

A.2.3 Vererbung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504

A.2.4 Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506

A.2.5 Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507

A.3 Java-Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508

A.3.1 Variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508

A.3.2 Arrays. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511

A.3.3 Operatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513

A.3.4 Programmfluss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517

A.4 Java ist objektorientiert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520

A.4.1 Klasse. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520

A.4.2 Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521

A.4.3 Methoden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522

A.4.4 Konstruktoren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524

A.4.5 this . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525

A.4.6 Zugriffsrechte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525

A.4.7 static und final . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526

A.4.8 Anonyme innere Klassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527

A.4.9 ENUM-Datentypen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530

A.4.10 Interfaces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531

A.4.11 Vererbung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536

A.4.12 Methoden überschreiben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541

A.4.13 Super . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544

A.4.14 Überschreiben unterbinden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545

A.4.15 Abstrakte Klassen und Methoden . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545

© des Titels »Raspberry Pi programmieren mit Java« (ISBN 9783958450554) 2016 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/055

Page 8: Raspberry Pi programmieren mit Java - mitp-Verlag | Der ... · 5 Inhaltsverzeichnis Einleitung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Inhaltsverzeichnis

11

A.5 Wrapper-Klassen für numerische Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . 546

A.6 Zeichenkette (String) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549

A.7 Character . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552

A.8 Boolean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553

A.9 Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554

A.10 Garbage-Collector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560

A.11 Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561

Stichwortverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565

© des Titels »Raspberry Pi programmieren mit Java« (ISBN 9783958450554) 2016 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/055

Page 9: Raspberry Pi programmieren mit Java - mitp-Verlag | Der ... · 5 Inhaltsverzeichnis Einleitung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

19

Kapitel 1

Der Raspberry Pi

In diesem Kapitel werden Sie die verschiedenen Komponenten des Raspberry Pi kennenler-nen. Ich werde Ihnen die Anschlüsse und Interfaces vorstellen, die den Raspberry Pi mitder Außenwelt verbinden. Außerdem werde ich Ihnen kurz die zwei wichtigsten ICs aufdem Board und deren Funktion erläutern.

1.1 Das Board

Wenn Sie noch keinen Raspberry Pi besitzen, stellt sich zum einen die Frage, wo Sie ihnerwerben können und ob Sie etwas beim Kauf beachten müssen. Da sich der Raspberry Pimittlerweile so großer Beliebtheit erfreut, ist er in fast jedem gut sortierten Elektronik-Ver-sandhandel zu bekommen. Wenn Sie nach dem Raspberry Pi suchen, werden Ihnen wahr-scheinlich unterschiedliche Modelle angezeigt, die sich erst mal im Preis unterscheiden.Die Modelle A und A+ sind mittlerweile schon ein bisschen aus der Mode gekommen, dasie über keinen Netzwerkanschluss verfügen und sich preislich kaum von den größerenModellen mit Netzwerk unterscheiden. Oft wird das A-Modell auch nicht mehr zum Ver-kauf angeboten.

Der wesentliche Unterschied zwischen den Modellen B und B+ liegt an der Anzahl derGPIO-Ports. Was sich genau hinter den GPIO-Ports verbirgt, werde ich Ihnen weiter hintennoch aufzeigen. Im Gegensatz zu den A-Modellen bieten die B-Modelle doppelt so vielRAM-Speicher.

Das Flaggschiff der Raspberry-Pi-Modelle ist das Modell 2 B, das seit 2015 auf dem Marktist. Es bietet den meisten Arbeitsspeicher und hat einen erheblichen Geschwindigkeitsvor-teil gegenüber den kleineren Modellen, ist aber auch das teuerste Modell. Wenn man dieModelle mit dem 40-poligen Pfostenstecker miteinander vergleicht, so liegt der ungefährePreis bei 23 Euro für das A+-Modell, 28 Euro für das B+-Modell und 38 Euro für das Modell2 B. Für welches Modell man sich nun entscheidet, hängt auch von der Verwendung ab.Alle Beispiele, die in diesem Buch vorgestellt werden, laufen auch mit den B-Modellen. DieA-Modelle fallen bei einigen Anwendungen wegen des fehlenden Netzwerkanschlussesraus.

Modell RAM-Speicher USB Ethernet Pfosten-stecker

A 256MB 1x - 26

A+ 256MB 1x - 40

B 512MB 2x 10/100 Mbit 26

Tabelle 1.1: Die Modelle im Vergleich

© des Titels »Raspberry Pi programmieren mit Java« (ISBN 9783958450554) 2016 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/055

Page 10: Raspberry Pi programmieren mit Java - mitp-Verlag | Der ... · 5 Inhaltsverzeichnis Einleitung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Kapitel 1Der Raspberry Pi

20

Die B-Modelle unterstützen an ihren USB-Anschlüssen die meisten USB-2.0-Geräte. WennIhnen die Anzahl der USB-Anschlüsse nicht ausreicht, können Sie über einen USB-Hubmit eigener Spannungsversorgung weitere hinzufügen. Wollen Sie zum Beispiel eine Tas-tatur, eine Maus und einen WLAN-Stick an den Raspberry Pi anschließen, kommen Sie beiden Modellen A, A+ und B nicht ohne einen USB-Hub aus.

1.1.1 Der Prozessor

Das Herzstück des Raspberry Pi ist ein sogenannter SoC. Die Abkürzung SoC steht für Sys-tem-on-a-Chip und bedeutet so viel wie, dass in einem einzelnen Chip die wichtigstenKomponenten für ein Rechnersystem untergebracht sind. Das Konzept, mehrere Hard-ware-Komponenten in einem IC zu integrieren, wird in fast allen mobilen Geräten genutzt.Der Grund dafür ist natürlich die platzsparende Bauweise. Im Falle des Raspberry Pi han-delt es sich außer bei dem Modell 2 B um den SoC BCM2835 der Firma Broadcom. In ihmist die 32-Bit-CPU ARM1176JZFS untergebracht. Sie wird mit 700 Mhz getaktet und unter-stützt die Verarbeitung von Gleitkommazahlen.

Das Modell 2 B hat den SoC BCM2836, in dem sich eine ARM-Cortex-A7-CPU befindet. Siebesitzt vier Kerne und wird mit 900 Mhz getaktet. Damit ist sie über sieben Mal schnellerals die der einfachen B-Modelle.

1.1.2 Die GPU (Graphics Processing Unit)

In dem BCM2835 und BCM2836 befindet sich auch der Grafikprozessor Videocore 4 vonBroadcom. Er ist in der Lage, BluRay-Qualität mit H.264 bei 40MBits/s zu verarbeiten. Um3D-Grafiken schneller verarbeiten zu können, greift die GPU auf die mitgelieferte OpenGL-ES2.0-Bibliothek zu. Die Verarbeitung von Vektor- und Rastergrafiken wird durch dieOpenVG-Bibliothek realisiert. Die hinter diesen Bibliotheken stehenden Spezifikationenwurden hauptsächlich für eingebettete Systeme wie Mobiltelefone und Spielkonsolen ent-wickelt.

Damit Sie sich vorstellen können, wie leistungsfähig die GPU in Bezug auf die 3D-Verar-beitung ist, möchte ich Ihnen ein paar Eckdaten vorstellen. Für eine technische Bewertungdes Grafikprozessors dienen die Werte GFLOPs/s, Gpixel/s und Gtexel/s. GFLOPs/s sinddie maximale Anzahl von Fließkomma-Operationen in Giga pro Sekunde. Gpixel/s undGtexel/s geben die maximale Anzahl zu verarbeitenden Pixel und Texturelemente in Gigapro Sekunde an. Da hier die reinen Zahlenwerte nicht wirklich ein Gefühl dafür geben, wasder Grafikprozessor zu leisten vermag, habe ich die Videocore-4-GPU mit zwei Grafikkar-ten, wie sie in einem PC verwendet werden, verglichen und in der folgenden Tabelle gegen-übergestellt.

B+ 512MB 4x 10/100 Mbit 40

2 B 1024MB 4x 10/100 Mbit 40

Modell RAM-Speicher USB Ethernet Pfosten-stecker

Tabelle 1.1: Die Modelle im Vergleich (Forts.)

© des Titels »Raspberry Pi programmieren mit Java« (ISBN 9783958450554) 2016 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/055

Page 11: Raspberry Pi programmieren mit Java - mitp-Verlag | Der ... · 5 Inhaltsverzeichnis Einleitung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.1Das Board

21

Den Video-Ausgang der GPU können Sie entweder über den HDMI-Anschluss mit einemMonitor oder wahlweise über den Composite-Ausgang für einen TV-Scart-Anschluss miteinem Fernseher verbinden. Wenn ich mal davon ausgehe, dass es in fast jedem Haushalteinen Fernseher oder ein Computermonitor gibt, der mindestens eine der beiden Schnitt-stellen unterstützt, sind dies wohl die einfachsten und auch günstigsten Varianten, um eineAusgabe für den Raspberry Pi zu realisieren. Wenn Sie den HDMI-Anschluss verwenden,wird der Audio-Ausgang über den Klinkenstecker nicht benötigt, da das HDMI-Interfaceauch Audio unterstützt.

Die zur Verfügung stehenden Videoausgänge unterscheiden sich etwas bei den verschiede-nen Modellen. So hat das Modell B für den Composite-Ausgang eine eigene Buchse. Beiden Modellen B+ und 2 B gibt es eine Buchse für einen Klinkenstecker, auf dem der Com-posite-Ausgang und der Audio-Ausgang zur Verfügung liegen. Die HDMI-Ausgänge sindaber gleich geblieben. Schauen Sie sich dazu Abbildung 1.1 an. Dort ist auf der linken Seitedas Modell B mit den zwei getrennten Buchsen für Audio und Composite und auf der rech-ten Seite das Modell 2 B mit einer Buchse für Audio und Composite zu sehen.

Abb. 1.1: Audio- und Videoausgänge beim Modell B und den Modellen 2 B und B+

1.1.3 Audio

Der Audio-Ausgang steht über einen 3,5-mm-Klinkenstecker zur Verfügung und kann aneinen Verstärker oder über ein Adapterkabel zusammen mit dem Composite-Ausgang aufeinen Scart-Stecker gelegt werden. Die Ausgangsleistung ist aber so gering, dass Sie einenLautsprecher nicht direkt ansteuern können. Sie benötigen hier also einen zusätzlichenVerstärker oder eine Aktivbox.

Die Tonqualität des Audio-Ausgangs über den Klinkenstecker ist nicht bei allen Modellengleich. Bei den Modellen A+, B+ und 2 B wurde die Audioqualität gegenüber den ModellenA und B verbessert. Dies macht sich aber erst bemerkbar, wenn Sie den Raspberry Pi an einrauscharmes Netzteil anschließen. Wenn Sie auf bessere Audioqualität Wert legen, sollte das

Model Rechenleistung in GFLOPS/s

Pixelfüllrate in Gpixel/s

Texelfüllrate in Gtexel/s

Raspberry Pi mit der Videocore 4

24 1 1,5

Geforce 8200 MG 19,2 1,6 3,2

Geforce 9800 MGTS 288 9,6 16

Tabelle 1.2: Die GPU des Raspberry Pi im Vergleich mit zwei anderen Grafikkarten

© des Titels »Raspberry Pi programmieren mit Java« (ISBN 9783958450554) 2016 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/055

Page 12: Raspberry Pi programmieren mit Java - mitp-Verlag | Der ... · 5 Inhaltsverzeichnis Einleitung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Kapitel 1Der Raspberry Pi

22

Netzteil einen Filter besitzen. Für diese Zwecke ist dann ein klassisches Netzteil mit Trafo,Festspannungsregler und Filter gegenüber einem einfachen Schaltnetzteil vorzuziehen.

Neben dem Audio-Ausgang werden Sie vielleicht eine Eingangsbuchse vermissen, die Sieauf dem Board auch nicht finden werden. Wenn Sie Audio-Eingänge benötigen, können Siediese z.B. über ein USB-Mikrofon realisieren. Für zusätzliche Audio-In/Out-Geräte stehtaußerdem der I²S-Bus auf dem GPIO-Interface zur Verfügung.

1.1.4 Netzwerk und USB

Bei einem Blick auf das Board fällt neben dem SoC noch ein zweites IC ins Auge. Und zwardas LAN9512 der Firma SMSC. In ihm steckt ein Netzwerk-Adapter mit 10/100-Ethernet-und Full-duplex-Betrieb-Unterstützung. Außerdem wird darüber der USB-2.0-Hub bereit-gestellt.

In Abbildung 1.2 sehen Sie den Netzwerk- und USB-Anschluss des Raspberry Pi. Auf derlinken Seite ist das Modell B und auf der rechten Seite das Modell 2 B im Vergleich darge-stellt. Das Modell 2 B besitzt an seinem Netzwerkstecker zwei LEDs, wobei eine denBetriebsmodus des Netzwerkadapters und die andere die Netzwerkaktivität anzeigt. Beidem Modell B sitzen diese LEDs direkt auf dem Board.

Abb. 1.2: Netzwerk- und USB-Anschlüsse beim Modell B und 2 B

1.1.5 CSI (Camera Serial Interface)

Für den Raspberry Pi gibt es zwei verschiedene 5-Megapixel-Kameramodule, die über einFolienbandkabel angeschlossen werden. Der verwendete Sensor ist bei beiden Modulengleich und hat eine Auflösung von 2592 × 1944 Pixeln und ist in der Lage, Videos mit einerAuflösung von 1080p und 30 Bildern in der Sekunde aufzunehmen. Zum Betrieb desKameramoduls muss aber vorher ein Treiber installiert werden.

Die beiden Kameramodule unterscheiden sich nur dadurch, dass das NoIR-Kameramodulkeinen Infrarotfilter besitzt. Hierdurch können Sie mit dieser Kamera Infrarotaufnahmenund Aufnahmen bei schlechter Beleuchtung durchführen.

1.1.6 DSI (Display Serial Interface)

Über den DSI-Anschluss können Sie Displays mit Folienbandkabel anschließen. BeimKauf eines solchen Displays sollten Sie aber unbedingt darauf achten, dass es für das Dis-play einen Treiber gibt, der für das Betriebssystem des Raspberry Pi getestet ist.

© des Titels »Raspberry Pi programmieren mit Java« (ISBN 9783958450554) 2016 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/055

Page 13: Raspberry Pi programmieren mit Java - mitp-Verlag | Der ... · 5 Inhaltsverzeichnis Einleitung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.1Das Board

23

Das offizielle Raspberry-Pi-Display hat die Raspberry Pi Foundation im Juni 2015 vorge-stellt. Es handelt sich dabei um ein 7-Zoll-Display mit einer Auflösung von 800 x 480Punkten und wird über das DSI-Interface mit dem Raspberry Pi verbunden. Wenn Sie dieaktuelle Betriebssystemversion nutzen, brauchen Sie für das Display auch keinen Treiberzu installieren. Die Kosten für dieses Display betragen ungefähr 80 Euro.

Einige Firmen bieten auch Displays an, die über die 26- oder 40-polige Steckerleiste desRaspberry Pi angeschlossen werden. So bietet die Firma HwLevel für den Raspberry Pidirekt vier verschiedene TFT-LCD-Displays zwischen 3,2" und 5" an, die alle direkt über denGPIO-Stecker mit dem Raspberry Pi verbunden werden. Für das günstigste Display liegtder Preis bei ca. 40 Euro.

In Abbildung 1.3 können Sie sich die Lage des Display- und Kamera-Interface von Modell Bund 2 B anschauen.

Abb. 1.3: Überblick über die Modelle B und 2 B

Modell Größe Auflösung

LCD-PI32 3,2" 320 × 240

LCD-PI33 3,3" 320 × 480

LCD-PI43 4,3" 480 × 272

LCD-PI50 5,0" 480 × 272

Tabelle 1.3: TFT-LCD-Displays der Firma HwLevel

© des Titels »Raspberry Pi programmieren mit Java« (ISBN 9783958450554) 2016 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/055

Page 14: Raspberry Pi programmieren mit Java - mitp-Verlag | Der ... · 5 Inhaltsverzeichnis Einleitung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Kapitel 1Der Raspberry Pi

24

1.1.7 Status-LEDs

Auf dem Board B befinden sich in der rechten oberen Ecke 5 Status-LEDs, die Ihnen einigewichtige Informationen liefern. Eine kurze Erklärung zu den Status-LEDs finden Sie in derfolgenden Tabelle.

Bei den Modellen A+, B+ und 2 B befinden sich nur noch die zwei Status-LEDs ACT undPWR direkt auf dem Board. Zwei Status-LEDs für das Netzwerk finden sich bei diesenBoards direkt am Netzwerkstecker. Den Vergleich zwischen den beiden Modellen B und2 B zeigt Abbildung 1.4.

Abb. 1.4: Status-LEDs bei den Modellen B und 2 B

1.1.8 Der Schacht für die SD-Karte

Die Aufnahme für die SD-Karte befindet sich bei allen Modellen auf der Unterseite desBoards. Die SD-Karte wird hier von der Seite in den Schacht eingeschoben und ragt einStück über den Rand der Platine hinaus. Bei den Modellen A und B besitzt der Raspberry Pieinen SD-Schacht und bei den Modellen A+, B+ und 2 B einen microSD-Schacht. Den Ver-gleich zwischen beiden Varianten können Sie in Abbildung 1.5 sehen.

Im nächsten Kapitel werde ich Ihnen zeigen, wie Sie das Betriebssystem des Raspberry Piauf die SD-Karte kopieren können. Auf ihr wird aber nicht nur das Betriebssystem instal-liert, sondern sie nimmt auch alle Daten und Programme auf, die Sie auf dem Raspberry Pibenötigen.

ACT Leuchtet immer dann, wenn auf die SD-Karte zugegriffen wird.

PWR Zeigt an, dass der Raspberry Pi mit der Stromversorgung verbunden ist.

FDX Durch diese LED wird der Full-duplex-Betrieb des Netzwerkadapters angezeigt.

LNK Immer wenn Netzwerk-Aktivitäten ausgeführt werden, zeigt LNK dies an.

100 Der Netzwerkadapter arbeitet im 100-Mbps-Modus.

Tabelle 1.4: Die Bedeutung der Status-LEDs

© des Titels »Raspberry Pi programmieren mit Java« (ISBN 9783958450554) 2016 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/055

Page 15: Raspberry Pi programmieren mit Java - mitp-Verlag | Der ... · 5 Inhaltsverzeichnis Einleitung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.1Das Board

25

Abb. 1.5: Der SD-Schacht beim Modell B und der microSD-Schacht beim Modell 2 B

1.1.9 GPIO (General Purpose Input and Output)

Die 26- beziehungsweise 40-polige Steckerleiste ist die Schnittstelle zu einer ganzen Reihevon Bus-Systemen und einfachen digitalen Ein- und Ausgängen, die Sie über selbst ge-schriebene Programme ansprechen können. Die Modelle A und B besitzen eine 26-poligeSteckerleiste und die Modelle A+, B+ und 2 B eine 40-polige Steckerleiste. In Abbildung 1.6sehen Sie Position und Nummerierung der Steckerleiste.

Abb. 1.6: Nummerierung der 26- und 40-poligen Steckerleiste

Einen ersten Überblick über die Belegung der einzelnen Pins zeigt die nächste Tabelle.Beachten Sie bitte, dass in der Tabelle die Belegungen für die 26- und 40-polige Stecker-leiste angegeben sind.

© des Titels »Raspberry Pi programmieren mit Java« (ISBN 9783958450554) 2016 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/055

Page 16: Raspberry Pi programmieren mit Java - mitp-Verlag | Der ... · 5 Inhaltsverzeichnis Einleitung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Kapitel 1Der Raspberry Pi

26

Leider gibt es unterschiedliche Bezeichnungen für die einzelnen Pins. Dies liegt ganz ein-fach daran, dass oft die Pinbezeichnung angegeben wird, wie sie in der Spezifikation desBroadcom SoC definiert ist. Diese sehr Hardware-nahe Bezeichnung kann bei verschiede-nen Releases zu einem Modell variieren. Die Bezeichnungen, die in der folgenden Tabellezu sehen sind, beziehen sich alle auf die in diesem Buch benutzte Java-Bibliothek Pi4J. InPi4J wurden diese Bezeichnungen abstrahiert und sind deshalb von der eigentlichen Hard-warebezeichnung unabhängig und machen es uns als Java-Programmierer einfacher, daSie sich nicht um verschiedene Releases eines Boards kümmern müssen.

Die Bedeutung der einzelnen Ports auf der Steckerleiste werden Sie im Laufe des Buchesnoch kennenlernen.

Tabelle 1.5: Die Pinbelegung der Steckerleiste

Wenn Sie weitere Information zu den verschiedenen Board-Versionen suchen, empfehleich Ihnen die folgende Webseite

http://elinux.org/Rpi_Low-level_peripherals.

A+/B+/2 B A/B GPIO A/B A+/B+/2 B

3,3 V 1 2

GPIO8 SDA1(I²C) GGPIO8 SDA0 (I²C) 3 4

GPIO9 SCL1(I²C) GGPIO9 SCL0 (I²C) 5 6

GPIO7 7 8 GGPIO15 TxD

9 10 GGPIO16 RxD

GPIO0 11 12 GGPIO1

GPIO2 13 14

GPIO3 15 16 GGPIO4

3,3 V 17 18 GGPIO5

GPIO12 MOSI (SPI) 19 20

GPIO13 MISO (SPI) 21 22 GGPIO6

GPIO14 SCLK(SPI) 23 24 GGPIO10 CE0 (SPI)

25 26 GGPIO11 CE1 (SPI)

SDA0 ( EEPROM) 27 28 SCL0 ( EEPROM)

GPIO21 29 30

GPIO22 31 32 GGPIO26

GPIO23 33 34

GPIO24 35 36 GGPIO27

GPIO25 37 38 GGPIO28

39 40 GGPIO29

o,o V

o,o V

o,o V

o,o V

o,o V

o,o V

o,o V

o,o V

5,o V

5,o V

© des Titels »Raspberry Pi programmieren mit Java« (ISBN 9783958450554) 2016 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/055

Page 17: Raspberry Pi programmieren mit Java - mitp-Verlag | Der ... · 5 Inhaltsverzeichnis Einleitung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.2Ein Gehäuse für den Raspberry Pi

27

1.2 Ein Gehäuse für den Raspberry Pi

In vielen Veröffentlichungen sieht man den Raspberry Pi in interessanten Projekten dieunterschiedlichsten Aufgaben ausführen. Nur leider liegt er dabei oft vollkommen schutz-los auf einem Schreibtisch oder einer Werkbank. Dabei reicht ein Stück Kupferdraht odereine Büroklammer aus, um den kleinen Linux-Rechner ins Jenseits zu befördern. Ein Kurz-schluss kann dann dazu führen, dass die sensible Elektronik zerstört wird und das Boardnicht mehr zu reparieren ist. Und dies wäre doch echt schade, da ein einfaches Gehäuse fürca. 5 Euro den Raspberry Pi schon gut schützen kann. Aber nicht nur im Betrieb, sondernauch durch statische Aufladung oder zu starker mechanischer Beanspruchung der Multi-layer-Platine kann er für immer unbrauchbar werden. Für den Einsatz im Elektroniklaborbieten sich besonders die Gehäuse an, bei denen die Steckerleiste des Raspberry Pi vonaußen zugänglich ist. Bei einem solchen Gehäuse können Sie so die Ports der Steckerleistemit einem Adapter auf ein Steckbrett führen.

Abb. 1.7: Der Raspberry Pi im Gehäuse

1.3 Das richtige Netzteil

Für den Raspberry Pi benötigen Sie ein 5-V-Netzteil mit Micro-USB-Stecker. Eine einwand-freie Funktion ist aber nur gewährleistet, wenn das Netzteil auch ausreichend Strom liefernkann. Der minimale Verbrauch ohne angeschlossene Geräte ist hier für Modell B ab700 mA und für Modell A ab 500 mA zu berücksichtigen. Sie sollten sich vor demAnschließen weiterer Komponenten unbedingt über den Stromverbrauch informieren. Sokann der Stromverbrauch von Maus und Tastatur zwischen 100 mA und 1000 mA liegen.Für die richtige Auswahl hilft hier die eLinux-Webseite, auf der viele getestete Komponen-ten zu finden sind.

Verbinden Sie den Raspberry Pi über ein HDMI-Kabel mit einem Monitor, müssen Sie hiermit einem Verbrauch von 50 mA und beim Anschluss des Kameramoduls mit 250 mArechnen. Die GPIO-Ports dürfen zusammen nicht mehr als 50 mA liefern. Ein einzelnerPort kann aber maximal 16 mA bereitstellen.

http://elinux.org/RPi_VerifiedPeripherals

© des Titels »Raspberry Pi programmieren mit Java« (ISBN 9783958450554) 2016 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/055

Page 18: Raspberry Pi programmieren mit Java - mitp-Verlag | Der ... · 5 Inhaltsverzeichnis Einleitung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Kapitel 1Der Raspberry Pi

28

Wenn Sie für den ersten Probelauf Ihres Raspberry Pi eine Maus und eine Tastatur mitgeringem Stromverbrauch und einen Monitor über HDMI anschließen, reicht ein 1,0-A-Steckernetzteil aus. Bei einigen Projekten in diesem Buch muss das Netzteil aber nicht nurden Raspberry Pi, sondern auch zusätzliche Hardware mit Strom versorgen. Aus diesemGrunde habe ich mich hier für ein 2-A-Schaltnetzteil entschieden. Wollen Sie später zusätz-liche Geräte über die USB-Anschlüsse nutzen, sollten Sie hierfür einen USB-Hub mit eige-ner Stromversorgung verwenden.

1.4 Tastatur, Maus und HDMI-Kabel

Wenn Sie eine Tastatur und Maus für den Raspberry Pi kaufen wollen, sollten Sie sich, wieim vorherigen Abschnitt beschrieben, die Liste mit getesteten Geräten auf der eLinux-Web-seite anschauen. Auch wenn wir den Raspberry Pi so konfigurieren wollen, dass er headlessbetrieben werden kann, benötigt man doch immer wieder die Eingabe über Tastatur undMaus.

Ich habe alle Java-Programme, die ich in diesem Buch erläutern werde, direkt am Rasp-berry Pi entwickelt. Die Entwicklungsumgebung, die ich Ihnen später noch vorstellenwerde, läuft über einen direkten Zugang viel flüssiger als über eine Remote-Verbindung.

Wenn Sie keinen Monitor mit HDMI-Eingang besitzen, gibt es für den Anschluss an einenMonitor mit DVI-Eingang Adapterkabel. Für die Verbindung zu einem Monitor mit VGA-Eingang reicht ein einfaches Adapterkabel nicht aus. Hier benötigen Sie dann einen akti-ven Adapter mit eigener Stromversorgung. Als letzte Alternative können Sie Ihren Rasp-berry Pi natürlich auch über den Composite-Ausgang mit einem Fernseher verbinden.

1.5 Die SD-Karte

Um den Raspberry Pi starten zu können, benötigen Sie eine SD-Karte mit einem Linux-Betriebssystem. Die Raspberry Pi Foundation stellt auf ihrer Webseite eine Reihe von ver-schiedenen Betriebssystemen zum Download zur Verfügung, die alle auf dem Raspberry Pilaufen und für ihn optimiert worden sind. Egal, für welches System man sich entscheidet,man braucht mindestens eine Speicherkapazität von 4 GB. Da man neben dem reinenBetriebssystem noch weitere Software installieren und natürlich auch eigene Daten spei-chern möchte, sollte die SD-Karte ausreichend groß sein. Auch hier empfehle ich Ihneneinen Blick auf die eLinux-Webseite, auf der es eine riesige Auswahl getesteter Karten gibt.

Neben der Größe sollten Sie auch auf die Klasse der Karte achten, die ein Maß für dieGeschwindigkeit der Schreib-/Lesezugriffe angibt. Ich würde Ihnen hier immer eineschnelle Karte empfehlen, die positiv getestet wurde.

Stellen Sie beim Arbeiten am Raspberry Pi fest, dass Sie Text nicht zügig schreiben könnenoder die Eingabe immer wieder stockt, wird dies wahrscheinlich an einer langsamen SD-Karte liegen und nicht an der Verarbeitungsgeschwindigkeit des Prozessors.

http://elinux.org/RPi_SD_cards

© des Titels »Raspberry Pi programmieren mit Java« (ISBN 9783958450554) 2016 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/055

Page 19: Raspberry Pi programmieren mit Java - mitp-Verlag | Der ... · 5 Inhaltsverzeichnis Einleitung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

565

Stichwortverzeichnis

Symbole> 75>> 75 62$ sudo 37

Numerisch1N4148 281

AAbarbeitung

serielle 269Abstandsmessung 143, 193Abstrakte Klasse 545Abstrakte Methode 545Achsenbeschriftung 245Achskoordinate

und Achswerte 240Achswerte

und Achskoordinate 240ACK 409ACK-Befehl 408Acknowledge 408ACT 24ActionListener 157actionPerformed 157Adapterkabel 28Add to Rastrack 34addActionListener 157adduser 71Administrator 71, 72Advanced Options 34Akku 113Aktivlautsprecher 135Alarmanlage

Autostart 405über E-Mail aktivieren 394Zustände 403

AlarmProperties 394AlarmService 396

API 563Application Programming Interface 563apt-cache 74apt-get 73Arbeitstag

Anzahl ermitteln 106Archiv 72Argumentliste 208Arithmetischer Operator 514ARM 20Array 511ArrayList 203Audio 21, 35Audioausgang 135Ausdruck

regulärer 273Ausschalten 36Auswahlliste 160Autostart 378

Alarmanlage 405

BB 9060 32 188Backup 57Baud 445Baudrate 445

Leitungslänge 445BCM2835 20, 446BCM2836 20, 446Bedingter Operator 515Beleuchtungsstärke 188Benutzer

verwalten 69Benutzerverwaltung 69Berechtigung 67Bereich

kritischer, markieren 269Bewegungsmelder 134

Licht 135Musik 135

© des Titels »Raspberry Pi programmieren mit Java« (ISBN 9783958450554) 2016 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/055

Page 20: Raspberry Pi programmieren mit Java - mitp-Verlag | Der ... · 5 Inhaltsverzeichnis Einleitung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Stichwortverzeichnis

566

Bibliothekentfernen 382in BlueJ einbinden 382Pi4J 414

Block 517BlueJ 78

Bibliothek nutzen 381Dokumentation 79installieren 78Navigation 121

Board 19Boolean 510, 553Buchprojekt 87

installieren 82BufferedReader 104, 202BufferedWriter 200Burstsignal 144Busy-Flag 489byte 509Byte-Code 499

CCalendar 100Camera Serial Interface 22Cast 540cd 62CEST 99CG RAM 474Change Keyboard Layout 34Change Locale 33Change Timezone 33Change User Password 32char 510Character 552Checkbox 162chgrp 69chmod 67

Parameter 68classes 96classpath 96Clear Display 470Client 298, 359Collection 207Color 153COMMAND NOT FOUND 501command-String 114ComputeDiagram 235Content 152cp 64

createContext 283CSI 22Cursor

anzeigen 471Cursor / Display Shift 471Cursor Home 470

DDarlington-Stufen 111DataLogger 213, 279Date 99, 102DateFormat 102Datei 63, 199

auflisten 60kopieren 64packen 72suchen 65Textzeilen 200verschieben 64

Dateianhang 385Dateiarchiv 72Dateimanager 42Dateisystem 199Daten

teilen 267Datenlogger 211Datentyp 509Datenübertragung

asynchron 445Datenwort 447Datum 99DD RAM 472Debian-Referenz 43Debug-Modus 383Default-Package 563DELETE 289Desktop 32, 36, 42

Einstellungen 42Desktop-Verknüpfung 380Device Tree 35DHCP 40DiagramDatePoint 245, 290Diagramm

anzeigen 256Kennlinie 245Konfiguration 302Linienraster 235Raster 235Startdatum 302

© des Titels »Raspberry Pi programmieren mit Java« (ISBN 9783958450554) 2016 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/055

Page 21: Raspberry Pi programmieren mit Java - mitp-Verlag | Der ... · 5 Inhaltsverzeichnis Einleitung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Stichwortverzeichnis

567

Swing 256zeichnen 234

DiagramPoint 245Dimension 153Display

Eigenschaften abfragen 487Initialisierung 474Kontrast einstellen 468LCD 467Schattenbereich 473testen 487

Display Data RAM 472Display On/Off Control 471Display Serial Interface 22DisplayHD44780 477, 490Distanz

kurze messen 463Distanzsensor 193double 510do-while 517drawLine 234drawString 234DSI 22

EEclipse 77Elternklasse 521, 537

Zugriffsrechte 543E-Mail 381

Alarmanlage 391Alarmanlage aktivieren 394Anhänge 384löschen 387Spam 404

EMail 390E-Mail-Postfach 389E-Mail-Provider 381Enable Boot to Desktop/Scratch 32Enable Camera 34Entfernungsmessung 461Entfernungssensor 451Entry 207Entry Mode Set 470entrySet 207enum 530Ereignis 157Escape-Sequenz 274, 511etc 378Ethernet- 22

Exception 554, 557Expand Filesystem 32extends 505, 521

FFarbe

Gitterlinien 247FDX 24Fenster 151Fernauslöser 117File 199FileSystem 201fillRect 234final 526final-Objekt 96find 65float 510

Formatbezeichner 209Font 157for 517format 102, 208Formatbezeichner 208

float 209Sprachraum 211Zeichenketten 209Zeilenumbruch 210Zeitangaben 210

for-Schleife 519Fototransistor 149Freenet 381Full-duplex 446Füllmenge

Berechnung 297Function Set 472, 475

GGabellichtschranke 147Garbage-Collector 560Gateway 41General Purpose Input and Output 25Gertboard 77, 89, 310

Pinbezeichnung 92Schaltkreise 89, 90Taster 123

GET 289, 299Unterschied zu POST 314

getListElement 367getPreferredSize 233, 234getTime 99

© des Titels »Raspberry Pi programmieren mit Java« (ISBN 9783958450554) 2016 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/055

Page 22: Raspberry Pi programmieren mit Java - mitp-Verlag | Der ... · 5 Inhaltsverzeichnis Einleitung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Stichwortverzeichnis

568

GFLOPs/s 20Gitterlinie

Abstand 303Farben 246

Gmail 381GMX 381GP2Y0A02YK0F 280GPIO 24Gpixel/s 20GPU 20Graphics 234Graphics Processing Unit 20GregorianCalendar 100grep 66groupadd 70groupdel 70groups 70Gtexel/s 20Gui (Klasse) 301, 313, 368GuiUtil 364

HHandshake 447Hardware-Handshake 447HashMap 204, 206HashSet 204, 205HC-SR04 143HC-SR501 134, 381, 391HD44780 467, 470HDMI 21, 28Headless 44Heizkörper 309Heizung 309Heizungssteuerung 309Hilfesystem 61Hostname 35HTML 5 235HttpClient 298, 313, 362HttpExchange 284, 289HTTP-GET 314HttpHandler 283HttpHandlerHeizung 313HttpHandlerZeitschaltuhr 351HttpHandlerZisterne 288HTTP-POST 314HTTP-Protokoll 280, 289HTTP-Server 283HttpServer 280, 283HttpURLConnection 299Hysterese 309

II2C 35, 407I2C-Bus 171, 407

Befehle 410Daten 410einrichten 411

i2c-tools 413I2S-Bus 22if 517Impedanzwandler 281implements 521Import 561InetSocketAddress 283info 61Infrarot-Diode 149InputStream 104InputStreamReader 104install 73instanceof 516, 540Instanz 503Instanzvariable 508int 509Interface 506, 531Internationalisation Options 33Internet 39invokeLater 169ip 74ip addr 39IP-Adresse 39

statische 40Iterator 205

Jjava.lang 563java.util.Arrays 512Java-JVM 284Java-Launcher 499Java-Virtual-Machine 96, 499javax.mail.jar 381JButton 156JCheckBox 156JComboBox 156JComponent 233JDiagram 233, 243, 302JDK 77JFrame 151JLabel 153, 156JList 156, 166

Element entfernen 374

© des Titels »Raspberry Pi programmieren mit Java« (ISBN 9783958450554) 2016 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/055

Page 23: Raspberry Pi programmieren mit Java - mitp-Verlag | Der ... · 5 Inhaltsverzeichnis Einleitung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Stichwortverzeichnis

569

join 272JPanel 152, 233JPasswordField 156JRadioButton 156JscrollPane 167JTempPanel 313, 332JTextArea 156JTextField 153, 156JToggleButton 156JVM

zurücksetzen 451

KKamera 117Kanalgrundrohr 279Kennlinie

linearisieren 178keySet 207kill 75Kindklasse 537

Zugriffsrechte 543Klasse 503, 520

abstrakte 545anonyme innere 527Elternklasse 537importieren 562Kindklasse 537Subclass 537Superclass 537Wrapper-Klassen 546

Klassendefinition 501Klassendiagramm 312Klassenhierarchie 537Klassenvariable 508Klinkenstecker 21, 135Kommentar 501Komponentenentwicklung 233Konstruktor 524

LLAN9512 22LCD-Display 467LDR-Sensor 188, 190

Näherungsformel 188LDR-Widerstand 147Leafpad 44LED 109Leitungslänge

Baudrate 445

less 75Licht/Musik steuern

Bewegungsmelder 135Linux 59, 499List 203Liste 203Listener-Klasse 126ListSelectionEvent 168ListSelectionListener 167ListSelectionModel 167, 168LNK 24Local 100Locale 211localhost 351Logout 37long 509ls 60

Bedeutung der Felder 60LT1006 185, 281Lux 188LXTerminal 37, 42

MMac OS 499MAC-Adresse 40MailService 382main 500man 61Map 204, 206Matcher 273Maus 28MAX232 446, 452MAX3232 446, 452MCP3002 171, 281, 310MCP9808 421, 424MCP9808 (Klasse) 426Memory Split 35Menge 203Messung

manuelle 454Methode 522

abstrakte 545überschreiben 541, 560

Microsoft Windows 499Micro-USB-Stecker 27MimeBodyPart 384MimeMessage 384mkdir 62modprobe 174mv 64

© des Titels »Raspberry Pi programmieren mit Java« (ISBN 9783958450554) 2016 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/055

Page 24: Raspberry Pi programmieren mit Java - mitp-Verlag | Der ... · 5 Inhaltsverzeichnis Einleitung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Stichwortverzeichnis

570

NNACK 409NACK-Befehl 409Name

vervollständigen lassen 76nano 63NetBeans 77netstat 41, 74Netzteil 27Netzwerk 22, 39, 74new 524NiCd-Akku 113Not Acknowledge 409NTC-Widerstand 147, 178, 310Null-Layout 152Nullpunktverschiebung 240

OObject 537Objekt 502Open-Collector 407openConnection 299Open-Drain 407Operator 513

arithmetischer 514bedingter 515unärer 514vergleichender 515Zuweisungsoperator 514

OutputStream 285Overclock 34Overscan 34

PPackage 507, 561

Default-Package 563paintComponent 233Parameter 508ParameterUtil 289Parität 447ParsException 102passwd 69Path 201Pattern 273PDF Viewer 44Pi4J 79, 414pi4j-core.jar 81pi4j-device.jar 81pi4j-gpio-extension.jar 81

pi4j-service.jar 81Pinbezeichnung

Gertboard 92Raspberry Pi 92

PinDirect 483ping 74PinInterface 476PinMCP23017 493Pipe 75Platzhalter

suchen 65Point 235POP3-Server 381, 388POST 289, 328

Unterschied zu GET 314Postfach 381Preferences 381printf 208private 521Programm

kompilieren 500schreiben 499

Programmfluss 517Projekt

erstellen 94Prompt 59Property-Datei 349, 363

Standardwerte 363protected 525, 543Prototyp 503Prozess 74, 129, 263

beenden 75Prozessor 20Prozessorauslastung 42ProzessTemp 84ps 74PTC-Widerstand 147public 521Pull-down 123Pull-up 123Pull-up-Widerstand 407purge 73PUT 289PuTTY 44PWR 24

QQuery 289

© des Titels »Raspberry Pi programmieren mit Java« (ISBN 9783958450554) 2016 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/055

Page 25: Raspberry Pi programmieren mit Java - mitp-Verlag | Der ... · 5 Inhaltsverzeichnis Einleitung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Stichwortverzeichnis

571

RRadiobutton 163RAM-Adresse 472Raspberrry Pi

Pinbezeichnung 92Raspberry Pi und Java 121Raspbian 29raspi.mail 382raspi-config 135, 174RaspiHttpServer 286, 313, 350Raumüberwachung 381rc.local 378Reboot 37Receiver 446Recht

Zugriffsrechte 525Referenz 561Referenztyp 522Register 410Regulärer Ausdruck 273

Häufigkeit 276Zeichenklasse 275, 276

Relais 108, 347Relais-Board 109, 310remove 73ResponseHeader 284Restart 411return 522rm 63, 65rmdir 63Routentabelle 74Router 39RS232 445

Standardeinstellung 450, 452Rückstell-Sicherung 108run() 263Runnable 263

SSainSmart 310, 347Schalter 123Schaltkreis

Gertboard 89Scheduler 294, 321SchedulerLogger 313, 324SchedulerPort 350SchedulerTemperatur 313, 325Schleife

Abbruchbedingung 520Initialisierung 520

Schleifenvariable 520Schmitt-Trigger 147SCL 407SCL-Leitung 407, 408Scratch 32Scroll-Balken 166SDA 407SDA-Leitung 407, 408SD-Karte 24, 28

Betriebssystem 29SD-Karten-Leser 30search 74Sendepuffer

Beschreiben 450Sensor

Adresse ändern 464analog 147ansprechen 451Schlafmodus 433technische Daten 452testen 434

Sensor (Klasse) 297, 313Serial 35Server

Autostart 378beenden 378Funktionalität erweitern 379gültige Zeichen 379Kommunikation 362starten 378

Session 383Set 204, 205setColor 234setRequestMethod 299setRequestProperty 299SFTP 47Shell-Prompt 59short 509Shutdown 37SingleValue 212SMTP-Server 381SoC 20Software-Handshake 447Softwarepaket 73

deinstallieren 73Solaris OS 499Spam 404Spannung 108Speicher

assoziativer 203

© des Titels »Raspberry Pi programmieren mit Java« (ISBN 9783958450554) 2016 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/055

Page 26: Raspberry Pi programmieren mit Java - mitp-Verlag | Der ... · 5 Inhaltsverzeichnis Einleitung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Stichwortverzeichnis

572

Speicherverwaltung 561SPI 35SPI-Bus 171, 407SPI-Kernel-Moduls 35Sprachraum 100

Formatbezeichner 211SRF02 451, 452SRF02 (Klasse) 451, 452, 454, 455SRF02 (Sensor) 458SSH 35, 44ST7066 467StandardCharsets 200Startbit 446startx 38Statement 516static 508, 526Statische IP-Adresse 40Stellantrieb 309

Montage 310Stereo-Klinkenstecker 117Stoppbit 447String 510, 549

Schlüsselwort 204su 71Subclass 537Subnet-Mask 41Suchen 65Suchmuster 273super 544Superclass 537Swing 151

Komponenten 156Methoden 156

switch 517synchronized 269System.in 104

Ttail 75tar 72Taskleiste 37Taskmanager 43Tastatur 28Taster 123

Gertboard 123Temperaturmessung 178Temperatursensor 421, 424Terminal-Funktion

abschalten 448

Test4Bit 489Test4BitMCP23017 497Test8Bit 488Test8BitMCP23017 496TestLED 94, 96Text

speichern 63Text-Editor 44this 525Thread 263

anlegen 264beenden 266starten 264

TightVNC 48TimeZone 100TLS 382, 388Tools 381top 75Transmitter 446Transport Layer Security 382try catch-Block 555TS-NTC 103A 178, 310TV-Scart 21

UUART 446, 447, 451Übertragungsmodus

abfragen 487Uhrzeit 42ULN2803A 111, 310, 347Ultraschallsensor 143Unärer Operator 514Update 35, 73URL 299useradd 69userdel 70usermod 70UTF-8 200, 203

VvalueChanged 167values 207Variable 508, 521

gemeinsam genutzte 269Instanzvariable 508Klassenvariable 508lokale 509Namenskonvention 511Schleifenvariable 520

© des Titels »Raspberry Pi programmieren mit Java« (ISBN 9783958450554) 2016 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/055

Page 27: Raspberry Pi programmieren mit Java - mitp-Verlag | Der ... · 5 Inhaltsverzeichnis Einleitung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Stichwortverzeichnis

573

Vererbung 504, 536Verfahren

manuelle 454, 456Vergleichender Operator 515Verzeichnis 59, 199

auflisten 60löschen 63packen 72suchen 65verschieben 64

Verzeichnisbaumnavigieren 62

Videocore 4 20Virtual Network Computing 48VNC 48VNC-Server 131, 132VNCStartListener 378VNCStopListener 378void 522Vordefinierte Zeichenklasse 276Vorwiderstand

berechnen 149

WWEB.DE 381Webbrowser 42Webserver 280while 517Whitespace 552Widerstand 123

LDR 147NTC 147PTC 147Pull-up 407Vorwiderstände 149

Wildcard siehe Platzhalter 66WinSCP 47Wired-AND-Schaltung 408Wochentag

ermitteln 104Wortlänge

beeinflussen 450

Wrapper-Klasse 546

XX-Achse

konfigurieren 252, 302Xarchiver 44Xauthority 132Xpdf 44

YY-Achse

konfigurieren 254

ZZeichenkette 549

Formatbezeichner 209formatieren 208suchen 66vergleichen 552

Zeichenkettenvergleich 273Zeichenklasse 275, 276

vordefinierte 276Zeichenmuster 273Zeichensatz 200Zeilenumbruch

Formatbezeichner 210Zeit 99Zeitangabe

Formatbezeichner 210Zeitintervall

löschen 361Zeitschaltuhr 347Zeitzone 100Zisterne 279

Schaltung 280Zubehör 44Zugriff

konkurrierender 269Zugriffsrecht 525Zuweisungsoperator 514Zweipunktregelung 309

© des Titels »Raspberry Pi programmieren mit Java« (ISBN 9783958450554) 2016 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/055