Feuerwehr Melder und Pushover

  • Wenn Du gpiozero verwendest, wie im Skript von Dennis89 vorgeschlagen, dann verwende für Deine Schaltung besser einen 1k oder den 2K2, statt dem 10k Widerstand. Der wird in dem Fall nur ein Schutz für den GPIO, aber kein Pullup sein. Wie bereits geschrieben ist bei gpiozero der interne Pullup per default schon aktiviert und der hat irgendwas zwischen 50k und 60k.

    Zur Verkabelung eines Tasters oder gleichwertig siehe hier: https://gpiozero.readthedocs.io/en/stable/recipes.html#button und da kannst Du einfach den kleinen Widerstand dazwischen klemmen.

  • Ich glaube Du verstehst das Prinzip nicht, wozu das ganze Gedöns mit den Widerständen da oder nötig ist. Lies Dir das dazu mal durch: https://www.elektronik-kompendium.de/sites/raspberry-pi/2006051.htm

    Wie muss ich denn dann jetzt was mit welchem Widerstand verkabeln?

    So wie im Link oben https://gpiozero.readthedocs.io/en/stable/recipes.html#button und einfach eine 1k oder Deinen 2k2 (als "Schutzwiderstand") zwischen Taster und in dem Fall blauen oder schwarzen Draht. ;)


    //Edit

    Oder etwas deutlicher, Du schneidest den blauen Draht durch und hängst einen 1k oder Deinen 2k2 dazwischen. Je näher am GPIO der Widerstand ist, desto besser und verstehst Du dann auch später die Schaltung, falls mal was ist.

  • Es tut mir wirklich leid, aber nach Stunden von lesen und probieren, habe ich mir folgenden Code aus euren und anderen Scripten zusammen gesucht.

    Ich habe das mit den Wiederständen immernoch nicht wirklich verstanden.

    Bei mir ist jetzt immernoch bei den 3,3V der 10k Wiederstand drin. Allerdings habe ich Angst, wenn ich folgendes Script ausführe, ich mir den Pi kaputt mache.

    Daher die Bitte nochmal an euch und eure Geduld: Schaut mal bitte, ob das so ok ist. Weniger das Programm, sondern dass ich mir elektrisch nichts kaputt mache.

    Danke

  • Gerade weil du elektronisch noch nicht sicher bist, habe ich dir ein ganz einfaches Skript gegeben, auf dem man sehr gut aufbauen kann.

    Das was du da hast ist nicht der Hit.

    Erst die Schaltung, dann die Kamera und Co.

    Grüße

    Dennis

    🎧 With the music execution and the talk of revolution, it bleeds in me and it goes 🎧

  • Moinsen,

    dennis_n grundsätzlich kann mit einer Software das RasPi nicht zerstören. Das geht nur, wenn du etwas fasch über die GPIOs anschließt.

    Es ist sehr mühsam sich durch den ganzen Aussagen und Antwortklops hier durch zu arbeiten.

    Wenn du wirklich "so große Angst" hast, warum willst du dann etwas mit Gewalt erreichen ?

    Die Wege von Dennis89 und hyle haben dir eine klare einfache und verständlich Richtung aufgezeigt. Den kann und sollte man auch gehen. Zudem solltest du ein Verständnis dafür entwickeln, dass es hier keinem am Herzen liegt, dir und deiner Technik eine Schaden zufügen zu wollen.

    Wenn die Kontakte an deinem Relaisausgang der "Alarmierungsstation" wirklich potentialfrei sind kannst du wie hier im Bild und in der Beschreibung dargestellt den Code der auch aus der GPIOZERO Bibliothek stammt und von Dennis89 gepostet wurde verwenden. Da reichen wirklich 2 Drähte vom Relais-Ausgang zum RasPi.

    Wenn es wirklich um Ausführungsgeschwindigkeit im unter mSek Bereich gehen sollte, was ich mir aber bei deiner Anwendung nicht vorstellen kann, dann kann man auf RPi.GPIO zurückgreifen, nur muss man dann wirklich alle Sicherheitsmaßnahmen bezüglich des Eingangsschutzes der GPIOs einhalten. Damit sollten auch die Pull-UP, bzw Pull-Down, wie auch Schutzwiderstände in den angegebenen Wertbereichen ausgeführt sein, um diese Funktion wirklich erfüllen zu können.
    Ein einzelner Widerstand ist in erster Linie nur eine Strombremse. Wenn dann aber in der Kombination aus Pull-Up, oder Pull-Down + dem Schutzwiderstand eine ungünstiges Verhältnis entsteht, weil die Werte nicht zu 100% passen, dann kann es passieren, dass der Spannungspegel am GPIO in den ungültigen Bereich rutscht, und somit eine klare sicher funktionierende Auswertung nicht mehr gegeben ist.
    Nur Spannungen zwischen 0,8 und 0,0 Volt werden als LOW ( keine Spannung ) gewertet und erkannt, sowie Spannungen zwischen 2,9 V und 3,3 V werden als HIGH ( Spannung liegt an ) gewertet. Jede Spannung zwischen 0,8 und 2,9 V wird vom RasPi beflissentlich ignoriert. Das gilt unabhängig davon welche Programmbibliothek du verwendest immer, egal ob GPIOZERO, RPi.GPIO, über die Shell, oder das historische WiringPi.
    Deswegen, wenn du nicht die passenden Widerstände für eine Schutzbeschaltung hast, höre einfach auf damit.

    Immer unter der Bedingung das die Relais-Ausgangskontakte potentialfrei sind, kannst du bedenkenlos wie in der Anleitung zu GPIOZERO dargestellt, einen Relaisausgang wie bei der Beschaltung eines Tasters (Button) das Relais anschließen ! Nur musst du dann auf das ganze Gedöns mit RPi.GPIO verzichten.

    Franky

  • Ich danke Dir für die ausführliche Erklärung bzgl. der Widerstände.

    Der Ausgang der Ladestation ist definitiv potentialfrei.

    Ihr habt recht. Ich werde jetzt nochmal von Beginn an den Code von euch durcharbeiten und dann versuchen auf meine Bedürfnisse zu erweitern.

    Aber die ganze Geschichte mit LOW und High, Puu-up und Pull-Down und den Widerständen hat mich total verwirrt.

    Wenn ich ja jetzt weiß, dass ich das nicht brauche, kann ich mich auf das Script konzentrieren.

    Danke

    Gruss

    Dennis

  • Moinsen,

    Der reine GPIO Eingang ist erst einmal nur ein Eingang, diesem muss man einen Pegel im gültigen Spannungsbereich anbieten damit dieser bei der Abfrage eine - entweder "Ja, hier ist Spannung" oder "Nein, hier ist keine Spannung" zurück gibt. Dann ist es wie bei vielen solcher Bastler Platinen so, dass diese entweder einen eingebauten, aber zuschaltbaren Pull-Up- / oder Pull-Down-Widerstand haben. Diese Pull-Widerstände bewirken eins, egal ob intern oder extern ausgeführt, dass an diesem Pin von der Auswerteeinheit immer ein klarer, gültiger Pegel anliegt. Sozusagen er definiert dann den Ruhezustand.
    Wenn es ein Pull-Up ist, wird über diesen Pull-Up ( nach oben ) Widerstand eine positives Spannungspotential angelegt. Das heißt, auch wenn an diesem Pin nichts angeschlossen ist, wird hier ein HIGH Pegel erkannt. Was wiederum bedeutet man müsste an diesen Pin ein Masse Potential anlegen, auch durch einen Taster getrennt oder geschaltet, damit sich der Pegel ändert, und hier dann von der Auswerteeinheit ein LOW Signal erkannt wird. Damit die Ströme die auch zur Überwindung dieses Widerstands nicht all zu hoch werden, sind diese Widerstände meist sehr hochohmig ausgelegt.
    Beim Pull-Down ist es genau umgekehrt, hier wird ein GND- oder Masse Potential auf den Eingang gezogen, damit wenn eine positive Spannung wieder zwischen 2,9 und 3,3 Volt anliegt, diese von der Auswerteeinheit als HIGH erkannt wird. Nun ist es dann für die Erkennung "Taster gedrückt" nur eine reine Auswertungssache ob man auf eine zu LOW wechselndes Signal als Button.pressed als True bewertet, oder umgekehrt.
    Jede der Methoden hat Vor- und Nachteile. Aber mit der Bibliothek GPIOZERO wird das Handling gerade für Einsteiger und Anfänger einfacher.
    Wichtig und das kann man nicht oft genug betonen, niemals zwei GPIOs direkt miteinander verbinden, und auch niemals eine Spannung größer der 3,3 V mit einem GPIO Pin in Berührung kommen lassen.

    Franky

  • Und ausgehend von der Skizze aus dem Beitrag #19.

    Das ist ein Pullup Widerstand, weil dieser zwischen 3V3 und dem GPIO hängt und der GPIO hoch (Pullup) gezogen wird, also der Status des GPIO High ist. Das wäre dann der Ausgangsstatus, mit dem man arbeiten kann. Wird nun der Taster gedrückt, gibt es eine Verbindung zu GND und der Strom kann ungehindert abfließen. Damit fällt der Pegel des GPIO runter, also auf Low.

    Würde man keine Pullup oder Pulldown verwenden, dann wäre der Pegel/Status des GPIO undefiniert und würde wie eine Antenne auf z.B. Störeinwirkungen reagieren. Damit kann man halt nie sicher sein, ob tatsächlich der Taster gedrückt wurde oder es nur eine Störung war.


    Der andere genannte kleine (1k) Widerstand wäre ein Schutz für den GPIO, falls man mal durch geistige Umnachtung eine Kurzschluss verursachen sollte.

  • Also ich habe das ganze jetzt aus dem Beispiel umgesetzt und es funktioniert einwandfrei.

    Python
    from gpiozero import Button
    
    button = Button(17)
    
    while True:
        if button.is_pressed:
            print("Button is pressed")
        else:
            print("Button is not pressed")

    Jetzt habe ich mich dann etwas weiter getraut und habe das Beispielscript mit der Kamera genommen.

    Da ich Buster installiert habe, konnte ich picamera nicht benutzen, sondern musste picamera2 installieren.

    Auch das hat problemlos funktioniert.

    Mit folgendem Script kann ich ein Foto aufnehmen:

    Dann habe ich versucht beides zu kombinieren, aber da hakt es.

    Das Script wird einmal ausgeführt, wenn der Button gedrückt wird.

    Beim zweiten mal kommt dann aber eine Fehlermeldung.

    Waas mache ich falsch?

    Gruss

    Dennis

  • Sorry :stumm:

  • Hallo,

    du öffnest/startest bei jedem Tastendruck die Kamera, beendest sie aber nicht.

    Entweder jedes mal schließen oder nur einmal starten und beim Skript beenden die Kamera schließen.

    Bin gerade nur am Handy, würde aber auf sowas tippen. Steht dazu nichts in der Doku von picamera2?

    Grüße

    Dennis

    🎧 With the music execution and the talk of revolution, it bleeds in me and it goes 🎧

  • Script wie folgt angepasst. Jetzt passt es.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!