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
Als Basis habe ich einen Arduino UNO WiFi verwendet. Dieser steuert einen L293D an, der einen Motor mit integriertem Getriebe bewegt. An der Achse des Motors ist eine Schnur die Tür des Hühnerstalls verbunden. Wird der Motor aktiviert rollt er die Schnur auf und hebt die Tür. Der 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) und einen Helligkeitssensor (TSL2561) 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.
Zusätzlich zu diesen Grundfunktionen wird noch ein DHT22/AM2302 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 von Adafruit verwendet. Da das Gehäuse die Tasten des LCD-Schildes verdeckt, wurden nur zwei Tasten für die Steuerung rausgelegt.
Eine Taste schaltet die Ansicht um, die andere ändert die Einstellung des aktivieren Bildschirms.
- 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) 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
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 weiter machen 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 ESP-8622EX, 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 welchen 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.