Obsah:

Vybudujte si lepšie vypínač Raspberry Pi: 4 kroky
Vybudujte si lepšie vypínač Raspberry Pi: 4 kroky

Video: Vybudujte si lepšie vypínač Raspberry Pi: 4 kroky

Video: Vybudujte si lepšie vypínač Raspberry Pi: 4 kroky
Video: Equipment Corner- OctoPrint configuration 2024, Júl
Anonim
Image
Image

Je veľmi jednoduché vytvoriť vypínač alebo vypnutie Raspberry. Existuje veľa takýchto projektov na webe a niekoľko tu na Instructables, ale žiadny z nich (to, čo vidím) vám nepovedia, kedy sa vaše Pi skutočne ukončilo vypínanie, a preto je bezpečné čerpať energiu. V skutočnosti ani nepriznávajú, že bolo vidieť stlačenie tlačidla.

Existujú aj projekty na reštartovanie Pi, ktoré bolo vypnuté, ale ani tieto vám neposkytujú žiadnu vizuálnu spätnú väzbu.

Kto však potrebuje také tlačidlo? Ak ste trochu hlupák ako ja alebo dokonca ctižiadostivý nerd, môžete sa kedykoľvek prihlásiť do svojho Pi lokálne alebo prostredníctvom siete a napísať sudo shutdown -h now. Ale ak staviate projekt pre netechnických používateľov, jednoducho to nepôjde. Je pravda, že sa takmer vždy dostanete preč iba vytiahnutím napájacieho kábla, ale všimnite si, hovoril som takmer vždy! Šťastie každého skôr alebo neskôr dôjde. Len minulý týždeň som mal na sebe kartu SD, aj keď sa nikdy nedozviem, či to bolo skutočne kvôli náhlej strate napájania.

V mojom prípade som potreboval pridať tlačidlo napájania k Pi, ktorý používame ako midi sekvencer na nahrávanie a prehrávanie hymnov a piesní v kostole, pretože keď nemáme k dispozícii živého klaviristu. Vždy môžem napísať príkaz na vypnutie, ale potrebujem ho odučiť, keď tam nie som.

Mojím cieľom tu nie je poskytnúť vám hotový výrobok doplnený o krásne 3D tlačené puzdro, ako mnoho ďalších návodov. Každý ho bude používať inak alebo sa bude chcieť začleniť do svojho vlastného projektu. Skôr vám nastavím technológiu, ktorú môžete do svojho projektu pridať, či už to bude mediálne centrum, zariadenie IoT alebo čokoľvek iné.

(Vo videu to demonštrujem pomocou Pi Zero v1.2 a monitora, ktorý som vyrobil z repasovanej obrazovky prenosného počítača a ovládača z Ďalekého východu.)

Krok 1: Dizajn

Ako to funguje
Ako to funguje

Na to vám poslúži moje tlačidlo napájania:

  • Keď je Pi v prevádzke, LED dióda nepretržite svieti. Ak sa vypne ručne, LED dióda zhasne, iba ak je bezpečné odpojiť napájanie.
  • Ak počas behu stlačíte tlačidlo najmenej na jednu sekundu, spustí sa vypnutie a dióda LED každú štvrtinu sekundy bliká, kým nie je bezpečné odpojiť napájanie.
  • Zo stavu vypnutia (ak nebolo odpojené napájanie) sa stlačením tlačidla spustí systém a každú sekundu štvrť sekundy bliká dióda LED, kým sa nespustí. (Kým budú spustené všetky služby, ako napríklad ssh a vnc, môže trvať trochu dlhšie.)

Komponenty sú veľmi lacné. Všetko čo potrebuješ je:

  • ATTiny85 (čip kompatibilný s Arduino)
  • 3 odpory: 2 x 330Ω a 1 x 10kΩ
  • 1 LED - navrhujem zelenú alebo modrú, ale je to vaša voľba
  • breadboard a prepojovacie vodiče, alebo stripboard, alebo si ich chcete postaviť.

Krok 2: Ako to funguje

Rovnako ako všetky tlačidlá napájania Pi, aj toto privedie kolík GPIO do nízkeho stavu, aby signalizoval požiadavku na vypnutie pomocnému programu spustenému na Pi. Použil som GPIO4 (pin 7), ale môžete použiť aj iný pin.

Jediný spôsob, ako zistiť, či sa Pi úplne vyplo, je sledovať pin 8 TxD, ktorý sa potom zníži. To závisí od zapnutej sériovej konzoly, ktorá je predvolene. V skutočnosti sa TxD bude pravidelne používať hore a dole, keď sa používa ako sériová konzola, ale nikdy neklesne na viac ako 30 mS súčasne, dokonca aj pri najnižšej bežnej prenosovej rýchlosti. Stále sa dá použiť pre sériovú konzolu, pretože ju len pasívne sledujeme.

Na reštartovanie musíme krátko potiahnuť SCL1 (kolík 5) nadol. Tento pin používa akékoľvek zariadenie I2C (vrátane môjho rozhrania midi), ale po spustení systému ho nechávame na pokoji.

Väčšina zložitosti je v náčrte Arduino, ktorý načítame do ATTiny85. Implementuje sa tým „stavový stroj“- veľmi užitočný a účinný spôsob kódovania akéhokoľvek problému, ktorý môže predstavovať množstvo „stavov“. Práčka funguje rovnako. Stavy predstavujú fázy pracieho cyklu a každý z nich definuje, čo by mal stroj v danom bode robiť (motory alebo čerpadlá, ktoré sa majú spustiť, ventily, ktoré sa majú otvoriť alebo zatvoriť) a aké vstupy snímačov (teplota, hladina vody, časovače) určiť, kedy sa presunúť do ďalšieho stavu a ktorý ďalší stav zvoliť.

Ručná skica je mojím prvým návrhom stavového diagramu, ktorý zobrazuje všetky prechody stavov. Toto vám len ukáže, ako môžete pôvodne naplánovať svoje stavy a prechody stavov - nemusí to byť úplne presné, ako to bolo pred tým, ako som začal ladiť.

V našom prípade máme 6 stavov, ktoré som nazval VYPNUTÉ, POŽIADAVKA O SPUŠTENIE, SPUŠTENIE, SPUŠŤANIE, ŽIADOSŤ O VYPNUTIE a VYPNUTIE. (Po VYPNUTÍ DOLE sa vráti späť do VYPNUTIA.) Tieto sú identifikované komentármi v náčrte a pri ďalších komentároch je uvedené, čo by malo robiť a aké udalosti ho presunú do iného stavu.

Pomocný program spustený na Pi je len o niečo komplikovanejší ako pre väčšinu tlačidiel na vypnutie. Reaguje na dlhý nízky impulz na kolíku GPIO spustením vypnutia, ale na krátky impulz reaguje aj tak, že krátko potiahne kolík GPIO nadol. Takto môže ATTiny85 rozpoznať, že je spustený, a tak sa môže presunúť z bootovacieho stavu do stavu RUNNING.

Krok 3: Vytvorenie demo prototypu

Budovanie demo prototypu
Budovanie demo prototypu
Budovanie demo prototypu
Budovanie demo prototypu
Budovanie demo prototypu
Budovanie demo prototypu

Na demonštračné účely ho môžete prototypovať na bezspájkovacej doske, ako je to znázornené na obrázku, ale taktiež som vám poskytol schému, aby ste si mohli vytvoriť vlastné rozloženie pomocou stripboardu alebo vlastného PCB, možno súčasť širšieho projektu.

Krok 4: Programovanie ATTiny85

K tomuto kroku je pripojená skica Arduino a pomocný program. V priečinku so skicami Arduino vytvorte priečinok s názvom PiPwr a skopírujte doň súbor PiPwr.ino. Spustením IDE Arduino ho teraz nájdete vo svojom skicári.

Existuje niekoľko spôsobov programovania ATTiny85. Ak máte nainštalovaný bootloader, môžete použiť vývojovú dosku ATTiny85, ktorá stojí iba niekoľko libier. K počítaču sa pripája pomocou portu USB. Použil som Hidiot, ktorý je v podstate rovnaký, ale s prototypovou oblasťou.

V IDE Arduino v časti Súbor - Predvoľby pridajte

digistump.com/package_digistump_index.json

na adresy URL správcu ďalších panelov.

V časti Nástroje - Doska by ste teraz mali vidieť niekoľko možností programu Digispark. Vyberte položku Digispark (predvolené - 16,5 MHz).

Ak váš ATTiny85 nemá bootloader (alebo neviete), môžete za pár libier zaobstarať programátor AVR ISP. Alebo môžete ako programátor použiť Arduino Uno alebo lacnejší Pro Mini alebo Nano. Google vyhľadá pokyny pre výraz „arduino as isp attiny85“(bez úvodzoviek).

Ak chcete upraviť náčrt, nájdete ho úplne komentovaný a dúfajme, že sa dá ľahko sledovať. Na ladenie je oveľa jednoduchšie použiť Arduino Pro Mini alebo Nano. Odkomentujte príkaz serial.begin () v programe Setup a tlačové príkazy v slučke (), aby ste videli kroky, ktorými prechádza pomocou sériového monitora. V zdroji sú alternatívne definície pinov, komentované, pre Uno, Pro Mini alebo Nano.

Skopírujte na svojom Raspberry Pi súbor shutdown_helper.py do priečinka/etc/local/bin a nastavte ho ako spustiteľný príkazom

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

Teraz upravte súbor /etc/rc.local pomocou svojho obľúbeného editora. (Budete to musieť urobiť ako root.) Pred posledný riadok (východ 0) vložte riadok

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

Reštartujte počítač a pomocný program sa spustí automaticky.

Odporúča: