Automatische Hühnerklappe mit Arduino

Hühner sind ja recht einfach zu halten wenn man einen großen Garten hat. Sie kommen von alleine aus dem Stall raus und gehen abends bei Dämmerung von selbst in den Stall hinein. Nur auf und zu machen muss man den Stall von Hand (natürlich neben den anderen Arbeiten…)

Gerade im Sommer ist das frühe Aufstehen am Wochenende etwas lästig und im Herbst/Winter findet je nach Arbeitsbeginn/Ende das Ganze immer im Dunkeln statt und etwas Angst vor Raubtieren ist da schon angebracht.

Also “musste” eine Automatik her. Man kann solche Lösungen bereits seit langem kaufen und auch im Internet findet man viele Anleitungen zum Selbstbau. Trotzdem entschied ich mich für eine komplett eigene Lösung.

Meine automatische Hühnerklappensteuerung basiert auf einem Arduino welcher über eine analog angeschlossene Solarzelle die Dämmerung erkennt. Nach einer einstellbaren Verzögerungszeit wird dann entweder die Tür geschlossen oder geöffnet. Es gibt eine minimale Fehlerüberwachung mit maximaler Türöffnungszeit. Ob die Tür auf oder zu ist wird über einen Magnetschalter bestimmt. Die Verzögerung ist deshalb wichtig um zu verhindern, dass ständig die Tür auf oder zu geht, nur weil der Schwellwert gerade erreicht wird (z.B. irgendeine Lampe leuchtet auf die Solarzelle oder ähnliches). Die Verzögerung beginnt wenn der Dunkel-Schwellwert erreicht ist und sollte nach der Verzögerungszeit immer noch der Schwellwert erreicht sein, öffnet oder schließt die Tür je nach aktuellem Status.

Die Tür selbst wird über einen einfachen Hebelmechanismus mit einem alten Scheibenwischermotor gesteuert. Dieser wird über ein Netzteil welches an eine umgebaute Steckdose an der Arduino-Relais-Karte hängt ein- uns ausgeschaltet. Das Netzteil hat eine geringere Spannung als 12V (muss aber über genügend Amperereserven für den Motor verfügen). Somit bewegt der Motor die Tür recht gemächlich, sodass die Tiere bei einer etwaigen Fehlfunktion genug Zeit haben um ausweichen zu können.

Die Steuerung hat ein mehrzeiliges LC-Display, ein Modus-Wahl-Poti und vier Knöpfe um die Konfigurationswerte einstellen zu können. Die Werte werden im internen EEPROM des Arduino gespeichert und sind somit auch nach einem Stromausfall noch vorhanden.

In der aktuellen Version schreibt das Programm jeweils beim Starten, beim Öffnen oder Schließen der Tür und bei einem Fehler eine E-Mail. Eine maximale Anzahl von E-Mails pro Zeit kann im Programm eingestellt werden. Ggfs. mache ich das auch noch über den Konfigurationsmodus einstellbar. Das Schreiben der E-Mail geht über eine billige ENCj2860-Schnittstelle und der Ethercard-Bibliothek. Da hier einiges an RAM benötigt wird musste ich von einem direkten Schreiben einer E-Mail per SMTP-Port 25 von der guten UIP-Bibliothek Abstand nehmen. Die E-Mail wird nicht vom Arduino selbst geschrieben, vielmehr ruft der Arduino eine PHP-Seite per HTTP-GET auf meinem Synology-NAS auf. Dort schreibt das PHP-Programm je nach übermitteltem Parameter eine entsprechende E-Mail.

Mit dem Poti kann man drei Betriebsmodi wählen: Automatik, Konfiguration und Auf/Zu-Wechsel-Betrieb.

Automatik: Hier geschieht alles vollautomatisch. Die Klappe wird geöffnet oder geschlossen. Das ist der Standardmodus.

Konfiguration: Hier kann man diverse Werte einstellen, z.B. den Schwellenwert wann es für den Arduino “dunkel” ist, die Verzögerung, die maximale Motoröffnungszeit usw.

Auf/Zu-Wechsel: Hier kann  “manuell” die Tür geöffnet oder geschlossen werden. Ein erneuter Zyklus ist wieder möglich wenn das Poti wieder auf einem anderen Betriebsmodus gestanden hat.

Der Code: huehnerstall_web

Je nach Editor “schöner lesbar”: Programmcode (DOS-LFs)

Hier sieht man die Tür vom Hühnerstall und den angeschlossenen Motor mit provisorischer Abdeckung gegen den Regen:

Stalltür

Im Gartenhaus ist die Steuerung welche über Erdkabel an den Hühnerstall angebunden ist. Das Automatengehäuse ist aus einem alten Laserdrucker (Optikeinheit) und hat zwei “Abteilungen”. Vorne ist die Niederspannungsabteilung. Hinten (nicht sichtbar) steckt die 4-Kanal-Relaiskarte (Hochspannung).

Automat
Der Automat
Konfigurationsmodus
Konfigurationsmodus
Innenleben des Automaten
Innenleben (Front)
Dämmerungssensor Außen
Dämmerungssensor Außen
Umgebaute Mehrfachsteckdose
Umgebaute Mehrfachsteckdose

Noch viel zum Aufräumen +  (W)LAN-Anschluß

Noch viel zum Aufräumen + (W)LAN-Anschluß

 

ACHTUNG: Ich übernehme – wie im Impressum geschrieben – keine Haftung für irgendwelche Schäden an Gegenständen, Leib und Leben von Menschen oder Tieren. Hier wird teilw. mit 220V gearbeitet und sollte nur von geschultem fachkundigen Personen durchgeführt werden. Für einen echten Einsatz des Automaten sollte der verantwortungsbewusste Tierhalter einen Mechanismus einbauen welcher verhindert, dass sich Tiere verletzen können.

12 Gedanken zu „Automatische Hühnerklappe mit Arduino“

  1. Also entschuldigung da muss ich sagen: das ist der Hammer!
    Werde mir das auf jedenfall anschauen für meinen zukünftigen Hühnerstall, bis auf die Email funktion, die werde ich wohl außen vor lassen (aber auch eine sehr coole Idee).

    Ich würde mich auch dem Vorredner anschließen, könntest du einen Schaltplan veröffentlichen (wenn nicht zuviel Aufwand).

    Weiter so! Deine Tüftelei gefällt mir sehr gut!
    lg
    Lukas

    1. Hallo Lukas,

      danke für die Blumen. Die Automatik läuft immer noch und das recht problemlos. Wenn ich es noch einmal machen würde, würde ich es aber nicht mehr mit einem Scheibenwischermotor machen.
      Das Problem ist nämlich, dass es keinen definierten “Offen”-Status gibt der vom Programm überwacht werden kann. So ist es auch schon 3-4 mal vorgekommen, dass der Automat der Meinung war die Tür sei auf, aber der Spalt war halt für die Hühner nicht groß genug da die Mechanik Spiel hatte. Da mittlerweile die E-Mail ein Standbild von einer Webcam enthält (vgl. meinen Blogeintrag zum Handy 😉 sieht man halt wenn die Tür nicht komplett auf ist….
      Statt des Scheibenwischermotors würde ich nun eine Art Linearantrieb wählen (z.B. Akkuschraubermotor mit fixierter Mutter an einer Gewindestange (vgl. Selbstbau-CNC-Fräsen)) und einem weiteren Endschalter.

      Einen Schaltplan habe ich leider nicht. Allerdings ergibt sich eigentlich die komplette Beschaltung durch diesen Teil im Quelltext:

      // Ein- und Ausgänge
      //
      const int MODUS_EINGANG = A0; // Modus-Poti-Eingang
      const int LDR = A1; // Photozelle als Daemmerungsschalter
      const byte TUERSCHALTER = A3; // Schalter fuer die Tuer
      const byte MOTOR_RELAIS = 3; // PIN fuer Motor-Relais-Steuerung
      const byte KEY_ENTER = 8; // Tasten fuer Menuesteuerung
      const byte KEY_BACK = 9; // Optimierbar mit nur einem Eingang ueber Widerstandswerte
      const byte KEY_LEFT = 6;
      const byte KEY_RIGHT = 7;

      LG Daniel

  2. Hallo Daniel,

    ich bastele auch gerade an einer “Chick-O-Matik” und danke für die Inspiration.
    Unser Hühnerhaus hat eine horizontale Schiebetür und kann daher auch nicht sinnvoll per Seilwinde bewegt werden. Der billigste fertige Linearaktuator, den ich gefunden habe, ist eine elektrische Autoantenne (ca. 30 €). Die sind durch ein mehrstufiges Getriebe relativ kräftig und haben sogar eine Rutschkupplung integriert, so dass bei Klemmen oder Endanschlägen der Tür nichts kaputt geht.
    Das Aus- und Einfahren wird normalerweise bordnetzabhängig über ein Umschalt-Relais und ein kleines Nebengetriebe gesteuert, das die Umdrehungen der letzten Getriebstufe zählt und mit Schleifkontakten den Motor stoppt und umpolt. Das ist der anfällige Teil dieser Antennen und wird am Arduino nicht gebraucht, wenn man den Motor direkt über eine H-Brücke ansteuert. Drück die Daumen, dass das bei uns bald läuft!

    Grüße
    Florian

    1. Hallo Florian,

      ja die Idee mit der Motor-Antenne hatte ich auch. Ich war aber skeptisch bzgl. der Kraft. Ich hoffe es klappt bei Dir!
      Bitte gib unbedingt bescheid, ob das funktioniert hat. Irgendwann mache ich meine Klappe bestimmt mal neu.
      Was ich auch eine Zeit lang verfolgt hatte, war ein elektrischer Auto-Fensterheber.
      Da gibt es ganz unterschiedliche Funktionsweisen. Die sollten schon stark genug sein; heben ja schließlich auch ein schweres Fenster.

      Viele Grüße,
      Daniel

  3. Hallo Daniel,

    die Chick-O-Matic ist am Hühnerhaus dran und läuft im Beta-Test. Die Mechanik mit der Autoantenne funktioniert sehr gut. Gut geht auch das automatische Schalten einer 10W-Heizfolie, die unter dem Lieblingsnest der drei Hühnchen liegt (das Hühnerhaus ist nicht isoliert). Ein DS18B20 misst die Temperatur im Haus und zeigt sie auf einem 1,3″-OLED an, ein zweikanaliges Halbleiter-Relais schaltet die Heizfolie nachts bei unter 5°C an. Was nicht gut funktioniert, ist die Helligkeits-Steuerung. Ich finde keine guten Schwellwerte. Das Hühnerhaus steht relativ dicht am Haus mit Außenbeleuchtung. Ich denke gerade darüber nach, das ganze mit DCF77-Empfänger auf einen Astrotimer umzubauen. (Oder ganz dekadent mit GPS-Modul, das für Berechnung von Sonnenauf- und Untergang auch gleich die Position liefert. Das war mir aber für den Zweck zu teuer.)
    Wenn Du mir Deine Email schickst, kann ich auch Fotos von der Mechanik liefern.

    Grüße
    Florian

  4. Sehr coole Sache! Ich arbeite auch an einer solchen Steuerung und habe Wassertemperatur und Lufttemperatur eingebunden, damit ich per Relaiskarte eine Tränkenheizung schalten kann. EMails verschickt meine Steuerung nicht. Ein LCD Display zeigt die Werte und der Ardulino sendet sie über einen ESP-01 per UDP Befehl an meine Haussteuerung, die diese in einer APP anzeigt.
    Lichtsensor ist eine Fotozelle an einem Sensormodul. In der nächsten Version versuche ich es mit einer einfachen Fotozelle an einem Analogeingang. Motor ist ein kleiner 12V Getriebemotor mit 100 U/Min, der etwas zu schwach ist, leider. Dieser wickelt eine Schnur auf, die die Klappe (rechts und links läuft sie in Aluschienen) hochzieht. Ich versuche einen günstigen stärkeren Motor zu finden. Die Klappe besteht aus einem Alu/Kunststoff Verbundmaterial. Das ist recht leicht und sehr robust. Mir fehlt noch ein Menü, in dem ich den Helligkeitswert wählen kann und eine Verzögerungszeit der Klappe nach Sonnenuntergang. Das habe ich noch nicht hinbekommen. Vielleicht hilft mir Dein Code weiter. Vielen Dank für die tolle Erklärung!

    1. Hallo Andreas,
      danke. Das liest sich bei Dir ja auch sehr spannend. Welche Haussteuerung hast Du und wie wird die mit UDP bestückt? Ich glaube das will ich auch 🙂
      Schöner Gruß,
      Daniel

    1. Hallo Johann,

      leider habe ich keinen Schaltplan und das Teil ist fest verbaut (funktioniert übrigens immer noch sehr gut, obwohl die Netzwerkschnittstelle mittlerweile defekt ist).
      Vielleicht helfen Dir die Eingänge im Quellcode:

      // Ein- und Ausgänge
      //
      const int MODUS_EINGANG = A0; // Modus-Poti-Eingang
      const int LDR = A1; // Photozelle als Daemmerungsschalter
      const byte TUERSCHALTER = A3; // Schalter fuer die Tuer
      const byte MOTOR_RELAIS = 3; // PIN fuer Motor-Relais-Steuerung
      const byte KEY_ENTER = 8; // Tasten fuer Menuesteuerung
      const byte KEY_BACK = 9; // Optimierbar mit nur einem Eingang ueber Widerstandswerte
      const byte KEY_LEFT = 6;
      const byte KEY_RIGHT = 7;

      Viele Grüße,
      Daniel

      1. Das hilft mir auf jedenfall weiter, doch funktionieren tut es leider nicht….könntest du (bei wenig Aufwand) die Funktion mit der Email rausnehmen, sowie das DIsplay? Ich würde gerne mit dem Lichtsensor wie bei dir Arbeiten und zusätzlich zwei Knöpfe für auf und zu schalten. Betrieben soll meine Tür mit einem Linearzylinder. Dieser fährt ganz ein oder ganz aus…Da könnte man also am einfachsten mit einem Timer arbeiten…Ich scheitere einfach daran, verschiedene Prioritäten in den Loops zu setzen und dein Sketch ähnelt sehr meiner Konstruktion.
        Gruß

Schreibe einen Kommentar zu Johannes Sonntag Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Time limit is exhausted. Please reload CAPTCHA.