Raspberry Pi - RFID - Relais

Ce tutoriel vous explique comment utiliser un Raspberry Pi et un lecteur RFID/NFC RC522 pour contrôler un relais. Vous pouvez également aller plus loin avec ce tutoriel et utiliser le relais pour contrôler une serrure de porte, une ampoule, des moteurs, des actionneurs, etc.

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×Relay
10×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 du relais

Si vous n'êtes pas familier avec le module RFID/NFC RC522 et le relais (brochage, fonctionnement, programmation ...), les tutoriels suivants peuvent vous aider à acquérir des connaissances :

Comment ça marche

  • Certains tags RFID/NFC ont leurs UID prédéfinis dans le code Raspberry Pi.
  • Lorsqu'un utilisateur approche un tag RFID/NFC du lecteur RFID/NFC, le lecteur lit l'UID du tag.
  • Le Raspberry Pi reçoit ensuite l'UID du lecteur et le compare avec les UID prédéfinis.
  • Si l'UID correspond à l'un des UID prédéfinis, le Raspberry Pi activera le relais.

Diagramme de câblage

Schéma de câblage relais 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:

L'agencement des broches peut varier en fonction du fabricant. UTILISEZ TOUJOURS les étiquettes imprimées sur le module. L'image ci-dessus affiche le brochage des modules du fabricant DIYables.

Code Raspberry Pi - Étiquette unique RFID/NFC

É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, consultez 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. Consultez comment connecter votre PC au Raspberry Pi via SSH.
  • Assurez-vous d'avoir la bibliothèque RPi.GPIO installée. Sinon, installez-la en utilisant 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 d'avoir la bibliothèque spidev 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 installé la bibliothèque mfrc522. Si ce n'est pas le cas, installez-la à l'aide de la commande suivante :
sudo pip3 install mfrc522
  • Créez un fichier de script Python rfid_relay.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-relay 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("Authorized Tag") GPIO.output(RELAY_PIN, GPIO.HIGH) # activate the relay for 2 seconds time.sleep(2) GPIO.output(RELAY_PIN, GPIO.LOW) # deactivate the relay else: print(f"Unauthorized Tag with UID: {' '.join(format(b, '02x') for b in uid)}") except KeyboardInterrupt: GPIO.cleanup()
  • Enregistrez le fichier et exécutez le script Python en exécutant la commande suivante dans le terminal :
python3 rfid_relay.py

Le script s'exécute dans une boucle infinie en continu jusqu'à ce que vous appuyiez sur Ctrl + C dans le terminal.

Pour identifier l'UID d'une étiquette RFID/NFC :

  • Exécutez le code ci-dessus et placez l'étiquette sur le module RFID-RC522.
  • L'UID s'affichera sur le Moniteur Série.
PuTTY - Raspberry Pi
Tap RFID/NFC tag on reader Unauthorized Tag with UID: 3A C9 6A CB

Après avoir obtenu l'UID :

  • Modifiez la ligne 18 du code pour refléter le UID, par exemple en changeant byte authorizedUID[4] = {0xFF, 0xFF, 0xFF, 0xFF}; à byte authorizedUID[4] = {0x3A, 0xC9, 0x6A, 0xCB};
  • Téléchargez le code sur le Raspberry Pi
  • Placez une étiquette RFID/NFC sur le module RFID-RC522
  • Vérifiez la sortie sur le Moniteur Série
PuTTY - Raspberry Pi
Tap RFID/NFC tag on reader Authorized Tag
  • Appuyez sur une étiquette RFID/NFC différente sur le module RFID-RC522.
  • Vérifiez la sortie sur le moniteur série.
PuTTY - Raspberry Pi
Tap RFID/NFC tag on reader Authorized Tag Unauthorized Tag with UID: BD 1E 1D 00

※ Note:

  • Pour faciliter les tests, le temps actif a été réglé à deux secondes; cependant, il devrait être augmenté pour une utilisation pratique ou une démonstration.
  • L'installation de la bibliothèque MFRC522 est nécessaire. Pour plus d'informations, veuillez vous référer au Raspberry Pi - RFID..

Code Raspberry Pi - Plusieurs étiquettes RFID/NFC

Il est possible d'activer le relais avec plusieurs étiquettes RFID/NFC. Le code ci-dessous illustre trois étiquettes RFID.

# 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-relay 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("Authorized Tag") GPIO.output(RELAY_PIN, GPIO.HIGH) # activate the relay for 2 seconds time.sleep(2) GPIO.output(RELAY_PIN, GPIO.LOW) # deactivate the relay else: print(f"Unauthorized Tag with UID: {' '.join(format(b, '02x') for b in uid)}") except KeyboardInterrupt: GPIO.cleanup()

Répétez les mêmes étapes qu'auparavant, puis appuyez sur chaque étiquette du module RFID-RC522. Les résultats visibles sur le Moniteur Série seront similaires à ceux ci-dessous :

PuTTY - Raspberry Pi
Tap RFID/NFC tag on reader Authorized Tag Authorized Tag

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

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!