Aggiungi il pulsante di accensione a Raspberry Pi

2022-09-05
image
Come appassionato di hardware, ingegnere di sistemi embedded e secchione tecnico, Raspberry Pi è sicuramente qualcosa con cui giocare, ma dopo averlo usato per molto tempo, scoprirai sempre che ha alcune imperfezioni, come ad esempio: nessun pulsante di accensione!
Esistono due metodi di spegnimento comunemente usati (per non parlare dello schermo esterno e della tastiera):
1. Accedi da remoto e poi digita un comando (questo è il metodo di spegnimento più adatto, ma è troppo problematico, se non c'è un computer in giro, non può essere spento)
2. Scollegare l'alimentazione (semplice e scortese, ma può facilmente causare danni ai file)
Quindi, per utilizzare felicemente il Raspberry Pi, è meglio aggiungere un pulsante di accensione come un computer. Baidu ha trovato molti contenuti domestici (sì, sto prendendo di mira la Cina e ci sono solo pochi articoli che vanno avanti e indietro, ma penso ancora che si copi ripetutamente l'un l'altro) C'è solo un modo per aggiungere il pulsante di accensione, ovvero scrivi uno script python, o altro script, o compila un programma, comunque il principio è lo stesso, lascia che lo script (o il programma) si avvii, il programma rileverà sempre il GPIO impostato sul tasto di accensione e si spegne se attivato. Sebbene questo metodo possa risolvere il problema, è davvero basso! ! ! E può essere solo spento, non acceso.
Qui condividerò con voi un metodo molto elegante che può essere spento e acceso:
apri e leggi attentamente /boot/overlays/README
. Questa è la fine della condivisione di oggi, grazie.
In effetti, /boot/overlays/README lo ha già detto in grande dettaglio. Al fine di beneficiare il grande pubblico, lo risolverò.
Molte persone hanno mal di testa quando vedono l'inglese e questo file ha migliaia di righe e poche persone lo leggeranno attentamente. Qui estrarrò solo il contenuto relativo all'alimentatore (il contenuto dei file di sistema delle diverse versioni è leggermente diverso):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
ventuno
ventidue
ventitré
ventiquattro
25
26
27
28
29
30
Nome: gpio-shutdown
Info: avvia uno spegnimento quando cambia il pin GPIO. Il pin GPIO fornito
è configurato come chiave di input che genera eventi KEY_POWER.
Questo evento viene gestito da systemd-logind avviando a
spegnimento. Le versioni di Systemd precedenti alla 225 necessitano di una regola udev
abilitare l'ascolto del dispositivo di input:
AZIONE!="RIMUOVI", SUBSYSTEM=="input", KERNEL=="evento*", \
SUBSYSTEMS=="piattaforma", DRIVERS=="gpio-keys", \
ATTRS{tasti}=="116", TAG+="interruttore di alimentazione"
Questa sovrapposizione gestisce solo l'arresto. Dopo lo spegnimento, il sistema
può essere riacceso portando GPIO3 basso. Il predefinito
la configurazione utilizza GPIO3 con un pullup, quindi se si connette a
pulsante tra GPIO3 e GND (pin 5 e 6 sull'intestazione a 40 pin),
ottieni un pulsante di spegnimento e accensione.
Carica: dtoverlay=gpio-shutdown,=
Parametri: gpio_pin Pin GPIO su cui attivare (predefinito 3)
active_low Quando questo è 1 (attivo basso), una caduta
edge genera un evento key down e a
il fronte di salita genera un evento key up.
Quando questo è 0 (attivo alto), lo è
invertito. Il valore predefinito è 1 (attivo basso).
gpio_pull Stato pull-up/down desiderato (off, down, up)
L'impostazione predefinita è "su".
Si noti che il pin predefinito (GPIO3) ha un
pull up esterno.
È stato chiarito qui, fintanto che la configurazione pertinente viene aggiunta a /boot/config.txt, l'arresto può essere realizzato.
Ad esempio in questo modo:
1
2
# Usa GPIO3 (il GPIO qui si riferisce al numero 3BCM GPIO, ovvero SCL1) come pulsante di accensione, il fronte di discesa viene premuto, il fronte di salita viene rimbalzato e il pull-up interno
dtoverlay=gpio-spegnimento
Salva e riavvia, quindi devi solo collegare un pulsante tra GPIO3 e GND per spegnere, non è facile?
Inizia a concentrarti! ! Gli esami sono da sostenere! ! ricordare! !
Non è necessario aggiungere alcuna configurazione. Dopo il normale spegnimento, ilLampone Pipuò essere attivato portando GPIO3 a un livello basso senza interrompere l'alimentazione! Esatto, questo è il pulsante di accensione! Se non hai bisogno di GPIO3 come pulsante di accensione, leggi da solo il contenuto correlato di gpio-poweroff in /boot/overlays/README
La configurazione sopra menzionata utilizza GPIO3 per impostazione predefinita, ovvero SCL1 come pulsante di accensione, che occupa l'interfaccia I2C. Sebbene sia possibile utilizzare altri software GPIO per simulare I2C, è ovviamente molto scomodo. È meglio cambiarlo in un altro GPIO come segue. La porta GPIO può essere utilizzata solo come chiave di spegnimento e la chiave di accensione è ancora GPIO3. Al momento, non ho trovato un modo per personalizzare altri tasti di accensione.
1
2
# Usa gpio_pin=17, ovvero GPIO_0 (pin fisico PIN_11) come pulsante di spegnimento
dtoverlay=gpio-shutdown,gpio_pin=17,active_low=1,gpio_pull=su
GPIO3 è in conflitto con SCL1. La prestazione specifica è che quando I2C è abilitato, GPIO3 viene utilizzato come SCL1, quindi solo GPIO3 può essere utilizzato per l'accensione, ma non per lo spegnimento. Quindi, se si desidera utilizzare un solo pulsante come pulsante di accensione/spegnimento, è necessario rinunciare all'I2C hardware e utilizzare altri pin per simulare l'I2C; se è necessario disporre del pulsante di accensione/spegnimento e utilizzare contemporaneamente l'I2C hardware, utilizzare GPIO3 come pulsante di accensione e inoltre configurare una chiave come chiave di spegnimento.
Ho verificato solo il contenuto di cui sopraRaspberry Pi 3B+(versione di sistema: Raspbian Buster con desktop, immagine con desktop basata su Debian Buster, versione: luglio 2019, data di rilascio: 10-07-2019, versione del kernel: 4.19), Non è garantita la disponibilità di altre versioni
Ci sono molte configurazioni molto utili in /boot/overlays/README e gli studenti interessati possono studiare da soli.
Infine, spero che agite tutti in fretta! ! Abbandona quelle soluzioni di pulsanti di commutazione a bassa esplosività!