Cuprins:
2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-13 06:58
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.