మన రోజువారీ జీవితంలో భద్రత ఒక ప్రధాన ఆందోళన, మరియు ఈ భద్రతా వ్యవస్థలలో డిజిటల్ తాళాలు ఒక ముఖ్యమైన భాగంగా మారాయి. ఆర్డ్యునో బోర్డ్ మరియు మ్యాట్రిక్స్ కీప్యాడ్ ఉపయోగించి ఈ ప్రాజెక్ట్లో అలాంటి ఒక డిజిటల్ కోడ్ లాక్ అనుకరించబడుతుంది.
భాగాలు
- ఆర్డునో
- కీప్యాడ్ మాడ్యూల్
- బజర్
- 16x2 LCD
- BC547 ట్రాన్సిస్టర్
- రెసిస్టర్ (1 కే)
- బ్రెడ్ బోర్డు
- శక్తి
- వైర్లను కనెక్ట్ చేస్తోంది
ఈ సర్క్యూట్లో సిస్టమ్లోని పాస్వర్డ్ను ఇన్పుట్ చేయడానికి కీప్యాడ్ను ఇంటర్ఫేస్ చేయడానికి మల్టీప్లెక్సింగ్ టెక్నిక్ని ఉపయోగించాము. ఇక్కడ మేము 16 కీని కలిగి ఉన్న 4x4 కీప్యాడ్ను ఉపయోగిస్తున్నాము. మేము 16 కీలను ఉపయోగించాలనుకుంటే, ఆర్డునోకు కనెక్షన్ కోసం మాకు 16 పిన్ అవసరం, కాని మల్టీప్లెక్సింగ్ టెక్నిక్లో 16 కీలను ఇంటర్ఫేసింగ్ చేయడానికి 8 పిన్ మాత్రమే ఉపయోగించాలి. కనుక ఇది కీప్యాడ్ మాడ్యూల్ను ఇంటర్ఫేస్ చేయడానికి ఒక మంచి మార్గం.
మల్టీప్లెక్సింగ్ టెక్నిక్: ఇన్పుట్ లేదా పాస్వర్డ్ లేదా సంఖ్యలను అందించడానికి మైక్రోకంట్రోలర్తో ఉపయోగించే పిన్స్ సంఖ్యను తగ్గించడానికి మల్టీప్లెక్సింగ్ టెక్నిక్ చాలా సమర్థవంతమైన మార్గం. ప్రాథమికంగా ఈ సాంకేతికత రెండు విధాలుగా ఉపయోగించబడుతుంది - ఒకటి వరుస స్కానింగ్ మరియు మరొకటి పెద్దప్రేగు స్కానింగ్. కానీ ఈ ఆర్డునో ఆధారిత ప్రాజెక్ట్లో మేము కీప్యాడ్ లైబ్రరీని ఉపయోగించాము కాబట్టి ఈ సిస్టమ్ కోసం మల్టీప్లెక్సింగ్ కోడ్ చేయవలసిన అవసరం లేదు. మేము ఇన్పుట్ అందించడానికి కీప్యాడ్ లైబ్రరీని మాత్రమే ఉపయోగించాలి.
సర్క్యూట్ వివరణ
ఈ ప్రాజెక్ట్ యొక్క సర్క్యూట్ చాలా సులభం, దీనిలో ఆర్డునో, కీప్యాడ్ మాడ్యూల్, బజర్ మరియు ఎల్సిడి ఉన్నాయి. పాస్వర్డ్ ఫారమ్ కీప్యాడ్ మాడ్యూల్ తీసుకోవడం, పాస్వర్డ్లను పోల్చడం, బజర్ డ్రైవింగ్ మరియు ఎల్సిడి డిస్ప్లేకు స్థితిని పంపడం వంటి పూర్తి ప్రక్రియలను ఆర్డునో నియంత్రిస్తుంది. పాస్వర్డ్ తీసుకోవడానికి కీప్యాడ్ ఉపయోగించబడుతుంది. సూచనలు కోసం బజర్ ఉపయోగించబడుతుంది మరియు దానిపై స్థితి లేదా సందేశాలను ప్రదర్శించడానికి LCD ఉపయోగించబడుతుంది. NPN ట్రాన్సిస్టర్ను ఉపయోగించడం ద్వారా బజర్ నడపబడుతుంది.
కీప్యాడ్ మాడ్యూల్ యొక్క కాలమ్ పిన్స్ నేరుగా పిన్ 4, 5, 6, 7 కి అనుసంధానించబడి ఉంటాయి మరియు రో పిన్స్ ఆర్డునో యునో యొక్క 3, 2, 1, 0 కి అనుసంధానించబడి ఉన్నాయి. 16x2 LCD 4-బిట్ మోడ్లో arduino తో అనుసంధానించబడి ఉంది. కంట్రోల్ పిన్ RS, RW మరియు En నేరుగా ఆర్డునో పిన్ 13, జిఎన్డి మరియు 12 లతో అనుసంధానించబడి ఉన్నాయి. మరియు డేటా పిన్ డి 4-డి 7 ఆర్డునో యొక్క పిన్స్ 11, 10, 9 మరియు 8 లకు అనుసంధానించబడి ఉంది. మరియు ఒక బజర్ BC547 NPN ట్రాన్సిస్టర్ ద్వారా ఆర్డునో యొక్క పిన్ 14 (A1) వద్ద అనుసంధానించబడి ఉంది.
పని
పాస్వర్డ్ను సేవ్ చేయడానికి మేము ఇన్బిల్ట్ ఆర్డునో యొక్క EEPROM ను ఉపయోగించాము, కాబట్టి మేము ఈ సర్క్యూట్ను మొదటిసారి అమలు చేస్తున్నప్పుడు ఇన్బిల్ట్ ఆర్డునో యొక్క EEPROM నుండి చెత్త డేటాను చదివి ఇన్పుట్ పాస్వర్డ్తో పోల్చండి మరియు LCD లో సందేశాన్ని ఇవ్వండి ఎందుకంటే యాక్సెస్ నిరాకరించబడింది ఎందుకంటే పాస్వర్డ్ సరిపోలలేదు. ఈ సమస్యను పరిష్కరించడానికి మేము క్రింద ఇచ్చిన ప్రోగ్రామింగ్ ఉపయోగించి మొదటిసారి డిఫాల్ట్ పాస్వర్డ్ను సెట్ చేయాలి:
(int j = 0; j <4; j ++) EEPROM.write (j, j + 49);
lcd.print ("ఉర్ పాస్కీని నమోదు చేయండి:"); lcd.setCursor (0,1); (int j = 0; j <4; j ++) pass = EEPROM.read (j);
ఇది పాస్వర్డ్ “1234” ను ఆర్డునో యొక్క EEPROM కు సెట్ చేస్తుంది.
దీన్ని మొదటిసారి అమలు చేసిన తరువాత మనం దీన్ని ప్రోగ్రామ్ నుండి తీసివేసి, మళ్ళీ కోడ్ను ఆర్డునోకు వ్రాసి రన్ చేయాలి. ఇప్పుడు మీ సిస్టమ్ బాగా నడుస్తుంది. మరియు మీ రెండవసారి ఉపయోగించిన పాస్వర్డ్ ఇప్పుడు “1234”. ఇప్పుడు మీరు # బటన్ను నొక్కడం ద్వారా దాన్ని మార్చవచ్చు, ఆపై మీ ప్రస్తుత పాస్వర్డ్ను నమోదు చేసి, ఆపై మీ క్రొత్త పాస్వర్డ్ను నమోదు చేయండి.
మీరు మీ పాస్వర్డ్ను ఎంటర్ చేసినప్పుడు, సిస్టమ్ మీ ఎంటర్ చేసిన పాస్వర్డ్ను ఆ పాస్వర్డ్తో పోలుస్తుంది, అది EEPROM of arduino లో నిల్వ చేయబడుతుంది. మ్యాచ్ జరిగితే, ఎల్సిడి “యాక్సెస్ మంజూరు” అని చూపిస్తుంది మరియు పాస్వర్డ్ తప్పు అయితే ఎల్సిడి “యాక్సెస్ నిరాకరించబడింది” మరియు బజర్ కొంతకాలం నిరంతరం బీప్ చేస్తుంది. కీప్యాడ్ నుండి వినియోగదారు ఏదైనా బటన్ను నొక్కినప్పుడు బజర్ కూడా ఒకేసారి బీప్ అవుతుంది.
ప్రోగ్రామింగ్ వివరణ
కోడ్లో మేము కీప్యాడ్ను ఆర్డునోతో ఇంటర్ఫేసింగ్ కోసం కీప్యాడ్ లైబ్రరీని ఉపయోగించాము.
# చేర్చండి
const బైట్ ROWS = 4; // నాలుగు వరుసలు const byte COLS = 4; // నాలుగు నిలువు వరుసలు చార్ హెక్సాకీస్ = {{'1', '2', '3', 'ఎ'}, {'4', '5', '6', 'బి'}, {'7', ' 8 ',' 9 ',' సి '}, {' * ',' 0 ',' # ',' డి '}}; బైట్ rowPins = {3, 2, 1, 0}; // కీప్యాడ్ బైట్ కోల్పిన్స్ యొక్క వరుస పిన్అవుట్లకు కనెక్ట్ చేయండి = {4, 5, 6, 7}; // కీప్యాడ్ యొక్క కాలమ్ పిన్అవుట్లకు కనెక్ట్ అవ్వండి // క్లాస్ న్యూకైప్యాడ్ కీప్యాడ్ కస్టమ్కీప్యాడ్ = కీప్యాడ్ (మేక్కీమాప్ (హెక్సాకీస్), రోపిన్స్, కోల్పిన్స్, రోవ్స్, కోల్స్) యొక్క ఉదాహరణను ప్రారంభించండి;
మేము LCD ఇంటర్ఫేసింగ్ కోసం LCD లైబ్రరీని చేర్చాము మరియు EEPROM ను ఇంటర్ఫేసింగ్ కోసం మేము లైబ్రరీ EEPROM.h ను చేర్చుకున్నాము, ఆపై భాగాల కోసం వేరియబుల్ మరియు నిర్వచించిన పిన్లను ప్రారంభించాము.
# బజర్ 15 లిక్విడ్ క్రిస్టల్ ఎల్సిడి (13,12,11,10,9,8) ను నిర్వచించండి; చార్ పాస్వర్డ్; చార్ పాస్, పాస్ 1; int i = 0; చార్ కస్టమ్ కే = 0;
ఆపై మేము LCD ని ప్రారంభించాము మరియు సెటప్ ఫంక్షన్లో పిన్లకు దిశానిర్దేశం చేస్తాము
శూన్య సెటప్ () {lcd.begin (16,2); పిన్మోడ్ (దారితీసింది, OUTPUT); పిన్ మోడ్ (బజర్, U ట్పుట్); పిన్మోడ్ (m11, OUTPUT); పిన్మోడ్ (m12, OUTPUT); lcd.print ("ఎలక్ట్రానిక్"); lcd.setCursor (0,1); lcd.print ("కీప్యాడ్ లాక్"); ఆలస్యం (2000); lcd.clear (); lcd.print ("ఉర్ పాస్కీని నమోదు చేయండి:"); lcd.setCursor (0,1);
దీని తరువాత మనం కీప్యాడ్ను లూప్ ఫంక్షన్లో చదువుతాము
customKey = customKeypad.getKey (); if (customKey == '#') మార్పు (); if (customKey) {password = customKey; lcd.print (customKey); బీప్ (); }
ఆపై స్ట్రింగ్ పోలిక పద్ధతిని ఉపయోగించి పాస్వర్డ్ను సేవ్ పాస్వర్డ్తో పోల్చండి.
if (i == 4) {ఆలస్యం (200); (int j = 0; j <4; j ++) pass = EEPROM.read (j); if (! (strncmp (password, pass, 4%)) {DigitalWrite (led, HIGH); బీప్ (); lcd.clear (); lcd.print ("పాస్కీ అంగీకరించబడింది"); ఆలస్యం (2000); lcd.setCursor (0,1); lcd.print ("#. పాస్కీని మార్చండి"); ఆలస్యం (2000); lcd.clear (); lcd.print ("పాస్కీని నమోదు చేయండి:"); lcd.setCursor (0,1); i = 0; డిజిటల్ రైట్ (దారితీసింది, తక్కువ); }
ఇది పాస్వర్డ్ మార్పు ఫంక్షన్ మరియు బజర్ బీప్ ఫంక్షన్
శూన్య మార్పు () {int j = 0; lcd.clear (); lcd.print ("UR ప్రస్తుత పాస్క్"); lcd.setCursor (0,1); (j <4) {చార్ కీ = customKeypad.getKey (); if (కీ) {pass1 = key; lcd.print (కీ); శూన్య బీప్ () {డిజిటల్ రైట్ (బజర్, హై); ఆలస్యం (20); డిజిటల్ రైట్ (బజర్, తక్కువ); }