Kazalo:
- 1. korak: Oblikovanje
- 2. korak: Kako deluje
- 3. korak: Izdelava demo prototipa
- 4. korak: Programiranje ATTiny85
Video: Ustvarite boljši gumb za napajanje Raspberry Pi: 4 koraki
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:05
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
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
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:
Boljši posnetki iz aligatorja: 3 koraki (s slikami)
Boljši posnetki iz aligatorja: Ko sem bil fant, so bili posnetki iz aligatorja težki in so dobro delovali. Izdelani so bili iz težjega jekla z vijačnimi sponkami in dobrimi vzmetmi. Zdaj so sponke iz aligatorja anemične malenkosti z majhno neuporabno odprtino čeljusti. Želel sem si boljšega aligatorja cl
Kako narediti in preizkusiti boljši DAC z ESP32: 5 korakov
Kako narediti in preizkusiti boljši DAC z ESP32: ESP32 ima 2 8-bitna digitalno-analogna pretvornika (DAC). Ti DAC-ji nam omogočajo izdelavo poljubnih napetosti v določenem območju (0-3,3 V) z ločljivostjo 8 bitov. V tem navodilu vam bom pokazal, kako sestaviti DAC in opisati njegove p
Boljši način za ogled/dokumentiranje datotek o navodilih: 4 koraki
Boljši način za ogled/dokumentiranje datotek na Instructables: Ljudje pogosto vključujejo datoteke za projekt prek naloženj Instructables. Pogosto so to izvorne datoteke programske opreme, ki so morda celo srce učiteljev. Toda Instructables bralcu ne omogoča preprostega branja in pregleda kode. (
Mho boljši odpornik vrednosti dekoderja Plushie: 4 koraki (s slikami)
Mho Better Resistor Value Decoder Plushie: Odpornost je jalova, vsaj če poskušate ugotoviti vrednost vašega upora, če si barvne kode ne zapomnite. Eden od teh plišastih elektronskih komponent Adafruit Circuit Playground je ležal naokoli in čakal, da bodo hakirani
Boljši rotacijski kodirnik: 4 koraki
Boljši rotacijski kodirnik: Če ste kdaj za svoj projekt poskusili uporabiti rotacijski dajalnik, ki ste ga našli na polici, ste bili najverjetneje razočarani. Ali je to bilo zaradi težav pri nastavitvi ali nenatančnih kontrol. Imel sem enak problem, zato sem se odločil, da ga odpravim. Oblikoval sem 3D pr