Raspberry Pi - RFID - Relay

Deze tutorial legt uit hoe u met een Raspberry Pi en een RFID/NFC RC522 reader een relais kunt aansturen. U kunt deze handleiding ook uitbreiden en het relais gebruiken om een deurslot, lamp, motoren, actuatoren en dergelijke te bedienen.

Hardware Vereist

1×Raspberry Pi 5
1×RFID/NFC RC522 Kit (lezer + tags)
1×RFID Key Fob
1×RFID Kaart
1×Relais
10×Jumper Draden
1×(Aanbevolen) Schroefklem Block Shield voor Raspberry Pi
1×(Aanbevolen) Raspberry Pi Prototyping Basisplaat & Breadboard Kit
1×(Aanbevolen) HDMI-Touchscreen-Monitor voor Raspberry Pi

Of u kunt de volgende kits kopen:

1×DIYables Sensorkit (30 sensoren/displays)
1×DIYables Sensorkit (18 sensoren/displays)
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.

Over RFID/NFC RC522 Module en Relais

Als u nog niet bekend bent met de RFID/NFC RC522 Module en relais (pinout, hoe het werkt, hoe u het programmeert ...), kunnen de volgende tutorials u helpen om de werking te begrijpen:

Hoe Het Werkt

  • Sommige RFID/NFC-tags hebben hun UIDs vooraf gedefinieerd in de code van de Raspberry Pi.
  • Wanneer een gebruiker een RFID/NFC-tag tegen de RFID/NFC lezer houdt, leest de lezer de UID van de tag.
  • De Raspberry Pi ontvangt vervolgens de UID van de lezer en vergelijkt deze met de vooraf gedefinieerde UIDs.
  • Als de UID overeenkomt met één van de vooraf gedefinieerde UIDs, activeert de Raspberry Pi het relais.

Bedradingsschema

Raspberry Pi RFID RC522 relais bedrading diagram

This image is created using Fritzing. Click to enlarge image

※ Notiz:

De volgorde van de pinnen kan verschillen afhankelijk van de fabrikant. Gebruik ALTIJD de etiketten die op het module gedrukt staan. De afbeelding hierboven toont de pinout van de modules van de maker DIYables.

Raspberry Pi Code - Enkele RFID/NFC Tag

Snel Starten

  • Zorg dat u Raspbian of een ander compatible besturingssysteem voor Raspberry Pi geïnstalleerd hebt.
  • Zorg dat uw Raspberry Pi verbonden is met hetzelfde lokale netwerk als uw PC.
  • Zorg dat uw Raspberry Pi verbonden is met internet als u libraries moet installeren.
  • Als dit de eerste keer is dat u een Raspberry Pi gebruikt, bekijk dan hoe u de Raspberry Pi instelt
  • Verbind uw PC met de Raspberry Pi via SSH met de ingebouwde SSH-client op Linux en macOS, of PuTTY op Windows. Zie hoe u uw PC met Raspberry Pi verbindt via SSH.
  • Zorg dat u de RPi.GPIO library geïnstalleerd hebt. Zo niet, installeer deze met het volgende commando:
sudo apt-get update sudo apt-get install python3-rpi.gpio
sudo apt-get install python3-pip python3-dev git sudo pip3 install spidev
  • Zorg dat u de mfrc522 library geïnstalleerd hebt. Zo niet, installeer het met het volgende commando:
sudo pip3 install mfrc522
  • Maak een Python scriptbestand aan met de naam rfid_relay.py en voeg de volgende code toe:
# Deze Raspberry Pi code is ontwikkeld door newbiely.nl # Deze Raspberry Pi code wordt zonder enige beperking aan het publiek beschikbaar gesteld. # Voor volledige instructies en schema's, bezoek: # https://newbiely.nl/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()
  • Sla het bestand op en start het script door het volgende commando in de terminal uit te voeren:
python3 rfid_relay.py

Het script draait in een oneindige lus totdat u Ctrl + C indrukt in de terminal.

Om de UID van een RFID/NFC-tag te identificeren:

  • Start de bovenstaande code en houd de tag tegen de RFID-RC522 module.
  • De UID wordt weergegeven in de seriële monitor.
PuTTY - Raspberry Pi
Tap RFID/NFC tag on reader Unauthorized Tag with UID: 3A C9 6A CB

Na het verkrijgen van de UID:

  • Pas regel 18 in de code aan zodat deze de UID weerspiegelt, bijvoorbeeld verander byte authorizedUID[4] = {0xFF, 0xFF, 0xFF, 0xFF}; naar byte authorizedUID[4] = {0x3A, 0xC9, 0x6A, 0xCB};
  • Upload de code naar de Raspberry Pi
  • Plaats een RFID/NFC-tag op de RFID-RC522 module
  • Controleer de uitvoer op de seriële monitor
PuTTY - Raspberry Pi
Tap RFID/NFC tag on reader Authorized Tag
  • Houd een andere RFID/NFC-tag op de RFID-RC522 module.
  • Controleer de uitvoer op de seriële monitor.
PuTTY - Raspberry Pi
Tap RFID/NFC tag on reader Authorized Tag Unauthorized Tag with UID: BD 1E 1D 00

※ Notiz:

  • Voor testdoeleinden is de actieve tijd op twee seconden ingesteld; voor praktisch gebruik of demonstratie dient deze tijd te worden verlengd.
  • Installatie van de MFRC522 library is noodzakelijk. Zie voor meer informatie Raspberry Pi - RFID/NFC RC522 tutorial.

Raspberry Pi Code - Meerdere RFID/NFC Tags

Het is mogelijk om het relais te activeren met meerdere RFID/NFC-tags. De onderstaande code laat een voorbeeld zien met drie RFID-tags.

# Deze Raspberry Pi code is ontwikkeld door newbiely.nl # Deze Raspberry Pi code wordt zonder enige beperking aan het publiek beschikbaar gesteld. # Voor volledige instructies en schema's, bezoek: # https://newbiely.nl/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()

Herhaal dezelfde stappen als hierboven en houd vervolgens elke tag op de RFID-RC522 module. De resultaten die u op de seriële monitor ziet zullen vergelijkbaar zijn met het onderstaande:

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

U kunt de bovenstaande code uitbreiden voor vier of meer RFID-tags.

Video Tutorial

We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.

Bekijk onze video-tutorial voor een visuele begeleiding bij dit project! De video biedt extra inzichten en helpt u eventuele onduidelijkheden te overwinnen.

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!