Jasný nápad: Použití Raspberry Pi jako časovače lampy
Řekněme, že odjíždíte na dlouhou dovolenou zítra ráno a chcete odradit případné zloděje z domova. Časovač lampy je dobrým odstrašujícím prostředkem, ale obchody s hardwarem jsou na noc zavřené a nebudete mít čas dostat se před letem ráno. Vzhledem k tomu, že jste fanouškem Raspberry Pi, máte kolem sebe několik zásob, a to:
- Deska Raspberry Pi
- Prkno
- Jumperové vodiče, samice na samce.
- Relé PowerSwitch Tail II
- Připojovací vodič
S těmito zdroji můžete vytvořit vlastní programovatelný časovač lampy pomocí dvou výkonných nástrojů Linux:shell skripty acron.
Příkazy skriptování
Skript je soubor, který obsahuje řadu příkazů (stejně jako ty, které používáte pro ovládání a čtení pinů). Podívejte se na níže uvedený shell shell a vysvětlení klíčových řádků.
#! / bin / bash # echo Export pin $ 1. # echo $ 1> / sys / class / gpio / export # echo Nastavení směru ven. echo out> / sys / class / gpio / gpio $ 1 / direction # echo Nastavení špendlíku vysoké. echo 1> / sys / class / gpio / gpio $ 1 / hodnota
Tento řádek je vyžadován pro všechny skripty shellu. | |
„$ 1“ označuje první argument příkazového řádku. | |
Namísto exportu určitého čísla PINu skript používá první argument příkazového řádku. | |
Všimněte si, že první argument příkazového řádku zde také nahrazuje číslo PIN. |
Uložit jako textový souboron.sh
a proveďte jej pomocí příkazu chmod:
[email protected]: / home / pi # chmod + x on.sh
Poznámka
Stále musíte tyto příkazy vykonávat jako root. Typsudo su
pokud dostanete chyby jako „Oprávnění bylo odepřeno“.
Argument příkazového řádku je způsob předávání informací do programu nebo skriptu tak, že je zadáte za název příkazu. Když píšete skript shellu, $ 1 odkazuje na první argument příkazového řádku, $ 2 odkazuje na druhý a tak dále. V případěon.sh
zadáte číslo PIN, které chcete exportovat a zapněte. Namístopevné kódování pin 25 do skriptu shellu, je univerzálnější odkazem na pin, který byl zadán na příkazovém řádku. Chcete-li pin 25 exportovat a zapnout, můžete nyní zadat:
[email protected]: / home / pi / # ./on.sh 25
Export pin 25. Nastavení směru ven. Nastavení špendlíku vysoko.
„./“ před názvem souboru označuje, že skript provádíte v adresáři, ve kterém se nacházíte. |
Pokud stále svítí dioda LED připojená ke kolíku 25, měla by se zapnout. Udělejme další skript nazvaný shelloff.sh
který LED diodu vypne. Bude to vypadat takto:
#! / bin / bash echo Nastavení špendlíku nízké. echo 0> / sys / class / gpio / gpio $ 1 / value echo Unexporting pin $ 1 echo $ 1> / sys / class / gpio / unexport
Nyní je vytvoříme a spustíme skript:
[email protected]: / home / pi / temp # chmod + x off.sh
[email protected]: / home / pi / temp # ./off.sh 25
Nastavení špendlíku nízké. Nepromontovatelný kolík 25
Pokud vše fungovalo, LED dioda měla zhasnout.
Připojení lampy
Drobná LED dioda samozřejmě nevydá dostatek světla, aby se oklamali zlodějové, aby si mysleli, že jste doma, a proto připojme lampu k Raspberry Pi.
- Demontujte LED diodu připojenou ke kolíku 25.
- Připojte dva prameny připojovacího vodiče k prkénku, ten, který se připojí ke kolíku 25 Raspberry Pi a druhý k zemnící sběrnici.
- Proud drátu, který se připojuje ke kolíku 25, by měl být připojen ke svorce „+ in“ na PowerSwitch Tail.
- Proud drátu, který se připojuje k zemi, by měl být připojen ke svorce „-in“ PowerSwitch Tail. Porovnejte svůj obvod s Obr. 7, „Připojení PowerSwitch Tail II k Raspberry Pi“.
- Zapojte PowerSwitch Tail do zdi a zapojte lampu do PowerSwitch Tail. Zkontrolujte, zda je spínač lampy v poloze zapnuto.
- Teď, když to provedete
./on.sh 25
, lampa by se měla rozsvítit a pokud provedete./off.sh 25
, lampa by se měla vypnout!
Poznámka
Uvnitř PowerSwitch Tail je několik elektronických součástek, které vám pomohou ovládat zařízení vysokého napětí, jako je lampa nebo mixér, pomocí nízkonapěťového signálu, jako je ten z Raspberry Pi. „Kliknutí“, které uslyšíte z PowerSwitch Tail, když je zapnuto nebo vypnuto, je relé, základní součást obvodu uvnitř. Relé funguje jako spínač pro vysokonapěťové zařízení, které lze zapnout nebo vypnout v závislosti na tom, zda je zapnutý nebo vypnutý signál řízení nízkého napětí z Raspberry Pi.
Obrázek 7. Připojení PowerSwitch Tail II k Raspberry Pi
Plánování příkazů pomocí cron
Takže nyní jste zabalili několik různých příkazů do dvou jednoduchých příkazů, které mohou pin zapnout nebo vypnout. S lampou připojenou k Raspberry Pi přes PowerSwitch Tail můžete zapnout nebo vypnout lampu jedním příkazem. Nyní můžete použítcron
naplánovat, aby se světlo zapínalo a vypínalo v různých časech dne.cron
je plánovač úloh Linuxu. S ním můžete nastavit příkazy, které mají být provedeny v určitých časech a datech, nebo můžete mít úlohy spuštěné v určitém období (například jednou za hodinu). Chystáte se naplánovat dvě úlohy; jeden z nich rozsvítí světlo v 8:00 hodin a druhý světlo vypne ve 2:00.
Poznámka
Stejně jako u jiných programů závislých na čase se budete chtít ujistit, že máte na svém Raspberry Pi nastaveno správné datum a čas, jak je popsáno v ???.
Chcete-li tyto úlohy přidat, budete muset upravit tabulku cron (seznam příkazů, které Linux provádí v zadaných časech):
[email protected]: / home / pi / # crontab -e
Spustí se textový editor, který změní tabulku cron root. Chcete-li změnit typ uživatele rootsudo su
. V horní části souboru se zobrazí informace o úpravě tabulky cron. Pomocí kláves se šipkami přejděte na konec souboru a přidejte tyto dvě položky na konec souboru.
0 20 * * * / home/pi/on.sh 25 0 2 * * * /home/pi/off.sh 25
Poznámka
cron
bude ignorovat všechny řádky, které začínají znakem hash. Pokud chcete dočasně zakázat linku bez jejího odstranění nebo přidat do souboru komentář, vložte před řádek znak hash.
TypControl-X
ukončit, zadejtey
uložte soubor, když vás vyzve, a stiskněte klávesu enter, chcete-li přijmout výchozí název souboru. Když je soubor uložen a vrátíte se na příkazový řádek, mělo by to říctinstalace nové crontab
Chcete-li označit, že provedené změny budou provedeny uživatelemcron
Více o Cron
Cron vám umožní naplánovat úlohy pro konkrétní data a časy nebo v intervalech. Tam je pět časových polí (nebo šest jestliže vy chcete plánovat rok), každý oddělený mezerou následovaný jiným prostorem pak příkazem vykonat. Hvězdičky označují, že by úloha měla vykonávat každé období. Například:
Tabulka 1. Cron Entry pro zapnutí světla v 20:00 každý den
0 | 20 | * | * | * | /home/pi/on.sh 25 |
---|---|---|---|---|---|
Minuta (: 00) | Hodina (20:00) | Každý den | Každý měsíc | Každý den v týdnu | cesta k příkazu |
Řekněme, že chcete, aby se lampa rozsvítila každý pracovní den. Jak by vypadala položka crontab:
Tabulka 2. Cron Entry pro zapnutí světla v 8:00 odpoledne Každý všední den
0 | 20 | * | * | 1-5 | /home/pi/on.sh 25 |
---|---|---|---|---|---|
Minuta (: 00) | Hodina (20:00) | Každý den | Každý měsíc | od pondělí do pátku | cesta k příkazu |
Řekněme, že máte shell skript, který kontroluje, zda máte novou poštu a pokud vám to posílá e-maily. Zde je návod, jak tento skript spustit každých pět minut:
Tabulka 3. Cron Entry pro kontrolu pošty každých pět minut
*/5 | * | * | * | * | /home/pi/checkMail.sh |
---|---|---|---|---|---|
Každých pět minut | Každou hodinu | Každý den | Každý měsíc | Každý den v týdnu | cesta k příkazu |
* / 5 označuje periodu každých pět minut.
Jak můžete vidět,cron
je výkonný nástroj, který je k dispozici pro plánování úloh pro konkrétní data nebo časy a plánování úloh, které se mají uskutečnit v určitém intervalu.
Dále
- Referenční stránka eLinuxu Raspberry Pi GPIO
- Toto je nejobsáhlejší referenční příručka pro GPIO piny Raspberry Pi.
- Adafruit: MCP230xx GPIO Expander na Raspberry Pi
- Pokud nemáte dostatek pinů pro práci, Adafruit nabízí tento návod k použití čipu MCP23008 pro 8 dalších pinů GPIO a MCP23017 pro 16 dalších pinů GPIO.