Sadržaj:

Izgradite bolji gumb za napajanje Raspberry Pi: 4 koraka
Izgradite bolji gumb za napajanje Raspberry Pi: 4 koraka

Video: Izgradite bolji gumb za napajanje Raspberry Pi: 4 koraka

Video: Izgradite bolji gumb za napajanje Raspberry Pi: 4 koraka
Video: SCP-261 Пан-мерное Торговый и эксперимент Войти 261 объявление Де + полный + 2024, Studeni
Anonim
Image
Image

Vrlo je jednostavno napraviti gumb za isključivanje ili isključivanje maline. Postoji mnogo takvih projekata na webu, a nekoliko ovdje na Instructables -u, ali nijedan od njih (što vidim) vam ne govori kada se vaš Pi zapravo završio s gašenjem i stoga je sigurno iskoristiti napajanje. Zapravo, čak i ne priznaju da je pritisnut gumb.

Postoje i projekti za ponovno pokretanje Pi -ja koji je ugašen, ali ni oni ne daju vizualne povratne informacije.

Ali kome treba takav gumb? Ako ste pomalo štreber poput mene, ili čak samo nadobudni štreber, uvijek se možete prijaviti na svoj Pi lokalno ili preko mreže i upisati sudo shutdown -h sada. Ali ako gradite projekt za korisnike koji nisu tehnički, to jednostavno neće uspjeti. Istina, gotovo uvijek možete pobjeći samo povlačenjem kabela za napajanje, ali napominjem, rekao sam gotovo uvijek! Svima sreća prije ili kasnije nestane. SD kartica mi je umrla tek prošli tjedan, iako nikad neću saznati je li to doista bilo zbog naglog gubitka napajanja.

U mom slučaju morao sam dodati tipku za uključivanje u Pi koji koristimo kao midi sekvencer za snimanje i reprodukciju hvalospjeva i pjesama u crkvi, za vrijeme kada nemamo na raspolaganju pijanista uživo. Uvijek mogu upisati naredbu za isključivanje, ali moram je ukloniti iz vještine kad nisam tamo.

Namjera mi ovdje nije dati vam gotov proizvod, zajedno s lijepo 3D tiskanom futrolom, poput mnogih drugih Instructables. Svatko će za to imati drugačiju uporabu ili će se htjeti uključiti u svoj projekt. Radije ću vam postaviti tehnologiju koju možete dodati svom projektu, bilo da se radi o medijskom centru, IoT uređaju ili bilo čemu drugom.

(U videu to pokazujem s Pi Zero v1.2 i monitorom koji sam napravio od prenamjenjenog zaslona prijenosnog računala i kontrolera s Dalekog istoka.)

Korak 1: Dizajn

Kako radi
Kako radi

Ovo će moja tipka za uključivanje učiniti za vas:

  • Dok Pi radi, LED svijetli neprestano. Ako se ručno isključi, LED se isključuje samo kad je sigurno isključiti napajanje.
  • Tijekom rada, ako pritisnete gumb najmanje jednu sekundu, započinje gašenje i LED dioda treperi četvrt sekunde svake sekunde sve dok ne budete mogli isključiti napajanje.
  • Iz stanja isključenja (ako napajanje nije isključeno), pritiskom na gumb pokreće se njegovo pokretanje i LED dioda treperi četvrt sekunde svake sekunde dok se ne pokrene. (Može potrajati malo duže dok se ne pokrenu sve usluge poput ssh -a i vnc -a.)

Komponente su vrlo jeftine. Sve što trebaš je:

  • ATTiny85 (čip kompatibilan s Arduinom)
  • 3 otpornika: 2 x 330Ω i 1 x 10kΩ
  • 1 LED - predlažem zelenu ili plavu boju, ali to je vaš izbor
  • žica ili kratkospojna žica ili traka za presvlačenje, ili kako god to želite izgraditi.

Korak 2: Kako to radi

Kao i svi Pi gumbi za uključivanje, i ovaj povlači GPIO pin u nisko stanje kako bi signalizirao zahtjev za isključivanje pomoćnom programu koji radi na Pi -u. Koristio sam GPIO4 (pin 7), ali možete koristiti bilo koji drugi pin.

Jedini način da se dokaže da je Pi završio isključivanje je gledanje TxD pina 8, koji tada pada. To ovisi o omogućenoj serijskoj konzoli, koja je zadana. U stvari, TxD će se redovito povećavati i spuštati dok se koristi kao serijska konzola, ali nikada neće pasti nisko za više od 30 ms u isto vrijeme, čak i pri najsporijoj uobičajenoj brzini prijenosa. I dalje se može koristiti za serijsku konzolu dok je samo pasivno gledamo.

Za ponovno podizanje sustava moramo kratko povući SCL1 (pin 5) nisko. Ovaj pin koriste svi I2C uređaji (uključujući moje midi sučelje), ali nakon pokretanja pokretanja ostavljamo ga na miru.

Većina složenosti je u Arduino skici koju učitavamo u ATTiny85. Time se implementira "stroj za stanje" - vrlo koristan i moćan način kodiranja svakog problema koji se može predstaviti brojnim "stanjima". Stroj za pranje rublja radi na isti način. Stanja predstavljaju faze u ciklusu pranja, a svako definira što bi stroj trebao raditi u tom trenutku (motori ili pumpe koje treba pokrenuti, ventile otvoriti ili zatvoriti) i koji ulazi senzora (temperatura, razina vode, mjerači vremena) odrediti kada preći u sljedeće stanje i koje sljedeće stanje odabrati.

Skica ruke je moj prvi nacrt dijagrama stanja koji prikazuje sve prijelaze stanja. Ovo vam je samo da vam pokažem kako u početku možete planirati svoja stanja i prijelaze stanja - možda nije sasvim točno kao što je to bilo prije nego što sam počeo otklanjati pogreške.

U našem slučaju, imamo 6 država koje sam nazvao ISKLJUČENO, ZAHTJEV ZA PODUZETAK, DIZANJE, RUNNING, ZAHTJEV ZA ISKLJUČIVANJE I ISKLJUČIVANJE. (Nakon ISKLJUČIVANJA premješta se natrag na ISKLJUČENO.) Oni su identificirani komentarima na skici, a za svaki daljnji komentar govori se o tome što bi trebao raditi i koji će ga događaji premjestiti u drugo stanje.

Pomoćni program koji se izvodi na Pi -u samo je malo složeniji nego za većinu gumba za isključivanje. On reagira na dugi niski impuls na GPIO pinu pokretanjem isključivanja, ali također reagira na kratki impuls sam kratko povlačeći GPIO pin nisko. Ovako ATTiny85 može reći da radi i tako se može premjestiti iz BOOTING u stanje RUNNING.

Korak 3: Izrada demo prototipa

Izrada demo prototipa
Izrada demo prototipa
Izrada demo prototipa
Izrada demo prototipa
Izrada demo prototipa
Izrada demo prototipa

U svrhu demonstracije možete ga prototipirati na ploči za lemljenje, kao što je prikazano, ali dao sam vam i shemu tako da možete razraditi vlastiti izgled pomoću trake ili prilagođenog PCB -a, što je možda dio šireg projekta.

Korak 4: Programiranje ATTiny85

Arduino skica i pomoćni program pridruženi su ovom koraku. U mapi Arduino skice stvorite mapu pod nazivom PiPwr i kopirajte datoteku PiPwr.ino u nju. Pokretanjem Arduino IDE -a sada ćete ga pronaći u svojoj skici.

Postoji nekoliko načina programiranja ATTiny85. Ako vaš ima instaliran bootloader, možete koristiti razvojnu ploču ATTiny85 koja košta samo nekoliko funti. Ovo se povezuje s računalom putem USB priključka. Koristio sam Hidiot koji je u biti isti, ali s područjem izrade prototipa.

U Arduino IDE pod Datoteka - Postavke dodajte

digistump.com/package_digistump_index.json

na URL -ove upravitelja dodatnih ploča.

U odjeljku Alati - ploča sada biste trebali vidjeti brojne opcije Digisparka. Odaberite Digispark (zadano - 16,5 MHz).

Ako vaš ATTiny85 nema pokretački program (ili ne znate), možete nabaviti programera AVR ISP -a za nekoliko funti. Ili možete koristiti Arduino Uno ili jeftiniji Pro Mini ili Nano kao programer. Google za "arduino as isp attiny85" (bez navodnika) za upute.

Ako želite izmijeniti skicu, naći ćete je potpuno komentiranu i nadamo se da ju je lako pratiti. Za otklanjanje pogrešaka mnogo je lakše koristiti Arduino Pro Mini ili Nano. Dekomentirajte serial.begin () u Postavi i ispis ispisa u loop () kako biste vidjeli korake kroz koje prolazi pomoću serijskog monitora. Postoje alternativne definicije pinova u izvoru, komentirano, za Uno, Pro Mini ili Nano.

Na svom Raspberry Pi kopirajte datoteku shutdown_helper.py u mapu/etc/local/bin i postavite je kao izvršnu naredbom

sudo chmod +x /usr/local/bin/shutdown_helper.py

Sada uredite datoteku /etc/rc.local svojim omiljenim uređivačem. (Morat ćete to učiniti kao root.) Prije zadnjeg retka (izlaz 0) umetnite redak

nohup /usr/local/bin/shutdown_helper.py &

Ponovo pokrenite sustav i pomoćni program će se automatski pokrenuti.

Preporučeni: