Drošība ir nopietnas rūpes mūsu ikdienas dzīvē, un digitālās slēdzenes ir kļuvušas par nozīmīgu šo drošības sistēmu sastāvdaļu. Šajā projektā tiek imitēta viena šāda digitālā koda bloķēšana, izmantojot arduino dēli un matricas tastatūru.
Komponenti
- Arduino
- Tastatūras modulis
- Buzzer
- 16x2 LCD
- BC547 tranzistors
- Rezistors (1k)
- Maizes dēlis
- Jauda
- Savienojošie vadi
Šajā ķēdē mēs esam izmantojuši multipleksēšanas tehniku, lai saskarnes tastatūrai ievadītu paroli sistēmā. Šeit mēs izmantojam 4x4 tastatūru, kas satur 16 taustiņus. Ja mēs vēlamies izmantot 16 taustiņus, savienojumam ar ardino ir vajadzīga 16 kontaktu, bet multipleksēšanas tehnikā 16 taustiņu saskarnēm jāizmanto tikai 8 kontakti. Tā ka tas ir gudrs veids, kā saskarni papildināt ar tastatūru.
Multipleksēšanas tehnika: Multipleksēšanas tehnika ir ļoti efektīvs veids, kā samazināt ar mikrokontrolleru izmantoto tapu skaitu ievades vai paroles vai numuru nodrošināšanai. Būtībā šo paņēmienu izmanto divējādi - viens ir rindu skenēšana, bet otrs - resnās zarnas skenēšana. Bet šajā arduino balstītajā projektā mēs esam izmantojuši tastatūras bibliotēku, tāpēc mums nav nepieciešams izveidot šai sistēmai multipleksēšanas kodu. Ievades nodrošināšanai mums jāizmanto tikai tastatūras bibliotēka.
Ķēdes apraksts
Šī projekta shēma ir ļoti vienkārša, kas satur Arduino, tastatūras moduli, skaņas signālu un LCD. Arduino kontrolē visus procesus, piemēram, paroles formas tastatūras moduļa ņemšanu, paroļu salīdzināšanu, skaņas signāla vadīšanu un sūtīšanas statusu LCD displejā. Tastatūru izmanto paroles iegūšanai. Buzzer tiek izmantots indikācijām, un LCD tiek izmantots statusa vai ziņojumu parādīšanai uz tā. Buzzer tiek darbināts, izmantojot NPN tranzistoru.
Tastatūras moduļa kolonnu tapas ir tieši savienotas ar 4., 5., 6., 7. tapu un rindas tapas ir savienotas ar arduino uno 3, 2, 1, 0. 4x2 bitu režīmā 16x2 LCD ir savienots ar arduino. Vadības tapa RS, RW un En ir tieši savienota arduino tapām 13, GND un 12. Un datu tapa D4-D7 ir savienota arduino tapām 11, 10, 9 un 8. Un viens skaņas signāls ir savienots arduino tapā 14 (A1) caur BC547 NPN tranzistoru.
Strādā
Paroles saglabāšanai mēs esam izmantojuši iebūvēto arduino EEPROM, tāpēc, palaižot šo ķēdi pirmo reizi, programma nolasa atkritumu datus no iebūvētā arduino EEPROM un salīdzina tos ar ievades paroli un LCD ziņo, ka piekļuve ir liegta, jo parole nesakrīt. Lai atrisinātu šo problēmu, mums pirmo reizi jāiestata noklusējuma parole, izmantojot tālāk sniegto programmēšanu:
par (int j = 0; j <4; j ++) EEPROM. rakstīt (j, j + 49);
lcd.print ("Ievadiet Ur paroli:"); lcd.setCursor (0,1); par (int j = 0; j <4; j ++) iziet = EEPROM. lasīt (j);
Tas iestatīs paroli “1234” uz EEPROM no Arduino.
Pēc pirmās palaišanas mums tas ir jānoņem no programmas un vēlreiz jāieraksta kods arduino un jāpalaiž. Tagad jūsu sistēma darbosies labi. Otro reizi parole tagad ir “1234”. Tagad to var mainīt, nospiežot pogu #, pēc tam ievadiet savu pašreizējo paroli un pēc tam ievadiet jauno paroli.
Kad ievadīsit paroli, sistēma salīdzinās jūsu ievadīto paroli ar to paroli, kas ir saglabāta arduino EEPROM. Ja ir notikusi sakritība, LCD displejā būs redzama “piekļuve piešķirta”, un, ja parole ir nepareiza, LCD ekrānā “Piekļuve liegta” un skaņas signāls kādu laiku nepārtraukti pīkst. Turklāt, kad lietotājs nospiež jebkuru taustiņu no tastatūras, vienreiz skaņas signāls pīkst.
Programmēšanas apraksts
Kodā mēs esam izmantojuši tastatūras bibliotēku, lai sasaistītu tastatūru ar arduino.
# iekļaut
konst baits ROWS = 4; // četras rindas konst baits COLS = 4; // četras kolonnas char hexaKeys = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', ' 8 ',' 9 ',' C '}, {' * ',' 0 ',' # ',' D '}}; baitu rindaPins = {3, 2, 1, 0}; // izveidot savienojumu ar tastatūras baita rindu pinouts colPins = {4, 5, 6, 7}; // izveidot savienojumu ar tastatūras kolonnu pinouts // inicializēt klases eksemplāru NewKeypad Keypad customKeypad = Keypad (makeKeymap (hexaKeys), rowPins, colPins, ROWS, COLS);
Mēs esam iekļāvuši LCD bibliotēku LCD saskarnei un EEPROM saskarnei, esam iekļāvuši bibliotēku EEPROM.h., Un pēc tam inicializējuši mainīgos un definētos tapas komponentiem.
#define buzzer 15 LiquidCrystal lcd (13,12,11,10,9,8); char parole; char pass, pass1; int i = 0; char customKey = 0;
Pēc tam mēs inicializējām LCD un dodam virzienu tapām iestatīšanas funkcijā
void setup () {lcd.begin (16,2); pinMode (vadīts, OUTPUT); pinMode (zummer, OUTPUT); pinMode (m11, OUTPUT); pinMode (m12, OUTPUT); lcd.print ("Elektroniskais"); lcd.setCursor (0,1); lcd.print ("Tastatūras bloķēšana"); kavēšanās (2000); lcd.clear (); lcd.print ("Ievadiet Ur paroli:"); lcd.setCursor (0,1);
Pēc tam mēs nolasījām tastatūru ciklā
customKey = customKeypad.getKey (); ja (customKey == '#') mainīsies (); if (customKey) {parole = customKey; lcd.print (customKey); pīkstiens (); }
Pēc tam salīdziniet paroli ar saglabāšanas paroli, izmantojot virknes salīdzināšanas metodi.
ja (i == 4) {kavēšanās (200); par (int j = 0; j <4; j ++) iziet = EEPROM. lasīt (j); ja (! (strncmp (parole, caurlaide, 4))) {digitalWrite (vadīts, AUGSTS); pīkstiens (); lcd.clear (); lcd.print ("Pieņemta parole"); kavēšanās (2000); lcd.setCursor (0,1); lcd.print ("#. Mainīt paroli"); kavēšanās (2000); lcd.clear (); lcd.print ("Ievadiet paroli:"); lcd.setCursor (0,1); i = 0; digitalWrite (vadīts, LOW); }
Šī ir paroles maiņas funkcija un skaņas signāla funkcija
tukšums izmaiņas () {int j = 0; lcd.clear (); lcd.print ("UR Current Passk"); lcd.setCursor (0,1); while (j <4) {char key = customKeypad.getKey (); if (atslēga) {pass1 = atslēga; lcd.print (atslēga); void pīkstiens () {digitalWrite (buzzer, HIGH); kavēšanās (20); digitalWrite (zummer, LOW); }