Hallo Miteinander,
nachdem bei uns seit ein paar Monaten 3 Hühner leben und brav Eier legen, wurde es langsam Zeit das Stalltüreöffnen am Morgen und -schließen am Abend zu automatisieren. Nachdem mir als Raspberry-PI Newbie eure Anleitungen extrem weiter geholfen haben möchte ich meine bisherigen Erfahrungen teilen - vielleicht plant ja jemand gerade ein ähnliches Projekt ...
[hr]
Bestehende Projektbeschreibungen - automatische Hühnertüre:
- http://www.forum-raspberrypi.de/Thread-hennenstall-2-0?highlight=hühnerstall
- http://www.forum-raspberrypi.de/Thread-projekt-stallsteuerung-lichtsteuerung-tueroeffner-ueberwachungskamera?highlight=hühnerstall
- https://community.conrad.de/ho…he-huhnerklappensteuerung
- http://hackaday.com/2015/04/11…-controlled-chicken-door/
- https://www.raspberrypi.org/blog/mechanise-your-chickens/
- http://www.instructables.com/i…atic-Chicken-Coop-Door-2/ (mit Arduino)
[hr]
Anforderungen & Einkaufsliste
Der RaspberryPi soll langfristig folgende Aufgaben erledigen:
- Innentüre (Wärmeschutz im Winter) schiebend öffnen
- Außentüre (Einbruchschutz) nach oben öffnen
- Webcam zur Beobachtung der Türfunktion
- Temperatursensor
- Steuerung von Wärmematten im Winter (um die Temperatur im über 0° zu halten)
Nachdem ein Batteriebetrieb über Wochen mit dem Raspberry Pi aufwendig ist, wurde ein Erdkabel und Verteiler in den Stall verlegt. Folgende Elektronik-Teile wurden eingesetzt:
- Raspberry Pi 3 Experiment Set (u.a. mit Licht- und Temperatursensor)
- Raspberry Pi Motorsteuerungsboard mit 2 Motoren*
- Externes Universal-Steckernetzteil
- Beliebige Webcam
*) Achtung, dieser Motor ist dafür eigentlich zu schwach!
[hr]
Bisherige Arbeitsschritte N°1: Motoransteuerung programmieren
Ich habe den oben genannten Motor bestellt, weil ich ein Rasbpi-Newbie bin und sichergehen wollte dass alles funktioniert. Bei dem Motor ist eine Anleitung und ein Script beigelegt, der bei Motor#1 auch einwandfrei funktioniert. Man sollte die Platine aber nicht direkt an den GPIO anstecken, sondern mit den im Experiment-Set enthaltenen Kabeln händisch verbinden. Dafür gibt es 2 Gründe:
- Man belegt damit alle weiteren Pins, die für weitere Sensoren benötigt werden
- pi4j hat Probleme mit GPIO7, ich habe daher als Workaround GPIO0 an beiden Motoren angesteckt (Motor 1 nutzt somit GPIO0-3, Motor 2 nutzt GPIO 4-6 und GPIO 0 anstelle 7).
Wie man das Script ausführt entnimmt man am besten einem pi4j GPIO Beispiel. Wichtig ist dabei: Dateiname und Klassenname müssen übereinstimmen, und der Code muss in den Ordner /opt/pi4j/lib/ gelegt werden. Hinweis: Für diesen Ordner muss man zuerst die Schreibrechte mit chmod setzen (allein daran bin ich anhand der kryptischen Fehlermeldungen 2h lang verzweifelt).
Den Java-Code habe ich übrigens anders als im Tutorial in BlueJ eingegeben - einfach eine neue Klasse erstellen, diese kompilieren und dann mit rechter Maustaste bei der Klasse klicken und "void main ..." ausführen. Das ist mir als Grafiker wesentlich sympatischer als dieses 80er-Jahre Linux Shell - ich sag dazu ja immer DOS Fenster (jaja, rügt mich nur dafür!!! )
PS: Zur Motorsteuerung gibt es auch Python-Anleitungen, wahrscheinlich hat man da kein Problem mit GPIO7 (z.B. elektronx.de, learn.adafruit.com).
PPS: Man sollte an dieser Stelle auch gleich den Motor mit einem externen Netzteil versorgen weil die Stromversorgung mit Raspberry Pi für die Aufgabenstellung nicht ausreicht, siehe Schritt 4!
[hr]
Bisherige Arbeitsschritte N°2: Temperatursteuerung & Webcam
Der Vorteil von dem Raspberry Pi Experiment-Set ist, dass für den Temperatursensor bereits Scripts & Anleitungen zur Verfügung gestellt werden. Die haben ohne Probleme funktioniert.
Als Webcam habe ich einfach eine alte USB Webcam verwendet und mit fswebcam diese eingerichtet (Anleitung USB Webcam auf RasberryPi). Wichtig ist dabei, dass das automatische Speichern auf der Festplatte ausgeschaltet ist - sonst ist diese relativ schnell voll. Die Anleitung funktioniert in internen Netzwerk einwandfrei, für eine Internet-Webcam siehe nächster Arbeitsschritt.
[hr]
Bisherige Arbeitsschritte N°3: Raspberry Pi für Remotezugriff bereit machen
Nachdem der Raspberry Pi im Hühnerstall stehen wird, wo ich keinen Platz für Monitor und Tastatur habe, möchte ich auf diesen via WLAN Netzwerk oder Internet zugreifen. Das Zauberwort hierfür ist wohl XRDP - damit kann man sich von einem anderen Rechner aus einloggen. Ich kann mich leider nicht mehr erinnern, welches Tutorial ich verwendet habe - ihr findet per Google Suche zu xrdp problemlos Anleitungen, das ganze dauert nur einige Minuten und war selbst für einen Newbie für mich leicht zu lösen. Wichtig ist dabei, dass man bei einigen Routern eine Portweiterleitung einrichten muss - was dann je nach Router doch komplizierter sein kann.
Wenn man mit der Portweiterleitung Probleme hat und/oder den Raspberry Pi vom Internet aus steuern möchte, kann man auch weaved verwenden, die speziell für den Raspberry Pi einen xrdp Remotezugriff ohne Portweiterleitung ermöglichen (weaved-Anleitung). Das ganze ist gratis, man muss sich aber nach 30 Minuten immer wieder neu einloggen. Nachteil: Die Reaktionszeit ist langsam, aber für kleine Code-Änderungen reicht es.
Leider habe ich es nicht geschafft, die Webcam übers Internet aufzurufen. Workaround für Faule: Mit weaved kann man sich am Rechner einloggen und dort per Browser auf das Webcam-Bild zugreifen (siehe xrdp screenshot im Anhang).
Hinweis: Aus Sicherheitsgründen sollte man das Standard-Passwort ändern! Wenn man das über den xrdp remote Zugriff macht, sollte man dann sofort "sudo service xrdp restart" eingeben, ansonsten kann man sich danach nicht mehr anmelden! (ja, blöd, wenn man dafür alles wieder ausbauen, an einen Monitor anstecken, und wieder einbauen muss! )
[hr]
Bisherige Arbeitsschritte N°4: Installation im Hühnerstall
Im Anhang findet ihr einige Fotos vom aktuellen Stand - der zugegeben noch ein wenig chaotisch ist. Das lag vor allem daran, dass sich die Motoren als extrem schwach herausgestellt haben - trotz externer Stromversorgung, die ich jetzt mit 7V anstelle den angegebenen 5 V betreibe. Als weiteren Workaround habe ich einige Logo-Technik Bauteile ausgegraben und so eine stärkere Übersetzung bewirkt - allerdings mit dem Effekt, dass das Öffnen nun 20 Minuten dauert. Hat aber den Vorteil, dass kein Huhn eingequetscht werden kann!
Mit den Lego-Technik teilen lässt sich jetzt die innere Türe schieben - diese wird mit 2 Seilen und einer Seilwinde in die jeweilige Richtung geschoben. Die äußere Türe ist mit ca. 400g leider noch immer zu schwer für den Motor, bzw. die Übersetzung wäre dann so groß, dass das Schließen/Öffnen 2h dauern würde. Ich plane daher als nächstes eine wesentlich kleinere und leichtere Türe einzubauen (aus Gitteralu).
Weiteres Problem (Nachtrag 7.Juli): Man sollte das Verhältnis zwischen Seilstärke und dem Durchmesser der drehenden Stange bedenken. Manchmal verteilt sich das Seil schön an der Stange und manchmal wickelt es sich an einer Stelle auf. Dadurch öffnet sich das Tor jedes mal unterschiedlich weit. Lösungsmöglichkeiten: Durchmesser der Stange erhöhen oder Breite der Stelle so eng setzten, dass sich das Seil jedes mal gleich aufwickelt.
[hr]
Bisherige Arbeitsschritte N°5: Zeitautomatik
Zuerst wollte ich die Zeitautomatik direkt in Java lösen, das war aber ziemlich kompliziert. Ich bin daher auf crontab umgestiegen - hier ein Beispielcode wie das Öffnen täglich 6h Morgens und das Schließen um 8h abends durchgeführt wird:
00 06 * * * sudo java -classpath .:classes:/opt/pi4j/lib/'*' open >/dev/null 2>&1
00 20 * * * sudo java -classpath .:classes:/opt/pi4j/lib/'*' close >/dev/null 2>&1
Die Java Dateien "open.jar" und "close.jar" habe ich auch hier mit BlueJ im Verzeichnis /opt/pi4j/lib/ erstellt! Ursprünglich wollte ich die Zeitschaltung mit dem im Experimentier-Set integrierten Lichtsensor realisieren. Das ist mir im Moment zu viel Arbeit da man mit crontab sehr einfach für jeden Monat individuelle Zeiten angeben kann.
[hr]
Weitere Schritte
Ja - zugegeben, das ganze Projekt ist bis jetzt doch etwas chaotischer verlaufen als ursprünglich geplant - vor allem der Workaround mit den Lego-Teilen für eine bessere Übersetzung ist doch sehr abenteuerlich geworden. Schade, dass die Schrittmotoren nur ca. 100 gramm Gewicht heben können! Vielleicht habt ihr bessere Ideen? Klar, alles ausbauen, und neue Motoren bestellen. Aber das ist mir im Moment zu viel weitere Arbeit. Falls die Lego-Teile langfristig funktionieren kann man die Konstruktion auch so einfach belassen. Im Herbst wird dann dafür die Wärmematten-Ansteuerung umso wichtiger. In jedem Fall würd ich mich über Hinweise und Anregungen freuen!