La sécurité est une préoccupation majeure dans notre vie quotidienne, et les verrous numériques sont devenus un élément important de ces systèmes de sécurité. Un tel verrou à code numérique est imité dans ce projet en utilisant une carte Arduino et un clavier matriciel.
Composants
- Arduino
- Module de clavier
- Avertisseur sonore
- Écran LCD 16x2
- Transistor BC547
- Résistance (1k)
- Planche à pain
- Puissance
- Fils de connexion
Dans ce circuit, nous avons utilisé une technique de multiplexage pour interfacer le clavier pour saisir le mot de passe dans le système. Ici, nous utilisons un clavier 4x4 qui contient 16 touches. Si nous voulons utiliser 16 touches, nous avons besoin de 16 broches pour la connexion à arduino, mais dans la technique de multiplexage, nous devons utiliser seulement 8 broches pour l'interfaçage de 16 touches. C'est donc une manière intelligente d'interfacer un module de clavier.
Technique de multiplexage: La technique de multiplexage est un moyen très efficace de réduire le nombre de broches utilisées avec le microcontrôleur pour fournir une entrée ou un mot de passe ou des nombres. Fondamentalement, cette technique est utilisée de deux manières - l'une est la numérisation de lignes et l'autre est la numérisation du côlon. Mais dans ce projet basé sur Arduino, nous avons utilisé une bibliothèque de clavier, nous n'avons donc pas besoin de créer de code de multiplexage pour ce système. Nous devons uniquement utiliser la bibliothèque de clavier pour fournir une entrée.
Description du circuit
Le circuit de ce projet est très simple et contient Arduino, module de clavier, buzzer et LCD. Arduino contrôle les processus complets tels que la prise du module de clavier sous forme de mot de passe, la comparaison des mots de passe, la conduite du buzzer et l'envoi de l'état à l'écran LCD. Le clavier est utilisé pour prendre le mot de passe. Le buzzer est utilisé pour les indications et l'écran LCD est utilisé pour afficher l'état ou les messages. Le buzzer est piloté à l'aide d'un transistor NPN.
Les broches de colonne du module de clavier sont directement connectées aux broches 4, 5, 6, 7 et les broches de rangée sont connectées à 3, 2, 1, 0 d'arduino uno. Un LCD 16x2 est connecté à arduino en mode 4 bits. Les broches de commande RS, RW et En sont directement connectées aux broches 13, GND et 12 d'arduino. Et la broche de données D4-D7 est connectée aux broches 11, 10, 9 et 8 d'arduino. Et un buzzer est connecté à la broche 14 (A1) de l'arduino via un transistor BC547 NPN.
Travail
Nous avons utilisé l'EEPROM intégrée d'arduino pour enregistrer le mot de passe.Ainsi, lorsque nous exécutons ce programme pour la première fois, lisez les données des ordures de l'EEPROM d'arduino intégré et comparez-les avec le mot de passe d'entrée et donnez un message sur l'écran LCD qui est Accès refusé car le mot de passe ne correspond pas. Pour résoudre ce problème, nous devons définir un mot de passe par défaut pour la première fois en utilisant la programmation ci-dessous:
pour (int j = 0; j <4; j ++) EEPROM.write (j, j + 49);
lcd.print ("Enter Ur Passkey:"); lcd.setCursor (0,1); pour (int j = 0; j <4; j ++) pass = EEPROM.read (j);
Cela définira le mot de passe «1234» sur l'EEPROM d'Arduino.
Après l'avoir exécuté pour la première fois, nous devons le supprimer du programme et réécrire le code dans l'arduino et l'exécuter. Maintenant, votre système fonctionnera correctement. Et pour votre deuxième mot de passe utilisé est maintenant «1234». Vous pouvez maintenant le changer en appuyant sur le bouton #, puis entrez votre mot de passe actuel, puis entrez votre nouveau mot de passe.
Lorsque vous entrerez votre mot de passe, le système comparera votre mot de passe entré avec ce mot de passe qui est stocké dans l'EEPROM d'arduino. Si une correspondance se produit, l'écran LCD affichera «accès accordé» et si le mot de passe est incorrect, l'écran LCD «Accès refusé» et le buzzer émet un bip continu pendant un certain temps. Et le buzzer émet également un bip une seule fois chaque fois que l'utilisateur appuie sur n'importe quel bouton du clavier.
Description de la programmation
Dans le code, nous avons utilisé la bibliothèque de clavier pour interfacer le clavier avec arduino.
#comprendre
octet const ROWS = 4; // quatre lignes const octet COLS = 4; // quatre colonnes char hexaKeys = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', ' 8 ',' 9 ',' C '}, {' * ',' 0 ',' # ',' D '}}; byte rowPins = {3, 2, 1, 0}; // se connecte aux broches de ligne de l'octet du clavier colPins = {4, 5, 6, 7}; // se connecter aux broches de colonne du clavier // initialiser une instance de la classe NewKeypad Keypad customKeypad = Keypad (makeKeymap (hexaKeys), rowPins, colPins, ROWS, COLS);
Nous avons inclus une bibliothèque LCD pour l'interfaçage LCD et pour l'interfaçage EEPROM, nous avons inclus la bibliothèque EEPROM.h., Puis une variable initialisée et des broches définies pour les composants.
#define buzzer 15 LiquidCrystal lcd (13,12,11,10,9,8); mot de passe char; char pass, pass1; int i = 0; char customKey = 0;
Et puis nous avons initialisé l'écran LCD et donné la direction aux broches dans la fonction de configuration
void setup () {lcd.begin (16,2); pinMode (led, sortie); pinMode (buzzer, OUTPUT); pinMode (m11, SORTIE); pinMode (m12, SORTIE); lcd.print ("électronique"); lcd.setCursor (0,1); lcd.print ("Verrouillage du clavier"); retard (2000); lcd.clear (); lcd.print ("Enter Ur Passkey:"); lcd.setCursor (0,1);
Après cela, nous lisons le clavier en fonction de boucle
customKey = customKeypad.getKey (); if (customKey == '#') change (); if (customKey) {mot de passe = customKey; lcd.print (customKey); bip(); }
Et puis comparez le mot de passe avec le mot de passe de sauvegarde en utilisant la méthode de comparaison de chaînes.
si (i == 4) {retard (200); pour (int j = 0; j <4; j ++) pass = EEPROM.read (j); if (! (strncmp (mot de passe, passe, 4))) {digitalWrite (led, HIGH); bip(); lcd.clear (); lcd.print ("Clé de passe acceptée"); retard (2000); lcd.setCursor (0,1); lcd.print ("#. Change Passkey"); retard (2000); lcd.clear (); lcd.print ("Entrez la clé d'accès:"); lcd.setCursor (0,1); i = 0; digitalWrite (led, LOW); }
Ceci est la fonction de changement de mot de passe et la fonction de bip sonore
changement de void () {int j = 0; lcd.clear (); lcd.print ("UR Current Passk"); lcd.setCursor (0,1); while (j <4) {char key = customKeypad.getKey (); if (clé) {pass1 = clé; lcd.print (clé); void beep () {digitalWrite (buzzer, HIGH); retard (20); digitalWrite (buzzer, LOW); }