Als Technikbegeisterter bin ich immer auf der Suche nach neuen spannenden Mikrocontrollern, die mit ihrer Vielseitigkeit und Leistung überzeugen. Der ESP32-S3-Zero von Waveshare ist mir dabei sofort ins Auge gefallen. Dieser kleine Mikrocontroller steckt voller Power und bietet beeindruckende Features, die ihn perfekt für Projekte aller Art machen – von einfachen Bastelarbeiten bis hin zu anspruchsvollen IoT-Anwendungen.
In diesem Beitrag möchte ich euch zeigen, wie der ESP32-S3 Zero aufgebaut ist und welche besonderen Funktionen ihn so einzigartig machen. Besonders faszinierend finde ich die Kombination aus Dual-Core-Prozessor, WiFi- und Bluetooth-Fähigkeiten sowie der Möglichkeit, KI-Anwendungen direkt auf dem Mikrocontroller auszuführen.
Damit das Ganze nicht nur Theorie bleibt, habe ich ein kleines Projekt vorbereitet, mit dem ich euch Schritt für Schritt erkläre, wie ihr den ESP32-S3 Zero programmieren könnt. Gemeinsam werden wir sehen, wie einfach es ist, mit diesem leistungsstarken Mikrocontroller Ideen zum Leben zu erwecken. Ich freue mich darauf, mit euch in die Welt des ESP32-S3 Zero einzutauchen!
Inhaltsverzeichnis
- Technische Daten & Features des ESP32-S3-ZERO
- Bezug des ESP32-S3-Zero
- Pinout des ESP32-S3-Zero
- Programmieren des ESP32-S3-Zero
- Ausblick
Technische Daten & Features des ESP32-S3-ZERO
Technische Daten
Der ESP32-S3 Zero überzeugt durch eine leistungsstarke Hardware, die ihn zu einem vielseitigen Mikrocontroller für unterschiedlichste Projekte macht. Mit seinem schnellen Dual-Core-Prozessor, umfangreichem Speicher und zahlreichen Schnittstellen bietet er alles, was für anspruchsvolle Anwendungen benötigt wird. Die folgende Tabelle gibt einen detaillierten Überblick über die wichtigsten technischen Spezifikationen.
Kategorie | Details |
---|---|
Technische Daten | |
Prozessor | Xtensa® 32-bit LX7 Dual-Core, bis zu 240 MHz Hauptfrequenz |
Wi-Fi | Unterstützt 2,4 GHz Wi-Fi (802.11 b/g/n) |
Bluetooth® | Bluetooth® 5 (LE) |
Speicher | Eingebaute 512 KB SRAM und 384 KB ROM, onboard 4 MB Flash-Speicher und 2 MB PSRAM |
GPIO-Pins | 24 GPIO-Pins mit flexibler Konfiguration |
Unterstützte Schnittstellen | 4 × SPI, 2 × I²C, 3 × UART, 2 × I²S, 2 × ADC |
USB | Integrierter USB-Seriell-Port-Controller (Full-Speed) |
Stromversorgung | Eingangsspannung 3,7 V bis 6 V |
Hardwarebeschreibung | GPIO33 bis GPIO37 werden für Octal PSRAM verwendet und sind nicht zugänglich |
WS2812-Anschluss | GPIO21 ist für die Verbindung mit der WS2812 RGB LED vorgesehen |
UART-Pins | TX (GPIO43) und RX (GPIO44) als Standard UART0 Pins markiert |
Firmware-Flash | Firmware erfordert das Halten der BOOT-Taste (GPIO0) während des Anschlusses des Type-C-Kabels |
Features
Neben seiner beeindruckenden technischen Ausstattung punktet der ESP32-S3 Zero mit durchdachten Features, die ihn besonders benutzerfreundlich und effizient machen. Von energieeffizienten Steuerungsmöglichkeiten bis hin zur Unterstützung moderner Kommunikationsstandards – hier sind die Highlights auf einen Blick.
Features | Details |
---|---|
Energieeffizienz | Unterstützt flexible Taktrate und unabhängige Modul-Stromversorgung zur Realisierung von Energiesparmodi |
Antenne | Onboard-Keramikantenne, geeignet für direkte Lötung auf Trägerplatinen |
RGB LED | Unterstützt WS2812 RGB LED mit spezifischen GPIO-Verbindungen |
Low-Power-Funktionen | Verschiedene Steuerungsmöglichkeiten für geringeren Stromverbrauch in verschiedenen Szenarien |
Unterschied – ESP32-S3-Zero & Zero M
Der Mikrocontroller ESP32-S3-Zero ist in zwei Versionen erhältlich: die Standardausführung ohne Header (Stiftleisten) und die Variante ESP32-S3-Zero-M, bei der die Header vormontiert sind. Technisch unterscheiden sich die beiden Versionen nicht, sodass du je nach Bedarf und Projektanforderungen wählen kannst.
Die ESP32-S3-Zero-M-Version mit vormontierten Headern ist ideal, wenn du deine Schaltung zunächst auf einem Breadboard entwickeln möchtest. Hast du dein Projekt fertiggestellt und möchtest es auf eine Platine (PCB) übertragen, bietet sich die Standardversion ESP32-S3-Zero ohne Header an. Diese erlaubt es dir, den Mikrocontroller direkt auf die Platine zu löten, was für eine kompaktere und robustere Umsetzung sorgt.
So hast du die Flexibilität, den ESP32-S3-Zero perfekt an deinen Entwicklungsprozess und die Anforderungen deines Projekts anzupassen.
Bezug des ESP32-S3-Zero
Den kleinen Mikrocontroller bekommst du in den einschlägigen Elektronikshops wie Ebay, Amazon, AliExpress usw. jedoch unterscheiden sich hier die Preise enorm, daher empfehle ich dir einen tagesaktuellen Preisvergleich.
- berrybase.de – 6,90 €
- ebay.de* – ab 7,85 €
- amazon.de* – ab 11,80 €
- aliexpress.com – ab 3,89 €
Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!
Pinout des ESP32-S3-Zero
Der kompakte Mikrocontroller ESP32-S3-Zero überzeugt mit seiner kleinen Platine von nur 18 mm x 23,5 mm. Trotz dieser geringen Größe bietet er stolze 40 Pins, die vielfältige Möglichkeiten zur Anbindung von Peripheriegeräten ermöglichen. Neben grundlegenden Schnittstellen wie I²C, SPI und UART sind an den Pins GP1 bis GP13 sowie GP17 und GP18 zusätzliche ADC-Funktionen verfügbar, sodass hier auch analoge Signale verarbeitet werden können. Diese Kombination aus Größe und Funktionalität macht den Mikrocontroller besonders attraktiv für vielseitige Projekte.
Weitere Informationen zu diesem Mikrocontroller findest du in der offiziellen englischen Dokumentation unter https://www.waveshare.com/wiki/ESP32-S3-Zero.
Programmieren des ESP32-S3-Zero
Wie bei den meisten ESP32-Mikrocontrollern stehen dir auch beim ESP32-S3-Zero verschiedene Möglichkeiten zur Programmierung offen. Du kannst ihn in der Arduino IDE, mit Espressif-Tools oder in MicroPython/CircuitPython programmieren.
Ab Werk ist der Mikrocontroller bereits mit einer Firmware ausgestattet, die es dir ermöglicht, ihn in der Arduino IDE oder mit Espressif zu verwenden. Möchtest du hingegen mit MicroPython arbeiten, ist es notwendig, eine spezielle Firmware zu flashen. Keine Sorge, wie das funktioniert, erkläre ich dir Schritt für Schritt in dem oben verlinkten YouTube-Video.
Arduino IDE
Installieren des Boardtreibers
Bevor wir mit der Programmierung beginnen können, müssen wir, soweit noch nicht geschehen, den Boardtreiber installieren. Dieser Treiber kommt mit dem Paket von Esspressif Systems, welches wir über die nachfolgende „Zusätzliche Boardverwalter URL“ finden.
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Anschließend kann man über den Boardverwalter (6) nach
esp32 (7) suchen und aus den Suchergebnissen die Schaltfläche INSTALL (8) am Eintrag „esp32 von Espressif“ klicken.
Auswahl und Konfiguration des ESP32-S3-Zero in der Arduino IDE
Wie erwähnt, kommt mit dem Paket viele Treiber für diverse ESP32 Mikrocontroller. Aus dieser Liste wählen wir den Eintrag „ESP32S3 Dev Module“ aus.
Anschließend wählen wir den COM-Port aus. (Natürlich sollte ab jetzt der Mikrocontroller mit dem PC verbunden sein!)
Für die Ausgabe der Daten auf der seriellen Schnittstelle müssen wir den Wert von „USB CDC On Boot“ von Disabled (default) auf Enabled setzen.
Rechts findest du die vollständige Konfiguration des ESP32-S3, so wie ich sie verwende. Dabei habe ich alle Werte auf ihre Standardwerte (Default) belassen, mit Ausnahme der Option „USB CDC ….“, die ich individuell angepasst habe.
Programmieren der WS2812 RGB LED
Lassen wir das übliche „Hello, World!“ hinter uns und steigen direkt in ein spannenderes Projekt ein: die Programmierung der verbauten WS2812 RGB-LED, die am GPIO10 angeschlossen ist. Im standardmäßigen Programm, das automatisch startet, sobald du den Mikrocontroller an deinen PC anschließt, kannst du bereits einen Farbwechsel beobachten. Genau diesen Effekt wollen wir nun selbst programmieren und dabei die Funktionsweise der RGB-LED besser verstehen.
Installieren der Adafruit NeoPixel Bibliothek
Für das Programmieren der WS2812 NeoPixel verwende ich die Bibliothek Adafruit NeoPixel welche du entweder als ZIP-Datei vom GitHub Repository adafruit/Adafruit_NeoPixel herunterladen kannst, oder noch viel einfacher über
den Bibliotheksverwalter der Arduino IDE.
Programmieren eines Farbwechsels an dem NeoPixel
Programmieren wir also nun die WS2812 RGB LED. Diese ist am GPIO10 angeschlossen welchen wir programmatisch über den Pin 21 erreichen. Im Video siehst du den Farbwechsel von Rot über Grün zu Blau. Dabei ist die Helligkeit zunächst auf 50% eingestellt (das mag die Kamera deutlich besser).
Auf der RGB LED kannst du theoretisch alle möglichen RGB Farben anzeigen. Das Problem ist hier bei kleinen Unterschieden das dieses nicht immer so sichtbar ist. Ich empfehle dir hier die Seite https://htmlcolorcodes.com/ wo du dir eine beliebige Farbe auswählen kannst und diese einfach in den Code kopierst.
//Bibliothek zum ansteuern einer NeoPixel #include <Adafruit_NeoPixel.h> //Pin an welche die NeoPixels angeschlossen sind #define PIN 21 //Anzahl der NeoPixel #define NUMPIXELS 1 //Objektinstanz Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRBW + NEO_KHZ800); //Anzahl der Farben const int NUM_FARBEN = 3; //Array mit Farben uint32_t farben[] = { pixels.Color(0,255,0), //rot pixels.Color(255,0,0), //grün pixels.Color(0,0,255), //blau }; void setup() { //beginn der Kommunikation mit der NeoPixel pixels.begin(); //setzen der Helligkeit auf 50% pixels.setBrightness(50); } void loop() { //Schleife über die Farben for(int index=0;index<NUM_FARBEN;index++){ pixels.clear(); //setzen der Farbe an der NeoPixel pixels.setPixelColor(0, farben[index]); //absenden / anzeigen des Farbwertes pixels.show(); //einlegen einer kleinen Pause von 500 Millisekunden delay(500); } }
MicroPython
Flashen des ESP32-S3-Zero für die Programmierung in MicroPython
Abschließend möchte ich dir erläutern wie man diesen Mikrocontroller in MicroPython programmiert. Dazu müssen wir diesen ersteinmal neu flashen. Für das flashen wiederum benötigen wir die Firmware mit dem passenden Tool von der Seite https://www.waveshare.com/wiki/ESP32-S3-Zero.
Normalerweise kannst du die ESPs auch via Thonny flashen, was meist deutlich einfacher ist, jedoch sind die dort verwendeten Firmware Dateien nicht kompatibel mit dem ESP32-S3-Zero und wir müssen das Flashtool verwenden.
Wenn das Tool flash_download_tool_3.9.5.exe gestartet wurde, müssen wir zunächst den korrekten Mikrochip auswählen. In diesem Fall natürlich einen ESP32-S3.
Anschließend öffnet sich das Hauptfenster in welchem wir ein paar kleine Anpassungen durchführen müssen. Die Dateien (1) müssen in einer definierten Reihenfolge geflasht werden, diese sind bereits vorbelegt jedoch passt der Pfad nicht du findest die Dateien unter.\Esp32-s3-zero-mpy\mpy\bin.
Die Speicheradressen (2) solltest du nicht anpassen müssen!
Im vorletzen Schritt wählen wir den COM-Port (3) aus und klicken anschließend auf „START“ (4).
Programmieren der RGB LED mit MicroPython in Thonny
Im Beitrag Programmieren mit MicroPython #4: RGB LED am ESP32 betreiben habe ich dir bereits erläutert wie man eine RGB LED am ESP32 mit MicroPython programmiert. Das gute ist, du benötigst keine zusätzlichen Bibliotheken denn in der Firmware ist vieles bereits inkludiert.
Die Programmierung ist ähnlich einfach, wir müssen dabei jedoch beachten, dass die RGB vom Typ GRB ist also die Farben in einer anderen Reihenfolge angeordnet / angesteuert werden.
# import der benötigten Bibliotheken import neopixel # für das ansteuern der WS2812 RGB LED from machine import Pin # für das ansteuern der Pins from time import sleep # zum einlegen einer Pause im Programm # Objekt instanzieren, die RGB LED ist am GPIO10 / Pin21 angeschlossen rgbLeds = neopixel.NeoPixel(Pin(21, Pin.OUT), 1) # Tupel mit diversen RGB Farbwerten farben = ( (255,0,0), # Rot (0,255,0), # Grün (0,0,255), # Blau (0,255,255), # Türkis (255,0,255), # Pink (255,255,0), # Gelb (255,255,255) # Weiß ); # weitere Farben können einfach unter https://htmlcolorcodes.com/ # zusammengestellt werden. # starten einer Endlosschleife while True: # Schleife über die Farben for farbe in farben: # setzen eines GRB Farbwertes! # zuerst Grün, dann Rot und anschließend Blau! rgbLeds[0] = (farbe[1], farbe[0], farbe[2]) # schreiben der Farbe an dem Pixel rgbLeds.write() # einlegen einer kleinen Pause von 500 Millisekunden sleep(0.5)
Zurück zur Arduino IDE
Wenn du den kleinen Mikrocontroller wieder in der Arduino IDE porgrammieren möchtest, dann kannst du wie im Beitrag ESP32: Zurück von MicroPython zur Arduino IDE in nur einem Schritt erläutert einfach ein leeres Programm auf diesen aufspielen und dieser ist wieder bereit für dein nächstes Projekt aus der Arduino IDE.
Ausblick
Durch seine geringe größe und Leistungsaufnahme ist dieser Ideal für kleine Projekte welche über Solar laufen und ich möchte mit diesem die Helligkeit über das Jahr messen. Diese Werte sollen dienen um die gewonne Leistung meines Balkonkraftwerkes in das verhältnis zum Licht zu stellen.
Dabei werde ich nicht nur das Licht in Lumen messen sondern auch die UVA strahlen. Dafür gibt es jeweils einzelne Sensoren.