Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Über mich
  • Deutsch
  • English
Menu

ESP32-S3-Zero: Kleine Größe, große Leistung – Ein Überblick

Posted on 6. Dezember 20246. Dezember 2024 by Stefan Draeger

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.

ESP32-S3-Zero: Kleine Größe, große Leistung – Ein Überblick
Dieses Video auf YouTube ansehen.

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
    • Technische Daten
    • Features
    • Unterschied – ESP32-S3-Zero & Zero M
  • Bezug des ESP32-S3-Zero
  • Pinout des ESP32-S3-Zero
  • Programmieren des ESP32-S3-Zero
    • Arduino IDE
      • Installieren des Boardtreibers
      • Auswahl und Konfiguration des ESP32-S3-Zero in der Arduino IDE
      • Programmieren der WS2812 RGB LED
        • Installieren der Adafruit NeoPixel Bibliothek
        • Programmieren eines Farbwechsels an dem NeoPixel
    • MicroPython
      • Flashen des ESP32-S3-Zero für die Programmierung in MicroPython
      • Programmieren der RGB LED mit MicroPython in Thonny
      • Zurück zur Arduino IDE
  • 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.

KategorieDetails
Technische Daten
ProzessorXtensa® 32-bit LX7 Dual-Core, bis zu 240 MHz Hauptfrequenz
Wi-FiUnterstützt 2,4 GHz Wi-Fi (802.11 b/g/n)
Bluetooth®Bluetooth® 5 (LE)
SpeicherEingebaute 512 KB SRAM und 384 KB ROM,
onboard 4 MB Flash-Speicher und 2 MB PSRAM
GPIO-Pins24 GPIO-Pins mit flexibler Konfiguration
Unterstützte Schnittstellen4 × SPI, 2 × I²C, 3 × UART, 2 × I²S, 2 × ADC
USBIntegrierter USB-Seriell-Port-Controller (Full-Speed)
StromversorgungEingangsspannung 3,7 V bis 6 V
HardwarebeschreibungGPIO33 bis GPIO37 werden für Octal PSRAM verwendet und sind nicht zugänglich
WS2812-AnschlussGPIO21 ist für die Verbindung mit der WS2812 RGB LED vorgesehen
UART-PinsTX (GPIO43) und RX (GPIO44) als Standard UART0 Pins markiert
Firmware-FlashFirmware 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.

FeaturesDetails
EnergieeffizienzUnterstützt flexible Taktrate und unabhängige Modul-Stromversorgung zur Realisierung von Energiesparmodi
AntenneOnboard-Keramikantenne, geeignet für direkte Lötung auf Trägerplatinen
RGB LEDUnterstützt WS2812 RGB LED mit spezifischen GPIO-Verbindungen
Low-Power-FunktionenVerschiedene 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.

Aufbau - ESP32-S3-Zero
Aufbau – ESP32-S3-Zero

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.

Arduino IDE - Auswahl des "ESP32S3 Dev Module "
Arduino IDE – Auswahl des „ESP32S3 Dev Module „

Anschließend wählen wir den COM-Port aus. (Natürlich sollte ab jetzt der Mikrocontroller mit dem PC verbunden sein!)

Arduino IDE - Auswahl des COM-Ports
Arduino IDE – Auswahl des COM-Ports

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.

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen

Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}