Sikkerhet er en stor bekymring i vårt daglige liv, og digitale låser har blitt en viktig del av disse sikkerhetssystemene. En slik digital kodelås imiteres i dette prosjektet ved hjelp av arduino-kort og et matrisetastatur.
Komponenter
- Arduino
- Tastaturmodul
- Summer
- 16x2 LCD
- BC547 Transistor
- Motstand (1k)
- Brettbrett
- Makt
- Koble ledninger
I denne kretsen har vi brukt multipleksingsteknikk for å grensesnitt tastatur for å skrive inn passordet i systemet. Her bruker vi 4x4 tastatur som inneholder 16 nøkler. Hvis vi vil bruke 16 nøkler, trenger vi 16 pin for tilkobling til arduino, men i multipleksingsteknikk trenger vi bare å bruke 8 pin for å grensesnitt 16 nøkler. Slik at det er en smart måte å grensesnitt på en tastaturmodul.
Multiplexing Technique: Multiplexing teknikk er en veldig effektiv måte å redusere antall pinner som brukes med mikrokontrolleren for å gi input eller passord eller tall. I utgangspunktet brukes denne teknikken på to måter - den ene er radeskanning og den andre er kolonskanning. Men i dette arduino-baserte prosjektet har vi brukt tastaturbiblioteket, slik at vi ikke trenger å lage noen multiplexing-kode for dette systemet. Vi trenger bare å bruke tastaturbiblioteket for å levere input.
Kretsbeskrivelse
Kretsløpet for dette prosjektet er veldig enkelt som inneholder Arduino, tastaturmodul, summer og LCD. Arduino kontrollerer de komplette prosessene som å ta passord fra tastaturmodulen, sammenligne passord, kjøre summer og sende status til LCD-skjerm. Tastaturet brukes til å ta passord. Buzzer brukes til indikasjoner og LCD brukes til å vise status eller meldinger på den. Summer drives av en NPN-transistor.
Tastaturmodulens kolonnepinner er direkte koblet til pin 4, 5, 6, 7 og Row pins er koblet til 3, 2, 1, 0 av arduino uno. En 16x2 LCD er koblet til arduino i 4-biters modus. Kontrollpinne RS, RW og En er direkte koblet til arduino pinne 13, GND og 12. Og datapinne D4-D7 er koblet til pinne 11, 10, 9 og 8 på arduino. Og en summer er koblet til pinne 14 (A1) i arduino gjennom en BC547 NPN-transistor.
Jobber
Vi har brukt innebygd arduino's EEPROM for å lagre passord, så når vi kjører dette kretsløpet, leser du søppeldata fra innebygd arduino's EEPROM og sammenligner det med inngangspassordet og gir en melding på LCD som er Access Denied fordi passordet ikke stemmer overens. For å løse dette problemet må vi angi et standardpassord for første gang ved å bruke programmeringen nedenfor:
for (int j = 0; j <4; j ++) EEPROM.write (j, j + 49);
lcd.print ("Enter Ur Passkey:"); lcd.setCursor (0,1); for (int j = 0; j <4; j ++) pass = EEPROM.read (j);
Dette vil sette passordet "1234" til EEPROM fra Arduino.
Etter å ha kjørt den første gangen, må vi fjerne dette fra programmet og igjen skrive koden til arduino og kjøre. Nå vil systemet ditt gå bra. Og for andre gang er passord nå “1234”. Nå kan du endre det ved å trykke på # -knappen og deretter angi ditt nåværende passord og deretter skrive inn det nye passordet.
Når du skriver inn passordet ditt, vil systemet sammenligne passordet du har angitt med det passordet som er lagret i EEPROM i arduino. Hvis samsvar forekommer, vil LCD-skjermen vise "tilgang gitt", og hvis passordet er galt, vil LCD-skjermen "Tilgang nektet" og lydsignalet piper kontinuerlig i noen tid. Og summeren piper også en gang hver gang brukeren trykker på en knapp fra tastaturet.
Programmeringsbeskrivelse
I kode har vi brukt tastaturbibliotek for å grensesnitt tastatur med arduino.
#inkludere
const byte RADER = 4; // fire rader med byte COLS = 4; // fire kolonner char hexaKeys = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', ' 8 ',' 9 ',' C '}, {' * ',' 0 ',' # ',' D '}}; byte rowPins = {3, 2, 1, 0}; // koble til raduttakene på tastaturbyte colPins = {4, 5, 6, 7}; // koble til kolonnens pinouts på tastaturet // initialisere en forekomst av klasse NewKeypad Tastatur customKeypad = Tastatur (makeKeymap (hexaKeys), rowPins, colPins, ROWS, COLS);
Vi har inkludert LCD-bibliotek for LCD-grensesnitt og for grensesnitt EEPROM har vi tatt med bibliotek EEPROM.h., Og deretter initialisert variable og definerte pinner for komponenter.
#define buzzer 15 LiquidCrystal lcd (13,12,11,10,9,8); char passord; røyke pass, pass1; int i = 0; char customKey = 0;
Og så initialiserte vi LCD og ga retning til pinner i oppsettfunksjonen
ugyldig oppsett () {lcd.begin (16,2); pinMode (ledet, UTGANG); pinMode (summer, UTGANG); pinMode (m11, OUTPUT); pinMode (m12, OUTPUT); lcd.print ("elektronisk"); lcd.setCursor (0,1); lcd.print ("Tastaturlås"); forsinkelse (2000); lcd.clear (); lcd.print ("Enter Ur Passkey:"); lcd.setCursor (0,1);
Etter dette leser vi tastaturet i loop-funksjonen
customKey = customKeypad.getKey (); hvis (customKey == '#') endring (); hvis (customKey) {passord = customKey; lcd.print (customKey); pip (); }
Og sammenlign deretter passord med lagre passord ved hjelp av streng sammenligningsmetode.
hvis (i == 4) {forsinkelse (200); for (int j = 0; j <4; j ++) pass = EEPROM.read (j); hvis (! (strncmp (passord, pass, 4))) {digitalWrite (ledet, HØY); pip (); lcd.clear (); lcd.print ("Passkey Accepted"); forsinkelse (2000); lcd.setCursor (0,1); lcd.print ("#. Change Passkey"); forsinkelse (2000); lcd.clear (); lcd.print ("Enter Passkey:"); lcd.setCursor (0,1); i = 0; digitalWrite (ledet, LAV); }
Dette er funksjon for endring av passord og funksjon for summerlyd
ugyldig endring () {int j = 0; lcd.clear (); lcd.print ("UR Current Passk"); lcd.setCursor (0,1); mens (j <4) {char key = customKeypad.getKey (); hvis (nøkkel) {pass1 = nøkkel; lcd.print (nøkkel); void pip () {digitalWrite (summer, HIGH); forsinkelse (20); digitalWrite (summer, LAV); }