Bezpečnosť je v každodennom živote hlavným problémom a digitálne zámky sa stali dôležitou súčasťou týchto bezpečnostných systémov. Jeden taký digitálny kódový zámok je v tomto projekte napodobňovaný pomocou dosky arduino a maticovej klávesnice.
Komponenty
- Arduino
- Modul klávesnice
- Bzučiak
- 16x2 LCD
- Tranzistor BC547
- Rezistor (1k)
- Chlebová doska
- Moc
- Pripojovacie vodiče
V tomto obvode sme použili techniku multiplexovania na prepojenie klávesnice pre zadanie hesla do systému. Tu používame klávesnicu 4x4, ktorá obsahuje 16 kláves. Ak chceme použiť 16 klávesov, potrebujeme 16 pinov na pripojenie k arduino, ale v multiplexnej technike musíme použiť iba 8 pinov na prepojenie 16 klávesov. Ide teda o inteligentný spôsob prepojenia modulu klávesnice.
Technika multiplexovania: Technika multiplexovania je veľmi efektívny spôsob, ako znížiť počet pinov použitých v mikrokontroléri na poskytnutie vstupu alebo hesla alebo čísel. V zásade sa táto technika používa dvoma spôsobmi - jedným je skenovanie riadkov a druhým skenovanie hrubého čreva. Ale v tomto projekte založenom na arduine sme použili knižnicu klávesníc, takže pre tento systém nemusíme vytvárať žiadny multiplexovací kód. Na poskytnutie vstupu musíme použiť iba knižnicu klávesníc.
Popis obvodu
Obvod tohto projektu je veľmi jednoduchý a obsahuje Arduino, klávesnicový modul, bzučiak a LCD. Arduino riadi všetky procesy, ako je získavanie hesiel z modulu klávesnice, porovnávanie hesiel, riadenie bzučiakov a odosielanie stavu na LCD displej. Na získanie hesla sa používa klávesnica. Bzučiak sa používa na indikáciu a LCD na zobrazenie stavu alebo správ. Bzučiak je poháňaný pomocou NPN tranzistora.
Kolíky kolíka modulu klávesnice sú priamo spojené s kolíkmi 4, 5, 6, 7 a kolíky radu sú pripojené k 3, 2, 1, 0 arduino uno. Displej 16x2 LCD je spojený s arduino v 4-bitovom režime. Ovládací pin RS, RW a En sú priamo spojené s arduino pinom 13, GND a 12. A dátový pin D4-D7 je pripojený k pinom 11, 10, 9 a 8 arduina. A jeden bzučiak je pripojený na pin 14 (A1) arduina cez tranzistor NPN BC547.
Pracovne
Na uloženie hesla sme použili zabudovanú EEPROM arduina, takže pri prvom spustení tohto obvodu prečítajte údaje o odpadkoch z EEPROM zabudovanej arduino a porovnajte ich so vstupným heslom a na displeji LCD zobrazte správu, ktorá je odmietnutá, pretože heslo sa nezhoduje. Na riešenie tohto problému je potrebné prvýkrát nastaviť predvolené heslo pomocou nižšie uvedeného programovania:
pre (int j = 0; j <4; j ++) EEPROM.write (j, j + 49);
lcd.print ("Zadajte Ur Passkey:"); lcd.setCursor (0,1); pre (int j = 0; j <4; j ++) pass = EEPROM.read (j);
Týmto sa nastaví heslo „1234“ na EEPROM Arduina.
Po prvom spustení to musíme z programu odstrániť a znova napísať kód do arduino a spustiť. Váš systém teraz bude fungovať dobre. A vaše druhé použité heslo je teraz “1234”. Teraz ho môžete zmeniť stlačením tlačidla #, zadaním aktuálneho hesla a zadaním nového hesla.
Keď zadáte svoje heslo, systém porovná vaše zadané heslo s tým heslom, ktoré je uložené v EEPROM arduina. Ak dôjde k zhode, na LCD displeji sa zobrazí „prístup povolený“ a ak je heslo nesprávne, na displeji LCD sa zobrazí „Access Denied“ a bzučiak nepretržite nejaký čas pípne. A bzučiak tiež pípne raz, kedykoľvek užívateľ stlačí ľubovoľné tlačidlo na klávesnici.
Popis programovania
V kóde sme použili knižnicu klávesníc na prepojenie klávesnice s arduino.
#include
konštajtový byte RIADKY = 4; // štyri riadky const byte COLS = 4; // štyri stĺpce char hexaKeys = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', ' 8 ',' 9 ',' C '}, {' * ',' 0 ',' # ',' D '}}; byte rowPins = {3, 2, 1, 0}; // pripojenie k pinoutom riadkov bajtu klávesnice colPins = {4, 5, 6, 7}; // pripojenie k pinoutom stĺpca na klávesnici // inicializácia inštancie triedy NewKeypad Keyboard customKeypad = Keypad (makeKeymap (hexaKeys), rowPins, colPins, ROWS, COLS);
Zahrnuli sme knižnicu LCD pre rozhranie LCD a pre rozhranie EEPROM sme zahrnuli knižnicu EEPROM.h. A potom inicializované premenné a definované piny pre komponenty.
# definujte bzučiak 15 LiquidCrystal lcd (13,12,11,10,9,8); char heslo; char pass, pass1; int i = 0; char customKey = 0;
A potom sme inicializovali LCD a dali smer pinom vo funkcii nastavenia
void setup () {lcd.begin (16,2); pinMode (led, VÝSTUP); pinMode (bzučiak, VÝSTUP); pinMode (m11, VÝSTUP); pinMode (m12, VÝSTUP); lcd.print („elektronická“); lcd.setCursor (0,1); lcd.print ("Zámok klávesnice"); meškanie (2000); lcd.clear (); lcd.print ("Zadajte Ur Passkey:"); lcd.setCursor (0,1);
Potom sme si prečítali funkciu klávesnice v slučke
customKey = customKeypad.getKey (); if (customKey == '#') change (); if (customKey) {password = customKey; lcd.print (customKey); pípnutie (); }
A potom porovnajte heslo s uloženým heslom pomocou metódy porovnania reťazcov.
if (i == 4) {oneskorenie (200); pre (int j = 0; j <4; j ++) pass = EEPROM.read (j); if (! (strncmp (heslo, heslo, 4))) {digitalWrite (led, HIGH); pípnutie (); lcd.clear (); lcd.print ("Passkey Accepted"); meškanie (2000); lcd.setCursor (0,1); lcd.print ("#. Zmeniť prístupový kľúč"); meškanie (2000); lcd.clear (); lcd.print ("Zadajte prístupový kľúč:"); lcd.setCursor (0,1); i = 0; digitalWrite (led, LOW); }
Toto je funkcia zmeny hesla a funkcia pípnutia bzučiaka
void change () {int j = 0; lcd.clear (); lcd.print ("UR Current Passk"); lcd.setCursor (0,1); while (j <4) {char key = customKeypad.getKey (); if (kľúč) {pass1 = kľúč; lcd.print (kľúč); void beep () {digitalWrite (bzučiak, VYSOKÝ); oneskorenie (20); digitalWrite (bzučiak, LOW); }