Säkerhet är ett stort problem i vårt dagliga liv och digitala lås har blivit en viktig del av dessa säkerhetssystem. Ett sådant digitalt kodlås imiteras i det här projektet med hjälp av arduino-kort och en matris-knappsats.
Komponenter
- Arduino
- Knappsatsmodul
- Summer
- 16x2 LCD
- BC547 Transistor
- Motstånd (1k)
- Brödbräda
- Kraft
- Anslutande ledningar
I denna krets har vi använt multiplexeringsteknik för att koppla in knappsatsen för att mata in lösenordet i systemet. Här använder vi 4x4 knappsats som innehåller 16 tangenter. Om vi vill använda 16 tangenter behöver vi 16 stift för anslutning till arduino men i multiplexeringsteknik behöver vi bara använda 8 stift för gränssnitt mellan 16 tangenter. Så att det är ett smart sätt att ansluta en knappsatsmodul.
Multiplexeringsteknik: Multiplexeringsteknik är ett mycket effektivt sätt att minska antalet stift som används med mikroprocessorn för att tillhandahålla inmatning eller lösenord eller nummer. I grund och botten används denna teknik på två sätt - en är radskanning och en annan är kolonskanning. Men i det här arduino-baserade projektet har vi använt knappsatsbiblioteket så att vi inte behöver skapa någon multiplexkod för detta system. Vi behöver bara använda knappsatsbiblioteket för att tillhandahålla input.
Kretsbeskrivning
Kretsloppet för detta projekt är mycket enkelt som innehåller Arduino, knappsatsmodul, summer och LCD. Arduino styr de kompletta processerna som att ta lösenord från knappsatsmodulen, jämföra lösenord, köra summer och skicka status till LCD-skärm. Knappsatsen används för att ta lösenord. Summer används för indikationer och LCD används för att visa status eller meddelanden på den. Summerna drivs med hjälp av en NPN-transistor.
Knappsatsmodulens kolumnstift är direkt anslutna till stift 4, 5, 6, 7 och radstiften är anslutna till 3, 2, 1, 0 av arduino uno. En 16x2 LCD är ansluten till arduino i 4-bitars läge. Styrstift RS, RW och En är direkt anslutna till arduino-stift 13, GND och 12. Och datapinne D4-D7 är ansluten till stiften 11, 10, 9 och 8 på arduino. Och en summer är ansluten vid stift 14 (A1) i arduino via en BC547 NPN-transistor.
Arbetssätt
Vi har använt inbyggd arduinos EEPROM för att spara lösenord, så när vi kör den här kretsens första gångsprogram läser du skräpdata från den inbyggda arduinos EEPROM och jämför det med inmatningslösenordet och ger ett meddelande på LCD-skärmen som är Access Denied eftersom lösenordet inte matchar. För att lösa detta problem måste vi ställa in ett standardlösenord för första gången genom att använda programmeringen nedan:
för (int j = 0; j <4; j ++) EEPROM.write (j, j + 49);
lcd.print ("Enter Ur Passkey:"); lcd.setCursor (0,1); för (int j = 0; j <4; j ++) pass = EEPROM.read (j);
Detta ställer in lösenordet "1234" till EEPROM i Arduino.
Efter att ha kört den första gången måste vi ta bort detta från programmet och skriva in koden igen till arduino och köra. Nu kommer ditt system att fungera bra. Och för ditt andra gång är lösenordet nu “1234”. Nu kan du ändra det genom att trycka på # -knappen och ange ditt nuvarande lösenord och ange ditt nya lösenord.
När du anger ditt lösenord kommer systemet att jämföra ditt angivna lösenord med det lösenordet som är lagrat i EEPROM i arduino. Om matchning inträffar kommer LCD att visa "åtkomst beviljad" och om lösenordet är fel kommer LCD "Åtkomst nekad" och summeren piper kontinuerligt under en tid. Och en ljudsignal piper också en gång när användaren trycker på valfri knapp från knappsatsen.
Programmeringsbeskrivning
I kod har vi använt knappsatsbibliotek för att koppla tangentbord med arduino.
#omfatta
const byte ROWS = 4; // fyra rader med byte COLS = 4; // fyra kolumner char hexaKeys = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', ' 8 ',' 9 ',' C '}, {' * ',' 0 ',' # ',' D '}}; byte rowPins = {3, 2, 1, 0}; // ansluta till radutgångarna på knappsatsbyte colPins = {4, 5, 6, 7}; // ansluta till kolumnutgångarna på knappsatsen // initiera en instans av klass NewKeypad Knappsats customKeypad = Knappsats (makeKeymap (hexaKeys), rowPins, colPins, ROWS, COLS);
Vi har inkluderat LCD-bibliotek för LCD-gränssnitt och för gränssnitt EEPROM har vi inkluderat bibliotek EEPROM.h., Och sedan initialiserade variabla och definierade stift för komponenter.
#define summer 15 LiquidCrystal lcd (13,12,11,10,9,8); char lösenord; char pass, pass1; int i = 0; char customKey = 0;
Och sedan initierade vi LCD och ger riktning till stift i installationsfunktionen
ogiltig installation () {lcd.begin (16,2); pinMode (led, OUTPUT); pinMode (summer, OUTPUT); pinMode (m11, OUTPUT); pinMode (m12, OUTPUT); lcd.print ("elektronisk"); lcd.setCursor (0,1); lcd.print ("Knapplås"); fördröjning (2000); lcd.clear (); lcd.print ("Enter Ur Passkey:"); lcd.setCursor (0,1);
Efter detta läser vi tangentbordet i loop-funktionen
customKey = customKeypad.getKey (); om (customKey == '#') ändra (); if (customKey) {password = customKey; lcd.print (customKey); pip(); }
Och jämför sedan lösenord med spara lösenord med hjälp av strängjämförelsemetoden.
om (i == 4) {fördröjning (200); för (int j = 0; j <4; j ++) pass = EEPROM.read (j); if (! (strncmp (password, pass, 4))) {digitalWrite (led, HIGH); pip(); lcd.clear (); lcd.print ("Lösenord accepterat"); fördröjning (2000); lcd.setCursor (0,1); lcd.print ("#. Ändra lösenord"); fördröjning (2000); lcd.clear (); lcd.print ("Ange lösenord:"); lcd.setCursor (0,1); i = 0; digitalWrite (led, LOW); }
Detta är en lösenordsändringsfunktion och en ljudsignal
ogiltig förändring () {int j = 0; lcd.clear (); lcd.print ("UR Current Passk"); lcd.setCursor (0,1); medan (j <4) {char key = customKeypad.getKey (); om (nyckel) {pass1 = nyckel; lcd.print (nyckel); void beep () {digitalWrite (summer, HIGH); fördröjning (20); digitalWrite (summer, LOW); }