Inhaltsverzeichnis

Alle Kapitel aufklappen
Alle Kapitel zuklappen
1 Python 3 vs. MicroPython
11
1.1 Popularität von Programmiersprachen
12
1.2 Gemeinsamkeiten und Unterschiede
14
2 Entwicklungsboards und -umgebungen
19
2.1 Eingesetzte Hardware
20
2.1.1 Bildungssysteme
20
2.1.2 Entwicklungsboards
24
2.2 Entwicklungsumgebungen
43
2.2.1 Texteditor und mpremote reichen
44
2.2.2 Thonny
46
2.2.3 Arduino Lab for MicroPython
48
2.2.4 MAiXPy IDE
49
2.2.5 OpenMV IDE
50
2.3 Firmware installieren
51
2.3.1 Pyboard
52
2.3.2 Nucleo-F446RE
54
2.3.3 BBC micro:bit
55
2.3.4 ESP32
56
2.3.5 Teensy 4.0
59
2.3.6 Raspberry Pi Pico
59
2.3.7 Arduino Nano und Portenta
61
2.3.8 MAiX BiT
63
2.3.9 OpenMV Cam H7 R2
64
2.4 MicroPython-Benchmarks
66
2.4.1 micropython-pystone-lowmem.py
67
2.4.2 micropython_mega_benchmark.py
68
2.4.3 Interpretation der Resultate insgesamt
70
3 Die Sprachelemente von MicroPython
73
3.1 Grundlegende Syntax
73
3.1.1 Interaktive Eingaben in der Shell
73
3.1.2 Einrückungen und Codeblöcke
75
3.1.3 Kommentare
76
3.1.4 Konstanten, Variablen und Namenskonventionen
76
3.1.5 Datentypen (int, float, str, bool)
78
3.1.6 Tupel
79
3.1.7 Listen
79
3.1.8 Dictionaries
81
3.1.9 Sets
83
3.1.10 Strings und ihre Methoden
85
3.2 Operatoren
87
3.2.1 Arithmetische Operatoren
87
3.2.2 Vergleichsoperatoren
88
3.2.3 Logische Operatoren (and, or, not)
89
3.2.4 Zuweisungsoperatoren (+=, –=, …)
91
3.3 Kontrollstrukturen
92
3.3.1 if … elif … else
92
3.3.2 for-Schleifen
93
3.3.3 while-Schleifen
95
3.3.4 break, continue, pass
97
3.3.5 try … except
98
3.4 Funktionen
102
3.4.1 Built-in-Funktionen
102
3.4.2 Anwenderspezifische Funktionen
106
3.4.3 Lambda-Funktionen
110
3.5 Module in MicroPython
111
3.5.1 Importmechanismus
111
3.5.2 Wichtige eingebaute Module
113
3.5.3 Benutzerdefinierte Module
128
3.6 Besonderheiten von MicroPython
131
3.6.1 Digitale Ein- und Ausgabe (I/O)
132
3.6.2 Analoge Ein- und Ausgabe (I/O)
135
3.6.3 I2C-Bus
139
3.6.4 Serial Peripheral Interface (SPI)
142
3.6.5 UART
146
3.6.6 1-Wire
149
3.6.7 Interrupts
154
3.6.8 Timer
158
3.6.9 Watchdog
161
4 Daten speichern, teilen und anzeigen
167
4.1 Dateien und Dateisystem
167
4.1.1 Skript-Struktur: main.py, boot.py
167
4.1.2 Dateisystem-Funktionen
168
4.1.3 Erweiterung des Speichers durch SD-Karten
172
4.2 Kommunikation
176
4.2.1 WiFi
177
4.2.2 Ethernet
184
4.2.3 Ethernet-WiFi-Kombination
187
4.2.4 ESP-NOW
188
4.2.5 Bluetooth Low Energy (BLE)
192
4.2.6 Kommunikationsmodule mit AT-Kommando-Interface
205
4.3 Anzeigeeinheiten
210
4.3.1 Konventionelle LEDs
210
4.3.2 NeoPixel
211
4.3.3 OLED
214
4.3.4 LCD
215
4.3.5 E-Paper
224
5 Fortgeschrittene Programmierung
229
5.1 Multitasking mit Threads und AsyncIO
229
5.1.1 Threads
229
5.1.2 AsyncIO
233
5.1.3 Threads vs. AsyncIO
234
5.2 State Machines
235
5.3 Raspberry Pi Pico: PIO-Programmierung
239
5.4 Bildverarbeitung
248
5.4.1 OpenMV Cam H7 R2
248
5.4.2 MAiX BiT
252
6 Debugging
257
6.1 Statische Codeanalyse
257
6.2 Debugging über REPL
259
6.3 print()-Debugging
261
6.4 Thonny-Debugger
262
7 Best Practices
265
7.1 Auswahlkriterien für den Mikrocontroller
265
7.1.1 RAM und Flash
266
7.1.2 Performance der CPU
266
7.1.3 Peripherie und Hardware-Funktionen
267
7.2 Auswahl der Firmware
267
7.2.1 Offizielle MicroPython-Firmware
267
7.2.2 Erweiterte oder angepasste Firmware
268
7.2.3 Firmware-Features prüfen
269
7.3 MicroPython und das CPU Diagnostic Tool
270
7.4 Fazit
280
8 MicroPython-Anwendungen
283
8.1 Anwesenheitsdetektion zur Raumüberwachung
283
8.1.1 Ultraschallsensoren
283
8.1.2 ToF-Sensoren
289
8.1.3 Raumüberwachung mit PIR-Sensor
294
8.1.4 Sensorkombination zur Raumüberwachung
298
8.2 BLE-Sensor-Netzwerk mit BLE-MQTT-Gateway
299
8.2.1 Verwendete BLE-Sensorik
299
8.2.2 Eingesetzte Hardware
301
8.2.3 Anforderungen an das BLE-Sensor-Netzwerk
302
8.2.4 BLE-MQTT-Gateway-Anwendungsprogramm
302
8.3 Monitoring des Raumklimas
310
8.3.1 Sensoren für die Messung der Luftqualität
311
8.3.2 Eingesetzte Hardware
313
8.3.3 Anforderungen an die Messeinrichtung
315
8.3.4 Anwendungsprogramm zum Raum-Monitoring
316
8.3.5 Anwendungsprogramm zum Schlafraum-Monitoring
323
8.4 Intelligenter Regenalarm
330
8.4.1 Datenbasis und API-Aggregation via Open-Meteo
331
8.4.2 Algorithmische Trendanalyse mittels KI
331
8.4.3 Eingesetzte Hardware
331
8.4.4 Anforderungen an die Messeinrichtung
332
8.4.5 Anwendungsprogramm zum Regenalarm
335
8.5 Messwerterfassung und Visualisierung im Webserver
345
8.5.1 Verwendete Sensoren
346
8.5.2 Eingesetzte Hardware
346
8.5.3 Anforderungen an die Messeinrichtung
346
8.5.4 Anwendungsprogramm zur Messwerterfassung und Visualisierung
347
8.6 Visualisierung von Bilddaten im Webserver
355
8.6.1 Verwendete Sensoren
355
8.6.2 Eingesetzte Hardware
355
8.6.3 Anforderungen an die Messeinrichtung
357
8.6.4 Anwendungsprogramm zur Visualisierung im Webserver
357
8.7 Echtzeit-Audiovisualisierung
363
8.7.1 Verwendete Sensorik
363
8.7.2 Eingesetzte Hardware
363
8.7.3 Anforderungen an die Visualisierungseinrichtung
364
8.7.4 Anwendungsprogramm zur Visualisierung
365
8.8 Internetzugriff auf IoT-Geräte
372
8.8.1 Blynk im Überblick
372
8.8.2 NeoPixel-Steuerung
374
8.8.3 Klimasteuerung
378
8.8.4 Fazit zu Blynk
383
Index
385