Securitatea este o preocupare majoră în viața noastră de zi cu zi, iar încuietorile digitale au devenit o parte importantă a acestor sisteme de securitate. Un astfel de blocaj de cod digital este imitat în acest proiect folosind placa arduino și o tastatură matricială.
Componente
- Arduino
- Modulul tastaturii
- Buzzer
- 16x2 LCD
- BC547 Tranzistor
- Rezistor (1k)
- Placă de pâine
- Putere
- Conectarea firelor
În acest circuit am folosit tehnica de multiplexare pentru a interfața tastatura pentru introducerea parolei în sistem. Aici folosim tastatura 4x4 care conține 16 taste. Dacă dorim să folosim 16 taste, atunci avem nevoie de 16 pini pentru conectarea la arduino, dar în tehnica de multiplexare trebuie să folosim doar 8 pini pentru interfața a 16 taste. Deci, este un mod inteligent de interfață a unui modul de tastatură.
Tehnica de multiplexare: Tehnica de multiplexare este o modalitate foarte eficientă de a reduce numărul de pini folosiți cu microcontrolerul pentru furnizarea de intrare sau parolă sau numere. Practic, această tehnică este utilizată în două moduri - unul este scanarea pe rând, iar celălalt este scanarea colonului. Dar în acest proiect bazat pe arduino am folosit biblioteca tastaturii, deci nu este nevoie să facem niciun cod de multiplexare pentru acest sistem. Trebuie să folosim doar biblioteca tastaturii pentru a furniza intrări.
Descrierea circuitului
Circuitul acestui proiect este foarte simplu, care conține Arduino, modul de tastatură, buzzer și LCD. Arduino controlează procesele complete, cum ar fi preluarea modulului de tastatură din formularul de parolă, compararea parolelor, conducerea buzzerului și trimiterea stării pe ecranul LCD. Tastatura este utilizată pentru preluarea parolei. Buzzerul este utilizat pentru indicații, iar ecranul LCD este utilizat pentru afișarea stării sau a mesajelor pe acesta. Buzzerul este acționat folosind un tranzistor NPN.
Pinii coloanei modulului tastaturii sunt conectați direct la pinul 4, 5, 6, 7, iar pinii Row sunt conectați la 3, 2, 1, 0 din arduino uno. Un LCD 16x2 este conectat cu arduino în modul pe 4 biți. Pinii de control RS, RW și En sunt conectați direct la pinul arduino 13, GND și 12. Și pinul de date D4-D7 este conectat la pinii 11, 10, 9 și 8 din arduino. Și un buzzer este conectat la pinul 14 (A1) al arduino printr-un tranzistor BC547 NPN.
Lucru
Am folosit EEPROM-ul arduino încorporat pentru a salva parola, așa că atunci când rulăm acest circuit pentru prima dată, citim datele de gunoi din EEPROM-ul arduino încorporat și le comparăm cu parola de intrare și dăm un mesaj pe ecranul LCD care este denegat de acces deoarece parola nu se potrivește. Pentru rezolvarea acestei probleme, trebuie să setăm o parolă implicită pentru prima dată utilizând programarea dată mai jos:
pentru (int j = 0; j <4; j ++) EEPROM.write (j, j + 49);
lcd.print ("Introduceți cheia de acces Ur:"); lcd.setCursor (0,1); for (int j = 0; j <4; j ++) pass = EEPROM.read (j);
Aceasta va seta parola „1234” la EEPROM din Arduino.
După ce îl rulăm prima dată, trebuie să eliminăm acest lucru din program și să scriem din nou codul în arduino și să rulăm. Acum sistemul dvs. va funcționa bine. Și pentru a doua oară parola utilizată este acum „1234”. Acum îl puteți modifica apăsând butonul # și apoi introduceți parola curentă și apoi introduceți noua parolă.
Când veți introduce parola, sistemul vă va compara parola introdusă cu acea parolă stocată în EEPROM din arduino. Dacă se întâmplă o potrivire, LCD va afișa „accesul acordat”, iar dacă parola este greșită, atunci LCD va „Acces refuzat” și buzzerul va emite continuu un timp. Și buzzerul sună, de asemenea, o singură dată, de fiecare dată când utilizatorul va apăsa orice buton de pe tastatură.
Descrierea programării
În cod, am folosit biblioteca tastaturii pentru interfața tastaturii cu arduino.
#include
octet const ROWS = 4; // patru rânduri const octet COLS = 4; // patru coloane char hexaKeys = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', ' 8 ',' 9 ',' C '}, {' * ',' 0 ',' # ',' D '}}; octet rândPins = {3, 2, 1, 0}; // conectați-vă la pinouturile rândului octetului tastaturii colPins = {4, 5, 6, 7}; // conectați-vă la pinouturile coloanei tastaturii // inițializați o instanță din clasa NewKeypad Keypad customKeypad = Keypad (makeKeymap (hexaKeys), rowPins, colPins, ROWS, COLS);
Am inclus o bibliotecă LCD pentru interfața LCD și pentru interfațarea EEPROM am inclus biblioteca EEPROM.h., Apoi am inițializat pinii variabili și definiți pentru componente.
#define buzzer 15 LiquidCrystal lcd (13,12,11,10,9,8); parola char; char pass, pass1; int i = 0; char customKey = 0;
Și apoi am inițializat ecranul LCD și dăm direcția pinilor în funcția de configurare
void setup () {lcd.begin (16,2); pinMode (led, OUTPUT); pinMode (buzzer, OUTPUT); pinMode (m11, OUTPUT); pinMode (m12, OUTPUT); lcd.print („Electronic”); lcd.setCursor (0,1); lcd.print („Blocarea tastaturii”); întârziere (2000); lcd.clear (); lcd.print ("Introduceți cheia de acces Ur:"); lcd.setCursor (0,1);
După aceasta citim funcția tastatură în buclă
customKey = customKeypad.getKey (); if (customKey == '#') change (); if (customKey) {parolă = customKey; lcd.print (customKey); beep (); }
Și apoi comparați parola cu parola de salvare utilizând metoda de comparare a șirurilor.
if (i == 4) {întârziere (200); for (int j = 0; j <4; j ++) pass = EEPROM.read (j); if (! (strncmp (parola, trecere, 4))) {digitalWrite (led, HIGH); beep (); lcd.clear (); lcd.print („Parolă acceptată”); întârziere (2000); lcd.setCursor (0,1); lcd.print ("#. Schimbați cheia de acces"); întârziere (2000); lcd.clear (); lcd.print ("Introduceți cheia de acces:"); lcd.setCursor (0,1); i = 0; digitalWrite (led, LOW); }
Aceasta este funcția de schimbare a parolei și funcția sonor sonor
void change () {int j = 0; lcd.clear (); lcd.print („UR Current Passk”); lcd.setCursor (0,1); while (j <4) {char key = customKeypad.getKey (); if (cheie) {pass1 = cheie; lcd.print (cheie); void beep () {digitalWrite (buzzer, HIGH); întârziere (20); digitalWrite (buzzer, LOW); }