Raspberry Pi - Serrure de porte RFID

Ce tutoriel vous apprend à construire un système de verrouillage de porte utilisant un Raspberry Pi, un module RFID/NFC RC522, un relais, une serrure solénoïde ou une serrure électromagnétique, et éventuellement un écran LCD. Pour vous faciliter la tâche, le tutoriel vous guide pour construire le verrou RFID à partir d'étapes simples jusqu'à des étapes plus complexes. En détail, nous ferons :

Vous pouvez modifier cela pour ajouter des mots de passe à la serrure de porte en combinant avec Raspberry Pi - Serrure de porte à clavier..

Préparation du matériel

1×Raspberry Pi 4 Model B
1×RFID/NFC RC522 Kit (reader + tags)
1×RFID Key Fob
1×RFID Card
1×Solenoid Lock
1×(Alternative) Electromagnetic Lock
1×Relay
1×12V Power Adapter
1×DC Power Jack
1×Jumper Wires
1×(Optional) Screw Terminal Block Shield for Raspberry Pi
1×(Optional) USB-C Power Cable with On/Off Switch for Raspberry Pi 4B
1×(Optional) Plastic Case and Cooling Fan for Raspberry Pi 4B
1×(Optional) HDMI Touch Screen Monitor for Raspberry Pi

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 module RFID/NFC RC522 et de la serrure électromagnétique

Si vous n'êtes pas familier avec le module RFID/NFC RC522, la serrure électromagnétique, la serrure à solénoïde (y compris le brochage, la fonctionnalité et la programmation), les tutoriels suivants peuvent fournir plus d'informations :

Composants du système de verrouillage de porte

Le système de verrouillage de porte se compose de deux composants principaux :

  • Serrure de porte : Un Raspberry Pi, un relais, un lecteur RFID/NFC et une serrure à solénoïde.
  • Clé de porte : Balises RFID/NFC.

Comment fonctionne une serrure de porte RFID/NFC

  • L'utilisateur tapote une étiquette RFID/NFC sur le lecteur RFID/NFC, qui lit l'UID de l'étiquette.
  • Le Raspberry Pi prend ensuite cet UID et le compare aux UIDs définis dans le code.
  • Si l'UID correspond à une des clés autorisées, le Raspberry Pi désactivera la serrure électromagnétique, déverrouillant ainsi la porte.
  • Après un certain temps, le Raspberry Pi activera le relais pour verrouiller la porte.

Diagramme de câblage

  • Serrure de porte RFID RC522 avec serrure à solénoïde
Schéma de câblage du système de verrouillage de porte Raspberry Pi RFID RC522

This image is created using Fritzing. Click to enlarge image

  • Serrure de porte RFID RC522 avec serrure électromagnétique
Diagramme de câblage du système de verrouillage de porte RFID RC522 Raspberry Pi

This image is created using Fritzing. Click to enlarge image

Pour simplifier et organiser votre câblage, nous vous recommandons d'utiliser un Screw Terminal Block Shield pour Raspberry Pi. Ce shield garantit des connexions plus sûres et plus faciles à gérer, comme illustré ci-dessous :

Raspberry Pi Screw Terminal Block Shield

※ Note:

Les fabricants peuvent disposer différemment l'ordre des broches, il est donc important de se fier aux étiquettes imprimées sur le module. Le schéma de brochage illustré ci-dessus montre l'agencement des broches pour les modules produits par le fabricant DIYables.

Code Raspberry Pi - Clé Unique

Étapes rapides

  • Assurez-vous d'avoir Raspbian ou tout autre système d'exploitation compatible avec Raspberry Pi installé sur votre Pi.
  • Assurez-vous que votre Raspberry Pi est connecté au même réseau local que votre PC.
  • Assurez-vous que votre Raspberry Pi est connecté à Internet si vous avez besoin d'installer des bibliothèques.
  • Si c'est la première fois que vous utilisez Raspberry Pi, voyez Installation du logiciel - Raspberry Pi..
  • Connectez votre PC au Raspberry Pi via SSH en utilisant le client SSH intégré sur Linux et macOS ou PuTTY sur Windows. Voir comment connecter votre PC au Raspberry Pi via SSH.
  • Assurez-vous d'avoir la bibliothèque RPi.GPIO installée. Sinon, installez-la à l'aide de la commande suivante :
sudo apt-get update sudo apt-get install python3-rpi.gpio
  • Activez l'interface SPI sur Raspberry Pi en suivant les instructions sur Raspberry Pi - comment activer l'interface SPI
  • Assurez-vous que la bibliothèque spidev est installée. Sinon, installez-la en utilisant la commande suivante :
sudo apt-get install python3-pip python3-dev git sudo pip3 install spidev
  • Assurez-vous d'avoir la bibliothèque mfrc522 installée. Si ce n'est pas le cas, installez-la en utilisant la commande suivante :
sudo pip3 install mfrc522
  • Créez un fichier de script Python rfid_lock.py et ajoutez le code suivant :
# Ce code Raspberry Pi a été développé par newbiely.fr # Ce code Raspberry Pi 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/raspberry-pi/raspberry-pi-rfid-door-lock import RPi.GPIO as GPIO import MFRC522 import time # Define GPIO pins RC522_RST_PIN = 12 # GPIO pin connected to RC522's RST pin RELAY_PIN = 16 # GPIO pin connected to relay # Set up GPIO GPIO.setmode(GPIO.BOARD) GPIO.setup(RELAY_PIN, GPIO.OUT, initial=GPIO.LOW) # Create an instance of the RFID reader reader = MFRC522.MFRC522() authorized_uid = [0xFF, 0xFF, 0xFF, 0xFF] try: print("Tap RFID/NFC Tag on reader") while True: (status, TagType) = reader.MFRC522_Request(reader.PICC_REQIDL) if status == reader.MI_OK: (status, uid) = reader.MFRC522_Anticoll() if status == reader.MI_OK: if uid == authorized_uid: print("Access is granted") GPIO.output(RELAY_PIN, GPIO.HIGH) # unlock the door for 2 seconds time.sleep(2) GPIO.output(RELAY_PIN, GPIO.LOW) # lock the door else: print(f"Access denied for user with UID: {' '.join(format(b, '02x') for b in uid)}") except KeyboardInterrupt: GPIO.cleanup()
  • Enregistrez le fichier et exécutez le script Python en utilisant la commande suivante dans le terminal :
python3 rfid_lock.py

Le script tourne en boucle infinie jusqu'à ce que vous appuyiez sur Ctrl + C dans le terminal.

Pour déterminer l'UID d'une étiquette RFID/NFC, placez l'étiquette RFID/NFC sur le module RFID-RC522, l'UID sera affiché sur le Terminal.

PuTTY - Raspberry Pi
Tap RFID/NFC tag on reader Access denied for user with UID: 3A C9 6A CB

Une fois que vous avez votre UID :

  • Modifiez la ligne 18 du code ci-dessus en remplaçant byte keytagUID[4] = {0xFF, 0xFF, 0xFF, 0xFF}; par votre UID, par exemple byte keytagUID[4] = {0x3A, 0xC9, 0x6A, 0xCB};
  • Téléchargez le code révisé sur votre Raspberry Pi
  • Placez une étiquette RFID/NFC sur le module RFID-RC522
  • Vérifiez la sortie dans le Terminal
PuTTY - Raspberry Pi
Tap RFID/NFC tag on reader Access is granted
  • Examiner la serrure électromagnétique pour s'assurer qu'elle n'est pas sécurisée.
  • Approchez un autre tag RFID/NFC du module RFID-RC522.
  • Consultez la sortie sur le terminal.
PuTTY - Raspberry Pi
Tap RFID/NFC tag on reader Access is granted Access denied for user with UID: BD 1E 1D 00

※ Note:

  • À des fins de test, le temps de déverrouillage a été réglé sur 2 secondes ; cependant, cela devrait être augmenté lors de son utilisation en pratique ou pour des démonstrations.
  • L'installation de la bibliothèque MFRC522 est requise. Pour plus d'informations, veuillez vous référer au tutoriel Raspberry Pi - RFID/NFC RC522 à l'adresse BASE_URL/tutorials/raspberry-pi/raspberry-pi-rfid.

Code Raspberry Pi - Plusieurs clés

Le code ci-dessous permet plusieurs cartes autorisées.

# Ce code Raspberry Pi a été développé par newbiely.fr # Ce code Raspberry Pi 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/raspberry-pi/raspberry-pi-rfid-door-lock import RPi.GPIO as GPIO import MFRC522 import time # Define GPIO pins RC522_RST_PIN = 12 # GPIO pin connected to RC522's RST pin RELAY_PIN = 16 # GPIO pin connected to relay # Set up GPIO GPIO.setmode(GPIO.BOARD) GPIO.setup(RELAY_PIN, GPIO.OUT, initial=GPIO.LOW) # Create an instance of the RFID reader reader = MFRC522.MFRC522() # List of authorized UIDs authorized_uids = [ [0xAA, 0xBB, 0xCC, 0xDD], [0x11, 0x22, 0x33, 0x44], [0xFF, 0xFF, 0xFF, 0xFF] ] def is_authorized(uid): for auth_uid in authorized_uids: if uid == auth_uid: return True return False try: print("Tap RFID/NFC Tag on reader") while True: (status, TagType) = reader.MFRC522_Request(reader.PICC_REQIDL) if status == reader.MI_OK: (status, uid) = reader.MFRC522_Anticoll() if status == reader.MI_OK: if is_authorized(uid): print("Access is granted") GPIO.output(RELAY_PIN, GPIO.HIGH) # unlock the door for 2 seconds time.sleep(2) GPIO.output(RELAY_PIN, GPIO.LOW) # lock the door else: print(f"Access denied for user with UID: {' '.join(format(b, '02x') for b in uid)}") except KeyboardInterrupt: GPIO.cleanup()

Répétez les mêmes étapes que ci-dessus, puis appuyez sur chaque étiquette du module RFID-RC522. La sortie sur le Terminal devrait apparaître comme suit :

PuTTY - Raspberry Pi
Tap RFID/NFC tag on reader Access is granted Access is granted

Vous pouvez étendre le code mentionné ci-dessus pour quatre, ou plus de balises RFID.

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!