INHOUDSOPGAWE:

Bou 'n beter Raspberry Pi -kragknoppie: 4 stappe
Bou 'n beter Raspberry Pi -kragknoppie: 4 stappe

Video: Bou 'n beter Raspberry Pi -kragknoppie: 4 stappe

Video: Bou 'n beter Raspberry Pi -kragknoppie: 4 stappe
Video: Большой тест мини-ПК 2019 2024, November
Anonim
Image
Image

Dit is baie maklik om 'n framboos-afskakel- of afsluitknoppie te maak. Daar is baie sulke projekte op die internet en 'n paar hier op Instructables, maar nie een van hulle (wat ek kan sien) vertel jou wanneer jou Pi eintlik klaar is met afskakel nie, en daarom is dit veilig om aan die krag te trek. In werklikheid erken hulle nie eens dat die druk op die knoppie gesien is nie.

Daar is ook projekte om 'n Pi wat gesluit is, weer te begin, maar dit gee u ook geen visuele terugvoer nie.

Maar wie het so 'n knoppie nodig? As u 'n bietjie nerd is soos ek, of selfs 'n aspirant -nerd, kan u altyd plaaslik of via die netwerk by u Pi aanmeld en sudo shutdown -h intik. Maar as u 'n projek bou vir nie-tegniese gebruikers, sal dit eenvoudig nie werk nie. Dit is waar dat u byna altyd kan wegkom deur net aan die netsnoer te trek, maar let op, ek het byna altyd gesê! Almal se geluk raak vroeër of later op. Ek het eers verlede week 'n SD -kaart op my gesterf, alhoewel ek nooit sal weet of dit regtig te wyte was aan 'n skielike kragverlies nie.

In my geval moes ek 'n aan / uit -knoppie byvoeg by 'n Pi wat ons gebruik as 'n midi -sequencer om liedere en liedere in die kerk op te neem en af te speel, as ons nie 'n lewendige pianis beskikbaar het nie. Ek kan altyd die afsluitopdrag tik, maar ek moet dit afskakel vir wanneer ek nie daar is nie.

My bedoeling hier is nie om u 'n voltooide produk te gee nie, kompleet met 'n pragtige 3D -gedrukte omhulsel, soos soveel ander instruksies. Almal sal dit anders gebruik of in hul eie projek wil inkorporeer. Ek stel u eerder voor met die tegnologie wat u by u projek kan voeg, of dit nou 'n mediasentrum, 'n IoT -toestel of iets anders is.

(In die video demonstreer ek dit met 'n Pi Zero v1.2 en 'n monitor wat ek gemaak het van 'n hergebruikte laptopskerm en 'n kontroleerder uit die Verre Ooste.)

Stap 1: Die ontwerp

Hoe dit werk
Hoe dit werk

Dit is wat my aan / uit -knoppie vir u sal doen:

  • As die Pi aan die gang is, brand 'n LED voortdurend. As dit met die hand afgeskakel word, gaan die LED net af as dit veilig is om die krag te ontkoppel.
  • As u ten minste 'n sekonde op die knoppie druk, word 'n afskakel begin en die LED knipper elke sekonde 'n kwart sekonde totdat dit veilig is om die krag uit te skakel.
  • Vanuit 'n afskakel -toestand (as die krag nie verwyder is nie), begin die oplaai deur op die knoppie te druk, en die LED knipper elke sekonde 'n kwart sekonde totdat dit aangeskakel word. (Dit kan 'n bietjie langer neem totdat alle dienste soos ssh en vnc gebruik word.)

Die komponente is baie goedkoop. Al wat jy nodig het is:

  • ATTiny85 (Arduino-versoenbare chip)
  • 3 weerstande: 2 x 330Ω en 1 x 10kΩ
  • 1 LED - ek stel groen of blou voor, maar dit is u keuse
  • broodbord en springdrade, of strookbord, of hoe u dit ook al wil bou.

Stap 2: Hoe dit werk

Soos met alle Pi -aan / uit -knoppies, trek hierdie een 'n GPIO -pen na 'n lae toestand om 'n versoek om afskakeling aan te dui aan 'n helperprogram wat op die Pi werk. Ek het GPIO4 (pen 7) gebruik, maar u kan enige ander pen gebruik.

Die enigste manier om te sien dat 'n Pi die sluiting voltooi het, is deur na TxD -pen 8 te kyk, wat dan laag word. Dit hang af van die seriële konsole wat standaard aangeskakel is. Trouens, TxD sal gereeld op en af styg terwyl dit as 'n seriële konsole gebruik word, maar dit sal nooit meer as ongeveer 30mS op 'n slag laag wees nie, selfs teen die stadigste algemene baud -tempo. Dit kan steeds vir 'n reekskonsole gebruik word, aangesien ons dit net passief kyk.

Om weer te begin, moet ons SCL1 (pen 5) kortliks laag trek. Hierdie pen word deur enige I2C -toestelle (insluitend my midi -koppelvlak) gebruik, maar nadat ons die opstart begin het, laat ons dit met rus.

Die meeste kompleksiteit is in die Arduino -skets wat ons in die ATTiny85 laai. Dit implementeer 'n 'staatsmasjien' - 'n baie nuttige en kragtige manier om enige probleem wat deur 'n aantal 'state' voorgestel kan word, te kodeer. 'N Wasmasjien werk op dieselfde manier. Die state verteenwoordig die stadiums in die wassiklus, en elkeen definieer wat die masjien op daardie stadium moet doen (motors of pompe wat uitgevoer moet word, kleppe wat oopgemaak of toegemaak moet word) en watter sensorinsette (temperatuur, watervlak, timers) bepaal wanneer om na die volgende toestand te gaan en watter volgende staat om te kies.

Die handskets is my eerste konsep van 'n toestandsdiagram, wat al die toestandsoortgange toon. Dit is net om u te wys hoe u u state en oorgange van die staat aanvanklik kan beplan - dit is moontlik nie heeltemal akkuraat soos dit was voordat ek begin ontfout het nie.

In ons geval het ons 6 toestande wat ek UIT, BOOT AANVRAAG, BOOTING, RUNNING, SHUTDOWN AANVRAAG en SHUTTING DOWN gebel het. (Na afsluiting skuif dit terug na OFF.) Dit word geïdentifiseer deur opmerkings in die skets, en vir elkeen sê verdere kommentare wat dit moet doen en watter gebeurtenisse dit na 'n ander toestand sal bring.

Die helperprogram wat op die Pi uitgevoer word, is net 'n bietjie ingewikkelder as vir die meeste afsluitknoppies. Dit reageer op 'n lang lae polsslag op die GPIO -pen deur 'n afskakeling te begin, maar dit reageer ook op 'n kort polsslag deur die GPIO -pen kortliks laag te trek. Dit is hoe die ATTiny85 kan sien dat dit loop en van die BOOTING na die RUNNING -toestand kan beweeg.

Stap 3: Bou 'n demonstrasieprototipe

Bou 'n demo -prototipe
Bou 'n demo -prototipe
Bou 'n demo -prototipe
Bou 'n demo -prototipe
Bou 'n demo -prototipe
Bou 'n demo -prototipe

Vir demonstrasiedoeleindes kan u dit prototipeer op 'n soldeerlose broodbord, soos aangedui, maar ek het u ook die skema gegee, sodat u u eie uitleg kan gebruik met behulp van strookbord of 'n pasgemaakte PCB, miskien deel van 'n groter projek.

Stap 4: Programmering van die ATTiny85

Die Arduino -skets en die helperprogram is by hierdie stap aangeheg. Skep in u gids Arduino sketches 'n gids genaamd PiPwr en kopieer die lêer PiPwr.ino daarin. As u die Arduino IDE begin, vind u dit nou in u sketsboek.

Daar is verskillende maniere om 'n ATTiny85 te programmeer. As u 'n selflaaiprogram geïnstalleer het, kan u 'n ATTiny85 -ontwikkelbord gebruik wat slegs 'n paar pond kos. Dit kan via 'n USB -poort aan u rekenaar gekoppel word. Ek het 'n Hidiot gebruik wat in wese dieselfde is, maar met 'n prototipe -gebied.

Voeg in die Arduino IDE onder File - Preferences by

digistump.com/package_digistump_index.json

na die URL's van die bestuurder van die bykomende borde.

Onder Tools - Board behoort u nou 'n aantal Digispark -opsies te sien. Kies Digispark (standaard - 16,5 MHz).

As u ATTiny85 nie 'n selflaaiprogram het nie (of u weet nie), kan u 'n AVR ISP -programmeerder vir 'n paar pond kry. Of u kan 'n Arduino Uno of goedkoper Pro Mini of Nano as programmeerder gebruik. Google vir "arduino as isp attiny85" (sonder aanhalings) vir instruksies.

As u die skets wil verander, vind u dit volledig kommentaar en hopelik maklik om te volg. Vir ontfouting is dit baie makliker om 'n Arduino Pro Mini of Nano te gebruik. Gee kommentaar op die serial.begin () in Setup en die afdrukstate in lus () om die stappe wat dit volg deur middel van die seriële monitor te sien. Daar is alternatiewe pen -definisies in die bron, met kommentaar, vir 'n Uno, Pro Mini of Nano.

Kopieer die lêer shutdown_helper.py op u Raspberry Pi na die map/etc/local/bin en stel dit as uitvoerbaar met die opdrag in

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

Wysig nou die lêer /etc/rc.local met u gunsteling redakteur. (U moet dit as wortel doen.) Voeg die reël voor die laaste reël (afrit 0) in

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

Herlaai, en die helperprogram begin outomaties.

Aanbeveel: