# Automatische Hühnerstalltür

- Rubrik: Tiere und Natur
- Datum: 2016 – 6. September 2018 (aus dem Inhalt erschlossen)
- Adresse: https://electric-rocken.de/projekt/automatische-huehnerstalltuer/
- Autor: Axel Roll

> Ziel war der Aufbau eines automatischen Türöffners am Hühnerstall. Die Tür sollte sich automatisch am Morgen öffnen und abends wieder schließen.

![](https://electric-rocken.de/assets/bilder/projekte/stall/arduino.webp)

Ziel war der Aufbau eines automatischen Türöffners am Hühnerstall. Die Tür sollte sich automatisch am Morgen öffnen und abends wieder schließen.

## Hardware

![Schematischer Aufbau](https://electric-rocken.de/assets/bilder/projekte/stall/aufbau.webp)

Als Basis habe ich einen [**Arduino UNO WiFi**](https://docs.arduino.cc/retired/boards/arduino-uno-wifi/) verwendet. Dieser steuert einen [L293D](https://duckduckgo.com/?q=L293d+filetype%3Apdf) an, der einen Motor mit integriertem Getriebe bewegt. An der Achse des Motors ist eine Schnur mit der Tür des Hühnerstalls verbunden. Wird der Motor aktiviert, rollt er die Schnur auf und hebt die Tür. Die Steuerung erkennt über zwei Reed-Kontakte, ob die Tür komplett hochgefahren oder geschlossen ist und schaltet den Motor automatisch ab. 

Die Entscheidung, wann die Tür geöffnet und geschlossen wird, wird über eine interne Uhr (RTC [DS3234](https://duckduckgo.com/?q=DS3234+filetype%3Apdf)) und einen Helligkeitssensor ([TSL2561](https://duckduckgo.com/?q=TSL2561+filetype%3Apdf)) getroffen. Dabei wird die RTC nur genutzt, wenn der Helligkeitssensor mitten am Tag falsche Werte liefert und die Tür schließen möchte bzw. es an manchen Tagen nicht hell oder dunkel genug wird.

![Teil der verwendeten Hardware](https://electric-rocken.de/assets/bilder/projekte/stall/hardware.webp)

Zusätzlich zu diesen Grundfunktionen wird noch ein [DHT22/AM2302](https://duckduckgo.com/?q=DHT22+filetype%3Apdf) verbaut, der die Temperatur und Luftfeuchtigkeit des Hühnerstalls misst. Abhängig von der Temperatur wird eine Infrarotlampe ein- und wieder ausgeschaltet. 

Neben der Infrarotlampe wird auch der den Hühnerstall umgebende Stromzaun automatisch, abhängig von der Stellung der Tür, ein- und ausgeschaltet. Realisiert wird dies über Funksteckdosen, die von dem Arduino-Board gesteuert werden.

Um den Zustand der Steuerung direkt am Gerät zu sehen, wird das [RGB LCD Shield](https://learn.adafruit.com/rgb-lcd-shield) von Adafruit verwendet. Da das Gehäuse die Tasten des LCD-Shields verdeckt, wurden nur zwei Tasten für die Steuerung rausgelegt.
Eine Taste schaltet die Ansicht um, die andere ändert die Einstellung des aktiven Bildschirms.

So sieht die fertige Steuerung aus: oben das Display, darunter die Tasten und der
Mikrocontroller, in der Mitte der Temperatur- und Feuchtesensor. Links sitzt der kleine
Funksender, über den Stromzaun und Infrarotlampe geschaltet werden.

![Die aufgebaute Steuerung auf einer Lochrasterplatine, oben ein Display mit der Anzeige Offen, 21 Grad, Auto, links eine kleine orange Funksenderplatine](https://electric-rocken.de/assets/bilder/fotos/tiere/huehnertuer-funksender.webp)

![Statusbildschirme](https://electric-rocken.de/assets/bilder/projekte/stall/status.webp)

Die Anzeige verfügt über folgende Bildschirme: 

- Status 
- Anzeige des Status der Tür, des Stromzauns und der Infrarotlampe sowie der Temperatur
- Anzeige der letzten Öffnungs- und Schließzeit, Helligkeit, Temperatur und Luftfeuchtigkeit
- Modus und Status der Tür (Automatik, Manuell (Auf /Zu))
- Modus und Status des Stromzauns (Automatik, Manuell (An/Aus))
- Modus und Status der Infrarotlampe (Automatik, Manuell (An/Aus))

## Software

Um das im Arduino UNO WiFi - Board verwendete WiFi-Modul ([ESP8266](https://duckduckgo.com/?q=ESP8266+filetype%3Apdf)) richtig zu nutzen, habe ich die Beispiel-Implementierung des Webservers als Grundlage des Codes genommen. Wie sich rausstellte, war dann schon der Chip fast voll. Viel Platz für eigenen Code und eigene Variablen war nicht mehr, sodass ich direkt am Anfang mit dem freien Speicher sehr haushalten musste. Nachdem alle für die Sensorik benötigten Bibliotheken eingebunden waren und im Code testweise angesprochen wurden, war der Chip voll und ich musste anfangen zu tricksen. Da die für den Webserver benötigten Strings am meisten Platz benötigen, habe ich sie über PROGMEM (in Arduino über F() ) in den Programm-Flash verschoben und hatte somit wieder Platz für ein paar Variablen.

## Aktueller Stand und Ausblick

![Wemos D1 mini](https://electric-rocken.de/assets/bilder/projekte/stall/d1.webp)

Das Projekt befindet sich im praktischen Einsatz und war damit eigentlich abgeschlossen. Das Problem mit dem stark begrenzten Speicherplatz des Mikrocontrollers war zwar schon seit dem Anfang bekannt, wird aber erst jetzt kritisch, da aus Platzgründen keine weiteren Funktionen implementiert werden können. Ich plane deswegen einen Technologiewechsel und möchte den Arduino ablösen. Ich hatte zuerst mit dem **Arduino Yún** oder **Arduino Tian** weitermachen wollen, nur diese waren einfach zu unpraktisch und teilweise unmöglich zu händeln. Mit keinem der Arduino Boards konnte man einen vernünftigen Webserver implementieren. Der Preis dieser Boards ist zudem mit >65€ viel zu hoch. Ich habe nun mit dem **Wemos D1 mini** angefangen zu experimentieren. Diese Boards kosten um die 5€ und basieren auf dem ESP8266EX, haben 1MB-Flash und sind nativ WiFi-fähig. Bei Bedarf lässt sich immer noch eine SD-Karte hinzunehmen. Somit lassen sich nun endlich AJAX-basierte Webseiten ordentlich umsetzen und meine weiteren gewünschten Features implementieren. 

Zuerst wollte ich die Helligkeit, bei der sich die Tür öffnet und schließt, einstellbar gestalten. Aufgrund des begrenzten Programmspeichers habe ich mich dazu entschlossen, die Helligkeitsgrenzen fest einzustellen. Dadurch musste ich bei der ersten Inbetriebnahme ein paar Tage testen, welche Werte optimal sind. Nun ist aber alles eingestellt und die Tür öffnet im Morgengrauen und schließt abends, wenn bereits alle Tiere im Stall sind.

Für die Zukunft kann ich mir vorstellen, einen MQ-9 Gassensor einzubauen. Mit diesem möchte ich dann die Geruchsentwicklung im Hühnerstall erfassen.

Auch Sensoren, die angeben, ob und wie viele Eier gelegt worden sind, wären interessant. Genauso auch Sensoren, die signalisieren, dass das Futter zur Neige geht.

## Quellcode

Der Quellcode liegt auf [GitHub](https://github.com/TheRocken/chicken-coop). Die letzte Version habe ich auf einem Arduino Yún umgesetzt. Es ist aber auch ein einfacher Arduino Uno geeignet. Dazu müssen die unnötigen Includes und Funktionen herausgenommen werden (webserver(), digitalCommand(), Bridge.h, YunClient.h, YunServer.h).

## Abschluss

Das Projekt ist für mich abgeschlossen, und es wird keine weiteren Ergänzungen hier geben. Am Ende der Entwicklung stellte sich heraus, dass die verwendete Arduino-Hardware für meine Anforderungen nicht leistungsfähig genug war. Gern hätte ich das System ins WLAN eingebunden und per MQTT darauf zugegriffen. Auch die verwendete Arduino-Yún-Hardware entsprach da nicht meinen Vorstellungen. Eine Umsetzung mit einem ESP32 wäre da sinnvoll. Der Quellcode ließe sich dafür leicht anpassen.
