Forum: Mikrocontroller und Digitale Elektronik Reset Button Raspberry PI (V2)


von samatthias (Gast)


Lesenswert?

Hallo Zusammen

Einige von euch wissen bestimmt, dass der RPI zwei spezielle Hard-Reset 
Pins hat, die man zum restarten verwenden kann (via einem normalen 
Schalter/Button) - werden überbrückt mit einem Button/Switch.

Was ich suche ist jetzt noch eine Schaltung, wo ich verhindern kann, 
dass nach dem Booten der Resetknopf ausversehen gedrückt werden kann. Es 
soll eine Art "Relais" sein - ein Relais/SSR aber ist zu gross für den 
Zweck.

Ich fände eine Schaltung toll, wo durchschaltet wenn keine Spannung 
anliegt also 0V und wenn der RPI gebootet ist 3.3V oder 5V Spannung an 
einem GPIO der auf High gesetzt wird, dass dann der Stromkreis 
unterbrochen ist und kein Reset mehr stattfinden kann. Hoffe es ist 
verständlich ...

Also bei 0V geschlossen und bei 3.3V offen.

Nach was für einer Schaltung suche ich da? Resp. mit was für Bauteilen 
lässt sich das realisieren?

Danke für eure Zeit und eure Antworten.

Beste Grüsse
Matthias

von Larry (Gast)


Lesenswert?

> RPI zwei spezielle Hard-Reset

Es sind sogar drei!
Der dritte ist ein Taster ueber die Betriebsspannung.

Ansonsten ist dein Ansinnen ohnehin Schwachfug.
Weder fuer 1. noch 2. noch 3. ist im Originalzustand entsprechende
Hardware vorhanden. Man muss nichts verhindern.

Der letzte Rechner wo ein "Resetknopf" noch sinnvoll war,
war der C64.

von Matthias (Gast)


Lesenswert?

Hallo Larry

Danke für Deine Zeit und Antwort.

Die einzige mir bekannten Lösungen zum Restart vom RPI ist (sofern er 
ausgeschaltet ist und am USB Kabel noch hängt, also grundsätzlich mal 
Strom hat):

a) USB Kabel ziehen und wieder einstecken.
b) Hardreset Knöpfchen drücken.

Andere sind mir nicht bekannt. Falls es welche noch gibt - dann wäre ich 
froh um Aufklärung. Da ich a) für meine Anwendung nicht so toll finde, 
da dann irgendwann der Stecker hin ist, wollte ich mit Variante b) 
fahren.

Diese hat aber den Nachteil, dass wenn der RPI gebootet ist man immer 
noch einfach einen Hardreset machen kann - dies möchte ich eigentlich 
nach dem Booten des RPI mit einer einfachen "Schaltung" beseitigen.

Ich denke das Vorhaben ist klar umschrieben, kann mir jemand noch Input 
dazu liefern? Aber falls Fragen sind ...

Herzlichen Dank für eure Hilfe.

Gruss
Matthias

von Oliver S. (oliverso)


Lesenswert?


von Martin H. (horo)


Lesenswert?

Vielleicht hilft das, ich habe das an einigen meiner RPIs:
https://github.com/raspberrypi/firmware/blob/master/boot/overlays/README
speziell dieser Abschnitt:
(https://github.com/raspberrypi/firmware/blob/01ecfd2ba2b7cf3a2f4aa75ada895ee4a3e729f5/boot/overlays/README#L818)
1
Name:   gpio-shutdown
2
Info:   Initiates a shutdown when GPIO pin changes. The given GPIO pin
3
        is configured as an input key that generates KEY_POWER events.
4
        This event is handled by systemd-logind by initiating a
5
        shutdown. Systemd versions older than 225 need an udev rule
6
        enable listening to the input device:
7
8
                ACTION!="REMOVE", SUBSYSTEM=="input", KERNEL=="event*", \
9
                        SUBSYSTEMS=="platform", DRIVERS=="gpio-keys", \
10
                        ATTRS{keys}=="116", TAG+="power-switch"
11
12
        This overlay only handles shutdown. After shutdown, the system
13
        can be powered up again by driving GPIO3 low. The default
14
        configuration uses GPIO3 with a pullup, so if you connect a
15
        button between GPIO3 and GND (pin 5 and 6 on the 40-pin header),
16
        you get a shutdown and power-up button.
17
Load:   dtoverlay=gpio-shutdown,<param>=<val>
18
Params: gpio_pin                GPIO pin to trigger on (default 3)
19
20
        active_low              When this is 1 (active low), a falling
21
                                edge generates a key down event and a
22
                                rising edge generates a key up event.
23
                                When this is 0 (active high), this is
24
                                reversed. The default is 1 (active low).
25
26
        gpio_pull               Desired pull-up/down state (off, down, up)
27
                                Default is "up".
28
29
                                Note that the default pin (GPIO3) has an
30
                                external pullup.
31
32
        debounce                Specify the debounce interval in milliseconds
33
                                (default 100)

GPIO3 (Pin5) low weckt automatisch den RPI aus dem shutdown ohne weitere 
Änderungen, wenn Du auch den shutdown machen willst, dann mit der oben 
beschriebenen Konfiguration. Ein weiterer Weg ist, so etwas in SW zu 
realisieren und dabei GPIO3 statt GPIO26 zu verwenden, das gibt 
ebenfalls shut-down und wake-up mit einer Taste:
https://core-electronics.com.au/tutorials/how-to-make-a-safe-shutdown-button-for-raspberry-pi.html

Martin

von georg (Gast)


Lesenswert?

samatthias schrieb:
> Was ich suche ist jetzt noch eine Schaltung, wo ich verhindern kann,
> dass nach dem Booten der Resetknopf ausversehen gedrückt werden kann

Ich schätze da liegt ein Denkfehler vor: hat der Raspi keinen Strom, 
bewirkt der Resetknopf nichts. Hat er Strom und ist hochgelaufen, so 
soll der Resetknopf nichts bewirken, er ist also einfach nur 
überflüssig. Die "Schaltung" die du suchst ist einfach keinen 
Resettaster anzuschliessen.

Ich habe einen angeschlossen, aber der einzige (nie gebrauchte) 
Einsatzzweck ist ein gewaltsamer Halt, wenn der Raspi durchdreht. Aber 
genau das willst du ja verhindern.

Georg

von Hagen R. (hagen)


Lesenswert?

in /boot/config.txt schreibst du dtoverlay=gpio-shutdown und von 
Pin5/GPIO3 nach GND ein Taster schalten. Dann wird bei stromversorgten 
aber heruntergefahrenem Raspi der Rechner gestartet und bei laufendem 
Raspi das OS sauber runtergefahren, wenn man den Taster drückt.

Schreibst du dtoverlay=gpio-shutdown,gpio_pin=26 in /boot/config.txt und 
verbindest einen Taster von GND nach Pin26 dann macht er nur einen 
Shutdown und über Pin5 den Startup.

von Hagen R. (hagen)


Lesenswert?

Das V2 im Titel deiner Frage bezieht sich auf die Raspi Version?
Wenn ja dann könnte es sein das du für den Pi2 andere Pins verwenden 
musst. Ich habe obiges alles auf einen Pi3B+ getestet und verwende es 
auch.

von samatthias (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Zusammen


Besten Dank für eure Antworten. Dank Martin H. habe ich jetzt eine 
Lösung gefunden - nochmals speziellen
Dank an Dich.

1) Der Raspberry Pi kann durch sudo halt -p in den Ruhezustand versetzt 
werden. Die Aussage von "georg"
finde ich etwas missverständlich.

2) Der Raspberry Pi (egal welche Version) hat meines Wissens folgende 
Möglichkeiten um ihn aus diesem Ruhezustand
zu wecken:

  a) Die beiden speziellen Run Pins werden kurz geschlossen (dies hatte 
ich am Anfang auch immer so).
     Nachteil, wenn der Button an diesen Run Pins hängt und der PI 
gebootet ist und man drückt den Button,
     wird sofort ein ein Reboot durchgeführt (... eher nicht das was man 
will wegen dem Filesystem Corruption
     usw.) - siehe auch Bilder.

  b) Pin 5 (GPIO 3) und 6 (GND) am grossen GPIO Header können verwendet 
werden um den Raspberry PI ebenfalls
     aus dem Ruhezustand wecken (wie es Martin H. eben beschrieben hat). 
Vorteil dieser Variante ist: Wenn der
     PI gebootet ist und man drückt den Button passiert - oh Wunder 
nichts! <-- Genau dies wollte ich ja!
     Also ist b) die Lösung.
     Das Beste daran ist, diese Lösung benötigt keine Schaltung ... :-)

3) Weitere interessante Overlays in diesem Zusammenhang:

- Name:   gpio-shutdown (von Martin H. bereits zitiert.)
- Name:   gpio-poweroff (von mir noch angesehen im GIT Repo zu finden 
unter dem Link von Martin H.)

Herzlichen Dank nochmals an alle die mitgeholfen haben! Sehr nett von 
euch.


Beste Grüsse
Matthias

von LiLo (Gast)


Lesenswert?

Hallo Matthias, wenn ich dein Anliegen richtig verstanden habe willst du 
den RPI aus dem Ruhezustand aufwecken?! Also keinen Reset durchführen? 
Warum steht dann von deinem eigentlichem Problem/Fragestellung nichts in 
deinem ersten Eintrag?
Ich freue mich das jemand zu deinem Problem eine Lösung erraten hat. 
Trotzdem wäre es gut etwas zu deiner Anwendung und dem was du damit 
erreichen willst zu schreiben. Das würde auch den nächsten suchenden 
helfen.

von TheUnknownDad (Gast)


Lesenswert?

Kleines Feedback an LiLo:
Ich habe exakt das gleiche Problem wie der TE. Ich habe diesen Thread 
tatsächlich als erste sinnvolle Seite über Google gefunden. Ich wusste 
was der TE wollte und war dankbar für die vielen Informationen in der 
Diskussion. Also - danke Matthias, ich konnte dem schon folgen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.