GPIO programmierung für kippschalter

  • Hallo zusammen

    ich hätte gerne für meinen orange pi 3 (später auch ev für meinen raspberry pi 4 B) einen shutdown button installiert, da ich nicht immer einfach nur den stecker ziehen möchte.


    ich habe eine Menge "Kippschalter" zuhause rumliegen.

    Daher meine Frage:

    würde mir jemand helfen folgendes project zu realisieren:

    ein wenig erfahrung habe ich, da ich mit ESP8266 auch schon gebastelt habe.

    Ich dachte an so eine Lösung:

    1. kippschalter an die GPIO-Leiste. (GND und digitalPin bspw. 4)
    2. den pin_mode auf input stellen.
    3. wenn der pin high ist, soll ein script oder command ausgeführt werden, bspw. sudo shutdown -h

    Wenn ich den pc ausschalten möchte, müsste ich dann nur den kippschalter umlegen.

    nur leider weiß ich nicht wo ich anfangen muss/soll....

    ich habe schon einige tutorials gesehen. diese haben meist ein gpio project aus github installiert und mit python gearbeitet......

    Vielleicht hätte jemand die Güte, mir etwas unter die Arme zu greifen.

    Vielen Dank!

  • Moinsen,

    Nimm einen ATTiny, ein ESP ist weit aus und mehr als übertrieben.
    Dann nimmst du einen größeren MOSFET, damit du aktiv das PI schalten kannst.
    Wenn der Kippschalter den Status On bekommt, schaltest den MOSFET via des Tiny-GPIOs auf High damit der PI Strom bekommt. Dann brauchst du noch zwei Leitungen zum RasPI einmal als Eventauslöser für deinen Shutdown Script, und einmal um den Status am TX Pin zu erfassen. Wenn das RasPi, wahrscheinlich auch der andere PI-Clone vollständig herunter gefahren ist, fällt die Spannung am TX-GPIO auf LOW ab, und du kannst mit dem Tiny feststellen das der Shutdown Prozess abgeschlossen ist. Als Reaktion auf dieses Pegelwechsel "to Low" kannst du dann gefahrenlos den MOSFET veranlassen, die Stromversorgung zu unterbrechen. Dafür reicht ein Tiny25 oder 412 , welche dann selber in den Energiesparmodus gehen können. GGF wäre beim 412er sogar noch ein Pin / GPIO frei, um eine Status LED zu betreiben.

    Franky

  • Post by Jürgen Böhm (February 23, 2024 at 12:26 AM).

    This post was deleted by the author themselves: Nicht mehr nötig (February 23, 2024 at 12:27 AM).
  • Dann nimmst du einen größeren MOSFET, damit du aktiv das PI schalten kannst.

    ?? Was soll das denn schon wieder, hast du den Eingangspost wirklich gelesen

    ich hätte gerne für meinen orange pi 3

    ob das genau so funktioniert bei deinem Modell, kA. Grundsätzlich ist das ein Raspberry Pi Forum. Du benötigst an deinem Kippschalter jedenfalls eine Pull up/down Schaltung.


    Woher hab ich den Code? HIER

    Sorry, aber wirklich gesucht scheinst du nicht zu haben!!!

  • ?? Was soll das denn schon wieder

    Er sprach von einem Kippschalter !
    Für meine Verständnis des Begriffes Schalter ist dieser kein Taster, sondern verbleibt in seiner Schalterstellung, bis eine erneute Änderung eintritt.
    Aus diesem Grund, wenn er Einschaltet also der Schalter dann auch in diesen Zustand LOW oder HIGH verharrt, muss er diesen Zustand weiterführend umsetzen. Denn wenn er dann diesen Schaltzustand ohne Zwischenschaltelement umkehrt wäre bei einen PowerOFF die Arbeitsweise wie bei einem Schnurschalter, welcher ja allgemein abzulehnen ist !

    Einschalten ist Einschalten = Herstellung der Stromversorgung. Und Ausschalten als zweite Schalterstellung ist dann das Auslösen des Shutdown mit anschließender Unterbrechung der Stromversorgung nach Beendigung des Herunterfahrprozesses.

    Muss man nicht so machen, man kann auch den PI herunterfahren lassen und weiterhin den Ruhestrombedarf in Kauf nehmen. Nur wie bekommst du dann mit dem selben Schaltelement das PI wieder an ?

    Franky

    Edited once, last by Franky07 (February 23, 2024 at 12:44 AM).

  • wenn der pin high ist, soll ein script oder command ausgeführt werden, bspw. sudo shutdown -h

    wenn High dann - Ende.

    Für was willst du wieder grundlos den TE verwirren und überfordern?

    Nimm einen ATTiny, ein ESP ist weit aus und mehr als übertrieben.

    Er schrieb, er hat schon mal mit ESP gearbeitet und somit etwas Erfahrung hat, nicht das er hierfür einen verwenden will

    ein wenig erfahrung habe ich, da ich mit ESP8266 auch schon gebastelt habe.

  • Für was willst du wieder grundlos den TE verwirren und überfordern?

    Erkläre dem TO bitte wie er mit einem Schalter ( nicht Taster ) sowohl das Pi einschalten wie auch ausschalten kann ? Ansonsten würde ja ein Taster zum Shutdown ausreichen !
    Ich erkenne den Sinn nicht, eine Schalter zu verwenden, wenn man bewusst den Begriff Schalter verwendet.

    Als Elektroniker solltest durchaus auch den Unterschied zwischen einem Taster und Schalter kennen ? Ich vermute mal das es so sein sollte.

    Denn wenn er ein Schalter verwenden will, aber das Prinzip eines Schnurschalter als harte Methode abzulehnen ist , keine Ahnung. Vielleicht sollten der TO sich mal detaillierter Äußern, was der Schalter genau machen soll, vor allen ob er mit diesem selben Schalter dann das PI auch wieder starten will ?

    Franky

  • sowohl das Pi einschalten

    wo ist das gefordert in #1? ahh warte nirgendwo

    Erkläre dem TO bitte wie er mit einem Schalter ( nicht Taster )

    ich auch nicht, ja ich würd dafür wohl auch besser einen Taster verwenden anstatt einen Schalter. Aber schauen wir uns deinen Beitrag #2 an.

    Dann nimmst du einen größeren MOSFET

    Warum kommst du mit einem MOSFET um die Ecke, wenn ein Taster doch für die Anforderung besser geeignet ist? Ja richtig, und ja das unterstell ich dir jetzt mit Absicht, du willst Neulinge, Unerfahrene, absichtlich verwirren und ihre Projekte/Vorhaben versauen!


    Als Elektroniker solltest durchaus auch den Unterschied zwischen einem Taster und Schalter kennen ? Ich vermute mal das es so sein sollte.

    Ja du vermutest du richtig, aber die Gegebenheit des TE in #1 war Schalter. Und ob dann Schalter oder Taster besser ist zu verwenden, warum Mosfet, warum ATTiny, warum TX, warum Pi Clone, das warum hab ich einen Absatz selbst schon gegeben!

  • wo ist das gefordert in #1? ahh warte nirgendwo

    Das sollte dir als Fachkraft der Elektronik aber bekannt sein das man mit einem Schalter, und das war meine Grundannahme aus dieser Wortverwendung Schalter, das er 2 getrennte Zustände wirklich herbeiführen will.
    Schalter ein , Pi geht ein. Schalter auf aus, Pi fährt herunter und wird vom Strom getrennt.
    Aber ich hatte auch schon geschrieben :

    Vielleicht sollten der TO sich mal detaillierter Äußern, was der Schalter genau machen soll, vor allen ob er mit diesem selben Schalter dann das PI auch wieder starten will ?

    Also was wird das nun mit einer Unterstellung ? Solange der TO nicht eindeutig verlauten läßt, er will das Pi nur mit einem "Schalter" herunterfahren, bekommt er es so auch nicht und ohne weitere Zusätze wieder mit dem selben Schalter an. Gut wenn man unbedingt ein Pi in den Shutdown schicken will, aber dann nochmal eine gesonderte Stromversorgungstrennung vornehmen um den Kasten wieder an zu bekommen - geiles Konzept.

    Solange der TO hier weiterhin mitliest aber sich nicht traut ein Statement abzugeben, warum er eine Schalter statt eines Tasters verwenden will, oder ob er nur die Begriffe verwechselt hat, kann ich auch dir vorwerfen, du hast möglicher Weise das Ziel des TO verfehlt.
    Für Klarheit kann nur er sorgen, in dem er sagt, was das Ziel sein soll. Diese Kombination aus Schalter und der reinen getasteten Funktion des Auslösens eines Shutdowns widerspricht sich.

    Franky

  • okay danke. Damit wurde mir schonmal geholfen. Ich werde ein Pullup/Pulldon benutzen. Das kenne ich sogar von meinen ESP bastlerein.

    Natürlich wäre ein Taster besser.

    Zur funktionsweise:

    Der Raspi/Orange Pi läuft. der Kipp-Schalter wird umgelegt, der Raspi schalet sich ab.

    Für den neusart würde ich den rasp einfach wieder per hand an den strom geben und er sollte durchstarten.

    Weshalb das ganze:

    ich habe 2 3D Drucker. Diese werden mit octoprint betrieben. Wenn ich mit dem drucken fertig bin, befinde ich mich meist im zimmer, bei den druckern. Nun schalte ich die ganze anlage ab, indem ich die Drucker mittels kippschalter abschalte und anschließend den stecker ziehe. (die gesamte anlage - 3D Drucker + Beleuchtung + Server)

    nun muss ich zuvor extra wieder zum pc gehen und von dort aus den server (mittels ssh oder octoprint) herunterfahren, damit ich ihn nicht jedesmal "dem Server den stecker ziehe". Danach kann ich den stecker mit gutem gewissen ziehen.

    nun wäre es toll, wenn ich den server(orange pi) von hand, direkt am gerät abschalten kann. dann muss ich nicht extra wieder zum pc. das ist alles.....

    Kippschalter ist sicher nicht die beste lösung! das ist mit klar. Aber ich habe 10 stk zu hause liegen und keinen einzigen Taster. Denn müsste ich extra kaufen..

  • Moisnen,

    Wer bei seiner solchen Technik nicht die Weitsicht mitbringt, aber unbedingt weil sie gerade herumliegen "Schalter" verwenden will. Des Menschen Willen ist sein Himmelreich.
    Ich hoffe du vergisst niemals den Schalter wieder auf ON zu stellen bevor du manuell die Stromversorgung für einen Reboot unterbrichst. Dann läuft diese Shutdown-Routine im Kreis und schaltet deinen Server sofort weder ab, sobald das Shutdown Script aktiv wird.

    Ich hoffe nur du wirst dauerhaft Glücklich mit dieser Lösung, und stolperst niemals über diesen kleinen Fehler statt eines Tasters einen Schalter zu verwenden.

    Franky

  • Franky07

    Die schleifenproblematik ist mir klar.

    Bzgl. Taster....

    Früher war das auch kein problem, da bin ich 15km gefahren und war beim conrad, wo ich taster usw. Problemlos bekommen habe.

    Jetzt brauche ich 100km zum nächsten Geschäft, welche microelectronic teile, usw. verkaufen

    Sonst bleibt mir nur mehr der internetversand. 6-8€ pro Sendung......

    Ganz ehrlich, bevor mir das project 10€kostet, gehe ich dann doch lieber zum pc und schalte den raspberry über ssh aus.

    Oder nehme einen alten usb stick und versuche es mit udev rules zu lösen...

    Da gehts mir nicht um die 10€ sondern ums prinzip, dass ich nicht 3€ für den taster und 6€ fur den versand zahle

  • Moinsen jumbo125 ,

    ich kenne zwar nicht deine möglichen Bezugsquellen, und ich werde hier auch keine Werbung für einen speziellen Händler oder Online-Shop machen.
    Diese Sub-µC Schaltung die sich um die Bereitstellung der Stromversorgung des PI ( allgemein ) kümmert, ein echtes Aus, ein echtes An, realisiert mit einer sofortigen Wiederstartfähigkeit kostet, ohne das ich diesen Versandkostenanteilen zustimmen kann, inkl. Controller, MOSFET, Status LED und all dem benötigten Kleinkram genau 3,12 € inkl. MwSt.
    Damit wird der Schalter zu einem Schalter, oder bleibt es ! Dennoch wird das PI jedesmal auch wieder vollständig und korrekt heruntergefahren. Man muss es nicht so machen, man könnte es, und es schließt potentielle Fehler in der Bedienlogik aus.

    In diesem Sinne wünsche ich dir maximale Erfolge, immer eine fehlerfreie Bedienung, eine hohe und lange Lebensdauer aller deiner Komponenten. :thumbup:

    Franky

  • jumbo125 Mit einem Kippschalter hast Du ja quasi schon einen Taster, nur halt ohne Federmechanismus zur eigenständigen Rückführung in den Ausgangszustand. Man könnte natürlich ein Gummiband dran tüteln. :D Mit dem Skript aus #4 (und sogar ohne einem externen Pullup-Widerstand) legst Du den Schalter mindestens 3 Sekunden um und dann wieder zurück. Und gut ist!

    BTW. Geschaltet wird der GPIO > Schalter > GND, d.h. wenn der GPIO Low wird. Das liegt am gpiozero-Modul, mit dem bei Button per default Pullup eingestellt ist!

  • jumbo125 Hast Du denn mal die Forumsuche bemüht? Ich bin mir ziemlich sicher, dass das Ein- bzw. Ausschalten des RPi per Schalter schon öfters hier ein Thema war. Da gibt es nicht nur eine Option, von einem gegen "hartes Ausschalten" robusten R/O Dateisystem bis zum, durch den RPi gesteuerten Schutdown in Verbindung mit einem Schalter. ( Ich hatte auch mal eine Schaltung für einen schaltbaren RPi im Auto vorgeschlagen, das ist aber schon einige Jahre her. )

  • jumbo125 Mit einem Kippschalter hast Du ja quasi schon einen Taster, nur halt ohne Federmechanismus zur eigenständigen Rückführung in den Ausgangszustand. Man könnte natürlich ein Gummiband dran tüteln. :D Mit dem Skript aus #4 (und sogar ohne einem externen Pullup-Widerstand) legst Du den Schalter mindestens 3 Sekunden um und dann wieder zurück. Und gut ist!

    BTW. Geschaltet wird der GPIO > Schalter > GND, d.h. wenn der GPIO Low wird. Das liegt am gpiozero-Modul, mit dem bei Button per default Pullup eingestellt ist!

    wauw, echt klasse antwort!!!
    werde ich mir überlegen!

    habe noch etwas herumgesucht und herausgefunden, dass der orange pi diese gpio bibliothek nicht untersützt, sondern andere libarys zur verfügung stehen. jedoch ohne dieser angenehmen libary, welche bereits classen wie Button() usw. vordefiniert hat. :(

    ich hab es derzeit wirklich mittels udev rules gelöst. ein alter usb dongle an meinem usb-hub erledigt die arbeit. immer wenn ich den stick abziehe, schaltet sich der orange pi aus :)

  • habe noch etwas herumgesucht und herausgefunden, dass der orange pi diese gpio bibliothek nicht untersützt, sondern andere libarys zur verfügung stehen. jedoch ohne dieser angenehmen libary, welche bereits classen wie Button() usw. vordefiniert hat.

    Im Grunde brauchst Du ja auch mit einem Kippschalter, der als Taster agiert, keinen 2 Sekunden Tastendruck, der nur dafür da ist, um nicht versehentlich am RPi / Oranje einen shutdown auszulösen. Mit dem Kippschalter siehst Du ja, wenn dieser "versehentlich" umgestellt wurde.

    Da reicht ein kleines (Python)Skript, das auf eine entsprechend steigende oder fallende Flanke eines GPIO reagiert und den SoC runter fährt. ;)

  • Im Grunde brauchst Du ja auch mit einem Kippschalter, der als Taster agiert, keinen 2 Sekunden Tastendruck, der nur dafür da ist, um nicht versehentlich am RPi / Oranje einen shutdown auszulösen. Mit dem Kippschalter siehst Du ja, wenn dieser "versehentlich" umgestellt wurde.

    Da reicht ein kleines (Python)Skript, das auf eine entsprechend steigende oder fallende Flanke eines GPIO reagiert und den SoC runter fährt. ;)

    ja, ein kleines script, das auf die gpio reagiert.. das dachte ich auch ^^ so habe ich es auch im ersten beitrag geschrieben...
    nur leider fehlt mir das wissen, wo dieses script hin gepseichert werden muss, wie es mit dem reboot mit gestartet wird und wie es auszusehen hat ||


    da werde ich noch lange lesen müssen.... danke dir jedenfalls!

  • Wo Du das Skript speicherst ist nahezu egal, bestenfalls im Heimverzeichnis des Users und wie das Skript gestartet wird ist eigentlich auch fast egal, da es kein GUI hat, also per Systemd Service Unit (die erste Wahl) oder als Cronjob geht in diesem Fall auch.

    Wie es auszusehen hat liegt an den Möglichkeiten verfügbarer Python-Module bei einem Orage Pi. Von diesem SoC habe ich allerdings keinen Plan.

    Was geht denn bei dem Teil, bzw. womit kann man denn dort arbeiten? Gibt es da etwas vergleichbares zu RPi.GPIO oder sowas?

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!