# Hühnerklappensteuerung mit ESP32?

**URL:** <https://forum.arduino.cc/t/huhnerklappensteuerung-mit-esp32/1380698>\
**Category:** Deutsch\
**Created:** [May 11, 2025, 12:41pm UTC](https://forum.arduino.cc/t/huhnerklappensteuerung-mit-esp32/1380698 "2025-05-11T12:41:39Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![ralf9](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/ralf9/32/1126363_2.png) [@ralf9](https://forum.arduino.cc/u/ralf9)\
**Post date:** [May 11, 2025, 12:41pm UTC](https://forum.arduino.cc/t/huhnerklappensteuerung-mit-esp32/1380698/1 "2025-05-11T12:41:39Z")

</div>

Ich möchte 2 Hühnerklappen steuern, das müsste eigentlich auch mit einem ESP32 gehen.  
Ich bin mir nicht sicher ob die GPIO dafür reichen, ich benötige 19

Für eine Hühnerklappe benötige ich:  
3 GPIO für die DRV8876 H-Brücke (EN, DIR, CS), auf den Faultausgang müsste ich verzichten können)  
5 GPIO für 2 Reedkontakte, ein Mikroschalter und 2 Taster  
Dies ergibt 8 GPIO pro Hühnerklappe.

Mit 3 GPIO für eine LED und I2C für den RTC DS3231 komme ich auf insgesammt auf 19 GPIO.

Ich möchte das DOIT ESP32 DEVKIT V1 verwenden.

Laut dieser Seite könnte es knapp reichen

> **[ESP32 Pinout Reference: Which GPIO pins should you use? | Random Nerd Tutorials](https://randomnerdtutorials.com/esp32-pinout-reference-gpios/)**
>
> The ESP32 comes with 48 GPIOs with multiple functions. This article intends to be a simple and easy to follow reference guide for the ESP32 GPIOs.

Bei einigen GPIO bin ich mir nicht sicher ob ich diese ohne Einschränkung verwenden kann  
Kann ich die GPIO 5, 14 und 15 als Eingang verwenden?  
Kann ich den GPIO 12 als Ausgang verwenden?  
Was ist mit strapping Pin gemeint?

Gruß Ralf

---

<div class="post-metadata">

**Author:** ![HotSystems](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/hotsystems/32/219785_2.png) [@HotSystems](https://forum.arduino.cc/u/HotSystems)\
**Post date:** [May 11, 2025, 1:42pm UTC](https://forum.arduino.cc/t/huhnerklappensteuerung-mit-esp32/1380698/2 "2025-05-11T13:42:46Z")

</div>

Du kannst den ESP32 durch einen I2C-Portexpander um weitere Pins erweitern. Damit sollte es keinen Engpass was die Pins betrifft, ergeben.

Zitat:  
Was sind Strapping-Pins in ESP32?

Der ESP32-C3 verfügt über drei Verbindungspins: **GPIO2, GPIO8 und GPIO9**. Während des Systemresets des Chips erfassen die Verbindungspins ihre Spannungspegel und speichern sie im Latch, bis der Chip ausgeschaltet oder heruntergefahren wird. Abhängig von den gespeicherten Spannungspegeln wechselt der Chip nach dem Systemreset in verschiedene Boot-Modi.

Und weieres zu Pins [Hier.](https://randomnerdtutorials.com/esp32-pinout-reference-gpios/)

Ok, hatte deinen Link auf meinem Handy vorhin übersehen.  
Aber daraus kannst du ja schon einiges entnehmen. Aber wozu eine RTC ?  
Mit WLan kannst do doch auch NTP verwenden.

---

<div class="post-metadata">

**Author:** ![agmue](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/agmue/32/750067_2.png) [@agmue](https://forum.arduino.cc/u/agmue)\
**Post date:** [May 11, 2025, 3:04pm UTC](https://forum.arduino.cc/t/huhnerklappensteuerung-mit-esp32/1380698/3 "2025-05-11T15:04:11Z")

</div>

> [@ralf9](#):
>
> Kann ich die GPIO 5, 14 und 15 als Eingang verwenden?  
> Kann ich den GPIO 12 als Ausgang verwenden?

Kann man generell nicht beantworten. Beispiel GPIO5 ist beim Booten ein Ausgang. Wenn Du den als Eingang verwenden möchtest und da hängt ein Ausgang dran, könnte es Rauch geben. Ist da ein Taster dran, der beim Booten offen ist, darfst Du ihn beim Booten nicht drücken.

> [@ralf9](#):
>
> 3 GPIO für die DRV8876 H-Brücke (EN, DIR, CS)

Könntest Du direkt an den ESP32 anschließen.

RTC DS3231 parallel zu Portexpandern wie z. B. PCF8575 oder MCP23017 für Taster, Reedkontakte und LEDs. Portexpander können auch genügend Strom für LEDs liefern. Dann reichen die Pins vom ESP32 und Du umgehst die Strapping Pins 🙂

---

<div class="post-metadata">

**Author:** ![ralf9](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/ralf9/32/1126363_2.png) [@ralf9](https://forum.arduino.cc/u/ralf9)\
**Post date:** [May 11, 2025, 9:33pm UTC](https://forum.arduino.cc/t/huhnerklappensteuerung-mit-esp32/1380698/4 "2025-05-11T21:33:30Z")

</div>

Den RTC verwende ich nur zur Sicherheit, es soll im Notfall auch ohne WLAN funktionieren.

Wenn ich den GPIO 5 für die LED verwende, komme ich auf 19 verwendbare GPIO, dann müsste es passen.

> [@agmue](#):
>
> Kann man generell nicht beantworten. Beispiel GPIO5 ist beim Booten ein Ausgang. Wenn Du den als Eingang verwenden möchtest und da hängt ein Ausgang dran, könnte es Rauch geben. Ist da ein Taster dran, der beim Booten offen ist, darfst Du ihn beim Booten nicht drücken.

Wenn ich an GPIO 14 und 15 Taster anschließen wollte, und es absichern wollte, dann müsste ich demnach ein Widerstand in Reihe zum Taster schalten.  
Sind da 100 Ohm ausreichend?

---

<div class="post-metadata">

**Author:** ![agmue](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/agmue/32/750067_2.png) [@agmue](https://forum.arduino.cc/u/agmue)\
**Post date:** [May 12, 2025, 5:38am UTC](https://forum.arduino.cc/t/huhnerklappensteuerung-mit-esp32/1380698/5 "2025-05-12T05:38:08Z")

</div>

Das hängt vom maximalen Strom ab, den der Ausgang liefern kann.

3,3 V / 0,02 A = 165 Ω

~~Die 6 mA lassen LEDs nur glimmen~~

EDIT: von 6 auf 20 mA geändert.

---

<div class="post-metadata">

**Author:** ![wwerner](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/wwerner/32/1001727_2.png) [@wwerner](https://forum.arduino.cc/u/wwerner)\
**Post date:** [May 12, 2025, 5:40am UTC](https://forum.arduino.cc/t/huhnerklappensteuerung-mit-esp32/1380698/6 "2025-05-12T05:40:35Z")

</div>

> [@agmue](#):
>
> Die 6 mA lassen LEDs nur glimmen

Nicht wirklich. Die leuchten schon. Und dann gibt es ja noch low current LEDs

---

<div class="post-metadata">

**Author:** ![agmue](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/agmue/32/750067_2.png) [@agmue](https://forum.arduino.cc/u/agmue)\
**Post date:** [May 12, 2025, 5:46am UTC](https://forum.arduino.cc/t/huhnerklappensteuerung-mit-esp32/1380698/7 "2025-05-12T05:46:50Z")

</div>

Mich stört, daß ein Projekt ohne Not auf Kante genäht wird. Aber entscheiden muß das der TO, ich möchte nur Hinweise geben.

---

<div class="post-metadata">

**Author:** ![HotSystems](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/hotsystems/32/219785_2.png) [@HotSystems](https://forum.arduino.cc/u/HotSystems)\
**Post date:** [May 12, 2025, 7:31am UTC](https://forum.arduino.cc/t/huhnerklappensteuerung-mit-esp32/1380698/9 "2025-05-12T07:31:28Z")

</div>

> [@agmue](#):
>
> Mich stört, daß ein Projekt ohne Not auf Kante genäht wird

Vermutlich um Geld zu sparen. 😉  
Dabei kann das so einfach sein.

---

<div class="post-metadata">

**Author:** ![HotSystems](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/hotsystems/32/219785_2.png) [@HotSystems](https://forum.arduino.cc/u/HotSystems)\
**Post date:** [May 12, 2025, 7:38am UTC](https://forum.arduino.cc/t/huhnerklappensteuerung-mit-esp32/1380698/10 "2025-05-12T07:38:10Z")

</div>

> [@ralf9](#):
>
> Den RTC verwende ich nur zur Sicherheit, es soll im Notfall auch ohne WLAN funktionieren.

Ja, ok.  
Das verstehe ich. Dann nutzt du doch auch I2C und kannst prima einen der genannten Portexpander einsetzen.  
Dann hast du def. keine Probleme mit der Pinanzahl und vermutlich auch genug Reserve.

---

<div class="post-metadata">

**Author:** ![agmue](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/agmue/32/750067_2.png) [@agmue](https://forum.arduino.cc/u/agmue)\
**Post date:** [May 12, 2025, 10:21am UTC](https://forum.arduino.cc/t/huhnerklappensteuerung-mit-esp32/1380698/12 "2025-05-12T10:21:05Z")

</div>

Die GPIOs 34, 35, 36 und 39 haben keine internen PullUp- oder PullDown-Widerstände, können sonst aber wie normale Eingänge verwendet werden. Damit sind es insgesamt 22 GPIOs plus I²C-Schnittstelle, TXD0 und RXD0.

 ![ESP32-DOIT-DEV-KIT-v1-pinout-mischianti](https://europe1.discourse-cdn.com/arduino/original/4X/e/9/d/e9d3a552f6855635a870c5b4cf9a60dcf2925dc3.jpeg)

EDIT: Pinout V4 gegen V1 getauscht.

---

<div class="post-metadata">

**Author:** ![fony](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/fony/32/936882_2.png) [@fony](https://forum.arduino.cc/u/fony)\
**Post date:** [May 12, 2025, 10:36am UTC](https://forum.arduino.cc/t/huhnerklappensteuerung-mit-esp32/1380698/13 "2025-05-12T10:36:21Z")

</div>

Der TO hat ein V1, nicht den alten V4, was hat aber nichts zu sagen.

---

<div class="post-metadata">

**Author:** ![ralf9](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/ralf9/32/1126363_2.png) [@ralf9](https://forum.arduino.cc/u/ralf9)\
**Post date:** [May 12, 2025, 10:56am UTC](https://forum.arduino.cc/t/huhnerklappensteuerung-mit-esp32/1380698/14 "2025-05-12T10:56:50Z")

</div>

Ein ESP32 GPIO kann max 40 mA, empfohlen werden max 20 mA.

Ich komme beim devkit V1 (mit GPIO 5, 14 und 15) auf 21 nutzbare GPIO und ich benötige 19 da habe ich noch Reserve.  
Da ist kein I2C Portexpander notwendig, aber ich werde auf der Lochstreifenplatine den Platz dafür vorsehen.

Die GPIOs 34, 35, 36 und 39 passen für die Reedkontakte.

---

<div class="post-metadata">

**Author:** ![HotSystems](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/hotsystems/32/219785_2.png) [@HotSystems](https://forum.arduino.cc/u/HotSystems)\
**Post date:** [May 12, 2025, 11:00am UTC](https://forum.arduino.cc/t/huhnerklappensteuerung-mit-esp32/1380698/15 "2025-05-12T11:00:20Z")

</div>

> [@ralf9](#):
>
> Da ist kein I2C Portexpander notwendig,

Hey, du hast doch hier reingeworfen, dass es knapp werden könnte.

---

<div class="post-metadata">

**Author:** ![agmue](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/agmue/32/750067_2.png) [@agmue](https://forum.arduino.cc/u/agmue)\
**Post date:** [May 12, 2025, 11:57am UTC](https://forum.arduino.cc/t/huhnerklappensteuerung-mit-esp32/1380698/16 "2025-05-12T11:57:41Z")

</div>

> [@fony](#):
>
> Der TO hat ein V1

Habe das Pinout getauscht.

> [@ralf9](#):
>
> Ein ESP32 GPIO kann max 40 mA, empfohlen werden max 20 mA.

Steht tatsächlich so im Datenblatt, habe ich wohl mit einem anderen µC verwechselt 😳

---

<div class="post-metadata">

**Author:** ![ralf9](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/ralf9/32/1126363_2.png) [@ralf9](https://forum.arduino.cc/u/ralf9)\
**Post date:** [June 10, 2025, 9:28pm UTC](https://forum.arduino.cc/t/huhnerklappensteuerung-mit-esp32/1380698/17 "2025-06-10T21:28:18Z")

</div>

Ich habs inzwischen mal mit einer vorhandenen alten Hühnerklappe aus Holz getestet. Sie wiegt ca 1 kg.  
Bei der Berrechnung vom Strom bin ich mir nicht ganz sicher.  
Ich messe den Strom alle 25ms und bilde den Mittelwert von 20 Messungen.  
Ich messe den Strom in mA nur aufwärts bei einem Tastverhältnis von 100%.  
Bei 1,65V bekomme ich mit analogRead 1920  
Beim pololu DRV8876 ist bei 1A am CS Pin 2,5 V -\> bei 2,5 V ist analogRead dann 2909,1  
wenn ich 20 mal aufsummiere muss ich durch 58,1818 teilen,  
Ich bekomme dann die folgenden Werte in mA:  
253  
293  
299  
299  
282  
352  
374  
360  
352  
343

Ich werde auch noch eine Überstromabschaltung einbauen bei ca 600-700mA.

Ich habe den ESP32 als telnet Server konfiguriert.  
Mir ist dabei aufgefallen, dass es bei Problemen beim Aufbau der Telnet Verbindung passieren kann, daß die Loop Routine einige Sekunden nicht aufgerufen wird.  
Da in der Loop Routine die Tasten und Kontakte abgefragt werden, ist es bei mir beim Testen ein paar mal vorgekommen, dass ich den Motor nur durch auftrennen der Stromversorgung stoppen konnte.

Dies ist bei dem folgenden Test passiert:  
Da meine Haupt Fritzbox zu weit vom Hühnerstall weg ist, habe ich zum testen eine weitere Fritzbox auf die Fensterbank gestellt. Dass Wlan Geräte untereinander kommunizieren dürfen war noch deaktiviert.  
Ich habe das Tablet mit zum Hühnerstall genommen und wollte mich mit der ConnectBot App per Telnet verbinden.  
Vermutlich hat sich beim Versuch die Telnet Verbindung aufzubauen das Tablet die Wlan Verbindung von der Haupt Fritzbox zur anderen Fritzbox gewechselt.

Defaultmässig wird da anscheinend kein Watchdog ausgelöst.  
Gibts eine Möglichkeit, dass ein Watchdog ausgelöst wird, wenn die Loop Routine für ca 1 Sek nicht aufgerufen wird oder gibts noch eine andere Möglichkeit?

Gruß Ralf

---

<div class="post-metadata">

**Author:** ![wwerner](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/wwerner/32/1001727_2.png) [@wwerner](https://forum.arduino.cc/u/wwerner)\
**Post date:** [June 11, 2025, 4:11am UTC](https://forum.arduino.cc/t/huhnerklappensteuerung-mit-esp32/1380698/18 "2025-06-11T04:11:19Z")

</div>

> [@ralf9](#):
>
> gibts noch eine andere Möglichkeit?

Kann gesagt werden, wenn wir den aktuellen Code sehen.

---

<div class="post-metadata">

**Author:** ![noiasca](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/noiasca/32/1126910_2.png) [@noiasca](https://forum.arduino.cc/u/noiasca)\
**Post date:** [June 11, 2025, 5:09am UTC](https://forum.arduino.cc/t/huhnerklappensteuerung-mit-esp32/1380698/19 "2025-06-11T05:09:43Z")

</div>

> [@ralf9](#):
>
> Defaultmässig wird da anscheinend kein Watchdog ausgelöst.

ja hast du denn einen Watchdog implementiert? Wenn ja - wie?

Zu der Frage von den Möglichkeiten:  
ich würde statt einem Watchdog zunächst überprüfen, weswegen es zu einer (geglaubten) Blockade des Telnet Servers kommt und das behandeln.

Aber ohne Code (mit eindeutigen Referenzen auf eventuell verwendete Libraries) - ist das aber nur rumgerate.

---

<div class="post-metadata">

**Author:** ![my\_xy\_projekt](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/my_xy_projekt/32/810062_2.png) [@my\_xy\_projekt](https://forum.arduino.cc/u/my_xy_projekt)\
**Post date:** [June 11, 2025, 5:36am UTC](https://forum.arduino.cc/t/huhnerklappensteuerung-mit-esp32/1380698/20 "2025-06-11T05:36:30Z")

</div>

> [@ralf9](#):
>
> Problemen beim Aufbau der Telnet Verbindung  
> [...]  
> in der Loop Routine die Tasten und Kontakte  
> [...]  
> Motor nur durch auftrennen der Stromversorgung stoppen

frage vor dem Telnet-Aufruf den Status des Antrieb ab. Antrieb läuft -\> kein telnet

---

<div class="post-metadata">

**Author:** ![ralf9](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/ralf9/32/1126363_2.png) [@ralf9](https://forum.arduino.cc/u/ralf9)\
**Post date:** [June 11, 2025, 7:27pm UTC](https://forum.arduino.cc/t/huhnerklappensteuerung-mit-esp32/1380698/21 "2025-06-11T19:27:39Z")

</div>

> [@my\_xy\_projekt](#):
>
> frage vor dem Telnet-Aufruf den Status des Antrieb ab. Antrieb läuft -\> kein telnet

Der ESP32 ist als Telnet Server konfiguriert, im Setup steht u.a.:

```arduino
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, pass);
  WiFi.config(ip, gateway, subnet);
  initEEPROM(); // Reading values from eeprom
  Server.begin();
  Server.setNoDelay(true);

```

Wie kann ich da eine neue Telnetverbindung verhindern, wenn der Motor läuft?  
Ist es ausreichend, wenn ich in der WiFiEvent Routine

```arduino
void WiFiEvent()
{
  //check if there are any new clients
  if (Server.hasClient()) {
    if (!client || !client.connected()) {
      if (client) client.stop();
      client = Server.available();
      client.flush();
      Serial.print(F("New client: "));
      Serial.println(client.remoteIP());
    } else {
      WiFiClient rejectClient = Server.available();
      rejectClient.stop();
      Serial.print(F("Reject new Client="));
      Serial.println(rejectClient.remoteIP());
    }
  }

```

auf Motorläuft teste?

```arduino
if (!Motorlaeuft && Server.hasClient()) {

```

---

<div class="post-metadata">

**Author:** ![my\_xy\_projekt](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/my_xy_projekt/32/810062_2.png) [@my\_xy\_projekt](https://forum.arduino.cc/u/my_xy_projekt)\
**Post date:** [June 11, 2025, 7:36pm UTC](https://forum.arduino.cc/t/huhnerklappensteuerung-mit-esp32/1380698/22 "2025-06-11T19:36:50Z")

</div>

Wenn Du eine MotorLaeuft-Variable hast, die true zurück gibt, wenn aktiv, nutz die als Einzeiler:  
`if (Motorlaeuft) return;`  
als erste Zeile - fertig.

Das könnte funktionieren.

[Next page](https://forum.arduino.cc/t/huhnerklappensteuerung-mit-esp32/1380698.md?page=2)
