Varnost je v našem vsakdanjem življenju glavna skrb in digitalne ključavnice so postale pomemben del teh varnostnih sistemov. Ena taka digitalna kodna ključavnica je v tem projektu imitirana z uporabo arduino plošče in matrične tipkovnice.
Komponente
- Arduino
- Modul tipkovnice
- Zvočni signal
- 16x2 LCD
- Tranzistor BC547
- Upor (1k)
- Deska za kruh
- Moč
- Priključne žice
V tem vezju smo uporabili tehniko multipleksiranja za vmesništvo tipkovnice za vnos gesla v sistem. Tu uporabljamo tipkovnico 4x4, ki vsebuje 16 tipk. Če želimo uporabiti 16 tipk, potem potrebujemo 16 pin za povezavo z arduino, v tehniki multipleksiranja pa moramo uporabiti samo 8 pin za povezovanje 16 tipk. Tako je to pameten način za povezovanje modula s tipkovnico.
Tehnika multipleksiranja: Tehnika multipleksiranja je zelo učinkovit način za zmanjšanje števila nožic, ki se uporabljajo z mikrokrmilnikom za vnos ali geslo ali številke. V bistvu se ta tehnika uporablja na dva načina - eden je skeniranje vrstic, drugi pa skeniranje debelega črevesa. Toda v tem projektu, ki temelji na arduinu, smo uporabili knjižnico tipkovnice, zato za ta sistem ni treba izdelati nobene kode za multipleksiranje. Za vnos podatkov moramo uporabiti le knjižnico tipkovnice.
Opis vezja
Vezje tega projekta je zelo preprosto in vsebuje Arduino, modul tipkovnice, brenčalo in LCD. Arduino nadzoruje celotne procese, kot so zajem gesla iz modula tipkovnice, primerjava gesel, vožnja z brenčalom in pošiljanje stanja na LCD zaslon. Tipkovnica se uporablja za vnos gesla. Zvočni signal se uporablja za indikacije, LCD pa za prikaz stanja ali sporočil na njem. Zvočni signal se poganja z uporabo NPN tranzistorja.
Zatiči stolpcev modula tipkovnice so neposredno priključeni na zatiče 4, 5, 6, 7, vrstni zatiči pa na 3, 2, 1, 0 arduino uno. LCD 16x2 je povezan z arduinom v 4-bitnem načinu. Krmilni zatiči RS, RW in En so neposredno povezani z arduino zatiči 13, GND in 12. In podatkovni zatič D4-D7 je povezan z zatiči 11, 10, 9 in 8 arduina. In en zvočni signal je povezan z zatičem 14 (A1) arduina prek tranzistorja BC547 NPN.
Delo
Za shranjevanje gesla smo uporabili vgrajeni Arduino-ov EEPROM, zato, ko prvič zaženemo to vezje, preberemo podatke o smeti iz vgrajenega Arduinovega EEPROM-a in jih primerjamo z vhodnim geslom ter na LCD-prikazovalniku pošljemo sporočilo Dostop zavrnjen, ker se geslo ne ujema. Za rešitev te težave moramo prvič nastaviti privzeto geslo s pomočjo spodnjega programiranja:
za (int j = 0; j <4; j ++) EEPROM.write (j, j + 49);
lcd.print ("Vnesite geslo za ur:"); lcd.setCursor (0,1); for (int j = 0; j <4; j ++) pass = EEPROM.read (j);
S tem boste nastavili geslo »1234« na EEPROM za Arduino.
Po prvem zagonu moramo to odstraniti iz programa in ponovno zapisati kodo v arduino in zagnati. Zdaj bo vaš sistem dobro deloval. In že drugič uporabljeno geslo je zdaj "1234". Zdaj ga lahko spremenite s pritiskom na gumb #, nato vnesite trenutno geslo in nato novo geslo.
Ko boste vnesli geslo, bo sistem primerjal vaše geslo z geslom, ki je shranjeno v EEPROM-u arduino. Če pride do ujemanja, bo na LCD-prikazovalniku prikazano »dostop odobren« in če je geslo napačno, bo na LCD-prikazovalniku nekaj časa neprekinjeno piskalo. Zvočni signal se oglasi tudi enkrat, ko uporabnik pritisne kateri koli gumb s tipkovnice.
Opis programiranja
V kodi smo uporabili knjižnico tipkovnice za povezovanje tipkovnice z arduino.
#include
const byte ROWS = 4; // štiri vrstice const byte COLS = 4; // štirje stolpci char hexaKeys = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', ' 8 ',' 9 ',' C '}, {' * ',' 0 ',' # ',' D '}}; bajt rowPins = {3, 2, 1, 0}; // povežemo se z vrsticami vrstic bajta tipkovnice colPins = {4, 5, 6, 7}; // povežemo se z izrezki stolpcev tipkovnice // inicializiramo primerek razreda NewKeypad Tipkovnica customKeypad = Tipkovnica (makeKeymap (hexaKeys), rowPins, colPins, ROWS, COLS);
Vključili smo knjižnico LCD za povezovanje LCD-jev in za povezovanje EEPROM-a smo vključili knjižnico EEPROM.h.
#define brenčalo 15 LiquidCrystal lcd (13,12,11,10,9,8); char geslo; char pass, pass1; int i = 0; char customKey = 0;
Nato smo inicializirali LCD in usmerjevali nožice v nastavitveni funkciji
void setup () {lcd.begin (16,2); pinMode (led, IZHOD); pinMode (brenčalo, IZHOD); pinMode (m11, IZHOD); pinMode (m12, IZHOD); lcd.print ("Elektronski"); lcd.setCursor (0,1); lcd.print ("Zaklepanje tipkovnice"); zamuda (2000); lcd.clear (); lcd.print ("Vnesite geslo za ur:"); lcd.setCursor (0,1);
Po tem preberemo tipkovnico v funkciji zanke
customKey = customKeypad.getKey (); if (customKey == '#') change (); if (customKey) {geslo = customKey; lcd.print (customKey); pisk (); }
In nato primerjajte geslo z geslom za shranjevanje z uporabo metode primerjave nizov.
if (i == 4) {zamuda (200); for (int j = 0; j <4; j ++) pass = EEPROM.read (j); if (! (strncmp (geslo, prepustnica, 4))) {digitalWrite (led, HIGH); pisk (); lcd.clear (); lcd.print ("Geslo sprejeto"); zamuda (2000); lcd.setCursor (0,1); lcd.print ("#. Spremeni geslo"); zamuda (2000); lcd.clear (); lcd.print ("Vnesite geslo:"); lcd.setCursor (0,1); i = 0; digitalWrite (led, LOW); }
To je funkcija spremembe gesla in zvočni signal
sprememba praznine () {int j = 0; lcd.clear (); lcd.print ("UR Current Passk"); lcd.setCursor (0,1); while (j <4) {char key = customKeypad.getKey (); if (key) {pass1 = key; lcd.print (ključ); void beep () {digitalWrite (brenčalo, VISOKO); zamuda (20); digitalWrite (brenčalo, LOW); }