Zabezpečení je v našem každodenním životě velkým problémem a digitální zámky se staly důležitou součástí těchto bezpečnostních systémů. Jeden takový digitální kódový zámek je v tomto projektu napodobován pomocí desky arduino a maticové klávesnice.
Součásti
- Arduino
- Modul klávesnice
- Bzučák
- 16x2 LCD
- Tranzistor BC547
- Rezistor (1k)
- Chlebová deska
- Napájení
- Připojovací vodiče
V tomto obvodu jsme použili techniku multiplexování k propojení klávesnice pro zadání hesla do systému. Zde používáme klávesnici 4x4, která obsahuje 16 kláves. Pokud chceme použít 16 klíčů, potřebujeme 16 pinů pro připojení k arduino, ale v multiplexní technice musíme použít pouze 8 pinů pro propojení 16 klíčů. Jedná se tedy o chytrý způsob propojení modulu klávesnice.
Technika multiplexování: Technika multiplexování je velmi efektivní způsob, jak snížit počet pinů použitých v mikrokontroléru pro poskytování vstupu nebo hesla nebo čísel. V zásadě se tato technika používá dvěma způsoby - jedním je skenování řádků a druhým skenování tlustého střeva. Ale v tomto projektu založeném na arduinu jsme použili knihovnu klávesnic, takže pro tento systém nemusíme vytvářet žádný multiplexní kód. K poskytnutí vstupu musíme použít pouze knihovnu klávesnic.
Popis obvodu
Obvod tohoto projektu je velmi jednoduchý, který obsahuje Arduino, modul klávesnice, bzučák a LCD. Arduino ovládá kompletní procesy, jako je získávání hesla z modulu klávesnice, porovnávání hesel, řízení bzučáku a odesílání stavu na LCD displej. Pro získání hesla se používá klávesnice. Bzučák se používá pro indikace a LCD se používá k zobrazování stavu nebo zpráv na něm. Bzučák je poháněn pomocí NPN tranzistoru.
Kolíky sloupce modulu klávesnice jsou přímo připojeny k pinům 4, 5, 6, 7 a piny Row jsou připojeny k 3, 2, 1, 0 arduino uno. Displej 16x2 LCD je připojen k arduino ve 4bitovém režimu. Ovládací kolíky RS, RW a En jsou přímo připojeny k arduino kolíku 13, GND a 12. A datový kolík D4-D7 je připojen k kolíkům 11, 10, 9 a 8 arduina. A jeden bzučák je připojen na pin 14 (A1) arduina přes tranzistor NPN BC547.
Pracovní
Použili jsme vestavěnou arduino EEPROM k uložení hesla, takže když spustíme tento program poprvé, přečtěte si odpadková data z vestavěné arduino EEPROM a porovnejte je se vstupním heslem a dejte zprávu na LCD, která je Přístup odepřen, protože heslo se neshoduje. K vyřešení tohoto problému musíme poprvé nastavit výchozí heslo pomocí níže uvedeného programování:
pro (int j = 0; j <4; j ++) EEPROM.write (j, j + 49);
lcd.print ("Zadejte Ur Passkey:"); lcd.setCursor (0,1); for (int j = 0; j <4; j ++) pass = EEPROM.read (j);
Tím se nastaví heslo „1234“ na EEPROM Arduina.
Po prvním spuštění to musíme odstranit z programu a znovu zapsat kód do arduina a spustit. Nyní bude váš systém fungovat dobře. A podruhé je nyní použito heslo „1234“. Nyní jej můžete změnit stisknutím tlačítka # a poté zadat aktuální heslo a poté zadat nové heslo.
Když zadáte heslo, systém porovná vaše zadané heslo s heslem uloženým v EEPROM arduina. Pokud dojde ke shodě, na LCD se zobrazí „přístup povolen“ a pokud je heslo špatné, na LCD se zobrazí „Přístup odepřen“ a bzučák po určitou dobu nepřetržitě pípá. A bzučák také jednou pípne, kdykoli uživatel stiskne jakékoli tlačítko na klávesnici.
Popis programování
V kódu jsme použili knihovnu klávesnic pro propojení klávesnice s arduino.
#zahrnout
const byte ROWS = 4; // čtyři řádky const byte COLS = 4; // čtyři sloupce char hexaKeys = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', ' 8 ',' 9 ',' C '}, {' * ',' 0 ',' # ',' D '}}; byte rowPins = {3, 2, 1, 0}; // připojení k pinoutům řádku bajtu klávesnice colPins = {4, 5, 6, 7}; // připojení ke sloupcům pinoutů na klávesnici // inicializace instance třídy NewKeypad Keyboard customKeypad = Keypad (makeKeymap (hexaKeys), rowPins, colPins, ROWS, COLS);
Zahrnuli jsme knihovnu LCD pro rozhraní LCD a pro propojení EEPROM jsme zahrnuli knihovnu EEPROM.h. A poté inicializovali proměnné a definované piny pro komponenty.
#define bzučák 15 LiquidCrystal lcd (13,12,11,10,9,8); char heslo; char pass, pass1; int i = 0; char customKey = 0;
A pak jsme inicializovali LCD a dali směr pinům ve funkci nastavení
void setup () {lcd.begin (16,2); pinMode (led, OUTPUT); pinMode (bzučák, VÝSTUP); pinMode (m11, VÝSTUP); pinMode (m12, VÝSTUP); lcd.print („elektronický“); lcd.setCursor (0,1); lcd.print ("Zámek klávesnice"); zpoždění (2000); lcd.clear (); lcd.print ("Zadejte Ur Passkey:"); lcd.setCursor (0,1);
Poté jsme přečetli funkci klávesnice ve smyčce
customKey = customKeypad.getKey (); if (customKey == '#') change (); if (customKey) {password = customKey; lcd.print (customKey); pípnutí(); }
A poté porovnejte heslo s uloženým heslem pomocí metody porovnání řetězců.
if (i == 4) {zpoždění (200); for (int j = 0; j <4; j ++) pass = EEPROM.read (j); if (! (strncmp (heslo, heslo, 4))) {digitalWrite (led, HIGH); pípnutí(); lcd.clear (); lcd.print („Passkey Accepted“); zpoždění (2000); lcd.setCursor (0,1); lcd.print ("#. Změnit heslo"); zpoždění (2000); lcd.clear (); lcd.print ("Zadejte heslo:"); lcd.setCursor (0,1); i = 0; digitalWrite (led, LOW); }
Toto je funkce pro změnu hesla a pípnutí bzučáku
void change () {int j = 0; lcd.clear (); lcd.print ("UR Current Passk"); lcd.setCursor (0,1); while (j <4) {char key = customKeypad.getKey (); if (klíč) {pass1 = klíč; lcd.print (klíč); void beep () {digitalWrite (bzučák, VYSOKÝ); zpoždění (20); digitalWrite (bzučák, NÍZKÝ); }