A biztonság a mindennapi életünkben komoly gondot jelent, és a digitális zárak e biztonsági rendszerek fontos részévé váltak. Az egyik ilyen digitális kódzárat imitálják ebben a projektben az arduino tábla és a mátrix billentyűzet segítségével.
Alkatrészek
- Arduino
- Kezelő modul
- Berregő
- 16x2 LCD
- BC547 tranzisztor
- Ellenállás (1k)
- Kenyérlap
- Erő
- Csatlakozó vezetékek
Ebben az áramkörben multiplexelési technikát alkalmaztunk a kezelő interfészéhez a jelszó beviteléhez a rendszerbe. Itt 4x4 billentyűzetet használunk, amely 16 billentyűt tartalmaz. Ha 16 kulcsot akarunk használni, akkor 16 tűre van szükségünk az arduino-hoz való csatlakozáshoz, de a multiplexelési technikában csak 8 tűt kell használnunk a 16 kulcs összekapcsolásához. Tehát ez egy intelligens mód a kezelő modul összekapcsolására.
Multiplexelési technika: A multiplexelési technika nagyon hatékony módja annak, hogy csökkentse a mikrovezérlővel a bemenet, jelszó vagy számok megadásához használt csapok számát. Alapvetően ezt a technikát kétféleképpen használják - az egyik a soros, a másik a vastagbél-vizsgálat. De ebben az arduino alapú projektben a billentyűzet könyvtárat használtuk, így nem kell multiplexelő kódot készítenünk ehhez a rendszerhez. Csak a billentyűzet könyvtárát kell használnunk a bemenet biztosításához.
Áramkör leírása
A projekt áramköre nagyon egyszerű, amely Arduino-t, kezelő modult, hangjelzőt és LCD-t tartalmaz. Az Arduino ellenőrzi a teljes folyamatokat, mint például a jelszó űrlapos kezelőmodul felvétele, a jelszavak összehasonlítása, a hangjelzés és az állapot küldés az LCD kijelzőre. A kezelő a jelszó megadására szolgál. A hangjelző a jelzésekre, az LCD pedig az állapot vagy az üzenetek megjelenítésére szolgál. A hangjelzőt NPN tranzisztor segítségével hajtják.
A kezelő modul oszlopcsapjai közvetlenül csatlakoznak a 4, 5, 6, 7 érintkezőkhöz, a soros csapok pedig az arduino uno 3, 2, 1, 0 csatlakozóihoz. Egy 16x2-es LCD-t 4-bites módban csatlakoztatnak az arduino-hoz. Az RS, RW és En vezérlőcsapok közvetlenül kapcsolódnak a 13, GND és 12 arduino csapokhoz. A D4-D7 adatcsatlakozók pedig az arduino 11, 10, 9 és 8 csapjaihoz vannak csatlakoztatva. És egy hangjelző csatlakozik az arduino 14. érintkezőjéhez (A1) egy BC547 NPN tranzisztoron keresztül.
Dolgozó
A beépített arduino EEPROM-ját használtuk a jelszó mentésére, így amikor ezt az áramkört először futtatjuk, a program beolvasta a beépített arduino EEPROM-jának szemétadatait, és összehasonlította azokat a bemeneti jelszóval, és üzenetet adott az LCD-n, amely hozzáférés megtagadva, mert a jelszó nem egyezik. A probléma megoldásához először be kell állítanunk egy alapértelmezett jelszót az alább megadott programozással:
for (int j = 0; j <4; j ++) EEPROM.írja (j, j + 49);
lcd.print ("Írja be az Ur jelszót:"); lcd.setCursor (0,1); for (int j = 0; j <4; j ++) pass = EEPROM.olvasott (j);
Ez az „1234” jelszót állítja az Arduino EEPROM-jára.
Az első futtatás után el kell távolítanunk ezt a programból, és újra be kell írnunk a kódot az arduino-ba, és futtassuk. Most a rendszere rendben fog működni. Másodszor használt jelszó már „1234”. Most megváltoztathatja a # gomb megnyomásával, majd adja meg jelenlegi jelszavát, majd írja be az új jelszót.
Amikor megadja a jelszavát, a rendszer összehasonlítja a megadott jelszót azzal a jelszóval, amelyet az arduino EEPROM-ban tárol. Ha egyezés történik, az LCD-n a „hozzáférés engedélyezve” felirat jelenik meg, és ha a jelszó nem megfelelő, akkor az LCD „Hozzáférés megtagadva” feliratú, és a hangjelző egy ideig folyamatosan sípol. A hangjelző pedig egyszeri hangjelzést ad, amikor a felhasználó bármelyik gombot megnyomja a kezelőn.
Programozás leírása
A kódban a billentyűzet könyvtárát használtuk a billentyűzet és az arduino összekapcsolására.
#include
konst byte ROWS = 4; // négy sor const byte COLS = 4; // négy oszlop char hexaKeys = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', ' 8 ',' 9 ',' C '}, {' * ',' 0 ',' # ',' D '}}; byte rowPins = {3, 2, 1, 0}; // csatlakozzon a billentyűzet bájt sor pinoutjaihoz colPins = {4, 5, 6, 7}; // csatlakozás a billentyűzet oszlopos pinoutjaihoz // inicializálja az osztály egyik példányát NewKeypad Keypad customKeypad = Billentyűzet (makeKeymap (hexaKeys), rowPins, colPins, ROWS, COLS);
Bevettük az LCD interfészt és az EEPROM interfészeket tartalmazó LCD könyvtárat, az EEPROM.h könyvtárat, majd inicializáltuk az alkatrészek változó és definiált csapjait.
#define buzzer 15 LiquidCrystal lcd (13,12,11,10,9,8); char jelszó; char pass, pass1; int i = 0; char customKey = 0;
Ezután inicializáltuk az LCD-t, és irányt adunk a beállítási funkcióban lévő csapoknak
void setup () {lcd.begin (16,2); pinMode (led, OUTPUT); pinMode (hangjelző, OUTPUT); pinMode (m11, OUTPUT); pinMode (m12, OUTPUT); lcd.print ("Elektronikus"); lcd.setCursor (0,1); lcd.print ("Billentyűzár"); késés (2000); lcd.clear (); lcd.print ("Írja be az Ur jelszót:"); lcd.setCursor (0,1);
Ezek után a kezelőt ciklusban olvassuk
customKey = customKeypad.getKey (); ha (customKey == '#') változás (); if (customKey) {jelszó = customKey; lcd.print (customKey); csipogás (); }
Ezután hasonlítsa össze a jelszót a mentési jelszóval a string összehasonlító módszerrel.
if (i == 4) {késés (200); for (int j = 0; j <4; j ++) pass = EEPROM.olvasott (j); if (! (strncmp (jelszó, átadás, 4))) {digitalWrite (led, HIGH); csipogás (); lcd.clear (); lcd.print ("Jelszó elfogadva"); késés (2000); lcd.setCursor (0,1); lcd.print ("#. Jelszó módosítása"); késés (2000); lcd.clear (); lcd.print ("Enter Passkey:"); lcd.setCursor (0,1); i = 0; digitalWrite (led, LOW); }
Ez a jelszóváltoztatás és a hangjelzés funkció
érvénytelen változás () {int j = 0; lcd.clear (); lcd.print ("UR Current Passk"); lcd.setCursor (0,1); while (j <4) {char kulcs = customKeypad.getKey (); if (kulcs) {pass1 = kulcs; lcd.print (kulcs); void beep () {digitalWrite (hangjelző, HIGH); késés (20); digitalWrite (hangjelző, LOW); }