Der Arduino Nano mit ATmega328 ist nach wie vor beliebt – kompakt, einfach zu programmieren und ideal für schnelle Prototypen. Doch die Anforderungen an moderne Mikrocontroller sind gestiegen: WLAN, Bluetooth, mehr Rechenleistung und Speicher sind längst keine Luxusfeatures mehr. Selbst Arduino hat darauf reagiert und mit dem Arduino Nano ESP32 ein passendes Upgrade im bekannten Formfaktor veröffentlicht – allerdings zu einem Preis von rund 25 €.
Wer auf der Suche nach einer günstigen, aber leistungsstarken Alternative ist, sollte sich den ESP32-S3-Nano von Waveshare genauer ansehen. Der kleine Mikrocontroller im Nano-Format bringt nicht nur Dual-Core Power, 16 MB Flash, 8 MB PSRAM und USB-HID-Funktionalität, sondern kostet auf Plattformen wie AliExpress gerade einmal ein Drittel des offiziellen Pendants. Einziger Haken: Der ESP32-S3 arbeitet mit 3,3 V Logikpegeln – bei falscher Verdrahtung droht eine Beschädigung.
In diesem Beitrag zeige ich dir, was der kleine Mikrocontroller alles kann, worauf du bei der Verwendung achten solltest, und wie sich der Waveshare ESP32-S3-Nano in der Praxis schlägt.



Inhaltsverzeichnis
- Technische Übersicht des ESP32-S3-Nano
- Technischer Vergleich: Arduino Nano ESP32 vs. Waveshare ESP32-S3-Nano
- Programmierung mit dem Arduino Nano Connector Carrier Board
- Programmierung des Waveshare ESP32-S3-Nano
Technische Übersicht des ESP32-S3-Nano
Der Waveshare ESP32-S3-Nano basiert auf dem leistungsstarken ESP32-S3R8-Chip mit folgenden Merkmalen:
- Dual-Core Xtensa® LX7 Prozessor mit bis zu 240 MHz
- 16 MB Flash und 8 MB PSRAM – ideal für speicherintensive Projekte
- 512 KB SRAM + 384 KB ROM
- 2.4 GHz WiFi & Bluetooth LE (BLE)
- Unterstützung für USB HID (z. B. Tastatur oder Maus via USB)
- Kompatibel mit Arduino IDE und MicroPython
- Direkte Unterstützung für die Arduino IoT Cloud
Dank dieser Ausstattung eignet sich der Mikrocontroller für vielseitige Anwendungen – von IoT-Projekten über Sensorik und Automatisierung bis hin zu USB-basierten Eingabegeräten.

Pinout des ESP32-S3-Nano
Damit du den Waveshare ESP32-S3-Nano optimal in deine Projekte integrieren kannst, habe ich dir hier das Pinout übersichtlich zusammengestellt. Die Belegung orientiert sich stark am klassischen Arduino Nano – mit einigen wichtigen Unterschieden:
Wichtige Hinweise vorab
- Alle GPIOs arbeiten mit 3,3 V – 5 V an einem Eingang können den Mikrocontroller beschädigen!
- Die Pins sind nicht 5V-tolerant – verwende bei Bedarf Pegelwandler.
- Der USB-C-Anschluss dient sowohl zur Programmierung als auch zur Stromversorgung (5 V werden onboard auf 3,3 V geregelt).
- Einige Pins unterstützen ADC, PWM, I2C, SPI, UART und andere Funktionen mehrfach – diese können per Software konfiguriert werden.

Aufbau des Mikrocontrollers Waveshare ESP32-S3-Nano
Der Waveshare ESP32-S3-Nano im Arduino-Nano-Formfaktor ist kompakt, aber vollgepackt mit moderner Technik. Besonders auffällig sind folgende Komponenten auf der Oberseite der Platine:
Integrierte RGB-LED
Ebenfalls auf der Oberseite ist eine dreifarbige RGB-LED verbaut, deren Farben sich separat über folgende Pins steuern lassen:
Rot: GPIO46 (D14)
Grün: GPIO0 (D15)
Blau: GPIO45 (D16)
Diese RGB-LED eignet sich hervorragend für Statusanzeigen, Farbcodierungen oder Visualisierungen in IoT-Projekten.
USB-Typ-C-Anschluss
An der Stirnseite befindet sich ein moderner USB-C-Port zur Programmierung und Stromversorgung. Das macht das Board besonders zukunftssicher und kompatibel mit aktuellen Kabeln und Ladegeräten.
Rote Power-LED
Direkt rechts neben dem USB-C-Anschluss signalisiert eine rote LED die aktive Stromversorgung – sie leuchtet dauerhaft, sobald das Board mit Spannung versorgt ist.
User-LED (GPIO48 / D13)
Links vom USB-Port ist eine weitere kleine LED, die über den Pin GPIO48 (alias D13) angesteuert wird. Sie dient als klassische BuildIn-LED, wie man sie von anderen Arduino-Boards kennt – ideal für einfache Blink-Sketche und Tests.

Technischer Vergleich: Arduino Nano ESP32 vs. Waveshare ESP32-S3-Nano
Beide Mikrocontroller setzen auf den leistungsstarken ESP32-S3-Chip, bieten WiFi & Bluetooth LE, viel Flash-Speicher und einen Nano-kompatiblen Formfaktor. Dennoch gibt es Unterschiede – besonders beim Preis und den Features rund um Peripherie, Stromversorgung und USB.

Merkmal | Arduino® Nano ESP32 | Waveshare ESP32-S3-Nano |
---|---|---|
Microcontroller | u-blox® NORA-W106 (ESP32-S3) | ESP32-S3R8 |
Prozessorkerne | 2× Xtensa® LX7, 240 MHz | |
ROM / RAM | 384 kB / 512 kB | |
Flash | 16 MB | |
PSRAM | 8 MB | |
WLAN / Bluetooth | 2,4 GHz WiFi, BLE im ESP32-S3 integriert | |
USB-Anschluss | USB-C | USB-C (mit HID-Unterstützung) |
HID-Unterstützung | ❌ (nicht aktiviert) | ✅ (funktioniert als Maus/Tastatur) |
Digitale I/O Pins | 14 | |
Analoge Eingänge | 8 | |
PWM-fähige Pins | 5 | |
UART / I2C / SPI | 2x / 1x / 1x | |
I/O Spannung | 3,3 V | |
Eingangsspannung | 6 – 21 V | |
I/O Strom pro Pin | 40 mA | |
Größe (L × B) | 45 × 18 mm | |
Besonderheiten | RGB-LED integriert, Arduino Cloud, CE-konform | HID-Unterstützung, günstiger Preis |
Preis (ca.) | ca. 25 € | ca. 6–8 € |
Fazit: Wer bietet mehr fürs Geld?
Der Arduino® Nano ESP32 punktet mit offizieller CE-Zertifizierung, sauberer Integration in das Arduino-Ökosystem und einer integrierten RGB-LED – ideal für den professionellen Einsatz oder den Bildungsbereich.
Der Waveshare ESP32-S3-Nano hingegen ist ein echter Preis-Leistungs-Tipp: nahezu identische Hardware, native USB-HID-Unterstützung, volle Kompatibilität mit Arduino IDE, MicroPython und Arduino Cloud – und das zu einem Bruchteil des Preises. Für Maker, Bastler und fortgeschrittene Hobbyentwickler bietet dieses Board alles, was man für moderne Projekte braucht.
Programmierung mit dem Arduino Nano Connector Carrier Board
Der Waveshare ESP32-S3-Nano lässt sich perfekt mit dem bereits vorgestellten
Arduino Nano Connector Carrier Board kombinieren. Dieses Erweiterungsboard bietet:
- vier Grove- und Qwiic-kompatible Anschlüsse (digital/analog, seriell, I2C)
- eine integrierte Spannungsumschaltung (3,3 V / 5 V) – ideal für den ESP32-S3
- einfaches Breadboard-freies Prototyping
- kompaktes Format – perfekt für kompakte IoT-Projekte



Gerade in Verbindung mit Arduino Cloud ergeben sich spannende Möglichkeiten:
Durch die standardisierte Nano-Pinbelegung kann der Waveshare ESP32-S3-Nano direkt in das Carrier Board eingesetzt und über die gewohnten Modulino-Schnittstellen erweitert werden.



Programmierung des Waveshare ESP32-S3-Nano
Der Waveshare ESP32-S3-Nano kommt bereits mit einem vorinstallierten Demo-Programm, das erste Funktionen wie die RGB-LED-Ansteuerung demonstriert. Dieses Beispiel findest du auch auf der offiziellen Wiki-Seite von Waveshare:
🔗 Demo herunterladen (Waveshare Wiki)
Das vorinstallierte Beispiel blinkt unter anderem die integrierte RGB-LED und zeigt so, dass das Board korrekt funktioniert.
Beispiel – blinken der RGB LED und BuildInLED am Waveshare ESP32-S3-Nano Board
// User-LED auf D13 #define led 13 // On-Board RGB (gemeinsame Anode: LOW = an, HIGH = aus) #define ledRot 14 // D14 -> Rot #define ledGruen 16 // D16 -> Grün #define ledBlau 15 // D15 -> Blau const int PAUSE = 150; void setup() { pinMode(led, OUTPUT); pinMode(ledRot, OUTPUT); pinMode(ledGruen, OUTPUT); pinMode(ledBlau, OUTPUT); // alles aus (bei gemeinsamer Anode: HIGH = aus) digitalWrite(ledRot, HIGH); digitalWrite(ledGruen, HIGH); digitalWrite(ledBlau, HIGH); digitalWrite(led, LOW); } void rgbLEDStatus(bool rot, bool gruen, bool blau) { // Werte sind Pegel: HIGH=aus, LOW=an digitalWrite(ledRot, rot); digitalWrite(ledGruen, gruen); digitalWrite(ledBlau, blau); } void loop() { rgbLEDStatus(LOW, HIGH, HIGH); // Rot delay(PAUSE); rgbLEDStatus(HIGH, LOW, HIGH); // Grün delay(PAUSE); rgbLEDStatus(HIGH, HIGH, LOW); // Blau delay(PAUSE); // User-LED blinken digitalWrite(led, HIGH); delay(PAUSE); digitalWrite(led, LOW); delay(PAUSE); }
Wichtiger Hinweis zur RGB-LED: Gemeinsame Anode
Die auf dem Board verbaute RGB-LED ist intern mit einer gemeinsamen Anode (Pluspol) verschaltet. Das bedeutet für die Programmierung:
- Ein LOW-Signal (0 V) aktiviert die jeweilige Farbe.
- Ein HIGH-Signal (3,3 V) schaltet sie aus.
Das Verhalten ist also invertiert im Vergleich zu typischen LEDs mit gemeinsamer Kathode.
Farbe | GPIO-Pin | Arduino-Pin | Aktiv bei… |
---|---|---|---|
Rot | GPIO46 | D14 | LOW |
Grün | GPIO0 | D15 | LOW |
Blau | GPIO45 | D16 | LOW |
Einsatz mit dem Arduino Nano Connect Carrier und den Modulinos
Der Waveshare ESP32-S3-Nano lässt sich nicht nur als leistungsstarker Standalone-Mikrocontroller nutzen, sondern fügt sich dank seines Nano-kompatiblen Formfaktors auch perfekt in das Arduino Nano Connect Carrier Board ein. Dadurch kannst du ihn nahtlos mit den Modulinos aus dem Arduino Plug and Make Kit kombinieren – ideal für schnelle Prototypen, Schülerprojekte oder smarte IoT-Lösungen.
Ich habe das Plug and Make Kit bereits ausführlich in diesen Beiträgen vorgestellt:
- 🔗 Was ist drin und wie benutzt man es?
- 🔗 Richtungsanzeige mit Modulino Movement
- 🔗 Abstandskontrolle mit Alarmfunktion
- 🔗 Nano Connector Carrier Board clever nutzen
Modulinos über Qwiic einfach verbinden
Die Modulinos werden über die Qwiic-Schnittstelle (I2C) mit dem Mikrocontroller verbunden. Der Anschluss ist dank der standardisierten 4-Pin-Stecker kinderleicht – einfach einstecken, adressieren und loslegen.

💡 Wichtig: Damit die Kommunikation mit den Modulinos korrekt funktioniert, muss in der Arduino IDE unter Werkzeuge → Pin Numbering die Option „By GPIO numbering (legacy)“ aktiviert werden.
Standardmäßig ist „By Arduino pin (default)“ eingestellt – dies führt beim ESP32-S3 dazu, dass die Modulinos nicht richtig angesprochen werden können.


Falls du das vergisst, bekommst du beim Kompilieren jedoch eine aussagekräftige Fehlermeldung, die dich auf das Problem hinweist.
In file included from C:\Users\stefa\AppData\Local\Temp\.arduinoIDE-unsaved202571-17808-8lf0z4.p4cwc\sketch_aug1a\sketch_aug1a.ino:1:
c:\Users\stefa\Documents\Arduino\libraries\Modulino\src/Modulino.h:8:4: error: #error "The current configuration is unsupported, switch Pin Numbering to "By GPIO number" or #undef tone and #undef noTone in the beginning of your sketch."
#error "The current configuration is unsupported, switch Pin Numbering to "By GPIO number" or #undef tone and #undef noTone in the beginning of your sketch."
Dank dieser Flexibilität kannst du das Plug and Make Kit nicht nur mit originalen Arduino-Boards verwenden, sondern auch mit günstigen Alternativen wie dem Waveshare ESP32-S3-Nano – ohne dabei auf Funktionsumfang oder Benutzerfreundlichkeit zu verzichten.
Beispiel: LED-Steuerung mit Tastern – einfach umgesetzt mit Modulinos
Um zu zeigen, dass sich der Waveshare ESP32-S3-Nano problemlos in das Plug and Make Umfeld integrieren lässt, habe ich ein kleines Beispiel mit zwei Modulinos umgesetzt:
Dem Modulino Button und dem Modulino LED.
Per Tastendruck lassen sich jeweils drei LEDs in unterschiedlichen Farben aktivieren – simpel, aber ideal, um die Kompatibilität des Boards mit dem Nano Connector Carrier und den Qwiic-basierten Modulinos zu demonstrieren.
/* * Titel: Modulino Beispiel – LED-Steuerung per Taster mit dem Waveshare ESP32-S3-Nano * Beschreibung: * In diesem einfachen Beispielprojekt wird gezeigt, wie sich der Waveshare ESP32-S3-Nano * mit dem Arduino Nano Connector Carrier Board und den Modulinos (Button + LED) kombinieren lässt. * Je nach gedrückter Taste (A, B oder C) leuchtet eine RGB-LED in einer bestimmten Farbe kurz auf. * * Autor: Stefan Draeger * Link zum Beitrag: https://draeger-it.blog/waveshare-esp32-s3-nano-der-leistungsstarke-esp32-im-nano-format/ */ #include <Modulino.h> // Bibliothek für das Arduino Plug and Make Modulino-System // Konstanten für die drei Tasten auf dem Modulino Button const int BUTTON_A = 0; const int BUTTON_B = 1; const int BUTTON_C = 2; // Modulino-Objekte für LED- und Tastermodul ModulinoPixels leds; // Modulino LED mit WS2812-Pixeln (RGB) ModulinoButtons buttons; // Modulino Button mit drei Tastern void setup() { Serial.begin(9600); // Serielle Schnittstelle zur Ausgabe öffnen Modulino.begin(); // Initialisiert das Modulino-System (I2C-Verbindung etc.) buttons.begin(); // Initialisiert das Button-Modul buttons.setLeds(true, true, true); // Aktiviert die eingebauten LEDs an den Tasten (zur Anzeige der Tastenbelegung) leds.begin(); // Initialisiert das LED-Modul Serial.println("---setup---"); // Gibt zur Kontrolle aus, dass das Setup abgeschlossen ist } void loop() { // Prüft, ob sich der Zustand der Tasten verändert hat if (buttons.update()) { // Wenn Taste A gedrückt wurde if (buttons.isPressed(BUTTON_A)) { Serial.println("---TASTE A---"); leds.set(0, BLUE, 255); // Setzt LED 0 auf volle Helligkeit in Blau leds.show(); // Zeigt die Änderung an delay(150); // Kurze Wartezeit leds.set(0, BLUE, 0); // Schaltet die LED wieder aus leds.show(); // Wenn Taste B gedrückt wurde } else if (buttons.isPressed(BUTTON_B)) { Serial.println("---TASTE B---"); leds.set(1, RED, 255); // Setzt LED 1 auf volle Helligkeit in Rot leds.show(); delay(150); leds.set(1, RED, 0); // LED wieder ausschalten leds.show(); // Wenn Taste C gedrückt wurde } else if (buttons.isPressed(BUTTON_C)) { Serial.println("---TASTE C---"); leds.set(2, GREEN, 255); // Setzt LED 2 auf volle Helligkeit in Grün leds.show(); delay(150); leds.set(2, GREEN, 0); // LED wieder ausschalten leds.show(); } } }