Innholdsfortegnelse:

Bygg en bedre Raspberry Pi -strømknapp: 4 trinn
Bygg en bedre Raspberry Pi -strømknapp: 4 trinn

Video: Bygg en bedre Raspberry Pi -strømknapp: 4 trinn

Video: Bygg en bedre Raspberry Pi -strømknapp: 4 trinn
Video: Step-by-Step : Installing Windows 10 on Raspberry Pi 2024, November
Anonim
Image
Image

Det er veldig enkelt å lage en bringebær av / på-knapp. Det er mange slike prosjekter på nettet og noen få her på Instructables, men ingen av dem (som jeg kan se) forteller deg når Pi faktisk er ferdig med å slå av, og derfor er det trygt å trekke strømmen. Faktisk erkjenner de ikke engang at knappetrykket er sett.

Det er også prosjekter for å starte en Pi på nytt som har blitt stengt, men heller ikke disse gir deg noen visuell tilbakemelding.

Men hvem trenger en slik knapp? Hvis du er litt av en nerd som meg, eller til og med en håpefull nerd, kan du alltid logge deg på Pi lokalt eller over nettverket og skrive sudo shutdown -h nå. Men hvis du bygger et prosjekt for ikke-tekniske brukere, vil det bare ikke gjøre det. Det er sant at du nesten alltid kan komme unna med å trekke i strømledningen, men merk at jeg sa nesten alltid! Alles hell går ut før eller siden. Jeg hadde et SD -kort som døde på meg bare i forrige uke, selv om jeg aldri vil vite om det virkelig skyldtes et brått strømtap.

I mitt tilfelle måtte jeg legge til en av / på -knapp til en Pi vi bruker som en midi -sequencer for innspilling og avspilling av salmer og sanger i kirken, for når vi ikke har en live pianist tilgjengelig. Jeg kan alltid skrive ned avslutningskommandoen, men jeg må de-skill den når jeg ikke er der.

Min intensjon her er ikke å gi deg et ferdig produkt, komplett med vakkert 3D -trykt etui, som så mange andre instrukser. Alle vil ha en annen bruk for det eller ønsker å innlemme det i sitt eget prosjekt. Jeg vil heller sette deg opp med teknologien du kan legge til i prosjektet ditt, enten det er et mediesenter, en IoT -enhet eller noe annet.

(I videoen demonstrerer jeg det med en Pi Zero v1.2 og en skjerm jeg laget fra en repurponert bærbar skjerm og en kontroller fra Fjernøsten.)

Trinn 1: Designet

Hvordan det fungerer
Hvordan det fungerer

Dette er hva strømknappen min vil gjøre for deg:

  • Når Pi kjører, lyser en LED kontinuerlig. Hvis den slås av manuelt, slukker lysdioden bare når det er trygt å koble fra strømmen.
  • Når du trykker på knappen i minst et sekund mens du kjører, starter en avstengning og lysdioden blinker i et kvart sekund hvert sekund til det er trygt å koble fra strømmen.
  • Fra en avstengningstilstand (hvis strømmen ikke er fjernet) starter oppstart av et trykk ved å trykke på knappen og blinker LED -lampen i et kvart sekund hvert sekund til den starter opp. (Det kan ta litt lengre tid før alle tjenester som ssh og vnc kjører.)

Komponentene er veldig billige. Alt du trenger er:

  • ATTiny85 (Arduino-kompatibel brikke)
  • 3 motstander: 2 x 330Ω og 1 x 10kΩ
  • 1 LED - Jeg foreslår grønt eller blått, men det er ditt valg
  • brødbrett og hoppetråder, eller stripboard, eller slik du vil bygge den.

Trinn 2: Slik fungerer det

Som med alle Pi -strømknappene, trekker denne en GPIO -pin til en lav tilstand for å signalisere en forespørsel om nedleggelse til et hjelperprogram som kjører på Pi. Jeg brukte GPIO4 (pin 7), men du kan bruke hvilken som helst annen pin.

Den eneste måten å fortelle at en Pi har fullført nedstengning, er ved å se TxD pin 8, som deretter går lavt. Dette avhenger av at seriekonsollen er aktivert, som den er som standard. Faktisk vil TxD regelmessig gå opp og ned mens den brukes som seriekonsoll, men den vil aldri gå lavt i mer enn rundt 30 ms om gangen, selv med den langsomste vanlige overføringshastigheten. Den kan fortsatt brukes til en seriekonsoll, ettersom vi bare passivt ser den.

For å starte på nytt må vi trekke SCL1 (pin 5) kort ned. Denne pinnen brukes av alle I2C -enheter (inkludert mitt midi -grensesnitt), men etter å ha startet oppstarten lar vi den være i fred.

Det meste av kompleksiteten er i Arduino -skissen som vi laster inn i ATTiny85. Dette implementerer en "tilstandsmaskin" - en veldig nyttig og kraftig måte å kode ethvert problem som kan representeres av en rekke "tilstander". En vaskemaskin fungerer på samme måte. Statene representerer trinnene i vaskesyklusen, og hver og en definerer hva maskinen skal gjøre på det tidspunktet (motorer eller pumper som skal kjøres, ventiler som skal åpnes eller stenges) og hvilke sensorinnganger (temperatur, vannstand, tidtakere) bestemme når du skal gå til neste tilstand og hvilken neste stat du skal velge.

Håndskissen er mitt første utkast til et tilstandsdiagram, som viser alle tilstandsovergangene. Dette er bare for å vise deg hvordan du i utgangspunktet kan planlegge tilstander og tilstandsoverganger - det er kanskje ikke helt nøyaktig som det var før jeg begynte å feilsøke.

I vårt tilfelle har vi 6 tilstander som jeg har kalt OFF, BOOT Request, BOOTING, RUNNING, SHUTDOWN Request og SHUTTING DOWN. (Etter at SHUTTING DOWN flyttes tilbake til OFF.) Disse identifiseres med kommentarer i skissen, og for hver sier ytterligere kommentarer hva den skal gjøre og hvilke hendelser som vil flytte den til en annen tilstand.

Hjelpeprogrammet som kjører på Pi er bare litt mer komplisert enn for de fleste avstengningsknapper. Den reagerer på en lang lav puls på GPIO -pinnen ved å starte en avstengning, men den reagerer også på en kort puls ved å trekke GPIO -pinnen kort. Slik kan ATTiny85 fortelle at den kjører og kan bevege seg fra BOOTING til RUNNING -tilstanden.

Trinn 3: Bygg en demonstrasjonsprototype

Bygg en demonstrasjonsprototype
Bygg en demonstrasjonsprototype
Bygg en demonstrasjonsprototype
Bygg en demonstrasjonsprototype
Bygg en demonstrasjonsprototype
Bygg en demonstrasjonsprototype

For demonstrasjonsformål kan du prototype det på et loddfritt brødbrett som vist, men jeg har også gitt deg skjematisk slik at du kan regne ut ditt eget oppsett ved hjelp av stripboard eller et tilpasset PCB, kanskje en del av et større prosjekt.

Trinn 4: Programmering av ATTiny85

Arduino -skissen og hjelperprogrammet er knyttet til dette trinnet. I mappen Arduino sketches lager du en mappe som heter PiPwr og kopierer filen PiPwr.ino inn i den. Når du lanserer Arduino IDE, finner du den nå i skisseboken din.

Det er flere måter å programmere en ATTiny85 på. Hvis din har en bootloader installert, kan du bruke et ATTiny85 utviklingsbord som koster bare noen få pund. Dette kobles til PC -en din via en USB -port. Jeg brukte en Hidiot som egentlig er den samme, men med et prototypingområde.

Legg til i Arduino IDE under Fil - Innstillinger

digistump.com/package_digistump_index.json

til URL -ene for tilleggsstyrer.

Under Tools - Board bør du nå se en rekke Digispark -alternativer. Velg Digispark (standard - 16,5 MHz).

Hvis ATTiny85 ikke har en bootloader (eller du ikke vet), kan du få en AVR ISP -programmerer for noen få kilo. Eller du kan bruke en Arduino Uno eller billigere Pro Mini eller Nano som programmerer. Google for "arduino as isp attiny85" (uten anførselstegn) for instruksjoner.

Hvis du vil endre skissen, vil du finne den fullstendig kommentert og forhåpentligvis lett å følge. For feilsøking er det mye lettere å bruke en Arduino Pro Mini eller Nano. Ikke kommenter serial.begin () i Setup og utskriftssetningene i loop () for å se trinnene det går gjennom ved å bruke den serielle skjermen. Det er alternative pin -definisjoner i kilden, kommentert, for en Uno, Pro Mini eller Nano.

På Raspberry Pi, kopier filen shutdown_helper.py til mappen/etc/local/bin og angi den som kjørbar med kommandoen

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

Rediger filen /etc/rc.local med favorittredigereren din. (Du må gjøre det som root.) Sett inn linjen før den siste linjen (exit 0)

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

Start på nytt, og hjelperprogrammet starter automatisk.

Anbefalt: