Sigurnost je glavna briga u našem svakodnevnom životu, a digitalne brave postale su važan dio ovih sigurnosnih sustava. Jedna takva digitalna kodna brava oponaša se u ovom projektu pomoću arduino ploče i matrične tipkovnice.
Komponente
- Arduino
- Modul tipkovnice
- Zujalica
- LCD 16x2
- BC547 Tranzistor
- Otpornik (1k)
- Daska za kruh
- Vlast
- Spajanje žica
U ovom smo krugu koristili tehniku multipleksiranja za povezivanje tipkovnice za unos lozinke u sustav. Ovdje koristimo 4x4 tipkovnicu koja sadrži 16 tipki. Ako želimo koristiti 16 tipki, tada nam treba 16 pinova za povezivanje s arduinom, ali u tehnici multipleksiranja trebamo koristiti samo 8 pinova za povezivanje 16 tipki. Tako da je to pametan način povezivanja modula tipkovnice.
Tehnika multipleksiranja: Tehnika multipleksiranja vrlo je učinkovit način da se smanji broj pinova koji se koriste s mikrokontrolerom za unos ili lozinku ili brojeve. U osnovi se ova tehnika koristi na dva načina - jedan je skeniranje redova, a drugi skeniranje debelog crijeva. No, u ovom projektu koji se temelji na arduinu koristili smo knjižnicu tipkovnice pa ne trebamo izrađivati bilo koji multipleksni kod za ovaj sustav. Za unos podataka trebamo koristiti samo knjižnicu tipkovnice.
Opis kruga
Sklop ovog projekta je vrlo jednostavan koji sadrži Arduino, modul tipkovnice, zujalicu i LCD. Arduino kontrolira cjelovite procese poput uzimanja lozinke iz modula tipkovnice, usporedbe lozinki, vožnje zujalicom i slanja statusa na LCD zaslon. Tipkovnica se koristi za uzimanje lozinke. Zvučni signal koristi se za indikacije, a LCD služi za prikaz statusa ili poruka na njemu. Zujalica se pokreće pomoću NPN tranzistora.

Pribadače stupaca modula tipkovnice izravno su povezane na pinove 4, 5, 6, 7, a redne pribadače 3, 2, 1, 0 arduino uno. LCD 16x2 povezan je s arduinom u 4-bitnom načinu. Upravljački pin RS, RW i En izravno su povezani s arduino pinom 13, GND i 12. A podatkovni pin D4-D7 povezan je s pinovima 11, 10, 9 i 8 arduina. A jedan je zujalica povezan na pin 14 (A1) arduina kroz BC547 NPN tranzistor.
Radno
Koristili smo ugrađeni arduinoov EEPROM za spremanje lozinke, pa pri pokretanju ovog kruga prvi put program čita podatke o smeću iz ugrađenog arduinovog EEPROM-a i uspoređuje ih s ulaznom lozinkom i na LCD-u daje poruku koja je odbijena jer lozinka ne odgovara. Za rješavanje ovog problema moramo prvi put postaviti zadanu lozinku pomoću dolje navedenog programa:
za (int j = 0; j <4; j ++) EEPROM.write (j, j + 49);
lcd.print ("Unesite pristupnu šifru:"); lcd.setCursor (0,1); for (int j = 0; j <4; j ++) pass = EEPROM.read (j);
Ovo će postaviti lozinku "1234" na EEPROM od Arduino.
Nakon prvog pokretanja to moramo ukloniti iz programa i ponovo napisati kod u arduino i pokrenuti. Sada će vaš sustav raditi u redu. I vaša je druga upotrebljena lozinka sada "1234". Sada ga možete promijeniti pritiskom na tipku #, a zatim unesite trenutnu lozinku, a zatim unesite novu lozinku.
Kada unesete lozinku, sustav će je usporediti s lozinkom koja je pohranjena u EEPROM-u arduina. Ako se dogodi podudaranje, na LCD-u će se prikazati "pristup odobren", a ako je lozinka pogrešna, tada će LCD "Pristup odbijen" i zujalo će neprestano oglašavati neko vrijeme. Zujalica se također oglašava jedanput kad god korisnik pritisne bilo koju tipku s tipkovnice.
Opis programiranja
U kodu smo koristili knjižnicu tipkovnice za povezivanje tipkovnice s arduinom.
#include
const byte ROWS = 4; // četiri reda const byte COLS = 4; // četiri stupca char hexaKeys = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', ' 8 ',' 9 ',' C '}, {' * ',' 0 ',' # ',' D '}}; bajt rowPins = {3, 2, 1, 0}; // povezivanje s izvodima reda bajta tipkovnice colPins = {4, 5, 6, 7}; // povezivanje s pinoutima stupaca na tipkovnici // inicijalizacija instance klase NewKeypad Tipkovnica customKeypad = Tipkovnica (makeKeymap (hexaKeys), rowPins, colPins, ROWS, COLS);
Uključili smo LCD knjižnicu za povezivanje LCD-a, a za povezivanje EEPROM-a uključili smo biblioteku EEPROM.h., A zatim inicijalizirali varijablu i definirali pinove za komponente.
#define zujalica 15 LiquidCrystal lcd (13,12,11,10,9,8); char lozinka; char pass, pass1; int i = 0; char customKey = 0;
A zatim smo inicijalizirali LCD i dali smjer pinovima u funkciji postavljanja
void setup () {lcd.begin (16,2); pinMode (led, IZLAZ); pinMode (zujalica, IZLAZ); pinMode (m11, IZLAZ); pinMode (m12, IZLAZ); lcd.print ("Elektronički"); lcd.setCursor (0,1); lcd.print ("Zaključavanje tipkovnice"); kašnjenje (2000); lcd.clear (); lcd.print ("Unesite pristupnu šifru:"); lcd.setCursor (0,1);
Nakon toga čitamo tipkovnicu u funkciji petlje
customKey = customKeypad.getKey (); if (customKey == '#') change (); if (customKey) {lozinka = customKey; lcd.print (customKey); bip (); }
A zatim usporedite lozinku s lozinkom za spremanje pomoću metode usporedbe niza.
if (i == 4) {kašnjenje (200); for (int j = 0; j <4; j ++) pass = EEPROM.read (j); if (! (strncmp (lozinka, propusnica, 4))) {digitalWrite (led, HIGH); bip (); lcd.clear (); lcd.print ("Passkey Accepted"); kašnjenje (2000); lcd.setCursor (0,1); lcd.print ("#. Promijeni lozinku"); kašnjenje (2000); lcd.clear (); lcd.print ("Unesite lozinku:"); lcd.setCursor (0,1); i = 0; digitalWrite (led, LOW); }
Ovo je funkcija promjene lozinke i zvučni signal
promjena praznine () {int j = 0; lcd.clear (); lcd.print ("UR Current Passk"); lcd.setCursor (0,1); while (j <4) {char key = customKeypad.getKey (); if (ključ) {pass1 = ključ; lcd.print (ključ); void beep () {digitalWrite (zujalica, HIGH); kašnjenje (20); digitalWrite (zujalica, LOW); }
