Cuprins:
- Pasul 1: Circuit electronic
- Pasul 2: Cod Python
- Pasul 3: Cum se lansează automat scriptul după procedura de pornire
Video: Buton de oprire pentru Raspberry Pi: 3 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:41
Raspberry Pi este o platformă de calcul foarte utilă care permite crearea diverselor aplicații de proiect IoT / robotică / smart-home / … Singurul lucru pe care nu îl are, comparativ cu un computer normal, este un buton de oprire. Deci, cum putem crea unul singur? Bine, să o facem împreună!
Pentru acest tutorial, veți avea nevoie de următoarele:
- 1 Raspberry Pi deja configurat și gata de utilizare
- 1 panou sau ceva care vă va permite să creați circuitul electronic
- 1 buton
- 2 fire jumper
Dacă nu ați folosit niciodată un Raspberry Pi, puteți consulta tutorialul meu despre cum și ce să faceți pentru a-l configura:
www.instructables.com/How-to-Setup-a-Raspberry-Pi-and-Start-Using-It/
Pasul 1: Circuit electronic
Nimic super complicat aici, este un circuit destul de simplu. Cele 2 imagini de mai sus explică construcția circuitului. Puteți utiliza oricare pin GPIO doriți pentru introducerea butonului, va trebui doar să vă asigurați că actualizați codul pentru a reflecta acest lucru.
Să explicăm rapid cum va funcționa acest lucru:
- firul roșu duce 3,3V la un capăt al butonului.
- cablul BLACK conectează celălalt capăt al butonului la un GPIO Pi care va fi folosit ca intrare.
- În mod implicit, butonul este deschis, deci nu există tensiune prin el. Deci cablul NEGRU este la 0V când butonul nu este apăsat. Aceasta înseamnă că starea logică a intrării GPIO Pi este 0.
- când butonul va fi apăsat, tensiunea va trece prin el și cablul NEGRU va fi conectat la 3.3V. Raspberry Pi va vedea apoi o tensiune de 3,3V la intrare, corespunzând unei stări logice de 1.
Pasul 2: Cod Python
Acum, când circuitul este gata de utilizare, trebuie să scriem codul care îl va rula și folosesc Python într-un mediu PyCharm aici. Am configurat butonul pentru a opri Raspberry Pi numai atunci când este apăsat mai mult de 3 secunde în consecință. Motivul pentru care fac acest lucru este că este foarte ușor să-l apăsați accidental și nu doriți să închideți Pi-ul din întâmplare.
Ecranul de imprimare de mai sus provine din mediul meu PyCharm, iar codul este următorul (cu o diferență minoră pe linia 26, care este legată de un alt proiect, dar nu este necesară aici):
# Acesta este un cod pentru oprirea Raspberry Pi atunci când apăsați și țineți apăsat un buton definit # Modul extern importsimport RPi. GPIO ca GPIO import timp import # Raspberry Pi pin & variables definons & hold_time = 3 # Hold time in sec to poweroffbutton_poweroff = 1 # Buton pentru a dezactiva Raspberry PiGPIO.setwarnings (Fals) GPIO.setmode (GPIO. BCM) # Schema de numerotare a pinului BroadcomGPIO.setup (button_poweroff, GPIO. IN, pull_up_down = GPIO. PUD_DOWN) # Buton setat ca input în timp ce True: GPIO.wait_for_edge (button_poweroff, GPIO. RISING) start = time.time () time.sleep (0.2) # Comutați debounce în timp ce GPIO.input (button_poweroff) == 1: time.sleep (0.01) length = time.time () - începeți dacă lungimea > hold_time: os.system ("sudo poweroff")
Primul lucru, dacă ați conectat butonul la un alt GPIO, este să actualizați linia 11 de pe ecranul de imprimare de mai sus cu intrarea GPIO relevantă:
button_poweroff = GPIO_X # Actualizați cu GPIO corect utilizat pe circuitul dvs.
De asemenea, variabila hold_time vă permite să modificați timpul de așteptare care declanșează oprirea Pi.
Pasul 3: Cum se lansează automat scriptul după procedura de pornire
Acum că avem codul gata, trebuie doar să-l executăm. Dar, ar fi convenabil dacă putem executa acest script de fiecare dată când Pi pornește, într-un mod automat, astfel încât butonul ar funcționa fără ca noi să rulăm scriptul de fiecare dată. Există multe modalități de a face acest lucru. Am adăugat aici o linie în fișierul rc.local care se află în folderul / etc / al Pi. Este executat ca parte a secvenței de boot.
Trebuie să deschideți o linie de comandă și să tastați următoarele comenzi (primul ecran de imprimare de mai sus):
cd /
cd etc sudo nano rc.local
Prima comandă vă va duce din directorul / home / pi în cel rădăcină, care este /.
A doua comandă vă va duce apoi în directorul / etc /.
În cele din urmă, al treilea va deschide fișierul rc.local ca superutilizator, cu drepturi complete de editare, de care trebuie să modificați fișierul.
Odată ajuns în fișier, trebuie doar să adăugați o linie la sfârșitul acestuia, dar înainte de declarația exit 0 (al doilea ecran de imprimare de mai sus):
# Adăugați această linie în fișierul rc.local pentru a lansa scriptul
sudo python /home/pi/Documents/shutdown_with_hold.py &
Există câteva lucruri pe care trebuie să le acordați atenție, aici:
- numele fișierului dvs.: în linia de mai sus, presupun că fișierul este shutdown_with_hold.py. Dar ar putea fi orice vrei, doar actualizează numele cu al tău.
- unde ați salvat fișierul: în linia de mai sus, presupun că este salvat în directorul / home / pi / Documents. Dar, din nou, poate fi oriunde. Trebuie doar să vă asigurați că puneți calea absolută către fișierul dvs. aici.
- caracterul „&” de la sfârșitul acestuia: acest lucru este important și permite ca această comandă să ruleze în fundal
Si asta e! Deci, acum, scriptul va fi executat de fiecare dată când Pi-ul dvs. va fi PORNIT și va trebui doar să apăsați mai mult de 3 secunde pe buton pentru al opri.
Recomandat:
Controler pentru 3 antene cu buclă magnetică cu comutator de oprire: 18 pași (cu imagini)
Controler pentru 3 antene cu buclă magnetică cu comutator de oprire: Acest proiect este destinat acelor amatori de șuncă care nu au una comercială. Este ușor de construit cu un fier de lipit, o carcasă din plastic și puține cunoștințe despre arduino. Controlerul este realizat cu componente bugetare pe care le puteți găsi cu ușurință pe Internet (~ 20 €)
Memento de oprire a fierului: 4 pași
Memento de dezactivare a fierului: salut tuturor membrilor și hobbyistului. Personajul principal al acestei povești este soția mea. Într-o zi dimineață și-a călcat rochia de birou și a plecat brusc de acasă pentru a lucra. Eu și fiica mea am mers la casa mamelor la în aceeași zi. la seară cu toții cam
Timer de oprire întârziat pentru bicicletă: 5 pași
Timer de oprire întârziată pentru bicicletă: Problemă: Am adăugat diferite dispozitive pe bicicleta mea. Problema este că sunt conectate direct la baterie și trag un curent de scurgere sau după întrerupătorul principal și nu sunt disponibile când opresc bicicleta. Exemple: Trebuie să vă încărcați
Lumină de Crăciun cu LED (cu pornire / oprire): 3 pași
Lumină de Crăciun cu LED (cu On / Off): Acest proiect este o versiune modificată a https: //www.instructables.com/id/Arduino-Christma …, în care am adăugat un buton pentru ca utilizatorul să poată controla când trebuie să se întoarcă lumina aprinsă
Buton Amazon Dash Buton silențios: 10 pași (cu imagini)
Buton Amazon Dash Buton silențios: Privind constant pe fereastră, astfel încât să puteți intercepta vizitatorii înainte de a suna la sonerie? V-ați săturat că câinii și bebelușul înnebunesc oricând sună? Nu doriți să cheltuiți o avere pe un „inteligent” soluție? Efectuarea unui sunet silențios este la fel de