Raspberry Pi programmieren mit Java
von: Wolfgang Höfer
mitp Verlags GmbH & Co. KG, 2016
ISBN: 9783958450578
Sprache: Deutsch
576 Seiten, Download: 10088 KB
Format: EPUB, PDF, auch als Online-Lesen
Cover | 1 | ||
Titel | 3 | ||
Impressum | 4 | ||
Inhaltsverzeichnis | 5 | ||
Einleitung | 13 | ||
Kapitel 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 | ||
Kapitel 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 | ||
Kapitel 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 | ||
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 | ||
Kapitel 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 | ||
Kapitel 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 | ||
Kapitel 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 | ||
Kapitel 7: Swing lernen | 151 | ||
7.1 Ein Fenster erzeugen | 151 | ||
7.2 Swing-Komponenten | 155 | ||
7.3 Auf Ereignisse reagieren und Text verarbeiten | 157 | ||
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 | ||
Kapitel 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 | ||
Kapitel 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 | ||
Kapitel 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 | ||
Kapitel 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 | ||
11.2.2 Vordefinierte Zeichenklassen | 276 | ||
11.2.3 Häufigkeit | 276 | ||
Kapitel 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 | ||
Kapitel 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 | ||
Kapitel 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 | ||
Kapitel 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 | ||
Kapitel 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 | ||
Kapitel 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 | ||
Kapitel 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 | ||
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 | ||
Anhang 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 | ||
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 |