Saugumas yra pagrindinis mūsų kasdienio gyvenimo rūpestis, o skaitmeninės spynos tapo svarbia šių apsaugos sistemų dalimi. Vienas iš tokių skaitmeninių kodų užraktų yra imituojamas šiame projekte naudojant „arduino“ plokštę ir matricos klaviatūrą.
Komponentai
- Arduino
- Klaviatūros modulis
- Buzeris
- 16x2 LCD ekranas
- BC547 tranzistorius
- Rezistorius (1k)
- Bandomoji Lenta
- Galia
- Jungiamieji laidai
Šioje grandinėje mes naudojome multipleksavimo techniką sąsajai su klaviatūra įvesti slaptažodį sistemoje. Čia mes naudojame 4x4 klaviatūrą, kurioje yra 16 klavišų. Jei norime naudoti 16 raktų, mums reikia 16 kontaktų, kad galėtume prisijungti prie „Arduino“, tačiau multipleksavimo technikoje turime naudoti tik 8 kaiščius, kad susietumėte 16 raktų. Taigi, tai yra protingas būdas susieti klaviatūros modulį.
Multipleksavimo technika: Multipleksavimo technika yra labai efektyvus būdas sumažinti kaiščių, naudojamų kartu su mikrovaldikliu, įvedimo, slaptažodžio ar numerių pateikimui, skaičių. Iš esmės ši technika naudojama dviem būdais - vienas yra eilių nuskaitymas, o kitas - storosios žarnos nuskaitymas. Tačiau šiame „arduino“ pagrįstame projekte mes naudojome klaviatūros biblioteką, todėl mums nereikia daryti šios sistemos multipleksavimo kodo. Norint pateikti įvestį, reikia naudoti tik klaviatūros biblioteką.
Grandinės aprašymas
Šio projekto grandinė yra labai paprasta, kurioje yra „Arduino“, klaviatūros modulis, garsinis signalas ir LCD ekranas. „Arduino“ valdo visus procesus, tokius kaip slaptažodžio formos klaviatūros modulio paėmimas, slaptažodžių palyginimas, garsinio signalo valdymas ir siuntimo būsena į LCD ekraną. Klaviatūra naudojama slaptažodžiui paimti. Buzzer yra naudojamas indikacijoms, o LCD naudojamas būsenai ar pranešimams rodyti. Buzeris valdomas naudojant NPN tranzistorių.
Klaviatūros modulio stulpelių kaiščiai yra tiesiogiai prijungti prie 4, 5, 6, 7 kaiščių ir eilutės kaiščiai yra prijungti prie 3, 2, 1, 0 arduino uno. 16x2 skystųjų kristalų ekranas yra sujungtas su „arduino“ 4 bitų režimu. Valdymo kaiščiai RS, RW ir En yra tiesiogiai prijungti prie „arduino“ kaiščių 13, GND ir 12. O duomenų kaištis D4-D7 yra prijungtas prie „arduino“ 11, 10, 9 ir 8 kaiščių. Ir vienas garsinis signalas yra prijungtas prie „arduino“ kaiščio 14 (A1) per BC547 NPN tranzistorių.
Dirba
Slaptažodžio išsaugojimui naudojome įmontuotą „Arduino“ EEPROM, todėl pirmą kartą vykdydami šią grandinę programa perskaitė šiukšlių duomenis iš įmontuoto „Arduino“ EEPROM ir palygino juos su įvesties slaptažodžiu ir LCD pranešė, kad prieiga uždrausta, nes slaptažodis nesutampa. Norėdami išspręsti šią problemą, turime pirmą kartą nustatyti numatytąjį slaptažodį naudodami žemiau pateiktą programavimą:
už (int j = 0; j <4; j ++) EEPROM. parašykite (j, j + 49);
lcd.print ("Enter Ur Passkey:"); lcd.setCursor (0,1); už (int j = 0; j <4; j ++) praeiti = EEPROM. perskaityti (j);
Tai nustatys „Arduino“ EEPROM slaptažodį „1234“.
Paleidus jį pirmą kartą, turime tai pašalinti iš programos ir vėl įrašyti kodą į „arduino“ ir paleisti. Dabar jūsų sistema veiks gerai. Antrą kartą naudojamas slaptažodis yra „1234“. Dabar galite jį pakeisti paspausdami mygtuką #, tada įveskite savo dabartinį slaptažodį ir įveskite naują slaptažodį.
Kai įvesite slaptažodį, sistema palygins jūsų įvestą slaptažodį su slaptažodžiu, saugomu „EEPROM“ arduino. Jei įvyko atitiktis, skystųjų kristalų ekrane bus rodoma „prieiga suteikta“, o jei slaptažodis neteisingas, skystųjų kristalų ekrane bus rodoma „prieiga uždrausta“ ir garsinis signalas kurį laiką nuolat pypsės. Kiekvieną kartą, kai vartotojas paspaudžia bet kurį klaviatūros mygtuką, garsinis signalas taip pat pypteli vieną kartą.
Programavimo aprašymas
Kode mes naudojome klaviatūros biblioteką, kad susietume klaviatūrą su „Arduino“.
# įtraukti
konstatavimo baitas ROWS = 4; // keturios eilutės konstatavimo baitas COLS = 4; // keturi stulpeliai char hexaKeys = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', ' 8 ',' 9 ',' C '}, {' * ',' 0 ',' # ',' D '}}; baitų eilutėSmeigtukai = {3, 2, 1, 0}; // prisijungti prie klaviatūros baito eilučių pinouts colPins = {4, 5, 6, 7}; // prisijungti prie klaviatūros stulpelių pinouts // inicijuoti klasės NewKeypad klaviatūros egzempliorių customKeypad = Klaviatūra (makeKeymap (hexaKeys), rowPins, colPins, ROWS, COLS);
Mes įtraukėme LCD biblioteką, skirtą LCD sąsajai, ir EEPROM sąsajai, įtraukėme biblioteką EEPROM.h., Tada inicializavome kintamuosius ir apibrėžtus komponentų kaiščius.
#define buzzer 15 „LiquidCrystal LCD“ (13,12,11,10,9,8); char slaptažodis; char pass, pass1; int i = 0; char customKey = 0;
Tada mes inicializavome LCD ir nurodome sąrankos sąrankos nustatymo funkcijos kryptį
negaliojanti sąranka () {lcd.begin (16,2); pinMode (led, OUTPUT); pinMode (zumeris, OUTPUT); pinMode (m11, OUTPUT); pinMode (m12, OUTPUT); „lcd.print“ („elektroninis“); lcd.setCursor (0,1); lcd.print („Klaviatūros užraktas“); vėlavimas (2000); lcd.clear (); lcd.print ("Enter Ur Passkey:"); lcd.setCursor (0,1);
Po to mes skaitėme klaviatūrą ciklo funkcija
customKey = customKeypad.getKey (); jei (customKey == '#') pasikeis (); if (customKey) {slaptažodis = customKey; lcd.print (customKey); pyptelėjimas (); }
Tada palyginkite slaptažodį su išsaugojimo slaptažodžiu naudodami eilutės palyginimo metodą.
if (i == 4) {delsimas (200); už (int j = 0; j <4; j ++) praeiti = EEPROM. perskaityti (j); if (! (strncmp (slaptažodis, leidimas, 4))) {digitalWrite (led, HIGH); pyptelėjimas (); lcd.clear (); lcd.print ("Priimtas raktas"); vėlavimas (2000); lcd.setCursor (0,1); lcd.print ("#. Keisti kodą"); vėlavimas (2000); lcd.clear (); lcd.print ("Įveskite kodą:"); lcd.setCursor (0,1); i = 0; digitalWrite (led, LOW); }
Tai slaptažodžio keitimo funkcija ir garsinio signalo pyptelėjimo funkcija
tuščias pokytis () {int j = 0; lcd.clear (); lcd.print („UR Current Passk“); lcd.setCursor (0,1); while (j <4) {char key = customKeypad.getKey (); if (raktas) {pass1 = raktas; lcd.print (raktas); negaliojantis pyptelėjimas () {digitalWrite (zumeris, AUKŠTAS); vėlavimas (20); digitalWrite (zumeris, LOW); }