Kazalo:

Ustvarite boljši gumb za napajanje Raspberry Pi: 4 koraki
Ustvarite boljši gumb za napajanje Raspberry Pi: 4 koraki

Video: Ustvarite boljši gumb za napajanje Raspberry Pi: 4 koraki

Video: Ustvarite boljši gumb za napajanje Raspberry Pi: 4 koraki
Video: Как превратить Raspberry Pi Pico в ПЛК | Беремиз4Пико 2024, November
Anonim
Image
Image

Gumb za izklop ali izklop Raspberry je zelo enostaven. Na spletu je veliko takih projektov in nekaj tukaj na Instructables, vendar nobeden od njih (kar vidim) ne pove, kdaj se je vaš Pi dejansko ustavil, zato je varno izkoristiti moč. Pravzaprav niti ne priznavajo, da je bil pritisnjen gumb.

Obstajajo tudi projekti za ponovni zagon Pi, ki je bil ustavljen, vendar ti tudi ne dajejo vizualnih povratnih informacij.

Toda kdo potrebuje tak gumb? Če ste malo nerd, kot sem jaz, ali celo samo nadobudni piflar, se lahko vedno prijavite lokalno ali prek omrežja v svoj Pi in vtipkate sudo shutdown -h zdaj. Če pa gradite projekt za netehnične uporabnike, to preprosto ne bo uspelo. Res je, skoraj vedno se lahko izognete samo s potegom napajalnega kabla, vendar upoštevajte, skoraj vedno sem rekel! Vsem slej ko prej zmanjka sreče. Kartica SD mi je umrla šele prejšnji teden, čeprav nikoli ne bom vedela, ali je to res posledica nenadne izgube energije.

V mojem primeru sem moral dodati gumb za vklop na Pi, ki ga uporabljamo kot midi sekvencer za snemanje in predvajanje hvalnic in pesmi v cerkvi, ko nimamo na voljo pianista v živo. Vedno lahko vnesem ukaz za zaustavitev, vendar ga moram razveljaviti, ko me ni.

Moj namen tukaj ni podariti končnega izdelka, skupaj s čudovito 3D natisnjenim ohišjem, tako kot mnogi drugi Instructables. Vsak ga bo imel drugače ali pa ga bo želel vključiti v svoj projekt. Namesto tega vam bom predstavil tehnologijo, ki jo lahko dodate svojemu projektu, pa naj bo to medijski center, naprava IoT ali kaj drugega.

(V videoposnetku to dokazujem s Pi Zero v1.2 in monitorjem, ki sem ga naredil iz prenovljenega zaslona prenosnika in krmilnika z Daljnega vzhoda.)

1. korak: Oblikovanje

Kako deluje
Kako deluje

To bo moj gumb za vklop naredil za vas:

  • Ko Pi deluje, LED neprekinjeno sveti. Če se ročno izklopi, LED ugasne le, ko je varno izklopiti napajanje.
  • Če med delovanjem pritisnete gumb vsaj za sekundo, se sproži izklop in LED utripa vsako četrtino sekunde vsako sekundo, dokler ni varno izklopiti napajanja.
  • V stanju izklopa (če napajanje ni bilo izklopljeno) se s pritiskom na gumb zažene zagon in vsako sekundo utripa LED za četrt sekunde, dokler se ne zažene. (Morda bo trajalo malo dlje, dokler se ne zaženejo vse storitve, kot sta ssh in vnc.)

Sestavni deli so zelo poceni. Vse, kar potrebujete, je:

  • ATTiny85 (čip, združljiv z Arduino)
  • 3 upori: 2 x 330Ω in 1 x 10kΩ
  • 1 LED - predlagam zeleno ali modro, vendar je vaša izbira
  • žice in mostične žice ali trakove ali kakor koli želite.

2. korak: Kako deluje

Tako kot pri vseh gumbih za vklop Pi tudi ta potegne pin GPIO v nizko stanje, da signalizira zahtevo za zaustavitev pomožnemu programu, ki se izvaja na Pi. Uporabil sem GPIO4 (pin 7), lahko pa uporabite kateri koli drug pin.

Edini način, da ugotovite, da je Pi končal zaustavitev, je gledanje TxD pin 8, ki nato pade nizko. To je odvisno od omogočene serijske konzole, ki je privzeto nastavljena. Pravzaprav se bo TxD med uporabo kot serijsko konzolo redno povečeval in spuščal, vendar nikoli ne bo padel za več kot 30 mS hkrati, tudi pri najhitrejši skupni hitrosti prenosa. Še vedno ga lahko uporabljamo za serijsko konzolo, saj ga le pasivno opazujemo.

Za ponovni zagon moramo na kratko potegniti SCL1 (pin 5) nizko. Ta pin uporabljajo vse naprave I2C (vključno z mojim midi vmesnikom), vendar ga po zagonu pustimo pri miru.

Večina zapletenosti je v skici Arduino, ki jo naložimo v ATTiny85. To uvaja "državni stroj" - zelo uporaben in zmogljiv način kodiranja vsake težave, ki jo lahko predstavljajo številna "stanja". Pralni stroj deluje na enak način. Stanja predstavljajo stopnje v ciklu pranja, vsaka pa določa, kaj mora stroj narediti na tej točki (motorje ali črpalke, ki jih je treba zagnati, ventile odpreti ali zapreti) in kateri vhodi senzorja (temperatura, nivo vode, časovniki) določiti, kdaj se premakniti v naslednje stanje in katero naslednje stanje izbrati.

Skica roke je moj prvi osnutek diagrama stanja, ki prikazuje vse prehode stanja. To je samo zato, da vam pokažem, kako lahko na začetku načrtujete svoja stanja in prehode stanj - morda ni povsem natančno, kot je bilo pred mojim odpravljanjem napak.

V našem primeru imamo 6 držav, ki sem jih poklical IZKLJUČEN, ZAHTEV ZA BOOT, BOOTING, RUNNING, SHUTDOWN REQUEST in SHUTTING DOWN. (Po IZKLOPU se premakne nazaj na IZKLOPLJENO.) Ti so označeni s komentarji na skici, za vsakega pa nadaljnji komentarji povedo, kaj naj počne in kateri dogodki ga bodo premaknili v drugo stanje.

Pomočni program, ki se izvaja na Pi, je le nekoliko bolj zapleten kot pri večini gumbov za izklop. Na dolg nizek impulz na zatiču GPIO se odzove tako, da sproži zaustavitev, hkrati pa se odzove tudi na kratek impulz, ki ga sam na kratko povleče. Tako lahko ATTiny85 pove, da deluje, zato se lahko premakne iz stanja BOOTING v stanje RUNNING.

3. korak: Izdelava demo prototipa

Izdelava demo prototipa
Izdelava demo prototipa
Izdelava demo prototipa
Izdelava demo prototipa
Izdelava demo prototipa
Izdelava demo prototipa

Za predstavitvene namene ga lahko prototipirate na lemljeni plošči, kot je prikazano, vendar sem vam predstavil tudi shemo, tako da lahko izdelate svojo postavitev z uporabo lepenke ali tiskanega vezja po meri, morda del širšega projekta.

4. korak: Programiranje ATTiny85

Skica Arduino in pomožni program sta priložena temu koraku. V mapi Arduino skice ustvarite mapo z imenom PiPwr in vanj kopirajte datoteko PiPwr.ino. Ko zaženete Arduino IDE, ga boste našli v skici.

ATTiny85 lahko programirate na več načinov. Če ima vaš nameščen zagonski nalagalnik, lahko uporabite razvojno ploščo ATTiny85, ki stane le nekaj funtov. Ta se poveže z računalnikom prek vrat USB. Uporabil sem Hidiot, ki je v bistvu enak, vendar s področjem izdelave prototipov.

V Arduino IDE pod File - Preferences dodajte

digistump.com/package_digistump_index.json

na URL -je upravitelja dodatnih plošč.

Pod Orodja - deska bi morali videti številne možnosti Digisparka. Izberite Digispark (privzeto - 16,5 MHz).

Če vaš ATTiny85 nima zagonskega nalagalnika (ali ne veste), lahko za nekaj kilogramov dobite programerja ponudnika internetnih storitev AVR. Lahko pa uporabite kot programer Arduino Uno ali cenejši Pro Mini ali Nano. Google za "arduino as isp attiny85" (brez narekovajev) za navodila.

Če želite skico spremeniti, jo boste v celoti komentirali in upajmo, da ji bo enostavno slediti. Za odpravljanje napak je veliko lažje uporabiti Arduino Pro Mini ali Nano. Odkomentirajte serial.begin () v nastavitvah in navedbe tiskanja v zanki (), da si ogledate korake skozi serijski monitor. V izvoru obstajajo nadomestne definicije pin, komentirane za Uno, Pro Mini ali Nano.

Na svojem Raspberry Pi kopirajte datoteko shutdown_helper.py v mapo/etc/local/bin in jo z ukazom nastavite kot izvedljivo

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

Zdaj uredite datoteko /etc/rc.local s svojim najljubšim urejevalnikom. (To morate storiti kot root.) Pred zadnjo vrstico (izhod 0) vstavite vrstico

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

Znova zaženite in program za pomoč se bo samodejno zagnal.

Priporočena: