Kazalo:

Gumb za izklop za Raspberry Pi: 3 koraki
Gumb za izklop za Raspberry Pi: 3 koraki

Video: Gumb za izklop za Raspberry Pi: 3 koraki

Video: Gumb za izklop za Raspberry Pi: 3 koraki
Video: BlitzWolf BW-IS22 - Сигнализация, wi-fi + GSM, Tuya Smart, интеграция и управление в Home Assistant 2024, Julij
Anonim
Gumb za izklop za Raspberry Pi
Gumb za izklop za Raspberry Pi

Raspberry Pi je zelo uporabna računalniška platforma, ki omogoča ustvarjanje različnih aplikacij za IoT/robotiko/pametni dom/…. Edina stvar, ki je v primerjavi z običajnim računalnikom nima, je gumb za izklop. Kako si ga torej lahko sami ustvarimo? V redu, naredimo skupaj!

Za to vadnico boste potrebovali naslednje:

  • 1 Raspberry Pi je že konfiguriran in pripravljen za uporabo
  • 1 mizo ali nekaj, kar vam bo omogočilo ustvarjanje elektronskega vezja
  • 1 gumb
  • 2 mostični žici

Če še nikoli niste uporabljali Raspberry Pi, si oglejte mojo vadnico o tem, kako in kaj storiti, da ga konfigurirate:

www.instructables.com/How-to-Setup-a-Raspberry-Pi-and-Start-Using-It/

Korak: Elektronsko vezje

Elektronsko vezje
Elektronsko vezje
Elektronsko vezje
Elektronsko vezje
Elektronsko vezje
Elektronsko vezje

Tukaj ni nič zelo zapletenega, to je precej enostaven krog. Zgornji 2 sliki pojasnjujeta konstrukcijo vezja. Za vnos gumbov lahko uporabite kateri koli pin GPIO, le posodobiti morate kodo, da to odraža.

Naj hitro razložimo, kako bo to delovalo:

  • RDEČA žica vodi 3.3V na en konec potisnega gumba.
  • ČRNI kabel povezuje drugi konec gumba s Pi GPIO, ki bo uporabljen kot vhod.
  • privzeto je gumb odprt, zato skozi njega ne prehaja napetost. ČRNI kabel je torej pri 0V, ko gumba ne pritisnete. To pomeni, da je logično stanje vhoda Pi GPIO 0.
  • ko pritisnete gumb, bo napetost prešla skozi njega in ČRNI kabel bo povezan z 3.3V. Raspberry Pi bo nato na vhodu videl napetost 3,3 V, kar ustreza logičnemu stanju 1.

2. korak: Koda Python

Koda Python
Koda Python

Zdaj, ko je vezje pripravljeno za uporabo, moramo napisati kodo, ki ga bo izvajala, in tukaj uporabljam Python v okolju PyCharm. Gumb sem konfiguriral za izklop Raspberry Pi le, če je pritisnjen več kot 3 sekunde. Razlog, zakaj to počnem, je, da ga je zelo enostavno naključno pritisniti in ne želite po naključju izklopiti svojega Pi.

Zgornji zaslon za tiskanje je iz mojega okolja PyCharm in koda je naslednja (z manjšo razliko v vrstici 26, ki je povezana z drugim projektom, vendar tukaj ni potrebna):

# To je aa koda za izklop Raspberry Pi, ko pritisnete in držite določen gumb # Zunanji modul importi uvoz RPi. GPIO kot GPIOimport timeimport os # Raspberry Pi pin & spremenljivke definitons & hold_time = 3 # Čas zadrževanja v sekundah za poweroffbutton_poweroff = 1 # Pritisnite gumb za izklop Raspberry PiGPIO.setwarnings (False) GPIO.setmode (GPIO. BCM) # Shema oštevilčevanja pin-številk Broadcom GPO.setup (button_poweroff, GPIO. IN, pull_up_down = GPIO. PUD_DOWN) # Gumb nastavljen kot vnos medtem ko je True: GPIO.wait_for_edge (button_poweroff, GPIO. RISING) start = time.time () time.sleep (0.2) # Preklopi debounce, medtem ko GPIO.input (button_poweroff) == 1: time.sleep (0.01) length = time.time () - start if length > hold_time: os.system ("sudo poweroff")

Prva stvar, če ste pritisnili gumb na drug GPIO, je, da vrstico 11 na zgornjem zaslonu za tiskanje posodobite z ustreznim vhodom GPIO:

button_poweroff = GPIO_X # Posodobite s pravilnim GPIO, uporabljenim v vašem vezju

Tudi spremenljivka hold_time vam omogoča, da spremenite čakalni čas, ki sproži izklop Pi.

3. korak: Kako samodejno zagnati skript po zagonskem postopku

Kako samodejno zagnati skript po zagonskem postopku
Kako samodejno zagnati skript po zagonskem postopku
Kako samodejno zagnati skript po zagonskem postopku
Kako samodejno zagnati skript po zagonskem postopku

Zdaj, ko imamo kodo pripravljeno, jo moramo le izvesti. Vendar bi bilo priročno, če bi lahko izvedli ta skript vsakič, ko se Pi zažene, na samodejen način, tako da bi gumb deloval brez nas, da vsakič zaženemo skript. Obstaja veliko načinov za to. Tu sem dodal eno vrstico v datoteko rc.local, ki se nahaja v mapi / etc / vašega Pi. Izvede se kot del zagonskega zaporedja.

Odpreti morate ukazno vrstico in vnesti naslednje ukaze (prvi zaslon za tiskanje zgoraj):

cd /

cd itd sudo nano rc.local

Prvi ukaz vas popelje iz imenika /home /pi v korenskega, ki je /.

Drugi ukaz vas nato popelje v imenik / etc /.

Nazadnje bo tretji odprl datoteko rc.local kot superkorisnik s polnimi pravicami za urejanje, ki jih morate spremeniti.

Ko ste v datoteki, morate le dodati vrstico na koncu le -tega, vendar pred stavkom exit 0 (2. zaslon za tiskanje zgoraj):

# Dodajte to vrstico v datoteko rc.local, da zaženete skript

sudo python /home/pi/Documents/shutdown_with_hold.py &

Tukaj je nekaj stvari, na katere morate biti pozorni:

  1. ime vaše datoteke: v zgornji vrstici predvidevam, da je datoteka shutdown_with_hold.py. Lahko pa je karkoli želite, samo posodobite ime s svojim.
  2. kjer ste shranili datoteko: v zgornji vrstici predvidevam, da je shranjena v vašem imeniku/home/pi/Documents. Ampak spet je lahko kjerkoli. Tukaj morate samo vnesti absolutno pot do svoje datoteke.
  3. znak "&" na koncu: to je pomembno in omogoča, da se ta ukaz izvaja v ozadju

In to je to! Zdaj se bo skript izvedel vsakič, ko bo vaš Pi vklopljen, za izklop pa boste morali pritisniti gumb več kot 3 sekunde.

Priporočena: