Post on 18-Oct-2020
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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