|
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 |
|