Was ist der ESP32? Eigenschaften, Einrichtung in der Arduino IDE und erstes WLAN-Projekt
Was ist der ESP32 und was unterscheidet ihn vom Arduino? WLAN und Bluetooth, sichere Pins, Einrichtung in der Arduino IDE, erster Blink-Sketch, WLAN-Verbindung, LED per Handy steuern, ESP32-Varianten und typische Fehler.
Der ESP32 ist ein sehr günstiger Zweikern-Mikrocontroller von Espressif mit eingebautem WLAN und Bluetooth. Er kann allein vieles, was ein Arduino Uno nicht kann: sich ins Heimnetz einwählen, eine Webseite bereitstellen, die du am Handy öffnest, Uhrzeit und Wetter aus dem Internet holen und per Bluetooth mit dem Smartphone sprechen. Dazu wird er in der Arduino IDE mit den Arduino-Befehlen programmiert, die du schon kennst. Für den Einstieg ins Internet der Dinge (IoT) ist er heute das beliebteste Board.

Was ist der ESP32 und wofür wird er genutzt?
Genau genommen ist "ESP32" der Name des Chips unter dem Metalldeckel. Das Board in deiner Hand ist ein Entwicklungsboard mit diesem Chip (etwa ESP32 DevKit oder NodeMCU-32S): Es hat einen USB-Seriell-Wandler für die Verbindung zum Computer, einen Regler, der 5 V auf 3,3 V senkt, sowie Reset- (EN) und Programmiertaste (BOOT). Einige Dinge, die du mit einem ESP32 machen kannst:
- WLAN-Wetterstation: Temperatur und Luftfeuchtigkeit auf einer Seite zeigen, die du am Handy öffnest.
- Steuerung per Handy: Lampe, Steckdose oder Tür über einen Button auf einer Webseite bedienen.
- Daten aus dem Internet: echte Uhrzeit (NTP), Wetter oder Wechselkurse auf einem Display anzeigen.
- Benachrichtigungen senden: bei Bewegung per Telegram oder E-Mail Bescheid geben.
- Bluetooth-Geräte: eine Fernbedienung bauen, die sich mit dem Handy koppelt, oder ein Gerät, das der Computer als Tastatur erkennt.
- Sensoren, die monatelang mit Batterie laufen: nur zum Messen aus dem Tiefschlaf aufwachen.
ESP32 und Arduino Uno im Vergleich
| Merkmal | Arduino Uno R3 | ESP32 (WROOM-32) |
|---|---|---|
| Prozessor | ATmega328P, 8 Bit, 16 MHz | Xtensa LX6, zwei Kerne, 32 Bit, 240 MHz |
| RAM | 2 KB | 520 KB |
| Programmspeicher (Flash) | 32 KB | Meist 4 MB |
| Funk | Keiner | WLAN + Bluetooth (Classic und BLE) |
| Betriebsspannung | 5 V | 3,3 V |
| Nutzbare GPIOs | 20 | Etwa 34 (einige nur Eingang) |
| Analogeingänge (ADC) | 6 Kanäle, 10 Bit | 18 Kanäle, 12 Bit |
| Analogausgänge (DAC) | Keine | 2 Kanäle, 8 Bit |
Nach dieser Tabelle wirkt der ESP32 in allem überlegen, doch auch der Uno hat Vorteile: Mit 5 V ist er direkt mit den meisten älteren Sensoren und Modulen kompatibel, seine Pins sind robuster, und er hält für Einsteiger weniger Überraschungen bereit. Brauchst du keinen Funk, ist der Uno weiterhin ein toller Einstieg; bei der Entscheidung hilft dir Welchen Arduino soll ich kaufen?
ESP32-Pins: Welche kannst du sicher verwenden?
Die Pins des ESP32 sind nicht so "gleich" wie beim Arduino. Manche hängen am Flash-Speicher, manche funktionieren nur als Eingang, und der Pegel anderer beeinflusst den Start des Boards. Die vollständige Pinbelegung deines Boards zeigt das Werkzeug Pinout; hier die Zusammenfassung:
| Pins | Status | Hinweis |
|---|---|---|
| GPIO 6–11 | Nicht verwenden | Am internen Flash angeschlossen; Nutzung lässt das Board abstürzen |
| GPIO 34–39 | Nur Eingang | Können nichts ausgeben, kein interner Pull-up |
| GPIO 0, 2, 12, 15 | Vorsichtig nutzen | Ihr Pegel beim Booten ist wichtig |
| GPIO 1 und 3 | Vorsichtig nutzen | TX und RX der seriellen USB-Verbindung |
| ADC2-Pins (0, 2, 4, 12–15, 25–27) | Kein Analoglesen bei aktivem WLAN | Für Analogwerte ADC1 (GPIO 32–39) nutzen |
| GPIO 4, 5, 13, 14, 16–19, 21–23, 25–27, 32, 33 | Sicher | Allgemeine Ein- und Ausgänge |
Den ESP32 in der Arduino IDE einrichten
- Öffne in der Arduino IDE Datei > Voreinstellungen und trage https://espressif.github.io/arduino-esp32/package_esp32_index.json unter "Zusätzliche Boardverwalter-URLs" ein.
- Suche im Boardverwalter nach esp32 und installiere das Paket von Espressif Systems.
- Wähle unter Werkzeuge > Board das ESP32 Dev Module.
- Verbinde den ESP32 per USB-Kabel und wähle unter Werkzeuge > Port den richtigen Port. Erscheint kein Port, installiere den Treiber für den USB-Seriell-Chip deines Boards (CP2102 oder CH340).
- Bleibt beim Hochladen lange "Connecting..." stehen, halte die BOOT-Taste gedrückt und lass sie los, sobald der Upload beginnt.
Erstes Programm: die eingebaute LED blinken lassen
Die meisten ESP32-DevKits haben eine blaue LED an GPIO 2. Der folgende Code lässt sie im Halbsekundentakt blinken; wie du siehst, sind die Befehle genau dieselben wie beim Arduino:
1const int LED_PIN = 2; // çoğu DevKit'te dahili mavi LED / onboard blue LED on most DevKits
2
3void setup() {
4 pinMode(LED_PIN, OUTPUT);
5}
6
7void loop() {
8 digitalWrite(LED_PIN, HIGH);
9 delay(500);
10 digitalWrite(LED_PIN, LOW);
11 delay(500);
12}Mit dem WLAN verbinden
Die eigentliche Stärke des ESP32 ist WLAN. Der folgende Code verbindet sich mit deinem Heimnetz und gibt die IP-Adresse, die der Router dem ESP32 zuweist, im seriellen Monitor aus. Ersetze Netzwerkname und Passwort durch deine eigenen und öffne den seriellen Monitor mit 115200 Baud:
1#include <WiFi.h>
2
3const char* ssid = "AgAdi"; // Wi-Fi adın / your Wi-Fi name
4const char* password = "Sifre123"; // Wi-Fi şifren / your Wi-Fi password
5
6void setup() {
7 Serial.begin(115200);
8 WiFi.begin(ssid, password);
9 Serial.print("Bağlanıyor / connecting");
10 while (WiFi.status() != WL_CONNECTED) {
11 delay(500);
12 Serial.print(".");
13 }
14 Serial.println();
15 Serial.print("IP adresi / IP address: ");
16 Serial.println(WiFi.localIP());
17}
18
19void loop() {
20}LED per Handy steuern: ein einfacher Webserver
Jetzt machen wir aus dem ESP32 einen kleinen Webserver. Öffne nach dem Hochladen die im seriellen Monitor angezeigte IP-Adresse im Browser eines Handys im selben WLAN; mit den zwei Buttons auf der Seite schaltest du die LED des Boards ein und aus. Schließt du statt der LED ein Relais an, steuerst du auf dieselbe Weise eine echte Lampe; siehe Was ist ein Relaismodul?
1#include <WiFi.h>
2#include <WebServer.h>
3
4const char* ssid = "AgAdi";
5const char* password = "Sifre123";
6const int LED_PIN = 2;
7
8WebServer server(80);
9
10void handleRoot() {
11 server.send(200, "text/html",
12 "<meta name='viewport' content='width=device-width'>"
13 "<h1>ESP32</h1>"
14 "<a href='/on'><button>LED AÇ / ON</button></a> "
15 "<a href='/off'><button>LED KAPAT / OFF</button></a>");
16}
17
18void setup() {
19 pinMode(LED_PIN, OUTPUT);
20 Serial.begin(115200);
21 WiFi.begin(ssid, password);
22 while (WiFi.status() != WL_CONNECTED) delay(500);
23 Serial.println(WiFi.localIP()); // bu adresi telefonda aç / open this address on your phone
24
25 server.on("/", handleRoot);
26 server.on("/on", []() { digitalWrite(LED_PIN, HIGH); handleRoot(); });
27 server.on("/off", []() { digitalWrite(LED_PIN, LOW); handleRoot(); });
28 server.begin();
29}
30
31void loop() {
32 server.handleClient();
33}ESP32-Varianten: Welche solltest du kaufen?
| Modell | Besonderheit | Wann wählen? |
|---|---|---|
| ESP32 (WROOM-32 DevKit) | WLAN, Bluetooth Classic und BLE, zwei Kerne | Universelles erstes Board |
| ESP32-S3 | Natives USB, mehr RAM, KI-Befehle | Kamera-, Audio-, USB-Tastatur- und Mausprojekte |
| ESP32-C3 | Ein RISC-V-Kern, WLAN und BLE, klein und günstig | Einfache IoT-Sensoren |
| ESP32-CAM | Kamera und microSD-Steckplatz | Bildübertragung, Überwachungskamera |
| ESP8266 (NodeMCU, Wemos D1) | Älter, ein Kern, nur WLAN | Sehr einfache WLAN-Projekte |
Stromversorgung und Batteriebetrieb
Beim Einschalten des WLAN zieht der ESP32 kurzzeitig bis zu 250 mA. Schafft ein schwacher USB-Port oder ein dünnes Kabel diese Spitze nicht, startet das Board mit der Meldung "Brownout detector was triggered" neu. Nutze ein gutes Kabel und ein 5-V-Netzteil mit mindestens 1 A und setze bei Bedarf einen Kondensator von 100–470 µF zwischen 3V3 und GND. Für Batterieprojekte senkt der Tiefschlaf des ESP32 den Verbrauch des Chips auf Mikroampere; Regler und LED auf Entwicklungsboards brauchen aber weiter einige mA, daher nimmt man für lange Laufzeiten ein nacktes Modul oder ein stromsparendes Board.
Der ESP32 mit MicroPython
Den ESP32 kannst du nicht nur in der Arduino-Sprache, sondern auch mit MicroPython programmieren. Hast du MicroPython mit Thonny auf das Board gespielt, sind es nur wenige Zeilen bis zur WLAN-Verbindung:
1import network, time
2from machine import Pin
3
4led = Pin(2, Pin.OUT)
5wlan = network.WLAN(network.STA_IF)
6wlan.active(True)
7wlan.connect("AgAdi", "Sifre123") # Wi-Fi adı ve şifresi / Wi-Fi name and password
8
9while not wlan.isconnected():
10 time.sleep(0.5)
11print("IP:", wlan.ifconfig()[0])
12
13while True:
14 led.value(not led.value()) # LED'i yakıp söndür / toggle the LED
15 time.sleep(0.5)Projektideen mit dem ESP32
- WLAN-Wetterstation: die mit einem DHT11 gemessene Temperatur und Feuchtigkeit am Handy verfolgen.
- Intelligente Steckdose: eine Lampe per Relais über eine Webseite oder einen Sprachassistenten einschalten.
- Bewegungsalarm: eine Telegram-Nachricht senden, wenn ein PIR-Sensor jemanden erkennt.
- Internetuhr: die Zeit von einem NTP-Server holen und auf einem LCD oder einer 7-Segment-Anzeige zeigen.
- Bluetooth-Fernsteuerung: ein Roboterauto mit einer App auf dem Handy steuern.
- Batteriefreundlicher Sensor: ein Gerät, das alle 10 Minuten aufwacht, einen Messwert sendet und wieder schläft.
Typische Fehler und ihre Lösungen
- Kein Port sichtbar: Das Kabel ist vielleicht nur ein Ladekabel oder der USB-Seriell-Treiber fehlt; nimm ein Datenkabel und installiere den CP2102- oder CH340-Treiber.
- "Failed to connect... Timed out waiting for packet header": Halte beim Start des Uploads die BOOT-Taste gedrückt.
- Das Board startet ständig neu: zu wenig Strom (Brownout); besseres Kabel, Netzteil und einen Kondensator verwenden.
- Keine WLAN-Verbindung: Das Netz ist vielleicht 5 GHz oder Name bzw. Passwort enthalten einen Groß-/Kleinschreibfehler.
- GPIO 6–11 verwenden: Diese Pins hängen am Flash; ihre Nutzung lässt das Board abstürzen.
- Analogwerte spinnen, sobald WLAN startet: Der Sensor hängt an einem ADC2-Pin; leg ihn auf einen ADC1-Pin zwischen GPIO 32 und 39.
Der ESP32 ist der einfachste Weg, das am Arduino Gelernte ins Internet zu bringen. Die Arduino-Grundlagen frischst du mit Was ist Arduino? auf; in der BlueGrays-App findest du Dutzende ESP32-Projekte – LEDs, Webserver, WebSocket, NTP-Uhr, Wetterdaten und Telegram-Alarm – mit Schaltplänen und Code.
Häufige Fragen
Ist der ESP32 ein Arduino?
Nein. Der ESP32 ist ein eigener Mikrocontroller von Espressif, Arduino dagegen der Name eines Board- und Software-Ökosystems. Dank des Pakets von Espressif lässt sich der ESP32 aber in der Arduino IDE mit Arduino-Befehlen programmieren, sodass der meiste Arduino-Code mit kleinen Änderungen auf dem ESP32 läuft.
Funktioniert der ESP32 mit 5 V?
Das Entwicklungsboard kann über USB oder den VIN-Pin mit 5 V versorgt werden; der Regler auf der Platine senkt sie auf 3,3 V. Die GPIO-Pins arbeiten aber mit 3,3 V und sind nicht 5-V-tolerant, daher solltest du keine 5-V-Signale direkt anschließen.
Soll ich einen ESP32 oder einen Arduino Uno kaufen?
Für Projekte mit WLAN, Bluetooth oder Internet nimm einen ESP32. Bist du neu in der Elektronik und willst problemlos mit 5-V-Sensoren und -Modulen arbeiten und Anleitungen exakt nachbauen, kommst du mit dem Arduino Uno mit weniger Überraschungen voran.
Verbindet sich der ESP32 mit 5-GHz-WLAN?
Der klassische ESP32, der ESP32-S3 und der ESP32-C3 unterstützen nur 2,4-GHz-WLAN und sehen 5-GHz-Netze nicht. Achte darauf, dass das 2,4-GHz-Band deines Routers eingeschaltet ist.
Was ist der Unterschied zwischen ESP32 und ESP8266?
Der ESP8266 ist ein älterer Einkern-Chip, der nur WLAN kann und einen einzigen Analogeingang hat. Der ESP32 hat zwei Kerne, ist schneller, unterstützt auch Bluetooth und bietet viel mehr Pins, ADC-Kanäle und Speicher. Für neue Projekte nimmt man den ESP32.
Kann man den ESP32 ohne Internet nutzen?
Ja. Der ESP32 kann ein eigenes WLAN aufspannen (Access-Point-Modus), mehrere ESP32 können sich per ESP-NOW ohne Router unterhalten, und per Bluetooth verbindet er sich mit dem Handy. Ohne seine Funkfunktionen lässt er sich auch einfach wie ein leistungsstarker Arduino nutzen.
Projekte, die du danach bauen kannst
Alle Projekte ansehen
LED Blinken mit ESP32
Lehrt die grundlegende Verwendung von GPIO-Ausgängen mit ESP32. Wir erreichen einen Blinkeffekt, indem wir eine LED über einen digitalen Pin ein- und ausschalten. ESP32-Version des klassischen Blink-Projekts auf Arduino UNO; Pin-Map und Syntax bleiben gleich, der Unterschied liegt nur in den Pin-Nummern.

ESP32-WLAN-STA-Verbindung (mit LCD-Display)
In diesem Projekt verbinden wir den ESP32 im Station-Modus (STA) sicher und fehlertolerant mit dem heimischen WLAN. Wir lagern SSID und Passwort in eine separate `secrets.h`-Datei aus, um Leaks zu Git zu verhindern, richten einen Auto-Reconnect-Mechanismus ein und zeigen RSSI-Signalpegel und IP-Adresse auf einem I2C-LCD-Display an. Die interne LED dient als Statusanzeige. Ein Verbindungsmanager auf Produktionsniveau.

ESP32 Async-Webserver (mit IP-Anzeige auf dem LCD)
In diesem Projekt verwandeln wir den ESP32 in einen **asynchronen Webserver**, den Sie über Ihr Smartphone oder Ihren Computer im selben WLAN-Netzwerk steuern können. Dank der ESPAsyncWebServer-Bibliothek kann der Server mehrere Anfragen gleichzeitig bearbeiten (im Gegensatz zum klassischen `WebServer.h`, der bei einer einzigen Anfrage blockiert). Sie können über den Browser eine Verbindung zur IP-Adresse des ESP32 mit `/control` herstellen und durch Drücken der Schaltflächen die an GPIO 5 anges

ESP32-WebSocket-Zähler (2 Tasten + LCD + Web-Echtzeit)
In diesem Projekt überträgt der ESP32 die vom DHT11-Sensor gelesenen Temperatur- und Feuchtigkeitswerte unter Verwendung der WebSocket-Unterstützung des ESPAsyncWebServers in Echtzeit an alle verbundenen Browser. Anstelle von Standard-HTTP-Polling wird eine bidirektionale Kommunikation über eine einzige permanente TCP-Verbindung bereitgestellt, wodurch die Verzögerung auf Millisekunden reduziert wird. Auf der Browserseite wird mit reinem JavaScript und Chart.js ein Live-Liniendiagramm gezeichnet

ESP32 HTTPClient + Wetter-API (mit LCD-Display)
In diesem Projekt führen wir mit dem ESP32 über das Internet mithilfe von `HTTPClient.h` einen REST-API-Aufruf an die Wetter-API (wttr.in) durch. Mit ArduinoJson v7 analysieren wir die zurückgegebenen JSON-Daten und zeigen Informationen zu Stadt, Temperatur, Luftfeuchtigkeit, Wetter und Wind sowohl auf Türkisch als auch auf Englisch auf einem I2C-LCD-Display an. wttr.in ist kostenlos und erfordert keinen API-Schlüssel – Sie können den aktuellen Wetterbericht einer beliebigen Stadt abrufen, indem

ESP32: Echtzeit aus dem Internet per NTP
Der ESP32 verbindet sich mit dem WLAN und ruft die Echtzeit mit Millisekunden-Genauigkeit von NTP-Servern (Network Time Protocol) ab. Dank `configTzTime()` wird die türkische Zeitzone (TRT, UTC+3) automatisch angewendet, und der DST-Wechsel wird per POSIX-TZ-String verwaltet. Die Uhrzeit wird auf dem Serial Monitor und einem optionalen I2C-LCD ausgegeben. Beim Start einmal synchronisiert, danach zählt der interne RTC weiter.

Automatische Beleuchtung mit dem ESP32-PIR-Bewegungssensor
In diesem Projekt werden wir mithilfe des PIR-Bewegungssensors HC-SR501 Personen erkennen, die den Raum betreten, und die LED automatisch einschalten. Wenn eine Bewegung erkannt wird, leuchtet die LED für eine bestimmte Zeit, und wir werden die Zeit mithilfe der Funktion `millis()` und eines Zählers steuern, ohne `delay()` zu verwenden. Auf diese Weise erhalten wir ein Beleuchtungssystem mit Bewegungssensor, das andere Aufgaben ausführen kann, ohne dass der ESP32 blockiert wird. In der Praxis ka

ESP32 Bewegungsalarmsystem (PIR + Buzzer + LED + Telegram)
Ein intelligentes Sicherheitsalarmsystem, das Buzzer und LED aktiviert, sobald der PIR-Sensor Bewegung erkennt, und gleichzeitig eine sofortige Benachrichtigung per Telegram an den Besitzer sendet. Ein 30-sekündiger Cooldown verhindert Fehlalarme. Geeignet für Heimsicherheit, Garagenüberwachung, Lagerräume oder Arbeitszimmer. Mit ESP32-CAM sind Foto-Benachrichtigungen möglich; mit dem klassischen ESP32 DevKit V1 werden Textbenachrichtigungen gesendet.
Weitere Artikel
Lerne, was den ESP32 vom Arduino unterscheidet, welche Pins sicher nutzbar sind, wie du ihn in der Arduino IDE einrichtest und dein erstes WLAN-Projekt baust, das eine LED per Handy schaltet.

