Système de verrouillage de porte avec mot de passe Arduino

Dans ce tutoriel, nous apprenons comment fabriquer un système de verrouillage de porte avec mot de passe. Le tutoriel comprend deux parties principales :

L'écran LCD est facultatif. Il rend simplement le système un peu plus pratique.

Lorsque la porte est déverrouillée par un mot de passe correct, elle reste déverrouillée pendant 20 secondes, puis se verrouille automatiquement à nouveau. Le code Arduino prend en charge plusieurs mots de passe.

Préparation du matériel

1×Arduino Uno
1×USB 2.0 cable type A/B
1×Keypad 3x4 and 4x4 Kit
1×(Alternative) Keypad 3x4
1×(Alternative) Keypad 4x4
1×Relay
1×12V Power Adapter
1×DC Power Jack
1×Electromagnetic Lock
1×Jumper Wires
1×(Optional) LCD I2C
1×(Optional) 9V Power Adapter for Arduino
1×(Recommended) Screw Terminal Block Shield for Arduino Uno
1×(Optional) Transparent Acrylic Enclosure For Arduino Uno

Or you can buy the following sensor kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À propos du clavier, de la serrure électromagnétique et de l'écran LCD.

Si vous ne connaissez pas le verrou électromagnétique à clavier et écran LCD (brochage, fonctionnement, programmation...), renseignez-vous dans les tutoriels suivants :

Comment fonctionne un système de verrouillage de porte

Les mots de passe valides sont prédéfinis dans le code Arduino.

Une chaîne est utilisée pour stocker le mot de passe saisi par les utilisateurs, appelée chaîne d'entrée. Sur le clavier, deux touches (* et #) sont utilisées à des fins spéciales : effacer le mot de passe et terminer le mot de passe. Le système fonctionne comme suit :

  • À l'exception de deux touches spéciales, si une autre touche est pressée, elle est ajoutée à la chaîne de saisie
  • Si * est pressé, la chaîne de saisie est effacée. Vous pouvez l'utiliser pour commencer ou recommencer à saisir le mot de passe
  • Si # est pressé :
    • La chaîne de saisie est comparée aux mots de passe pré-définis. Si elle correspond à l'un des mots de passe pré-définis, la porte est déverrouillée.
    • Que le mot de passe soit correct ou non, la chaîne de saisie est effacée pour la prochaine saisie

Diagramme de câblage

  • Système de verrouillage de porte Arduino avec mot de passe utilisant un clavier et un verrou électromagnétique.
Schéma de câblage du système de verrouillage de porte Arduino

This image is created using Fritzing. Click to enlarge image

  • Système de verrouillage de porte Arduino avec mot de passe utilisant un clavier, un verrou électromagnétique et un écran LCD.
Schéma de câblage d'un système de verrouillage de porte Arduino avec écran LCD

This image is created using Fritzing. Click to enlarge image

Code Arduino - Système de verrouillage de porte avec mot de passe utilisant un clavier et un verrou électromagnétique

/* * Ce code Arduino a été développé par newbiely.fr * Ce code Arduino est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino/arduino-door-lock-system-using-password */ #include <Keypad.h> const int RELAY_PIN = A0; // the Arduino pin, which connects to the IN pin of relay const int ROW_NUM = 4; //four rows const int COLUMN_NUM = 4; //four columns char keys[ROW_NUM][COLUMN_NUM] = { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'} }; byte pin_rows[ROW_NUM] = {9, 8, 7, 6}; //connect to the row pinouts of the keypad byte pin_column[COLUMN_NUM] = {5, 4, 3, 2}; //connect to the column pinouts of the keypad Keypad keypad = Keypad( makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM ); const String password_1 = "1234ABC"; // change your password here const String password_2 = "5642CD"; // change your password here const String password_3 = "4545B"; // change your password here String input_password; void setup() { Serial.begin(9600); input_password.reserve(32); // maximum input characters is 32, change if needed pinMode(RELAY_PIN, OUTPUT); // initialize pin as an output. digitalWrite(RELAY_PIN, HIGH); // lock the door } void loop() { char key = keypad.getKey(); if (key) { Serial.println(key); if (key == '*') { input_password = ""; // reset the input password } else if (key == '#') { if (input_password == password_1 || input_password == password_2 || input_password == password_3) { Serial.println("The password is correct, unlocking the door in 20 seconds"); digitalWrite(RELAY_PIN, LOW); // unlock the door for 20 seconds delay(20000); digitalWrite(RELAY_PIN, HIGH); // lock the door } else { Serial.println("The password is incorrect, try again"); } input_password = ""; // reset the input password } else { input_password += key; // append new character to input password string } } }

Étapes rapides

  • Connectez l'Arduino au PC via un câble USB
  • Ouvrez l'IDE Arduino, sélectionnez la bonne carte et le bon port
  • Accédez à l'icône Libraries sur la barre gauche de l'IDE Arduino.
  • Recherchez "keypad", puis trouvez la bibliothèque keypad de Mark Stanley, Alexander Brevig
  • Cliquez sur le bouton Install pour installer la bibliothèque keypad.
Bibliothèque de clavier Arduino
  • Copiez le code ci-dessus et ouvrez-le avec Arduino IDE
  • Cliquez sur le bouton Upload dans Arduino IDE pour téléverser le code vers Arduino
  • Placez la plaque d'armature près de l'électroaimant.
  • Ouvrez le moniteur série
  • Appuyez sur les touches 123456 puis sur #
  • Appuyez sur les touches 1234ABC puis sur #
  • Observez l'attraction entre la plaque d'armature et l'électroaimant pendant 20 secondes.
  • Consultez le résultat sur le moniteur série
COM6
Send
The password is incorrect, try again The password is correct, unlocking the door in 20 seconds
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Code Arduino - Système de verrouillage de porte avec mot de passe utilisant un clavier, un verrou électromagnétique et un écran LCD

/* * Ce code Arduino a été développé par newbiely.fr * Ce code Arduino est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino/arduino-door-lock-system-using-password */ #include <Keypad.h> #include <LiquidCrystal_I2C.h> const int RELAY_PIN = A0; // the Arduino pin, which connects to the IN pin of relay const int ROW_NUM = 4; //four rows const int COLUMN_NUM = 4; //four columns char keys[ROW_NUM][COLUMN_NUM] = { {'1','2','3', 'A'}, {'4','5','6', 'B'}, {'7','8','9', 'C'}, {'*','0','#', 'D'} }; byte pin_rows[ROW_NUM] = {9, 8, 7, 6}; //connect to the row pinouts of the keypad byte pin_column[COLUMN_NUM] = {5, 4, 3, 2}; //connect to the column pinouts of the keypad Keypad keypad = Keypad( makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM ); LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C address 0x27 (from DIYables LCD), 16 column and 2 rows const String password_1 = "1234ABC"; // change your password here const String password_2 = "5642CD"; // change your password here const String password_3 = "4545B"; // change your password here String input_password; void setup(){ Serial.begin(9600); input_password.reserve(32); // maximum input characters is 33, change if needed pinMode(RELAY_PIN, OUTPUT); // initialize pin as an output. digitalWrite(RELAY_PIN, HIGH); // lock the door lcd.init(); // initialize the lcd lcd.backlight(); } void loop(){ char key = keypad.getKey(); if (key){ Serial.println(key); if(key == '*') { input_password = ""; // reset the input password lcd.clear(); } else if(key == '#') { lcd.clear(); if(input_password == password_1 || input_password == password_2 || input_password == password_3) { Serial.println("password is correct"); lcd.setCursor(0, 0); lcd.print("CORRECT!"); lcd.setCursor(0, 1); lcd.print("DOOR UNLOCKED!"); digitalWrite(RELAY_PIN, LOW); // unlock the door for 20 seconds delay(20000); digitalWrite(RELAY_PIN, HIGH); // lock the door } else { Serial.println("password is incorrect, try again"); lcd.setCursor(0, 0); lcd.print("INCORRECT!"); lcd.setCursor(0, 1); lcd.print("ACCESS DENIED!"); } input_password = ""; // reset the input password } else { if(input_password.length() == 0) { lcd.clear(); } input_password += key; // append new character to input password string lcd.setCursor(input_password.length(), 0); // move cursor to new position lcd.print('*'); // print * key as hiden character } } }

※ NOTE THAT:

L'adresse I2C de l'écran LCD peut varier selon les fabricants. Dans le code, nous avons utilisé 0x27 qui est spécifié par le fabricant DIYables.

Étapes rapides

  • Naviguez jusqu'à l'icône Libraries sur la barre gauche de l'IDE Arduino.
  • Recherchez "LiquidCrystal I2C", puis trouvez la bibliothèque LiquidCrystal_I2C de Frank de Brabander.
  • Cliquez sur le bouton Install pour installer la bibliothèque LiquidCrystal_I2C.
Bibliothèque LiquidCrystal I2C pour Arduino
  • Copiez le code ci-dessus et ouvrez-le avec Arduino IDE
  • Cliquez sur le bouton Upload dans Arduino IDE pour téléverser le code vers Arduino
  • Placez la plaque d’armature près de l’électroaimant.
  • Entrez un mot de passe incorrect, puis entrez un mot de passe correct
  • Observez l’attraction entre la plaque d’armature et l’électroaimant pendant 20 secondes.
  • Regardez le texte sur l’écran LCD

※ NOTE THAT:

  • Dans les codes ci-dessus, pour simplifier, nous avons utilisé la fonction delay. Il est préférable d'utiliser millis() au lieu de delay(). Voir Comment utiliser millis() à la place de delay()
  • Vous pouvez ajouter un buzzer piézoélectrique pour produire un bip sonore chaque fois que le clavier est pressé.
  • Dans les codes ci-dessus, la porte se verrouille à nouveau après 20 secondes. Vous pouvez le remplacer par un capteur de porte. La porte se verrouille lorsque le capteur de porte détecte que la porte est fermée par l'utilisateur.
  • Dans le code ci-dessus, les mots de passe sont codés en dur. En pratique, il devrait être possible d'ajouter/supprimer/modifier les mots de passe dynamiquement via un mode spécial. Si tel est le cas, les mots de passe doivent être sauvegardés dans la mémoire EEPROM. Le nombre de mots de passe qui peuvent être sauvegardés dépend de la taille de l'EEPROM. Le code deviendra compliqué. Si vous souhaitez construire un tel système, nous proposons un service de programmation. N'hésitez pas à nous contacter.

Vidéo

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!