Ang seguridad ay isang pangunahing pag-aalala sa ating pang-araw-araw na buhay, at ang mga digital lock ay naging isang mahalagang bahagi ng mga sistemang pangseguridad. Ang isang tulad ng digital code lock ay ginaya sa proyektong ito gamit ang arduino board at isang matrix keypad.
Mga Bahagi
- Arduino
- Module ng Keypad
- Buzzer
- 16x2 LCD
- BC547 Transistor
- Resistor (1k)
- Bread board
- Lakas
- Mga kumokonekta na mga wire
Sa circuit na ito, gumamit kami ng multiplexing technique upang i-interface ang keadad para sa pag-input ng password sa system. Narito ginagamit namin ang 4x4 keypad na naglalaman ng 16 key. Kung nais naming gumamit ng 16 mga key pagkatapos ay kailangan namin ng 16 pin para sa koneksyon sa arduino ngunit sa multiplexing na diskarteng kailangan namin gumamit lamang ng 8 pin para sa interfacing 16 na mga key. Sa gayon ito ay isang matalinong paraan upang mag-interface ng isang keypad module.
Multiplexing diskarteng: Multiplexing diskarteng ay isang napaka mahusay na paraan upang mabawasan ang bilang ng mga pin na ginamit sa microcontroller para sa pagbibigay ng input o password o mga numero. Talaga ang pamamaraan na ito ay ginagamit sa dalawang paraan - ang isa ay row scanning at ang isa pa ay pag-scan ng colon. Ngunit sa arduino based na proyekto na ito ay gumamit kami ng keypad library kaya hindi namin kailangang gumawa ng anumang multiplexing code para sa sistemang ito. Kailangan lang naming gumamit ng keypad library para sa pagbibigay ng input.
Paglalarawan ng Circuit
Ang circuit ng proyektong ito ay napaka-simple na naglalaman ng Arduino, keypad module, buzzer at LCD. Kinokontrol ng Arduino ang mga kumpletong proseso tulad ng pagkuha ng form ng keypad na form ng password, paghahambing ng mga password, pagmamaneho ng buzzer at pagpapadala ng katayuan sa LCD display. Ginagamit ang Keypad para sa pagkuha ng password. Ginagamit ang Buzzer para sa mga pahiwatig at ginagamit ang LCD para sa pagpapakita ng katayuan o mga mensahe dito. Ang Buzzer ay hinihimok ng paggamit ng isang NPN transistor.
Ang mga pin ng Haligi ng module ng Keypad ay direktang konektado sa pin 4, 5, 6, 7 at ang mga Row pin ay konektado sa 3, 2, 1, 0 ng arduino uno. Ang isang 16x2 LCD ay konektado sa arduino sa 4-bit mode. Ang control pin RS, RW at En ay direktang konektado sa arduino pin 13, GND at 12. At ang data pin na D4-D7 ay konektado sa mga pin 11, 10, 9 at 8 ng arduino. At ang isang buzzer ay konektado sa pin 14 (A1) ng arduino sa pamamagitan ng isang transistor ng BC547 NPN.
Nagtatrabaho
Ginamit namin ang inbuilt na EEPROM ng arduino upang mai-save ang password, kaya kapag pinatakbo namin ang programang ito sa unang pagkakataon na basahin ang isang data ng basura mula sa inbuilt na EEPROM ng arduino at ihambing ito sa input password at magbigay ng isang mensahe sa LCD na Access Denied dahil ang password ay hindi tugma. Para sa paglutas ng problemang ito kailangan naming magtakda ng isang default na password sa unang pagkakataon sa pamamagitan ng paggamit ng programang ibinigay sa ibaba:
para sa (int j = 0; j <4; j ++) EEPROM.write (j, j + 49);
lcd.print ("Enter Ur Passkey:"); lcd.setCursor (0,1); para sa (int j = 0; j <4; j ++) ipasa = EEPROM.read (j);
Itatakda nito ang password na "1234" sa EEPROM ng Arduino.
Matapos patakbuhin ito sa unang pagkakataon kailangan namin itong alisin mula sa programa at muling isulat ang code sa arduino at patakbuhin. Ngayon ang iyong system ay tatakbo nang maayos. At sa iyong pangalawang ginamit na password ay "1234" na ngayon. Ngayon ay maaari mo itong baguhin sa pamamagitan ng pagpindot sa # button at pagkatapos ay ipasok ang iyong kasalukuyang password at pagkatapos ay ipasok ang iyong bagong password.
Kapag ipasok mo ang iyong password, ihahambing ng system ang iyong ipinasok na password sa password na nakaimbak sa EEPROM ng arduino. Kung naganap ang tugma pagkatapos ay lilitaw ang LCD na "ipinagkaloob na pag-access" at kung ang password ay mali sa gayon LCD ay "Access Tinanggihan" at buzzer patuloy na beep para sa ilang oras. At ang buzzer ay beep din ng isang solong oras tuwing pipindutin ng user ang anumang pindutan mula sa keypad.
Paglalarawan ng Programming
Sa code ginamit namin ang keypad library para sa interfacing keypad sa arduino.
# isama
const byte ROWS = 4; // four row const byte COLS = 4; // apat na haligi char hexaKeys = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', ' 8 ',' 9 ',' C '}, {' * ',' 0 ',' # ',' D '}}; byte rowPins = {3, 2, 1, 0}; // kumonekta sa mga row ng pinout ng keypad byte colPins = {4, 5, 6, 7}; // kumonekta sa mga pinout ng haligi ng keypad // ipasimula ang isang halimbawa ng klase NewKeypad Keypad customKeypad = Keypad (makeKeymap (hexaKeys), rowPins, colPins, ROWS, COLS);
Isinama namin ang LCD library para sa LCD interfacing at para sa interfacing EEPROM isinama namin ang library EEPROM.h., At pagkatapos ay pinasimulan ang variable at tinukoy na mga pin para sa mga bahagi.
# tukuyin ang buzzer 15 LiquidCrystal lcd (13,12,11,10,9,8); char password; char pass, pass1; int i = 0; char customKey = 0;
At pagkatapos ay pinasimulan namin ang LCD at nagbibigay ng direksyon sa mga pin sa pag-andar ng pag-setup
walang bisa ang pag-set up () {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 ("Keypad Lock"); pagkaantala (2000); lcd.clear (); lcd.print ("Enter Ur Passkey:"); lcd.setCursor (0,1);
Pagkatapos nito ay nabasa namin ang keypad sa pag-andar ng loop
pasadyaKey = pasadyaKeypad.getKey (); kung baguhin ang (customKey == '#') (); kung (customKey) {password = customKey; lcd.print (customKey); beep (); }
At pagkatapos ihambing ang password sa pag-save ng password gamit ang string Compare method.
kung (i == 4) {pagkaantala (200); para sa (int j = 0; j <4; j ++) ipasa = EEPROM.read (j); kung (! (strncmp (password, pass, 4))) {digitalWrite (led, HIGH); beep (); lcd.clear (); lcd.print ("Tinanggap ang Passkey"); pagkaantala (2000); lcd.setCursor (0,1); lcd.print ("#. Change Passkey"); pagkaantala (2000); lcd.clear (); lcd.print ("Enter Passkey:"); lcd.setCursor (0,1); i = 0; digitalWrite (led, LOW); }
Ito ang pagpapaandar ng pagbabago ng password at pag-andar ng buzzer beep
walang bisa na pagbabago () {int j = 0; lcd.clear (); lcd.print ("UR Kasalukuyang Passk"); lcd.setCursor (0,1); habang (j <4) {char key = customKeypad.getKey (); kung (key) {pass1 = key; lcd.print (key); void beep () {digitalWrite (buzzer, HIGH); pagkaantala (20); digitalWrite (buzzer, LOW); }