Práce s arduinem je cosi čemu by se nadneseně dalo říkat aplikovaná robotika. Zkrátka to uchopíme hrst součástek a snažíme se z ní vytvořit cosi užitečného, za co nás kamarádi, nebo rodiče poklepou na rameni. A jednou třeba, v případě mých žáků, budou-li pokračovat ve studiu by to mohl být i zajímavé zaměstnání.
Jednou z poměrně žádanou aplikací je tvorba EZS. EZS je zkratka pro chytré sousloví – „elektronický zabezpečovací systém“. Ve zkratce jde o elektronickou sestavu, která je schopná střežit určitý prostor a nějakým způsobem, podle nějakých pravidel v případě narušení reagovat. Samozřejmě máme profesionální zabezpečovací systémy, které obsahují ústřednu EZS a třeba celou soustavu čidel. Takhle nároční my samozřejmě nebudeme, protože si nechceme zabezpečit celý dům, ale třeba jen šuplík proti bráchovi, nebo vlastní pokojík. Zkrátka se nám jedná o jednoduchý systémek, se krterým bychom si trochu zabastlili a něco se přitom i naučili.
Elektronický zabezpečovací systém
Elektronický zabezpečovací systém je jednoúčelová elektronická instalace s různými prvky určená pro střežení prostoru (EZS – wiki). EZS je velmi blízká příbuzná elektronickému požárnímu systému, popřípadě souvisí i se systémy kontroly pohybu (třeba kartové systémy). EZS je v profesionální oblasti provázáno s bezpečnostními složkami – bezpečnostní agentury, městská policie, pulty centrální ochrany atp., ale souvisí například i s pojišťovnictvím, protože poměrně často podmiňuje pojišťovna uzavření smlouvy právě instalací EZS (která navíc musí být instalována podle normy, případně podle pravidel, které si pojišťovna určuje).
Ústředna EZS
Jakákoliv aktivita, která je v hlídaném prostoru zachycena je vyhodnocena a ústředna systému pak na situaci reaguje. Poplachovou ústřednu nám v našem systému nahradí právě arduino, bude v ní naprogramováno chování systému a budou k ní připojeny čidla. Na co u ústředny nesmíme zapomenout?
1, Napájení systému – správně má systém EZS vydržet i po výpadku el. energie jet ještě minimálně tři dny z baterky, která je uložena v ústředně. Musíme tedy dát arduino na baterku. V našem případě bude výhodou, že naše zabezpečovačka nemusí být připojená k počítači a že ji tím pádem můžeme uložit kam si vymyslíme.
2, Aktivace a deaktivace systému – do programu nesmíme zapomenout naprogramovat možnost uživatelského zamčení a odemčení systému. V profi ústřednách se tak obvykle děje pomocí klávesnice a zadáním kódu. Tak dobří my nebudeme (možná později), v systému budeme aktivovat a deaktivovat náš systém dvěma tlačítky. Nesmíme ani zapomenout na to, že na aktivaci, nebo deaktivaci systému budeme potřebovat nějaký čas – takže si naprogramujeme do arduina lhůtu na příchod a odchod.
3, Signalizace stavu – uživatel by měl na systému poznat v jakém je stavu – jestli je zakódovaný, nebo není. Zatím neumíme pracovat s displeji, tudíž budeme vše signalizovat pomocí dvou LED (červená barva – systém je aktivní, zelená – systém je deaktivovaný).
4, Následná činnost po poplachu – k čemu by byl systém EZS, kdyby na poplach nereagoval žádným způsobem. Profi ústředny mají široké pole toho co mohou udělat. To že by spouštěly nějaké aktivní obranné zařízení je jednak nelegální a jednak je to v našich podmínkách spíše sci-fi. Obvykle ústředny většinou potichounku odešlou hlášení na pult centrální ochrany (PCO), jehož obsluha vyšle zásahový tým, aby objekt zkontroloval. Protože je naše zařízení spíše amatérská záležitost vybereme si „levnější“ řešení a připojíme si k arduinu reproduktorek coby sirénu.
Čidla
V našem článku píši hlavně o PIR detektoru, ovšem senzorů je samozřejmě velké množství. Použijeme takové, které jsou pro nás v konkrétní situaci nejvýhodnější.
1, PIR detektory – senzory založené na detekci IR záření. Nejlevnější a nejvíce používané. Je jich více variant – například nástěnná, nebo stropní čidla. Existují i čidla na delší vzdálenost – obecně je většinou čidla nutné ještě po montáži seřídit (na to slouží ta blikající světla v čidlech – po seřízení by měla správně být vypnuta :-))
2, Detektory tříštění skla – senzory, které číhají na typické frekvence které vydává rozbité sklo. Instalují se před okna, kde by se pachatel mohl rozbitím skla dostat do objektu.
3, Otřesová čidla – ta se moc často nemontují. Jsou to senzory, které jsou aktivovány otřesem – například se zloděj snaží probít do trezoru, nebo v galerii sundá obraz.
4, Magnetické kontakty – ty se montují do dveří nebo oken. Většinou aktivují příchodovou zónu a spustí čas pro příchod.
5, Mikrospínače – montáž obvykle do ústředen a krabiček detektorů. Bývají v ústředně naprogramované, aby spustily poplach bez ohledu na to, jestli je systém aktivován, nebo ne. K čemu slouží se dá snadno domyslet – vyhlašují poplach pokud nějaký nenechavec strká prstíky pod krytky a snaží se nám systém rozebrat.
Projekt – EZS I.
Zkuste si zapojit desku arduina UNO spolu s dalšími součástkami podle následujícího schematu.
Celá sestava obsahuje jeden PIR senzor, jeden reproduktorek, dvě tlačítka a dvě LED diody s ochrannými odpory (jedna je červená a jedna zelená). Obě LED diody jsou určené pro signalizaci stavu systému. Zelená signalizuje že systém nic nestřeží, červená signalizuje že je systém aktivní.
Systém obsahuje dvě tlačítka pro uživatelský vstup. Levé tlačítko je určené pro deaktivaci objektu (je připojené na pin 2). Pravé tlačítko, připojené na pin 3, je určené pro aktivací střežícího režimu.
Na pin 6 je přiveden vstup pro PIR senzor a na pinu 13 je výstup pro reproduktor.
Stav | Hardware | Proměnné | Popis stavu |
1 | tl. 1(2) = 0 tl. 2(3) = 1 LED(4) = 0 LED(5) = 1 | sysguard = 1 alarm = 0 entrytime =0 | Systém je ve vypnutém stavu, aktivační tlačítko je stisknuté, naskakuje odpočet pro odchod |
2 | tl. 1 = 1 tl. 2 = 1 LED(4) = 0 LED(5) = 1 | sysguard = 0 alarm = 0 entrytime =0 | Systém je ve vypnutém stavu, žádné tlačítko není stisknuté |
3 | tl. 1 = 1 tl. 2 = 0 LED(4) = 0 LED(5) = 1 | sysguard = 0 alarm = 0 entrytime =0 | systém přechází ze zapnutého stavu do vypnutého, vypíná se zvuk na reproduktoru |
4 | tl. 1 = 1 tl. 2 = 1 LED(4) = 1 LED(5) = 0 | sysguard = 1 alarm = 0 entrytime =0 | Systém je v aktivním – střežícím systému. Poplach nebyl vyhlášen. |
5 | tl. 1 = 1 tl. 2 = 1 LED(4) = 1 LED(5) = 0 | sysguard = 1 alarm = 1 entrytime =0 | Systém je v aktivním – střežícím systému. Poplach byl vyhlášen. Běží lhůta pro odkódování objektu. Reproduktor nevydává zvuk. |
6 | tl. 1 = 1 tl. 2 = 1 LED(4) = 1 LED(5) = 0 | sysguard = 1 alarm = 1 entrytime =1 | Systém je v aktivním – střežícím systému. Poplach byl vyhlášen. Lhůta pro příchod uplynula a systém aktivně upozorňuje zvukovým signálem na narušení. |
/* Program pro demonstraci použití PIR detektoru s arduinem – jednoduché EZS */ /*Systémové proměnné*/ int sysguard = 0; //stav systému – 0 odkódovaný/ 1 – zakódovaný int alarm = 0; //stav poplachu – 0 klid/ 1 – poplach int entryTime=0; //stav lhůty pro příchod – 0 lhůta běží/ 1 – lhůta promeškána int x=0; //odpočet lhůty pro příchod 1 – 6 sekund /*Inicializace systému*/ void setup() { pinMode(2, INPUT_PULLUP); //tlačítko pro aktivaci systému pinMode(3, INPUT_PULLUP); //tlačítko pro deaktivaci systému pinMode(4, OUTPUT); //LED dioda pro signalizaci stavu aktivace – červená pinMode(5, OUTPUT); //LED dioda pro signalizaci stavu aktivace – zelená pinMode(6, INPUT); //vstup pro PIR detektor } /*Nekonečná smyčka s programem*/ void loop() { /*Načítání stavů tlačítek a PIR senzoru*/ int tlacitko2=digitalRead(2); int tlacitko1=digitalRead(3); int pirSensor=digitalRead(6); /*Soustava podmínkových příkazů pro chování systému*/ if ((tlacitko1==0) && (sysguard == 0)) //Systém ve vypnutém stavu, aktivační tlačítko je stisknuté { digitalWrite(4,0); //red digitalWrite(5,1); //green /*odchozí čas*/ digitalWrite(5,0); //red delay(200); digitalWrite(5,1); //red delay(1000); digitalWrite(5,0); //red delay(200); digitalWrite(5,1); //red delay(1000); digitalWrite(5,0); //red delay(200); digitalWrite(5,1); //red delay(1000); digitalWrite(5,0); //red delay(200); digitalWrite(5,1); //red delay(1000); digitalWrite(5,0); //red delay(200); digitalWrite(5,1); //red delay(1000); /*Aktivace systému*/ sysguard = 1; } else if ((tlacitko1==1) && (sysguard == 0)) //Systém ve vypnutém stavu, aktivační tlačítko není stisknuté { digitalWrite(4,0); //red digitalWrite(5,1); //green sysguard = 0; } else if ((tlacitko2==0) && (sysguard == 1)) //Systém v zapnutém stavu, deaktivační tlačítko je stisknuté { noTone(13); digitalWrite(4,0); //red digitalWrite(5,1); //green sysguard = 0; alarm=0; entryTime=0; x=0; } else if ((tlacitko2==1) && (sysguard == 1) && (alarm == 0) && (entryTime == 0)) //Systém je v zapnutém stavu, deaktivační tlačítko není stisknuté, poplach nebyl vyhlášen, čas pro odkódování nebyl vyčerpán { digitalWrite(4,1); //red digitalWrite(5,0); //green if (pirSensor == 1) //Nastavení stavu poplachu { /*Není-li deaktivováno – bude vyhlášen poplach*/ alarm=1; } } else if ((tlacitko2==1) && (sysguard == 1) && (alarm == 1) && (entryTime == 0)) //Systém je v zapnutém stavu, deaktivační tlačítko není stisknuté, poplach byl vyhlášen, čas pro odkódování nebyl vyčerpán { digitalWrite(4,1); //red digitalWrite(5,0); //green digitalWrite(4,0); //red delay(200); digitalWrite(4,1); //red delay(1000); x = x + 1; if (x>=6) { entryTime = 1; //čas vypršel } } else if ((tlacitko2==1) && (sysguard == 1) && (alarm == 1) && (entryTime == 1)) //Systém je v zapnutém stavu, deaktivační tlačítko není stisknuté, poplach byl vyhlášen, čas pro odkódování nebyl vyčerpán { digitalWrite(4,1); //red digitalWrite(5,0); //green tone(13,400); } } |
Úkoly:
1, Připojte a naprogramujte do programu sysGuard ještě jedno další čidlo.
2, Vylepšete zvuk při vyhlášení poplachu například na střídavý tón.
3, Zvětšete v programu lhůtu pro odkódování a zakódování systému na víc než 10 sekund.