Mit dem ESP32 setzen Maker anspruchsvolle IoT-Projekte um. Ein leistungsstarkes SoC und zahlreiche Schnittstellen zur Kommunikation machen ihn zur idealen Basis für alle Ihre Ideen in der IoT-Programmierung, bei der Hausautomation oder einfach beim Elektronikbasteln. Dieser Leitfaden begleitet Sie bei Ihren Projekten und zeigt Ihnen die Arbeit mit Entwicklungsumgebungen, Sensoren, Schnittstellen und allem, was dazu gehört. So gelingt Ihnen der umfassende Einstieg in die Mikrocontrollerprogrammierung.
Neu in dieser Auflage: Arduino IDE 2. 0, erweiterte Kapitel zu Debugging und Multithread-Programmierung.
Aus dem Inhalt:
- Chips und Boards
- Stromversorgung
- Werkstatt: Löten, Verkabeln, Fritzing
- Programmiergrundlagen in C und C++
- Entwicklungsumgebungen: Arduino und ESP-IDF
- Analog- und Digitalausgänge, LEDs, Impulszähler und mehr
- Sensoren
- SPI, I²C, UART
- Drahtlose Kommunikation mit Bluetooth, OTA und Wifi
- JTAG-Debugging und weitere Tricks bei der Fehlersuche
- ULP-Programmierung: Tasks und Deep Sleep
- Projektideen für Maker: Evil Dice, Binär-Uhr, Solar-WLAN-Repeater
Inhaltsverzeichnis
Einleitung . . . 13 1. Der Mikrocontroller ESP32 . . . 19 1. 1 . . . Ein kurzer Rückblick in die Entwicklung von Mikrocontrollern . . . 19 1. 2 . . . Die ESP32-SoCs . . . 20 1. 3 . . . Die Module WROOM, SOLO, WROVER und PICO . . . 26 1. 4 . . . Die Boards . . . 29 1. 5 . . . Das ESP32-Dev-KitC V4 . . . 30 1. 6 . . . Das ESP32-Dev-KitC V4 -- Erstinbetriebnahme am PC . . . 41 2. Die Stromversorgung . . . 43 2. 1 . . . Betriebszustände und typische Stromverbräuche . . . 43 2. 2 . . . Anschlüsse zur Stromversorgung . . . 45 2. 3 . . . Grundschema der Stromversorgung . . . 46 2. 4 . . . Spannungsquellen . . . 47 2. 5 . . . Spannungsregler . . . 50 3. Ihre Werkstatt . . . 55 3. 1 . . . Breadboard & Co. . . . 55 3. 2 . . . Hilfreiche Werkzeuge . . . 59 3. 3 . . . Fritzing . . . 62 3. 4 . . . Löttechnik . . . 75 4. Entwicklungsumgebungen . . . 85 4. 1 . . . Der Weg von lesbaren Anweisungen zum Maschinencode . . . 85 4. 2 . . . Das Betriebssystem der Entwicklungsumgebung . . . 88 4. 3 . . . esptool. py . . . 89 4. 4 . . . Entwicklungsumgebungen in der Übersicht . . . 97 4. 5 . . . Die Partitionstabelle festlegen . . . 167 4. 6 . . . Fazit . . . 169 5. Programmierung mit C und C++ . . . 171 5. 1 . . . Programmdesign für den Mikrocontroller . . . 171 5. 2 . . . Syntax und Semantik in der Programmiersprache . . . 175 5. 3 . . . Zeichen, Kommentare und Begriffe . . . 176 5. 4 . . . Daten und Datentypen . . . 179 5. 5 . . . Variablen . . . 183 5. 6 . . . Ausdrücke und Operatoren . . . 187 5. 7 . . . Zeiger (Pointer) . . . 197 5. 8 . . . Arrays und Strukturen . . . 201 5. 9 . . . Kontrollstrukturen . . . 205 5. 10 . . . Funktionen . . . 215 5. 11 . . . Funktionen nutzen: Ihr Werkzeugkasten . . . 229 5. 12 . . . Klassen und objektorientierte Programmierung . . . 235 5. 13 . . . Die String()-Klasse . . . 243 5. 14 . . . Serielle Aus- und Eingabe . . . 252 5. 15 . . . Vorgriff: Tasks und Threads . . . 258 5. 16 . . . Präprozessordirektiven . . . 259 5. 17 . . . Prinzipien des Softwareentwurfs . . . 262 5. 18 . . . Fehlermanagement . . . 263 5. 19 . . . JSON -- das Datenformat für den Datenaustauch . . . 283 6. ESP32-Programming inside . . . 287 6. 1 . . . ULP-Programmierung . . . 287 6. 2 . . . FreeRTOS-Tasks verwalten . . . 316 6. 3 . . . FreeRTOS-Task-Synchronisation . . . 327 6. 4 . . . Threads nutzen . . . 358 7. Peripherie und Funktionen des ESP32 . . . 363 7. 1 . . . Der interne Hall-Sensor . . . 363 7. 2 . . . Digitale Aus-/Eingänge . . . 364 7. 3 . . . Analoge Aus-/Eingänge . . . 373 7. 4 . . . Das ESP32-Touch-Sensor-System . . . 385 7. 5 . . . DHT11 und DHT22 . . . 390 7. 6 . . . 433-MHz-Steuerung . . . 395 7. 7 . . . LED-Control und Pulsweitenmodulation . . . 400 7. 8 . . . Impulszähler . . . 407 7. 9 . . . Universal-Timer, Watchdog-Timer . . . 410 7. 10 . . . Energie-(Spar-)Modi . . . 415 7. 11 . . . Daten auf dem ESP32 speichern . . . 423 8. Externe Schnittstellen . . . 427 8. 1 . . . SPI . . . 427 8. 2 . . . I²C . . . 445 8. 3 . . . I2S . . . 449 8. 4 . . . Bluetooth . . . 460 8. 5 . . . WLAN/Wi-Fi . . . 477 8. 6 . . . UART . . . 500 8. 7 . . . OTA . . . 506 9. Externe Kommunikations- und Steuerungsmöglichkeiten . . . 511 9. 1 . . . Das JSON-Datenaustauschformat in der Praxis . . . 512 9. 2 . . . Apps . . . 517 9. 3 . . . Messenger . . . 538 9. 4 . . . Das MQTT-Protokoll . . . 558 9. 5 . . . Cloud-IoT-Plattformen . . . 566 9. 6 . . . Lokale Anwendungen nutzen . . . 59210. Projektideen . . . 619 10. 1 . . . The Evil Dice . . . 619 10. 2 . . . Die Maker-Uhr . . . 625 10. 3 . . . Das Dateisystem einmal anders . . . 645 10. 4 . . . Solar-Repeater . . . 655 10. 5 . . . Als die Bilder laufen lernten . . . 659 10. 6 . . . IoT-Barometer . . . 672 10. 7 . . . Eine kleine Schaltzentrale . . . 688 10. 8 . . . Den ESP32 mit Alexa steuern . . . 706 10. 9 . . . Mit Text To Speech und ChatGPT experimentieren . . . 715 A. Anhang . . . 725 A. 1 . . . Sensoren . . . 725 A. 2 . . . Fritzing-Parts . . . 726 A. 3 . . . Verwendete Software und Softwareversionen . . . 727 A. 4 . . . RTC-MUX-Pin-Liste . . . 728 Index . . . 731