Obsah:

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

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

Video: Vybudujte si lepší vypínač Raspberry Pi: 4 kroky
Video: Бесшумное zigbee реле в подрозетник без нулевой линии, особенности монтажа, установка конденсатора 2024, Listopad
Anonim
Image
Image

Je velmi snadné vytvořit tlačítko pro vypnutí nebo vypnutí Raspberry. Existuje spousta takových projektů na webu a několik zde na Instructables, ale žádný z nich (to, co vidím) vám neřekne, kdy se vaše Pi skutečně vypnulo, a proto je bezpečné vytáhnout energii. Ve skutečnosti ani neuznávají, že bylo stisknutí tlačítka vidět.

Existují také projekty na restartování Pi, které bylo vypnuto, ale ani ty vám neposkytují žádnou vizuální zpětnou vazbu.

Ale kdo takové tlačítko potřebuje? Pokud jste tak trochu pitomci jako já, nebo dokonce jen ctižádostiví pitomci, můžete se ke svému Pi kdykoli přihlásit lokálně nebo přes síť a nyní zadejte sudo shutdown -h. Pokud ale stavíte projekt pro netechnické uživatele, nebude to stačit. Je pravda, že téměř vždy se můžete dostat pryč pouhým zatažením za napájecí kabel, ale všimněte si, řekl jsem téměř vždy! Štěstí každého dříve nebo později dojde. Minulý týden jsem nechal zemřít kartu SD, i když se nikdy nedozvím, zda to bylo skutečně kvůli náhlé ztrátě napájení.

V mém případě jsem potřeboval přidat tlačítko napájení k Pi, které používáme jako midi sekvencer pro nahrávání a přehrávání hymnů a písní v kostele, protože když nemáme k dispozici živého pianistu. Vždy mohu zadat příkaz k vypnutí, ale potřebuji ho zbavit dovednosti, když tam nejsem.

Mým záměrem zde není dát vám hotový výrobek s nádherně 3D tištěným pouzdrem, jako mnoho jiných instruktabilní. Každý pro to bude mít jiné využití nebo bude chtít začlenit do svého vlastního projektu. Spíše vám nastavím technologii, kterou můžete přidat do svého projektu, ať už to bude mediální centrum, zařízení IoT nebo cokoli jiného.

(Ve videu to předvádím s Pi Zero v1.2 a monitorem, který jsem vyrobil z repasované obrazovky notebooku a ovladače z Dálného východu.)

Krok 1: Design

Jak to funguje
Jak to funguje

K tomu vám poslouží moje tlačítko napájení:

  • Když Pi běží, LED dioda svítí nepřetržitě. Pokud se vypne ručně, kontrolka LED zhasne, pouze pokud je bezpečné odpojit napájení.
  • Pokud během běhu stisknete tlačítko alespoň na sekundu, spustí se vypnutí a LED bliká na čtvrt sekundy každou sekundu, dokud není bezpečné odpojit napájení.
  • Ze stavu vypnutí (pokud nebylo odpojeno napájení) se stisknutím tlačítka spustí jeho spuštění a každou sekundu bliká LED na čtvrt sekundy, dokud se nespustí. (Může trvat trochu déle, než budou spuštěny všechny služby, jako jsou ssh a vnc.)

Komponenty jsou velmi levné. Vše co potřebuješ je:

  • ATTiny85 (čip kompatibilní s Arduino)
  • 3 odpory: 2 x 330Ω a 1 x 10kΩ
  • 1 LED - doporučuji zelenou nebo modrou, ale je to vaše volba
  • prkénko a propojovací vodiče nebo stripboard, nebo jakkoli ho chcete postavit.

Krok 2: Jak to funguje

Stejně jako u všech tlačítek napájení Pi, toto táhne pin GPIO do nízkého stavu, aby signalizoval požadavek na vypnutí pomocnému programu spuštěnému na Pi. Použil jsem GPIO4 (pin 7), ale můžete použít jakýkoli jiný pin.

Jediným způsobem, jak zjistit, že Pi dokončil vypnutí, je sledovat pin 8 TxD, který se poté sníží. To závisí na povolení sériové konzoly, což je ve výchozím nastavení. Ve skutečnosti se bude TxD pravidelně pohybovat nahoru a dolů, když je používán jako sériová konzola, ale nikdy neklesne na více než 30 mS najednou, dokonce ani při nejpomalejší běžné přenosové rychlosti. Stále jej lze použít pro sériovou konzoli, protože jej jen pasivně sledujeme.

Chcete -li restartovat, musíme krátce vytáhnout SCL1 (pin 5) dolů. Tento pin používají všechna zařízení I2C (včetně mého midi rozhraní), ale po spuštění bootování ho necháme na pokoji.

Většina složitosti je v náčrtu Arduino, který načteme do ATTiny85. To implementuje „stavový stroj“- velmi užitečný a účinný způsob kódování jakéhokoli problému, který může být reprezentován řadou „stavů“. Pračka funguje úplně stejně. Stavy představují fáze pracího cyklu a každý z nich definuje, co by měl stroj v daném bodě dělat (motory nebo čerpadla, která mají být spuštěna, ventily otevřené nebo zavřené) a jaké vstupy čidel (teplota, hladina vody, časovače) určit, kdy přejít do dalšího stavu a který další stav zvolit.

Ruční skica je mým prvním návrhem stavového diagramu, který ukazuje všechny stavové přechody. Toto je jen pro ukázku, jak můžete zpočátku plánovat své stavy a přechody stavů - nemusí to být úplně přesné, jako to bylo před tím, než jsem začal ladit.

V našem případě máme 6 stavů, které jsem nazval OFF, BOOT REQUEST, BOOTING, RUNNING, SHUTDOWN REQUEST a SHUTTING DOWN. (Po SHUTTING DOWN se vrátí zpět do OFF.) Ty jsou identifikovány komentáři v náčrtu a u každého dalšího komentáře je uvedeno, co má dělat a jaké události jej přesunou do jiného stavu.

Pomocný program běžící na Pi je jen trochu komplikovanější než u většiny tlačítek pro vypnutí. Reaguje na dlouhý nízký puls na pinu GPIO zahájením vypnutí, ale také reaguje na krátký puls sám krátkým vytažením pinu GPIO nízko. ATTiny85 tak může poznat, že běží, a tak se může přesunout ze stavu BOOTING do stavu RUNNING.

Krok 3: Sestavení demo prototypu

Budování demo prototypu
Budování demo prototypu
Budování demo prototypu
Budování demo prototypu
Budování demo prototypu
Budování demo prototypu

Pro demonstrační účely můžete prototypovat na nepájivém prkénku, jak je uvedeno na obrázku, ale také jsem vám dal schéma, takže si můžete vytvořit vlastní rozvržení pomocí stripboardu nebo vlastního PCB, možná součástí širšího projektu.

Krok 4: Programování ATTiny85

K tomuto kroku je připojena skica Arduino a pomocný program. Ve složce skic Arduino vytvořte složku s názvem PiPwr a zkopírujte do ní soubor PiPwr.ino. Po spuštění IDE Arduino jej nyní najdete ve svém skicáři.

Existuje několik způsobů programování ATTiny85. Pokud máte nainstalovaný bootloader, můžete použít vývojovou desku ATTiny85, která stojí jen několik liber. K počítači se připojuje přes USB port. Použil jsem Hidiot, který je v podstatě stejný, ale s prototypovou oblastí.

V IDE Arduino v části Soubor - Předvolby přidejte

digistump.com/package_digistump_index.json

na adresy URL správce dalších desek.

V části Nástroje - Deska byste nyní měli vidět řadu možností Digispark. Vyberte Digispark (výchozí - 16,5 MHz).

Pokud váš ATTiny85 nemá zavaděč (nebo nevíte), můžete získat programátor AVR ISP za pár liber. Nebo můžete jako programátor použít Arduino Uno nebo levnější Pro Mini nebo Nano. Google hledá pokyny pro „arduino as isp attiny85“(bez uvozovek).

Pokud chcete upravit náčrt, zjistíte, že je plně komentovaný a doufejme, že se dá snadno sledovat. Pro ladění je mnohem jednodušší použít Arduino Pro Mini nebo Nano. Chcete -li zobrazit kroky, kterými prochází pomocí sériového monitoru, odkomentujte soubor serial.begin () v instalačním programu a tiskové příkazy ve smyčce (). Ve zdroji jsou alternativní definice pinů, komentované, pro Uno, Pro Mini nebo Nano.

Zkopírujte na svém Raspberry Pi soubor shutdown_helper.py do složky/etc/local/bin a pomocí příkazu jej nastavte jako spustitelný

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

Nyní upravte soubor /etc/rc.local pomocí svého oblíbeného editoru. (Budete to muset udělat jako root.) Před posledním řádkem (exit 0) vložte řádek

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

Restartujte a pomocný program se spustí automaticky.

Doporučuje: