Generelles zum Einsatz von ESP32 Chips und Modulen

Serial IO über USB

Ausgabe über USB

Eingabe über USB

Das eigentliche Problem: Der ESP32 kann nativ USB, allerdings nicht als UART sondern nur mit CDC. Der „ESP-IDF Monitor“ kann nur Daten empfangen, aber nicht senden. Daher funktioniert ein getchar() im Code nicht.

OTA (Over-The-Air Update)

Flash Layout (default):
┌─────────────────┐
│   Bootloader    │ 0x1000
├─────────────────┤
│  Partition Table│ 0x8000
├─────────────────┤
│      NVS        │ (WiFi credentials, etc.)
├─────────────────┤
│    OTA Data     │ (welche Partition aktiv ist)
├─────────────────┤
│    OTA App 0    │ ← Aktuelle Firmware
├─────────────────┤
│    OTA App 1    │ ← Neue Firmware wird hier geschrieben
└─────────────────┘

HTTP Pull (ESP32 holt sich Update)

PC/Server hostet .bin Datei
       ↓
ESP32 fragt periodisch oder auf Kommando:
"Gibt es eine neue Version?"
       ↓
ESP32 lädt .bin herunter
       ↓
Schreibt in inaktive Partition
       ↓
Reboot → Bootloader startet neue Version

HTTP Push via Telnet-Command (Du schickst Update)

Du tippst: OTA http://192.168.1.100/firmware.bin
       ↓
ESP32 lädt von dieser URL
       ↓
Reboot

TCP Push (Du streamst .bin direkt)

nc 192.168.1.42 2323
OTA START <size>
→ Ready
[binary data stream]
→ OK: Rebooting

VS Code ESP-IDF OTA (Tool-gestützt)

idf.py build
→ firmware.bin erzeugt

idf.py upload-ota --host 192.168.1.42
→ ESP32 empfängt und flasht