ESP32-S3 Kurs

ESP32-S3 Kurs – Übersicht

Der ESP32-S3 auf dem T-FPGA-Board ist mehr als ein Kommunikationsbaustein – er ist eine vollständige Mikrocontroller-Plattform mit WLAN, Bluetooth Low Energy und integriertem USB. Dieser Kurs erschließt den ESP32-S3 systematisch: von den ersten Schritten mit der ESP-IDF über drahtlose Kommunikation bis hin zu den spezifischen Aufgaben, die er auf dem T-FPGA übernimmt. Dazu gehören die Überwachung des Akkus, die Steuerung des Power-Management-ICs und schließlich die Rolle als Kommunikationsbrücke zwischen der Außenwelt und dem ARM Cortex-M3 im GoWin-FPGA.

Alle Projekte werden direkt mit der ESP-IDE entwickelt – ohne vereinfachende Abstraktionsschichten. Als Hardware genügen in den meisten Projekten der auf dem T-FPGA vorhandene Taster und die LED; externe Module werden nur dort eingesetzt, wo es inhaltlich zwingend notwendig ist.

Der Kurs gliedert sich in vier Schienen, die aufeinander aufbauen:


Schiene A – Grundlagen

Die erste Schiene legt das Fundament. Sie führt in die ESP-IDF-Projektstruktur ein, erklärt den Umgang mit GPIO und Interrupts und macht FreeRTOS zum expliziten Thema. Diese Projekte sind unabhängig vom T-FPGA und laufen auf jedem ESP32-S3-Board.

Projekt 1 – hello_world
Das erste lauffähige Programm: eine Textzeile über UART ausgeben. Verifikation der Toolchain, Einführung in die ESP-IDF-Projektstruktur.

Projekt 2 – gpio_blink
Die Board-LED blinkt. GPIO-Konfiguration, gpio_set_direction, gpio_set_level und die minimale FreeRTOS-Nutzung mit vTaskDelay.

Projekt 3 – gpio_button
Der Board-Taster toggelt die LED – per Interrupt, nicht per Polling. GPIO-Interrupts, ISR-Handler und saubere Kommunikation zwischen ISR und Task über eine Queue.

Projekt 4 – uart_echo
Zeichen über UART empfangen und zurückspiegeln. UART als vollwertiger bidirektionaler Kanal, Ringbuffer und Event-Queue – Grundlage für die spätere Kommunikation mit dem ARM Cortex-M3.

Projekt 5 – freertos_tasks
FreeRTOS wird zum expliziten Thema: zwei unabhängige Tasks – einer steuert die LED, einer liest UART – kommunizieren über eine Queue. Task-Prioritäten, Stack-Sizing und Inter-Task-Kommunikation.


Schiene B – Kommunikationsprotokolle

Die zweite Schiene erschließt die Kommunikationsschnittstellen des ESP32-S3. I²C spielt dabei eine besondere Rolle, da der AXP2102 Power-Management-IC auf dem T-FPGA selbst über I²C angesprochen wird.

Projekt 6 – i2c_scanner
Der I²C-Bus wird nach angeschlossenen Geräten abgesucht, alle gefundenen Adressen werden ausgegeben. Praktisches Debugging-Werkzeug und direkte Vorbereitung auf den AXP2102.

Projekt 7 – spi_display
Ein kleines SPI-Display wird über PMOD oder Steckerleiste angeschlossen und angesteuert: Text und einfache Grafik. SPI-Bus, DMA-Transfer und die Trennung von Treiber- und Anwendungslogik. Erstes Projekt mit einer Ausgabe jenseits des Terminals – und damit ein guter Motivationsschub vor den Wireless-Themen.


Schiene C – Wireless

Die dritte Schiene nutzt die Alleinstellungsmerkmale des ESP32-S3: WLAN und Bluetooth Low Energy. Drei Projekte zeigen drei grundlegend verschiedene Kommunikationsparadigmen.

Projekt 8 – ble_advertiser
Der ESP32-S3 sendet BLE-Advertisement-Pakete, die mit einer Smartphone-App (z. B. nRF Connect) empfangen werden können. Einführung in den BLE-Stack, GATT-Grundbegriffe und NimBLE.

Projekt 9 – wifi_webserver
Ein einfacher HTTP-Server läuft auf dem ESP32-S3 und stellt Zustandsdaten im Browser bereit. WLAN-Stack, TCP/IP, HTTP-Request-Handling – Zustandsdaten browserbasiert abrufbar, ohne App.

Projekt 10 – wifi_http_client
Der ESP32-S3 als Client: Verbindung ins WLAN, HTTP GET auf eine externe API, Antwort parsen und verarbeiten. LwIP, Event-Loop und cJSON.


Schiene D – T-FPGA-spezifisch

Die vierte Schiene ist auf das T-FPGA-Board zugeschnitten. Sie beginnt mit dem Power-Management-IC und führt über die Akkuüberwachung bis zur Kommunikation mit dem ARM Cortex-M3 im GoWin-FPGA – und schließlich zu einem Over-the-Air-Update für beide Prozessoren.

Projekt 11 – power_lib
Den AXP2102 per I²C initialisieren und als wiederverwendbare ESP-IDF-Komponente kapseln. Aufbau einer Bibliothek mit eigener CMakeLists.txt, register-basierte Hardware-Programmierung. Diese Komponente wird in allen folgenden T-FPGA-Projekten als Dependency eingebunden.

Projekt 12 – battery_monitor
Laufende Überwachung von Akkuspannung, Ladestrom und Ladestand über den AXP2102. Periodische I²C-Abfragen in einem dedizierten Task, Zustandsmaschine für Ladezustände, Schwellwerte und Hysterese. Ausgabe über UART und LED-Signalisierung.

Projekt 13 – fpga_uart_bridge
Der ESP32-S3 empfängt Daten vom ARM Cortex-M3 im FPGA über UART und leitet sie per WLAN oder BLE weiter – und umgekehrt. Protokolldesign: Framing, Checksumme, Acknowledge. Der ESP32-S3 als Kommunikations-Offloader.

Projekt 14 – fpga_command_protocol
Aufbauend auf Projekt 13: ein strukturiertes Befehlsprotokoll zwischen ESP32-S3 und ARM Cortex-M3. Protokollspezifikation, Parser, Fehlerbehandlung und Versionierung. Einführung in die Disziplin des Protokolldesigns.

Projekt 15 – ble_fpga_remote
Das Vorzeigeprojekt: Ein Smartphone steuert über BLE den ARM Cortex-M3 im FPGA – der ESP32-S3 ist die Brücke. Ende-zu-Ende-Datenfluss über drei Systeme, GATT-Service-Design, Latenz und Zuverlässigkeit in der Praxis.

Projekt 16 – webserver_status
Erweiterung von Projekt 9: Zustandsdaten des gesamten Systems – Akkustand, FPGA-Status, Sensorwerte – sind sowohl über BLE als auch im Browser abrufbar. Drei Kommunikationsparadigmen im Vergleich: gerätegekoppelt (BLE), browserbasiert (HTTP) und nachrichtenbasiert als Ausblick.

Projekt 17 – ota_esp32
Over-the-Air-Firmware-Update des ESP32-S3 über WLAN. Partitionstabellen, Bootloader, OTA-Partitionsschema und Rollback bei fehlgeschlagener Aktualisierung.

Projekt 18 – ota_fpga ▷ Bonusprojekt
Der ESP32-S3 empfängt einen neuen FPGA-Bitstream per WLAN und überträgt ihn paketweise per UART an den ARM Cortex-M3. Dieser schreibt den Bitstream in den externen SPI-Flash des GoWin-FPGAs – nach einem Reset lädt der FPGA die neue Konfiguration. Die vollständige OTA-Kette schließt den Bogen zwischen ESP32-Kurs und FPGA-Kurs.


Der rote Faden des Kurses: Jedes Projekt baut auf dem vorherigen auf. Die power_lib aus Projekt 11 läuft als stille Dependency in allen T-FPGA-Projekten mit und vermittelt dabei das Konzept der Komponentenabhängigkeit in der ESP-IDF nebenbei. Projekt 15 bringt alles zusammen – Wireless, Protokoll, FPGA-Kommunikation –, bevor die letzten drei Projekte die Plattform produktionsreif machen.


Zurück zur T-FPGA-Übersicht     Weiter: Einführung in den ESP32-S3 →