Posts by tschakaa

Registriere dich jetzt, um exklusive Vorteile zu genießen! Als registriertes Mitglied kannst du Inhalte herunterladen und profitierst von einem werbefreien Forum.
Mach mit und werde Teil unserer Community!


    Geht das nicht einfacher?


    Ein Umschalter Automatik / Manuel.


    Automatik = Strom kommt vom Pi
    Manuel = Strom kommt von einem Taster


    Je nachdem was einfacher ist - Bei dieser Variante müsste ich wieder an die Verkabelung ran, die mittlerweile recht komplex ist (2 Motoren, externe Stromversorgung, Wärmesensor). Ich dachte / hoffte, dass das nicht so schwierig sein kann in Java ein Programm zu schreiben, dass Funktion X ausführt wenn Taste Y gedrückt wird?

    Hier ein Foto von der neuen Türöffnung. Und typisch - während wir gearbeitet haben machens sich die gefliederten Freunde bequem! :shy:



    Nachdem die Öffnung nun doch nicht immer richtig funktioniert möchten wir den Motor auch manuell ansteuern. Hab Ihr irgendwelche Ideen dazu? Ich dachte an ein Wireless Keyboard und dem Java KeyListener. Damit könne beim drücken/gedrückt Halten einer bestimmten Taste der Motor eingeschalten werden, oder?

    Wir haben letztes Wochenende die Klappen wieder umgebaut. Sowohl die Innen- als auch Außentüre besteht jetzt aus einem ca.250x250x1mm Alublech. Dadurch sind die Elemente jetzt so leicht, dass sie ohne Übersetzung hochgezogen werden können. An der Unterkante haben wir Holzleisten montiert, sodass Raubtiere das Blech nicht ohne weitres nach oben schieben können.


    Die Türöffnung funktioniert jetzt - nur folgendes bereitet uns noch Kopfzerbrechen:


    • Wenn man die Scripts in BlueJ ausführt muss man eine andere Zeit angeben als wenn man das kompilierte Script im Shell ausführt! Wie kann das sein? 60 Sekunden im Bluej sind nur ca. 40 Sekunden im Shell!*
    • Gestern Abend wurde die Türe nicht ganz geschlossen. Seit Samstag hatte das öffnen/schließen Problemlos funktioniert - wie kann das sein? Ein Faden wird die gleiche Zeit (ca.60 Sekunden) aufgerollt und dann wieder abgerollt. Entweder es gibt einen Konstruktionsfehler - oder irgendetwas stimmt mit pi4j / java nicht - wie oben beschrieben.


    *) Mit dieser Scriptvorlage wird der Motor für 50 Sekunden angesteuert:
    http://www.savagehomeautomatio…ntrol-breakout-board.html
    Hier ein Beispiel für 50 Sekunden - wie kann die Zeit in BlueJ anders sein als im Shell?

    • System.out.println(" Motor FORWARD for 50 seconds.");


    • motor.forward(50000);

    Hallo ... danke für eure Rückmeldungen! :)


    @ Wärmematten: Ich bin mir auch nicht sicher, ob wir welche brauchen. Unser Stall ist wirklich sehr klein, liegt in der Luft und speichert in der Nacht absolut keine Wärme. Ich hätte mir gedacht, dass man zumindest harte Minustemperaturen (ab -5°) vermeiden sollte. Bei uns in Innsbruck gibt es die halt doch regelmäßig. Aber vielleicht reicht ja auch wirklich Styropor ...


    rmjspa & Bracew: Wie steuert ihr den Motor an? Mit einem Relais, wo du die Stromstärke für eine gewisse Zeitspanne anlegst? Aber wie steuert man dann die Richtung?


    sd582: Welchen Motor, welche Ansteuerung und was für eine Welle hast du verwendet? Meinst du mit "Welle" eine Übersetzung oder einfach einen Hohlzylinder wo du das Seil fest machst?


    @ schnasseldag: Du hast den Link vergessen?

    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:



    [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:



    *) 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! :)