Sommario:
- Passaggio 1: il design
- Passaggio 2: come funziona
- Passaggio 3: creazione di un prototipo demo
- Passaggio 4: Programmazione di ATTiny85
Video: Costruisci un pulsante di accensione Raspberry Pi migliore: 4 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
È molto facile creare un pulsante di spegnimento o di spegnimento del Raspberry. Ci sono molti di questi progetti sul web e alcuni qui su Instructables, ma nessuno di loro (che posso vedere) ti dice quando il tuo Pi ha effettivamente finito di spegnersi e quindi è sicuro togliere il potere. In realtà non riconoscono nemmeno che la pressione del pulsante è stata vista.
Ci sono anche progetti per riavviare un Pi che è stato spento, ma nemmeno questi ti danno alcun feedback visivo.
Ma chi ha bisogno di un tale pulsante? Se sei un po' nerd come me, o anche solo un aspirante nerd, puoi sempre accedere al tuo Pi localmente o in rete e digitare sudo shutdown -h now. Ma se stai costruendo un progetto per utenti non tecnici, non funzionerà. È vero, puoi quasi sempre farla franca semplicemente tirando il cavo di alimentazione, ma nota, ho detto quasi sempre! La fortuna di tutti finisce prima o poi. Ho avuto una scheda SD morta su di me solo la scorsa settimana, anche se non saprò mai se è stato davvero a causa di una brusca perdita di potenza.
Nel mio caso avevo bisogno di aggiungere un pulsante di accensione a un Pi che usiamo come sequencer midi per registrare e riprodurre inni e canzoni in chiesa, per quando non abbiamo a disposizione un pianista dal vivo. Posso sempre digitare il comando di spegnimento, ma ho bisogno di de-qualificarlo per quando non sono presente.
La mia intenzione qui non è di darti un prodotto finito, completo di una splendida custodia stampata in 3D, come tanti altri Instructables. Ognuno ne avrà un uso diverso o vorrà incorporarlo nel proprio progetto. Piuttosto, ti preparerò con la tecnologia che puoi aggiungere al tuo progetto, che si tratti di un media center, un dispositivo IoT o qualsiasi altra cosa.
(Nel video lo sto dimostrando con un Pi Zero v1.2 e un monitor che ho realizzato da uno schermo di laptop riproposto e un controller dall'Estremo Oriente.)
Passaggio 1: il design
Questo è ciò che il mio pulsante di accensione farà per te:
- Quando il Pi è in funzione, un LED è costantemente acceso. Se viene spento manualmente, il LED si spegne solo quando è possibile scollegare l'alimentazione.
- Durante l'esecuzione, se si preme il pulsante per almeno un secondo, viene avviato uno spegnimento e il LED lampeggia per un quarto di secondo ogni secondo finché non è possibile scollegare l'alimentazione.
- Da uno stato di spegnimento (se l'alimentazione non è stata rimossa), premendo il pulsante si avvia l'avvio e il LED lampeggia per un quarto di secondo ogni secondo fino all'avvio. (Potrebbe essere necessario un po' più di tempo prima che tutti i servizi come ssh e vnc siano in esecuzione.)
I componenti sono molto economici. Tutto ciò che serve è:
- ATTiny85 (chip compatibile con Arduino)
- 3 resistori: 2 x 330Ω e 1 x 10kΩ
- 1 LED - Suggerisco verde o blu, ma è la tua scelta
- breadboard e ponticelli, o stripboard, o comunque tu voglia costruirlo.
Passaggio 2: come funziona
Come con tutti i pulsanti di accensione Pi, questo porta un pin GPIO a uno stato basso per segnalare una richiesta di spegnimento a un programma di supporto in esecuzione sul Pi. Ho usato GPIO4 (pin 7) ma puoi usare qualsiasi altro pin.
L'unico modo per dire che un Pi ha completato lo spegnimento è guardare il pin TxD 8, che poi si abbassa. Ciò dipende dall'abilitazione della console seriale, che è per impostazione predefinita. In effetti TxD andrà regolarmente su e giù mentre viene utilizzato come console seriale, ma non andrà mai in basso per più di circa 30 ms alla volta, anche alla velocità di trasmissione comune più lenta. Può ancora essere utilizzato per una console seriale poiché lo guardiamo solo passivamente.
Per riavviare, dobbiamo abbassare brevemente SCL1 (pin 5). Questo pin è utilizzato da qualsiasi dispositivo I2C (inclusa la mia interfaccia midi), ma dopo aver avviato l'avvio lo lasciamo stare.
La maggior parte della complessità è nello sketch Arduino che carichiamo nell'ATTiny85. Questo implementa una "macchina a stati" - un modo molto utile e potente di codificare qualsiasi problema che può essere rappresentato da un numero di "stati". Una lavatrice funziona allo stesso modo. Gli stati rappresentano le fasi del ciclo di lavaggio, e ognuno definisce cosa deve fare la macchina in quel momento (motori o pompe da far funzionare, valvole da aprire o chiudere) e quali sensori input (temperatura, livello acqua, timer) determinare quando passare allo stato successivo e quale stato successivo scegliere.
Lo schizzo a mano è la mia prima bozza di un diagramma di stato, che mostra tutte le transizioni di stato. Questo è solo per mostrarti come puoi inizialmente pianificare i tuoi stati e le transizioni di stato: potrebbe non essere completamente accurato come lo era prima che iniziassi il debug.
Nel nostro caso, abbiamo 6 stati che ho chiamato OFF, BOOT REQUEST, BOOTING, RUNNING, SHUTDOWN REQUEST e SHUTTING DOWN. (Dopo lo SPEGNIMENTO torna su OFF.) Questi sono identificati da commenti nello schizzo, e per ciascuno, ulteriori commenti dicono cosa dovrebbe fare e quali eventi lo sposteranno in un altro stato.
Il programma di supporto in esecuzione sul Pi è solo un po' più complicato rispetto alla maggior parte dei pulsanti di spegnimento. Risponde a un impulso lungo e basso sul pin GPIO avviando uno spegnimento, ma risponde anche a un impulso breve da solo abbassando brevemente il pin GPIO. Questo è il modo in cui ATTiny85 può dire che è in esecuzione e quindi può passare dallo stato BOOTING allo stato RUNNING.
Passaggio 3: creazione di un prototipo demo
A scopo dimostrativo puoi prototiparlo su una breadboard senza saldatura come mostrato, ma ti ho anche fornito lo schema in modo da poter elaborare il tuo layout utilizzando stripboard o un PCB personalizzato, forse parte di un progetto più ampio.
Passaggio 4: Programmazione di ATTiny85
Lo sketch Arduino e il programma di supporto sono allegati a questo passaggio. Nella cartella degli schizzi di Arduino, crea una cartella chiamata PiPwr e copia il file PiPwr.ino al suo interno. Avviando l'IDE Arduino lo troverai ora nel tuo album da disegno.
Esistono diversi modi per programmare un ATTiny85. Se il tuo ha un bootloader installato puoi usare una scheda di sviluppo ATTiny85 che costa solo poche sterline. Questo si collega al PC tramite una porta USB. Ho usato un Hidiot che è essenzialmente lo stesso ma con un'area di prototipazione.
Nell'IDE di Arduino in File - Preferenze, aggiungi
digistump.com/package_digistump_index.json
agli URL del gestore di schede aggiuntive.
In Strumenti - Scheda ora dovresti vedere una serie di opzioni Digispark. Seleziona Digispark (predefinito - 16,5 MHz).
Se il tuo ATTiny85 non ha un bootloader (o non lo sai), puoi ottenere un programmatore ISP AVR per poche sterline. Oppure puoi usare un Arduino Uno o un Pro Mini o Nano più economico come programmatore. Google per "arduino as isp attiny85" (senza virgolette) per istruzioni.
Se vuoi modificare lo schizzo lo troverai completamente commentato e, si spera, facile da seguire. Per il debug è molto più semplice utilizzare un Arduino Pro Mini o Nano. Decommenta serial.begin() in Setup e le istruzioni print in loop() per vedere i passaggi che esegue utilizzando il monitor seriale. Ci sono definizioni di pin alternative nella fonte, commentate, per Uno, Pro Mini o Nano.
Sul tuo Raspberry Pi, copia il file shutdown_helper.py nella cartella /etc/local/bin e impostalo come eseguibile con il comando
sudo chmod +x /usr/local/bin/shutdown_helper.py
Ora modifica il file /etc/rc.local con il tuo editor preferito. (Dovrai farlo come root.) Prima dell'ultima riga (uscita 0) inserisci la riga
nohup /usr/local/bin/shutdown_helper.py &
Riavvia e il programma di supporto si avvierà automaticamente.
Consigliato:
Aggiungi un pulsante di accensione alla tua installazione LibreELEC su un Raspberry Pi: 6 passaggi
Aggiungi un pulsante di accensione alla tua installazione LibreELEC su un Raspberry Pi: Di seguito impareremo come aggiungere un pulsante di accensione a LibreELEC in esecuzione su un Raspberry Pi. Useremo un PowerBlock per aggiungere non solo un pulsante di accensione, ma anche un LED di stato che indica lo stato di alimentazione della tua installazione LibreELEC. Per questi i
Pulsante di accensione Raspberry Pi: 3 passaggi
Pulsante di accensione Raspberry Pi: se sei come me, potresti aver setacciato Internet alla ricerca della soluzione migliore per accendere e spegnere in sicurezza il tuo Raspberry Pi con la semplice pressione di un pulsante. Sebbene esistano molte soluzioni, la maggior parte richiede di scaricare uno script Python e renderlo eseguibile
Toccare il pulsante di accensione per Raspberry Pi: 3 passaggi
Pulsante di accensione touch per Raspberry Pi: da quando ho stampato e ho iniziato a utilizzare questa custodia per il mio Retropie, ho sempre immaginato come creare un pulsante di accensione. L'idea era cambiare il design per creare il pulsante di spostamento e quindi spostare un interruttore. Alla fine ho avuto un'altra idea, dove non avevo bisogno di cambiare il cas
Pulsante di accensione Super Ghetto sul mio Oneplus One (dovrebbe funzionare su qualsiasi cosa): 3 passaggi
Pulsante di accensione Super Ghetto sul mio Oneplus One (dovrebbe funzionare su qualsiasi cosa): Il problema: tutti i pulsanti del mio telefono sono rotti. Sostituirli è solo una soluzione temporanea poiché la mia cover posteriore è rotta e non riesco a trovare da nessuna parte un sostituto che non superi il prezzo di un OPO usato, ma ho pensato perché non aggiornare se
TI-83 Mod pulsante di accensione: 6 passaggi
Mod pulsante di accensione TI-83: praticamente tutti i liceali che conosco devono avere una TI-83 o superiore per la loro lezione di matematica. Hai bisogno di distinguerti. Quindi, inserisci un pulsante di accensione più fresco. Il macbook pro del mio amico è morto e lo stavamo smontando, quando abbiamo premuto il pulsante di accensione