Sadržaj:

Izgradite bolje dugme za napajanje Raspberry Pi: 4 koraka
Izgradite bolje dugme za napajanje Raspberry Pi: 4 koraka

Video: Izgradite bolje dugme za napajanje Raspberry Pi: 4 koraka

Video: Izgradite bolje dugme za napajanje Raspberry Pi: 4 koraka
Video: BTT Manta M8P v2 - Basics with CB1 v2.2 2024, Novembar
Anonim
Image
Image

Vrlo je jednostavno napraviti dugme 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 zaista završio s gašenjem, pa je stoga sigurno iskoristiti napajanje. U stvari, oni čak i ne priznaju da je pritisnuto dugme.

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

Ali kome treba takvo dugme? 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 otkucati 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šle sedmice, iako nikada neću saznati je li to zaista bilo zbog naglog nestanka 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 s vještine kad nisam tamo.

Namjera mi ovdje nije dati vam gotov proizvod, zajedno s prekrasno 3D printanom futrolom, poput mnogih drugih Instructables. Svatko će za to imati različitu upotrebu ili će ga 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 demonstriram sa Pi Zero v1.2 i monitorom koji sam napravio od prenamjenjenog ekrana laptopa i kontrolera sa Dalekog istoka.)

Korak 1: Dizajn

Kako radi
Kako radi

Ovo će moje dugme za napajanje učiniti za vas:

  • Dok Pi radi, LED svijetli neprestano. Ako se ručno isključi, LED se isključuje samo kada je sigurno isključiti napajanje.
  • Tijekom rada, ako pritisnete tipku barem jednu sekundu, započinje gašenje i LED dioda treperi četvrt sekunde svake sekunde sve dok ne isključite napajanje iz struje.
  • Iz stanja isključenja (ako napajanje nije isključeno), pritiskom na dugme pokreće se njegovo pokretanje i LED dioda će svijetliti četvrt sekunde svake sekunde dok se ne pokrene. (Može potrajati malo duže dok se ne pokrenu sve usluge, kao što su ssh i vnc.)

Komponente su veoma jeftine. Sve što ti je potrebno 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 želite.

Korak 2: Kako to funkcionira

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 kažete 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 pokretanje, moramo kratko povući SCL1 (pin 5) nisko. Ovaj pin koriste svi I2C uređaji (uključujući i moj midi interfejs), ali nakon pokretanja pokretanja ostavljamo ga na miru.

Većina složenosti je u Arduino skici koju učitavamo u ATTiny85. Ovo implementira "mašinu stanja" - vrlo koristan i moćan način kodiranja svakog problema koji se može predstaviti brojnim "stanjima". Mašina za pranje veša radi na isti način. Stanja predstavljaju faze u ciklusu pranja, a svako definira što bi mašina trebala raditi u tom trenutku (motori ili pumpe koje treba pokrenuti, ventile otvoriti ili zatvoriti) i koji ulazi senzora (temperatura, nivo 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 potpuno točno kao što je to bilo prije nego što sam započeo otklanjanje pogrešaka.

U našem slučaju, imamo 6 država koje sam nazvao ISKLJUČENO, ZAHTJEV ZA POKRETANJE, POKRETANJE, POKRETANJE, ZAHTJEV ZA ISKLJUČIVANJE I ISKLJUČIVANJE. (Nakon ISKLJUČIVANJA, vraća se 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 radi na Pi -u samo je malo složeniji nego za većinu gumba za isključivanje. On reagira na dugi niski impuls na GPIO pin -u pokretanjem isključivanja, ali i reagira na kratki impuls sam kratko povlačeći GPIO pin nisko. Ovako ATTiny85 može reći da radi i može se 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, kako je prikazano, ali dao sam vam i shemu tako da možete razraditi vlastiti izgled pomoću trakaste ploče ili prilagođene PCB -a, 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 skici.

Postoji nekoliko načina programiranja ATTiny85. Ako vaš ima instaliran pokretački program, možete koristiti razvojnu ploču ATTiny85 koja košta samo nekoliko funti. Ovo se povezuje sa vašim računarom putem USB priključka. Koristio sam Hidiot koji je u osnovi 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 Digispark opcije. 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 programu Setup i ispišite ispise u loop () kako biste vidjeli korake kroz koje prolazi pomoću serijskog monitora. Postoje alternativne definicije pinova u izvoru, komentarisane, za Uno, Pro Mini ili Nano.

Na svom Raspberry Pi -u 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 sa svojim omiljenim uređivačem. (Morat ćete to učiniti kao root.) Prije posljednjeg retka (izlaz 0) umetnite red

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

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

Preporučuje se: