Inhaltsverzeichnis

Alle Kapitel aufklappen
Alle Kapitel zuklappen
Einleitung
13
1 Der Mikrocontroller ESP32 und seine Funktionalitäten
19
1.1 Die ESP32-SoCs
19
1.2 Die Module
22
1.2.1 Die WROOM-, SOLO-, WROVER- und PICO-Module
23
1.3 Die Boards
26
1.4 Das ESP32-Dev-KitC V4
27
1.4.1 Das Pinout
28
1.4.2 Funktionen der GPIO-Pins
29
1.4.3 Höhere Eingangsspannung an GPIOs
36
1.5 Das ESP32-Dev-KitC V4 – Erstinbetriebnahme am PC
37
1.5.1 Windows
38
1.5.2 Linux
38
2 Die Stromversorgung
41
2.1 Betriebszustände und typische Stromverbräuche
41
2.2 Anschlüsse zur Stromversorgung
43
2.3 Grundschema der Stromversorgung
44
2.4 Spannungsquellen
45
2.5 Spannungsregler
47
2.5.1 Lineare Spannungsregler
48
2.5.2 Schaltregler
50
3 Ihre Werkstatt
53
3.1 Breadboard & Co.
53
3.1.1 Das Breadboard
53
3.1.2 Jumperkabel
54
3.1.3 Leiterplatine
55
3.2 Hilfreiche Werkzeuge
57
3.3 Fritzing
60
3.3.1 Was ist Fritzing?
60
3.3.2 Fritzing starten
61
3.3.3 In der Steckplatinenansicht arbeiten
62
3.3.4 In der Schaltplanansicht arbeiten
69
3.3.5 In der Leiterplattenansicht arbeiten
70
3.3.6 Bauteile importieren
72
3.3.7 Bauteile ändern und selbst erstellen
73
3.4 Löttechnik
73
3.4.1 Bauteile auf Platinen löten
74
3.4.2 Bauteile entlöten
75
3.4.3 SMD löten
76
3.4.4 ESP32-Modul löten
77
4 Entwicklungsumgebungen
83
4.1 Der Weg von lesbaren Anweisungen zum Maschinencode
83
4.2 Das Betriebssystem der Entwicklungsumgebung
86
4.3 esptool.py
87
4.3.1 Installation unter Windows
88
4.3.2 Installation unter Linux
92
4.3.3 Ausführbare Versionen von esptool
92
4.3.4 esptool einsetzen
92
4.4 Entwicklungsumgebungen in der Übersicht
95
4.4.1 Das Espressif IDF
96
4.4.2 Die Arduino-IDE auf dem PC
112
4.4.3 Der Arduino-Web-Editor
132
4.4.4 Eclipse
132
4.4.5 MicroPython
132
4.4.6 Lua
140
4.4.7 Rust
146
4.4.8 PlatformIO
146
4.5 Partitionstabelle festlegen
157
4.6 Fazit
159
5 Programmierung mit C und C++
161
5.1 Programmdesign für den Mikrocontroller
161
5.1.1 »Normale« C-/C++-Programme
163
5.1.2 Sketche
164
5.1.3 Erweiterte Programmstruktur
164
5.2 Syntax und Semantik in der Programmiersprache
165
5.3 Zeichen, Kommentare und Begrifflichkeiten
166
5.3.1 Zeichen und ihre Bedeutung
166
5.3.2 Kommentare
168
5.3.3 Begrifflichkeiten
168
5.4 Daten und Datentypen
169
5.5 Variablen
173
5.5.1 Deklaration und Definition
174
5.5.2 Initialisierung und Wertzuweisung
174
5.5.3 Gültigkeitsbereiche von Variablen
175
5.5.4 Typqualifizierer
176
5.5.5 Der Variablenmodifikator PROGMEM
177
5.6 Ausdrücke und Operatoren
177
5.6.1 Arithmetische Operatoren
177
5.6.2 Zuweisungsoperatoren
178
5.6.3 Bedingte Operatoren (Vergleiche)
179
5.6.4 Aussagenlogik
180
5.6.5 Bitoperatoren
182
5.6.6 Typumwandlung
184
5.6.7 Der Operator sizeof
186
5.6.8 Fehlerquellen
186
5.7 Zeiger (Pointer)
186
5.8 Arrays und Strukturen
190
5.8.1 Arrays (Tabellen)
190
5.8.2 struct (Strukturen)
192
5.8.3 union
193
5.8.4 enum
194
5.8.5 typedef
194
5.9 Kontrollstrukturen
194
5.9.1 if-Bedingung
195
5.9.2 if-else
196
5.9.3 switch ... case
197
5.9.4 while-Schleife
199
5.9.5 do-while-Schleife
200
5.9.6 for-Schleife
201
5.10 Funktionen
203
5.10.1 Die Syntax einer Funktion
204
5.10.2 Funktionsdeklaration und Funktionsdefinition
205
5.10.3 Funktionsaufruf
207
5.10.4 Übergabe von Parametern
209
5.10.5 Rücksprung
214
5.10.6 Rückgabe von Ergebnissen
215
5.11 Funktionen nutzen: Ihr Werkzeugkasten
217
5.11.1 Zeitfunktionen
217
5.11.2 Mathematische und trigonometrische Funktionen
218
5.11.3 Zufallszahlen
221
5.12 Klassen und objektorientierte Programmierung
223
5.13 Die String()-Klasse
231
5.14 Serielle Aus- und Eingabe
239
5.15 Exkurs: Tasks und Threads
245
5.15.1 Die FreeRTOS-Task-API
246
5.15.2 Threads programmieren
247
5.16 Präprozessordirektiven
248
5.16.1 Die Direktive #define
248
5.16.2 Die Direktive #include
249
5.16.3 #ifdef-/#endif-Direktive
250
5.17 Prinzipien des Softwareentwurfs
251
5.18 Fehlermanagement
251
5.18.1 Einfache Methoden
251
5.18.2 Aufwendigere Methoden
253
5.18.3 Professionelle Methoden
261
5.18.4 Datenblätter
271
5.19 JSON – das Datenformat für den Datenaustauch
271
6 Peripherie und Funktionen des ESP32
275
6.1 Der interne Hall-Sensor
275
6.2 Digitale Aus-/Eingänge
276
6.2.1 Digitale Ausgänge
277
6.2.2 Digitale Eingänge
279
6.3 Analoge Aus-/Eingänge
284
6.3.1 Analoge Ausgänge
285
6.3.2 Analoge Eingänge
286
6.4 Das ESP32-Touch-Sensor-System
296
6.5 DHT11/DHT22
302
6.6 433-MHz-Steuerung
306
6.7 LED-Control und Pulsweitenmodulation
311
6.7.1 Pulsweitenmodulation
311
6.7.2 Die ESP32-LED-Steuereinheit
313
6.8 Impulszähler
318
6.9 Universal-Timer, Watchdog-Timer
321
6.9.1 Universal-Timer
322
6.9.2 Watchdog-Timer
324
6.10 Energie-(Spar-)Modi
326
6.11 ULP-Programmierung
334
6.12 Daten auf dem ESP32 speichern
364
6.13 FreeRTOS-Taskfunktionen
367
6.14 Thread-Funktionalität nutzen
370
7 Externe Schnittstellen
375
7.1 SPI
375
7.1.1 RFID mit RFID-RC522
376
7.1.2 SD-Karte
383
7.1.3 TFT-Display
389
7.2 I²C
394
7.3 Bluetooth
398
7.3.1 Bluetooth Classic
399
7.3.2 Bluetooth Low Energy
401
7.4 WLAN/Wi-Fi
415
7.4.1 ESP32 als AP
416
7.4.2 ESP32 als »Station«
421
7.4.3 ESP32 mit ESP-Now
428
7.4.4 ESP32-Mesh
437
7.5 UART
437
7.5.1 Die UART-Schnittstellen des ESP32
438
7.5.2 Ein UART-Echo
439
7.5.3 ESP32-Modul flashen
441
7.6 OTA
442
8 Externe Kommunikations- und Steuerungsmöglichkeiten
447
8.1 Das JSON-Datenaustauschformat in der Praxis
448
8.2 Apps
453
8.2.1 Blynk
453
8.2.2 MIT App Inventor
464
8.3 Messenger
476
8.3.1 E-Mail-Versand
477
8.3.2 Pushbullet
484
8.3.3 Alexa
492
8.3.4 Telegram, Twitter und WhatsApp
495
8.4 Das MQTT-Protokoll
495
8.5 Cloud-IoT-Plattformen
503
8.5.1 Cayenne
503
8.5.2 Adafruit IO
509
8.5.3 IFTTT
518
8.6 Lokale Anwendungen nutzen
530
8.6.1 Node-RED
530
8.6.2 ioBroker
543
9 Projektideen
557
9.1 The Evil Dice
557
9.2 Die Maker-Uhr
563
9.3 Das Dateisystem einmal anders
582
9.4 Solar-Repeater
592
9.5 Als die Bilder laufen lernten
596
9.5.1 Schwarz-Weiß-Bild anzeigen
597
9.5.2 RGB-Bild anzeigen
600
9.5.3 TFT-Slide-Show
602
9.6 IoT-Barometer
609
9.6.1 Der Sensor BMP280
610
9.6.2 Das I²C-OLED-Display SSD1306
614
9.6.3 Beide Module an einem gemeinsamen I²C-Bus
622
9.6.4 Beide Module an getrennten I²C-Kanälen
625
9.7 Eine kleine Schaltzentrale
626
A Anhang
645
A.1 Sensoren
645
A.2 Fritzing-Parts
646
A.3 Verwendete Software und Softwareversionen
647
A.4 RTC-MUX-Pin-Liste
648
Index
651