sheen.bot-Logo

← Einblicke

Warum Ihr Relais beim Booten des ESP32 anzieht (und wie Sie das beheben)

31. Okt. 2026·Sheen Robotics
Warum Ihr Relais beim Booten des ESP32 anzieht (und wie Sie das beheben)

ESP32-Relais schalten beim Booten fehlerhaft, da Low-aktive Module auslösen, wenn voreingestellte Strapping-Pins bei Resets floaten oder hochohmig takten. Nutzen Sie sichere GPIO-Pins und passende Pull-Widerstände, um unbeabsichtigtes Schalten zu verhindern.

Ihr Relais schaltet beim Booten für den Bruchteil einer Sekunde ein, weil Sie mit ziemlicher Sicherheit ein Low-aktives Relaismodul (active-low) verwenden, das an einen ESP32-Pin angeschlossen ist, der während des Resets des Mikrocontrollers ein hochfrequentes PWM-Debug-Signal ausgibt, floatet oder als Strapping-Pin fungiert. In den 100 bis 400 Millisekunden, bevor Ihr Code digitalWrite(pin, HIGH) ausführt, sieht der Optokoppler der Relaisplatine einen Pfad nach Masse und lässt die Spule anziehen.

In einem Schulgewächshaus oder bei einem Schreibtisch-Automatisierungsprojekt klingt ein solch kurzer Glitch wie ein harmloses Klicken. In der Praxis kann dieser Sekundenbruchteil nach einer routinemäßigen Load-Shedding-Umschaltung oder einem Brownout-Reset jedoch eine unbeaufsichtigte Setzlingsschale fluten, einen 12-V-Gleichstrommotor anrucken lassen oder ein Hochstrom-Netzgerät auslösen.

Die Anatomie eines Low-aktiven Relais-Glitches

Die meisten in Südafrika verkauften Hobby-Relaismodule sind „active-low“ (Low-aktiv). Ihre Eingangsschaltung enthält eine Optokoppler-Diode, deren Anode über einen Onboard-Widerstand fest mit der 5-V- oder 3,3-V-Versorgungsschiene verbunden ist. Um das Relais zu aktivieren, muss der Mikrocontroller-Pin auf 0 V (Masse) nach LOW gezogen werden, damit Strom durch die Diode fließen kann.

Daraus entsteht beim Einschalten eine fehleranfällige Schwachstelle:

  • Hochohmiger Zustand (Floating): Wenn der ESP32 eingeschaltet wird oder sich von einem Brownout erholt, initialisieren seine GPIO-Pins (General Purpose Input/Output) als hochohmige Eingänge. Ziehen interne oder externe Pull-Down-Widerstände diesen Pin in Richtung Masse, schaltet der Optokoppler sofort durch.
  • Serielles Logging des ROM-Bootloaders: Standardmäßig gibt der interne Bootloader des ESP32 unmittelbar nach dem Anlegen der Betriebsspannung Debug-Meldungen mit 115.200 Baud über bestimmte Pins aus. Dieser digitale Signalstoß wirkt auf einen Optokoppler wie ein aktives Signal.
  • Verzögerte Ausführung von setup(): Bis der FreeRTOS-Kernel startet und die setup()-Routine Ihres Sketches erreicht – in der Sie pinMode() explizit konfigurieren und den Pin auf HIGH halten –, wird der Hardware-Pin-Zustand vollständig von den Chip-Vorgaben von Espressif bestimmt.

Die gefährlichen Pins: Strapping- und Boot-Glitch-GPIOs

Der Standard-ESP32 (WROOM-32) verfügt über mehrere Mehrzweck-Pins, die Sie ohne externe Beschaltung niemals direkt an einen Aktor oder ein Relais anschließen sollten. Vermeiden Sie beim Schalten von Lasten insbesondere folgende Pins:

GPIO-PinStandardverhalten beim EinschaltenWarum es bei Relais zu Fehlern führt
GPIO 0Interner schwacher Pull-up; Strapping-Pin für den BootloaderZieht auf HIGH, aber Rauschen oder niederohmige Lasten beim Booten erzwingen den Flash-Modus.
GPIO 2Interner schwacher Pull-down; Strapping-Pin; mit Onboard-LED verbundenWird beim Reset auf LOW gezogen; löst Low-aktive Relais beim Einschalten sofort aus.
GPIO 5Gibt beim Reset einen PWM-Timing-Impuls aus (Strapping-Pin)Führt beim Booten zu einem hörbaren, schnellen Flattern oder Zucken der Relaiskontakte.
GPIO 12Interner schwacher Pull-down; Strapping-Pin (Spannungsauswahl)Zieht beim Reset auf LOW; löst Low-aktive Module aus. Externes Ziehen auf HIGH kann den Bootvorgang blockieren (Bricking).
GPIO 15Gibt beim Booten das ROM-Debug-Protokoll aus (stille PWM-Rechteckwelle)Aktiviert Low-aktive Relais, bis die Firmware vollständig initialisiert ist.

Die GPIO-Pins 34, 35, 36 (VP) und 39 (VN) sind reine Eingangspins; ihnen fehlen interne Ausgangstreiber vollständig und sie können ein Relaismodul unter keinen Umständen ansteuern.

Die sicheren GPIO-Pins

Wenn Sie ein ruhiges, vorhersehbares Bootverhalten ohne Kontaktprellen bei der Rückkehr der Stromversorgung wünschen, verdrahten Sie Ihre Relais-Signalleitung mit einem der wirklich neutralen Allzweck-Pins:

  • GPIO 18
  • GPIO 19
  • GPIO 21
  • GPIO 22
  • GPIO 23
  • GPIO 25, 26, 27, 32, 33

Keiner dieser Pins gibt serielle ROM-Debugdaten aus und keiner dient während der ersten Millisekunde des Chip-Starts als kritischer Pin zur Bootmodus-Konfiguration.

Die Firmware anpassen: Auf die Reihenfolge der Befehle kommt es an

Selbst an einem sicheren Pin verursacht typischer Arduino-Code aufgrund der Befehlsreihenfolge oft einen mikroskopisch kurzen Glitch. Viele Lernende schreiben:

pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, HIGH); // Bei active-low: HIGH = AUS

In dem Moment, in dem pinMode(..., OUTPUT) ausgeführt wird, setzt der ESP32 das Ausgangsregister standardmäßig für einige Mikrosekunden auf LOW (0 V), bis die nächste Zeile ausgeführt wird. Bei empfindlichen Optokopplern reicht dieser mikrosekundenkurze Abfall aus, um die Spule anziehen zu lassen.

Kehren Sie die Reihenfolge in Ihrer Setup-Routine um, sodass der Ausgangspuffer vorgeladen ist, bevor der Pin zum Ausgang wird:

digitalWrite(RELAY_PIN, HIGH); // Zustand auf AUS vorinitialisieren
pinMode(RELAY_PIN, OUTPUT); // Jetzt den Ausgangstreiber aktivieren

Die Hardware-Lösung: Externe Pull-Up-Widerstände

Die Firmware allein kann Ihre Last bei einem unerwarteten ESP32-Absturz, einem Spannungseinbruch unter den Brownout-Schwellenwert von 2,7 V oder beim initialen Hochfahren der Betriebsspannung nicht schützen. Wenn Ihr Relais eine induktive Wasserpumpe oder eine Sicherheitsverriegelung im Klassenzimmer steuert, sollten Sie auf Hardware setzen.

Schalten Sie einen externen 4,7-kΩ- oder 10-kΩ-Pull-up-Widerstand zwischen den ESP32-Signal-Pin und die 3,3-V-Schiene. Dies garantiert, dass das Gate oder der Optokoppler während des Hochfahrens des Mikrocontrollers auf HIGH gehalten wird, und verhindert, dass der Pin in den aktiven Auslösebereich floatet. Alternativ können Sie auf ein High-aktives Relaismodul umsteigen, bei dem ein unbeschalteter Eingang harmlos bei 0 V bleibt, bis Ihr Code bewusst 3,3 V anlegt.

Für Lehrkräfte, die automatisierte Systeme für das Klassenzimmer, Teststände oder schulische IoT-Installationen entwerfen, die unkontrollierte Spannungsunterbrechungen unbeschadet überstehen müssen, bietet Sheen Robotics Referenzschaltpläne und Unterrichtsmodule über Sheen IoT, um Ihren Lernenden dabei zu helfen, von Grund auf ausfallsichere Systeme zu entwickeln.

#esp32#elektronik#iot#relais#mint-bildung

Mehr aus Einblicke