Arduino - Serrure de porte à clavier

Dans ce tutoriel, nous apprenons à fabriquer un système de verrouillage de porte avec mot de passe utilisant un clavier et un verrou à solénoïde.

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×Solenoid Lock
1×12V Power Adapter
1×DC Power Jack
1×Jumper Wires
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 et du verrou à solénoïde

Si vous ne connaissez pas le verrou à solénoïde et le bouton (brochage, fonctionnement, programmation ...), renseignez-vous à leur sujet dans les tutoriels suivants :

Diagramme de câblage

  • Arduino - Serrure de porte avec clavier, serrure à solénoïde
Schéma de câblage d'Arduino, de clavier et de serrure à solénoïde

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 à solénoïde

/* * 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-keypad-door-lock */ #include <Keypad.h> const int RELAY_PIN = A5; // 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 33, change if needed pinMode(RELAY_PIN, OUTPUT); // initialize pin as an output. digitalWrite(RELAY_PIN, LOW); // 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, HIGH); // unlock the door for 20 seconds delay(20000); digitalWrite(RELAY_PIN, LOW); // 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 } } }

※ 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

  • Connectez Arduino à l'ordinateur via le câble USB
  • Ouvrez l'IDE Arduino, sélectionnez la bonne carte et le bon port
  • Accédez à l'icône Libraries dans la barre latérale 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 l'IDE Arduino
  • Cliquez sur le bouton Upload de l'IDE Arduino pour charger le code sur Arduino
  • Ouvrez le moniteur série
  • Appuyez sur les touches 12345 puis sur #
  • Appuyez sur les touches 1234ABC puis sur #
  • Observez l'état de la langue de la serrure 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  

Explication du code

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, contrôlez le relais pour déverrouiller la porte.
    • Que le mot de passe soit correct ou non, la chaîne de saisie est effacée pour la prochaine saisie

    ※ NOTE THAT:

    • Dans le code 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() au lieu de delay()
    • Vous pouvez ajouter un buzzer piézoélectrique pour émettre un bip chaque fois que le clavier est pressé.
    • Dans les codes ci-dessus, la porte se verrouille à nouveau après 20 secondes. Vous pouvez la 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 codage. 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!