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. Există multe tipuri de tehnologii disponibile pentru a ne asigura locul, cum ar fi sistemele de securitate bazate pe PIR, sistemul de securitate bazat pe RFID, alarmele de securitate laser, sistemele bio-matrice etc. Chiar și acum, există încuietori digitale care pot fi acționate folosind telefoanele noastre inteligente, înseamnă mai mult nevoie pentru a păstra chei diferite, doar un singur telefon inteligent poate acționa toate încuietorile, acest concept se bazează pe Internetul obiectelor.
În acest proiect, am explicat o simplă blocare electronică a codului utilizând 8051 Microcontorller, care poate fi deblocată doar de un cod predefinit, dacă introducem un cod greșit, sistemul alertează prin sirena sonorului. Am creat deja o blocare digitală folosind Arduino.
Explicație de lucru:
Acest sistem conține în principal microcontroler AT89S52, modul de tastatură, buzzer și LCD. Microcontrolerul At89s52 controlează procesele complete, cum ar fi preluarea modulului de tastatură cu parolă, compararea parolelor predefinite, conducerea buzzerului și trimiterea stării pe ecranul LCD. Tastatura este utilizată pentru introducerea parolei în microcontroler. Buzzer-ul este utilizat pentru indicarea unei parole greșite și LCD-ul este utilizat pentru afișarea stării sau a mesajelor pe acesta. Buzzer are un driver încorporat utilizând un tranzistor NPN.
Componente:
- Microcontroler 8051 (AT89S52)
- Modul tastatură 4X4
- Buzzer
- 16x2 LCD
- Rezistor (1k, 10k)
- Rezistență pullup (10K)
- Condensator (10uf)
- Led roșu
- Placă de pâine
- IC 7805
- 11,0592 MHz Cristal
- Alimentare electrică
- Conectarea firelor
Preluarea de date de la matricea tastaturii 4X4 utilizând tehnica de multiplexare:
În acest circuit am folosit tehnica de multiplexare pentru a interfața tastatura cu microcontrolerul 8051, pentru introducerea parolei în sistem. Aici folosim o tastatură 4x4 care are 16 taste. Dacă dorim să folosim 16 taste, atunci avem nevoie de 16 pini pentru conectarea la 89s52, dar în tehnica de multiplexare trebuie să folosim doar 8 pini pentru interfața 16 taste. Deci, este un mod inteligent de a interfața modulul tastaturii.
Tehnica multiplexării este o modalitate foarte eficientă de a reduce numărul de pini folosiți cu microcontrolerul pentru furnizarea intrării sau a parolei. Practic, această tehnică este utilizată în două moduri - unul este scanarea pe rând, iar celălalt este scanarea pe coloane.
Aici vom explica scanarea pe rând:
Mai întâi trebuie să definim 8 pini pentru modulul tastaturii. În care primii 4 pini sunt coloană și ultimii 4 pini sunt rânduri.
Pentru scanarea rândurilor trebuie să oferim date sau semnal pinilor coloanei și să citim aceste date sau semnal de la pinul rândului. Acum, să presupunem că dăm mai jos date pinilor coloanei:
C1 = 0;
C2 = 1;
C3 = 1;
C4 = 1;
Și citim aceste date la pinii de rând (în mod implicit pinii de rând sunt HIGH din cauza rezistenței de tragere).
Dacă utilizatorul apasă tasta „1”, atunci R1 se schimbă la HIGH la LOW înseamnă R1 = 0; iar controlerul înțelege că utilizatorul a apăsat tasta „1”. Și va imprima „1” pe ecranul LCD și va stoca „1” în matrice. Deci, această schimbare HIGH la LOW la R1, este principalul lucru prin care controlerul înțelege că a fost apăsată o anumită tastă, corespunzătoare coloanei 1.
Acum, dacă utilizatorul apasă tasta „2”, atunci R1 rămâne la HIGH, deoarece C1 și R1 sunt deja la HIGH. Prin urmare, nu va exista nicio modificare, înseamnă că microcontrolerul înțelege că nu a fost apăsat nimic în coloana unu. Și, de asemenea, acest principiu merge pentru toate celelalte pini. Deci, în acest pas, controlerul așteaptă doar tastele din coloana unu: „1”, „4”, „7” și „*”.
Acum, dacă vrem să urmărim tastele din alte coloane (cum ar fi în col 2), atunci trebuie să schimbăm datele la pinii coloanelor:
C1 = 1;
C2 = 0;
C3 = 1;
C4 = 1;
Acest controler de timp așteaptă doar tastele din coloana a doua: '2', '5', '8' și '0', deoarece schimbarea (HIGH la LOW) are loc doar atunci când coloanele două taste vor fi apăsate. Dacă apăsăm orice tastă în col 1, 3 sau 4, atunci nu va avea loc nicio modificare, deoarece aceste coloane sunt la HIGH, iar rândurile sunt deja la HIGH.
Deci, de asemenea, tastele din coloanele C3 și C4 pot fi de asemenea urmărite făcându-le 0, la un moment dat. Verificați aici explicația detaliată: Interfața tastaturii cu 8051. De asemenea, parcurgeți secțiunea Cod de mai jos pentru a înțelege corect logica.
Explicația circuitului:
Diagrama circuitului pentru această blocare digitală folosind 8051 a fost prezentată mai jos și poate fi ușor de înțeles. Pinii coloanei modulului tastaturii sunt conectați direct la pinul P0.0, P0.1, P0.2, P0.3 și pinii Row sunt conectați la P0.4, P0.5, P0.6, P0.7 din portul microcontrolerului 89s52 0 Un LCD 16x2 este conectat cu microcontrolerul 89s52 în modul pe 4 biți. Pinul de control RS, RW și En sunt conectate direct la pinul P1.0, GND și P1.2. Și pinul de date D4-D7 este conectat la pinii P1.4, P1.5, P1.6 și P1.7 din 89s52. Și un buzzer este conectat la pinul P2.6 printr-un rezistor.
Explicația programului:
Am folosit o parolă predefinită în program, această parolă poate fi definită de utilizator în codul de mai jos. Când utilizatorul introduce o parolă în sistem, apoi sistemul compară parola introdusă de utilizator cu parola stocată sau predefinită în Codul de program. Dacă apare o potrivire, LCD va afișa „Access Grated” și dacă parola nu se potrivește, atunci LCD va afișa „Access Denied” și buzzer-ul va emite un sunet continuu de ceva timp. Aici am folosit biblioteca string.h. Prin utilizarea acestei biblioteci putem compara sau potrivi două șiruri, utilizând funcția „strncmp”.
În program, în primul rând includem fișierul antet și definește pinii variabili și de intrare și ieșire pentru tastatură și LCD.
#include
A fost creată funcția pentru crearea întârzierii de 1 secundă, împreună cu unele funcții LCD, cum ar fi inițializarea LCD, imprimarea șirului, pentru comenzi etc. Le puteți găsi cu ușurință în Cod. Verificați acest articol pentru interfața LCD cu 8051 și funcțiile sale.
După aceasta, în programul principal am inițializat ecranul LCD și apoi citim intrarea de la tastatură folosind funcția tastatură () și stochează tastele de intrare într-o matrice și apoi o comparăm din datele matricei predefinite folosind strncmp.
void main () {buzzer = 1; lcd_init (); lcdstring („Cod electronic”); lcdcmd (0xc0); lcdstring („Sistem de blocare”); întârziere (400); lcdcmd (1); lcdstring ("Circuit Digest"); întârziere (400); în timp ce (1) {i = 0; tastatura (); if (strncmp (pass, "4201", 4) == 0)
Dacă parola introdusă este potrivită, atunci funcția accept () se numește:
void accept () {lcdcmd (1); lcdstring („Bun venit”); lcdcmd (192); lcdstring („Acceptă parola”); întârziere (200); }
Și dacă parola este greșită, atunci funcția wrong () se numește:
void wrong () {buzzer = 0; lcdcmd (1); lcdstring („Cheie de acces greșită”); lcdcmd (192); lcdstring („Încercați din nou PLZ”); întârziere (200); buzzer = 1; }
Verificați funcția tastaturii de mai jos în codul care citește modulul tastaturii formularului de intrare.