Lekce 30
Vstupní ochranný systém s heslem

Úvod

Poté, co jsme si ukázali funkčnost několik samostatných modulů, zkusíme je opět zkombinovat a vytvořit něco trochu interaktivního a praktického. V této lekci použijeme I²C LCD displej, modul relé a klávesnici. Naším cílem bude sestavit jednoduchý číselný zámek, který by bylo možné použít pro bezpečnostní dveře.

Novým prvkem této lekce je maticová klávesnice 4×4. Princip její funkce je naznačena na následujícím obrázku. V principu jde o „šikovně“ zapojené spínače mezi vodiči R1–R4, které odpovídají řádkám a vodiči C1–C4, které naopak odpovídají sloupcům. Je to podobný způsob propojení, jako bylo v případě zobrazovací LED matice 8×8, kterou jsme poznali v jedné z předešlých lekcí. Každý spínač spojuje právě jeden vodič R s vodičem C. Podle toho, které konkrétní vodiče R a C stisknutím spínače propojíme, poznáme stisknuté tlačítko.

princip klavesnice 4x4

Použité komponenty

  • modul Arduino
  • USB kabel
  • maticová klávesnice 4×4
  • modul relé
  • LCD displej s I²C převodníkem
  • nepájivé pole
  • vodiče pro nepájivé pole + vodiče typu „samec-samice“

Princip

Jak jsme naznačili, naším úkolem je vyrobit číselný (kódový) zámek. V programu tedy nastavíme heslo (např. 123456). Pomocí zadávání na klávesnici zadáme vstupní kód. Pokud se bude shodovat s naším heslem, sepne relé, jinak zůstane zámek zamčený. Samotné zadávání kódu bude probíhat tak, že jej spustíme stiskem hvězdičky *. Naopak konec pro zadání hesla potvrdíme křížkem #.

Pochopitelně chceme, aby zámek s uživatelem komunikoval, k tomu použijeme LCD displej. Na začátku je na displeji úvodní hláška „Vitejte!“. Po zadání hesla se na displeji kupříkladu objeví „Spravne zadano!“ „Prosim, vstupte!“, nebo se naopak zobrazí „Vstupní chyba!“ „Prosim, zkus znovu!“. Po uplynutí dvou sekund se na displeji objeví úvodní hláška „Vitejte!“

POZNÁMKA:
Protože naše klávesnice je složena z tlačítek bez jakéhokoliv popisu a vrácené kódy odpovídají jen stisknutému sloupci a řádce, musíme si nastavení kláves nastavit v programu. Rozšíření MAXI Starter kit předpokládá standardní rozložení klávesnice podle dnes dostupných klávesnic 4×4. Toto rozložení je uvedeno v následující obrázek.

standardni rozlozeni klavesnice

Rozložení klávesnice si ale můžeme zvolit, jaké chceme – například následující rozložení: 1, 2, 3, 4 v prvním řádku; ve druhém řádku 5, 6, 7, 8; ve třetím řádku 9, A, B a C a ve čtvrtém řádku to je D, *, 0, #. I s tímto rozšíření MAXI Starter kit počítá. V sekci vysvětlení kódu si ukážeme, jak bychom tuto definici změnili v programu.

Postup experimentu

Krok 1: Sestavíme si obvod podle následujícího obrázku nebo schématu. I²C LCD displej připojíme stejně, jako v předešlých lekcích. Propojení modulu Arduino s ostatními komponentami je uvedeno v tabulkách.

Blokové schéma

Blokove schema

Elektronické schéma

Elektronicke schema
klávesnice 4×4 modul Arduino
C1 7
C2 6
C3 5
C4 4
R1 11
R2 10
R3 9
R4 8

modul relé modul Arduino
S 13
+ 5V
GND GND

I²C LCD1602 modul Arduino
UNO Mega
SDA A4 20
SCL A5 21
UCC 5V 5V
GND GND GND

Krok 2: V prostředí mBlock vytvoříme následující program. Při tvorbě programu je třeba znát adresu použitého I²C LCD displeje, neboť u každého příkazů pro LCD je třeba nastavit aktuální adresu. (viz rozbalovací pole „adr.“).


ikona vysvetleni Vysvětlení kódu

První část programu je opět věnována prvotnímu nastavení, jako je nastavení parametrů použitého LCD displeje. Za zmínku stojí dva okrové programové bloky, které se zabývají inicializací klávesnice. První blok slouží pro nastavení ovládacích pinů při řádky a sloupce, druhý provede inicializaci klávesnice, čímž se zadané piny nastaví tak, aby mohla být klávesnice vyhodnocována. Pokud bychom se rozhodli změnit rozložení klávesnice, jak jsme se zmínili dříve, musíme to učinit ještě před inicializací klávesnice. Proto mezi bloky pro nastavení pinů a blok inicializace bychom museli vložit následující bloky (červeně orámováno) s předefinováním jednotlivých míst – sloupec, řádek.

predefinovani rozlozeni klaves

V hlavní nekonečné smyčce „opakuj stále“ se nejdříve načte stav klávesnice. Pokud je nějaká klávesa stisknuta, je její hodnota načtena. Programový blok načítání klávesnice nevrací souřadnici zmáčknuté klávesy (sloupec, řádek), ale rovnou její hodnotu (dle standardního rozložení, nebo předefinování). Získaná hodnota stisknuté klávesy je vypsána na LDC displej, aby byla vidět odezva pro uživatele. Následuje série podmínek, která testuje hned několik možností reakcí na stisknutou klávesu.

Zaprvé, pokud je stisknuta klávesa *, dojde ke smazání displeje a k výpisu uvítacího dialogu, taktéž dojde k vynulování textové proměnné pro uložení zadaného hesla a stav „probuzení“ zámku se v programu signalizuje uložením hodnoty 1 do proměnné hvězdička.

Pokud byla stisknuta klávesa #, došlo k potvrzení vstupního hesla. Dojde k porovnání proměnné s hodnotou zadaného hesla s proměnnou obsahující platné heslo. Pokud dojde ke shodě, následuje nastavení digitálního výstupu pro sepnutí relé a výpis hlášky na LCD. Pokud se hesla neshodují, dojde jen k výpisu patřičné hlášky na LCD. Zároveň se v obou případech vynuluje proměnné hvezdicka, čímž se zámek opět uvede do standardního vyčkávacího režimu.

Třetí podmínka nastává, pokud byla stisknutá jiná klávesa než * nebo #. Podle stavu hodnoty proměnné hvezdicka se buď neprovede nic (nebyla stisknuta počáteční hvězdička, zámek tedy nereaguje), nebo se zadaná klávesa připojí k textové proměnné pro zadané heslo. A to dokud nedojde k potvrzení hesla klávesou #.


Krok 3: Zkompilujeme kód a nahrajeme do modulu Arduino tlačítkem tlacitko nahrat.

Krok 4: Po spuštění programu se na displeji objeví „Vitejte!“. Relé (zámek) je pochopitelně zavřený, což poznáme, protože vestavěná LED modulu Arduino zůstane zhaslá. Pokud stiskneme na klávesnici tlačítko *, objeví se pokyn „Zadej sve heslo“. Když zadáme 123456 a potvrdíme #, rozsvítí se vestavěná LED, relé sepne a na displeji se objeví: „SPRAVNE!“ „Vstupte!“. Při zadání nesprávného hesla se objeví na displeji „CHYBA!“ „Zkus to znova“ a relé zůstane v původním stavu. O dvě vteřiny později se na displeji opět objeví úvodní hláška „Vitej!“ a zámek čeká na nové zadání kódu.

Pohled na experiment