Përmbajtje:

Ndërtoni një buton më të mirë të mjedrës Pi: 4 hapa
Ndërtoni një buton më të mirë të mjedrës Pi: 4 hapa

Video: Ndërtoni një buton më të mirë të mjedrës Pi: 4 hapa

Video: Ndërtoni një buton më të mirë të mjedrës Pi: 4 hapa
Video: E humbur prej një muaj, Telefonon live 20-vjeçarja, zbulon arsyet e largimit 2024, Nëntor
Anonim
Image
Image

Veryshtë shumë e lehtë të bësh një buton të fikjes ose fikjes së mjedrës. Ka shumë projekte të tilla në internet dhe disa këtu në Instructables, por asnjëri prej tyre (që mund ta shoh) nuk ju tregon kur Pi juaj ka përfunduar përfundimisht mbylljen dhe kështu është e sigurt të tërhiqni energjinë. Në fakt ata as nuk e pranojnë që shtypja e butonave është parë.

Ka edhe projekte për të rinisur një Pi që është mbyllur, por as këto nuk ju japin ndonjë reagim vizual.

Por kujt i duhet një buton i tillë? Nëse jeni pak budalla si unë, apo edhe thjesht një budalla aspirues, gjithmonë mund të hyni në Pi tuaj në nivel lokal ose përmes rrjetit dhe të shkruani sudo shutdown -h tani. Por nëse po ndërtoni një projekt për përdoruesit jo-teknikë, kjo thjesht nuk do të bëjë. Vërtetë, pothuajse gjithmonë mund të largoheni vetëm duke tërhequr kordonin e energjisë, por vini re, thashë pothuajse gjithmonë! Fati i të gjithëve mbaron herët a vonë. Unë kisha një kartë SD që vdiq mbi mua vetëm javën e kaluar, megjithëse kurrë nuk do ta di nëse ishte apo jo vërtet për shkak të një humbje të papritur të energjisë.

Në rastin tim, më duhej të shtoja një buton të energjisë në një Pi që ne përdorim si një sekuencues midi për regjistrimin dhe luajtjen e himneve dhe këngëve në kishë, sepse kur nuk kemi një pianist të gjallë në dispozicion. Unë gjithmonë mund të shtyp komandën e mbylljes, por më duhet ta çaktivizoj atë kur nuk jam atje.

Qëllimi im këtu nuk është t'ju jap një produkt të përfunduar, të kompletuar me kuti të printuar bukur 3D, si shumë udhëzues të tjerë. Të gjithë do të kenë një përdorim të ndryshëm për të ose do të duan të përfshijnë në projektin e tyre. Përkundrazi, unë do t'ju tregoj me teknologjinë që mund t'i shtoni projektit tuaj, qoftë një qendër mediatike, një pajisje IoT ose ndonjë gjë tjetër.

(Në video po e demonstroj me një Pi Zero v1.2 dhe një monitor që kam bërë nga një ekran laptopi i ripërdorur dhe një kontrollues nga Lindja e Largët.)

Hapi 1: Dizajni

Si punon
Si punon

Kjo është ajo që butoni im i energjisë do të bëjë për ju:

  • Kur Pi funksionon, një LED ndizet vazhdimisht. Nëse fiket manualisht, LED fiket vetëm kur është e sigurt të shkëputni rrymën.
  • Ndërsa vraponi, nëse shtypni butonin për të paktën një sekondë fillon fikja dhe LED fiket për një të katërtën e sekondës çdo sekondë derisa të jetë e sigurt të shkëputni rrymën.
  • Nga një gjendje mbylljeje (nëse energjia nuk është hequr), shtypja e butonit fillon të fillojë dhe ndez LED për një çerek sekondë çdo sekondë derisa të ndizet. (Mund të duhet pak më shumë derisa të funksionojnë të gjitha shërbimet si ssh dhe vnc.)

Komponentët janë shumë të lirë. Gjithçka që ju nevojitet është:

  • ATTiny85 (çip i pajtueshëm me Arduino)
  • 3 rezistencë: 2 x 330Ω dhe 1 x 10kΩ
  • 1 LED - Unë sugjeroj të gjelbër ose blu, por është zgjedhja juaj
  • telat e bukës dhe bluzat, ose stripboard, ose sido që të doni ta ndërtoni atë.

Hapi 2: Si funksionon

Ashtu si me të gjithë butonat e energjisë Pi, ky tërheq një kunj GPIO në një gjendje të ulët për të sinjalizuar një kërkesë mbylljeje për një program ndihmës që funksionon në Pi. Kam përdorur GPIO4 (pin 7), por ju mund të përdorni çdo kunj tjetër.

Mënyra e vetme për të treguar që një Pi ka përfunduar mbylljen është duke parë TxD pin 8, e cila më pas zbret. Kjo varet nga aktivizimi i tastierës serike, e cila është si parazgjedhje. Në fakt TxD do të shkojë lart e poshtë ndërsa përdoret si një tastierë serike, por kurrë nuk do të ulet për më shumë se rreth 30mS në të njëjtën kohë, madje edhe me shpejtësinë më të ngadaltë të baudit. Ende mund të përdoret për një tastierë serike pasi ne thjesht e shikojmë atë në mënyrë pasive.

Për të rindezur, duhet të tërheqim shkurtimisht SCL1 (pin 5) të ulët. Ky pin përdoret nga çdo pajisje I2C (përfshirë ndërfaqen time midi), por pas fillimit të nisjes e lëmë të qetë.

Shumica e kompleksitetit është në skicën Arduino të cilën e ngarkojmë në ATTiny85. Kjo zbaton një "makinë shtetërore" - një mënyrë shumë e dobishme dhe e fuqishme për të koduar çdo problem që mund të përfaqësohet nga një numër "gjendjesh". Një makinë larëse punon në të njëjtën mënyrë. Gjendjet përfaqësojnë fazat në ciklin e larjes, dhe secila prej tyre përcakton se çfarë duhet të bëjë makina në atë pikë (motorët ose pompat që do të punojnë, valvulat të hapen ose mbyllen) dhe cilat hyrje të sensorit (temperatura, niveli i ujit, kohëmatësit) përcaktoni kur të kaloni në gjendjen tjetër dhe cilën gjendje tjetër të zgjidhni.

Skica e dorës është drafti im i parë i një diagrami të gjendjes, që tregon të gjitha kalimet e gjendjes. Kjo është vetëm për t'ju treguar se si mund të planifikoni fillimisht gjendjet tuaja dhe kalimet e gjendjes - mund të mos jetë plotësisht e saktë siç ishte para se të filloja të korrigjoj gabimet.

Në rastin tonë, ne kemi 6 shtete të cilat i kam quajtur OFF, BOOT REQUEST, BOOTING, RUNNING, SHUTDOWN REQUEST dhe SHUTTING DOWN. (Pas mbylljes, kthehet në OFF.) Këto identifikohen nga komentet në skicë, dhe për secilën, komentet e mëtejshme thonë se çfarë duhet të bëjë dhe cilat ngjarje do ta zhvendosin atë në një gjendje tjetër.

Programi ndihmës që funksionon në Pi është pak më i komplikuar sesa për shumicën e butonave të fikjes. Ai i përgjigjet një pulsi të gjatë të ulët në kunjin GPIO duke filluar një mbyllje, por gjithashtu i përgjigjet një pulsi të shkurtër në vetvete duke e tërhequr shkurtimisht pinin GPIO. Kjo është mënyra se si ATTiny85 mund të tregojë se po funksionon dhe kështu mund të kalojë nga BOOTING në gjendjen RUNNING.

Hapi 3: Ndërtimi i një Prototipi Demo

Ndërtimi i një Prototipi Demo
Ndërtimi i një Prototipi Demo
Ndërtimi i një Prototipi Demo
Ndërtimi i një Prototipi Demo
Ndërtimi i një Prototipi Demo
Ndërtimi i një Prototipi Demo

Për qëllime demonstrimi, mund ta prototiponi në një pjatë pa saldim siç tregohet, por unë gjithashtu ju kam dhënë skemën, në mënyrë që të përpiloni paraqitjen tuaj duke përdorur tabelë strip ose një PCB të personalizuar, ndoshta pjesë e një projekti më të gjerë.

Hapi 4: Programimi i ATTiny85

Skica Arduino dhe programi ndihmës i bashkëngjiten këtij hapi. Në dosjen tuaj të skicave Arduino, krijoni një dosje të quajtur PiPwr dhe kopjoni skedarin PiPwr.ino në të. Duke filluar Arduino IDE tani do ta gjeni në skicën tuaj.

Ka disa mënyra për të programuar një ATTiny85. Nëse i juaji ka një bootloader të instaluar, mund të përdorni një bord zhvillimi ATTiny85 që kushton vetëm disa paund. Kjo lidhet me kompjuterin tuaj përmes një porte USB. Kam përdorur një Hidiot i cili është në thelb i njëjtë, por me një zonë prototipimi.

Në Arduino IDE nën File - Preferences, shtoni

digistump.com/package_digistump_index.json

te URL -të e menaxherit të bordeve shtesë.

Nën Veglat - Bordi tani duhet të shihni një numër opsionesh të Digispark. Zgjidhni Digispark (Default - 16.5MHz).

Nëse ATTiny85 juaj nuk ka një bootloader (ose nuk e dini) atëherë mund të merrni një programues AVR ISP për disa paund. Ose mund të përdorni një Arduino Uno ose më të lirë Pro Mini ose Nano si programues. Google për "arduino as isp attiny85" (pa thonjëza) për udhëzime.

Nëse dëshironi të modifikoni skicën, do ta gjeni plotësisht të komentuar dhe shpresojmë se është e lehtë për t’u ndjekur. Për korrigjimin është shumë më e lehtë të përdorni një Arduino Pro Mini ose Nano. Mos komentoni serial.begin () në Setup dhe deklaratat e printimit në lak () në mënyrë që të shihni hapat që kalon duke përdorur monitorin serik. Ekzistojnë përkufizime alternative pin në burim, të komentuara, për një Uno, Pro Mini ose Nano.

Në Raspberry Pi tuaj, kopjoni skedarin shutdown_helper.py në dosjen/etc/local/bin dhe vendoseni si të ekzekutueshëm me komandën

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

Tani redaktoni skedarin /etc/rc.local me redaktorin tuaj të preferuar. (Ju do të duhet ta bëni këtë si rrënjë.) Para rreshtit të fundit (dalja 0) futni rreshtin

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

Rinisni, dhe programi ndihmës do të fillojë automatikisht.

Recommended: