Raspberry Pi - RFID Deurslot

Deze handleiding legt uit hoe u een deurslot systeem bouwt met Raspberry Pi, het RFID/NFC RC522 module, een relais, een magneetslot of elektromagnetisch slot, en optioneel een LCD-display. Om het u makkelijk te maken, wordt het RFID deurslot opgebouwd van eenvoudige naar complexere stappen. In detail doen we:

U kunt dit aanpassen door wachtwoorden toe te voegen aan het deurslot door het te combineren met Raspberry Pi - Keypad Deurslot.

Hardware Benodigd

1×Raspberry Pi 5
1×RFID/NFC RC522 Kit (lezer + tags)
1×RFID Key Fob
1×RFID Kaart
1×Magneetslot
1×(Alternatief) Elektromagnetisch slot
1×Relais
1×12V Voedingsadapter
1×DC Voedingsconnector
1×Verbinddraad (jumper wires)
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 Elektromagnetisch Slot

Als u niet bekend bent met de RFID/NFC RC522 Module, het elektromagnetische slot, magneetslot (inclusief pinout, functionaliteit en programmeren), kunnen de volgende tutorials u meer informatie bieden:

Onderdelen van het Deurslot Systeem

Het deurslot systeem bestaat uit twee hoofdcomponenten:

  • Deurslot: Een Raspberry Pi, een relais, een RFID/NFC lezer en een magneetslot
  • Deursleutel: RFID/NFC tags

Hoe het RFID/NFC Deurslot Werkt

  • De gebruiker houdt een RFID/NFC tag tegen de RFID/NFC lezer, die de UID van de tag uitleest.
  • Raspberry Pi vergelijkt deze UID met de UIDs die in de code zijn ingesteld.
  • Als de UID overeenkomt met een geautoriseerde sleutel, zal de Raspberry Pi het elektromagnetische slot deactiveren, waardoor de deur ontgrendeld wordt.
  • Na een bepaalde tijd activeert de Raspberry Pi het relais om de deur weer te vergrendelen.

Bekabelingsschema

  • RFID RC522 Deurslot met Magneetslot
Raspberry Pi RFID RC522 Deurslot Systeem bekabelingsschema

This image is created using Fritzing. Click to enlarge image

  • RFID RC522 Deurslot met Elektromagnetisch Slot
Raspberry Pi RFID RC522 Deurslot Systeem bekabelingsschema

This image is created using Fritzing. Click to enlarge image

※ Notiz:

Fabrikanten kunnen de pin-volgorde anders rangschikken, daarom is het belangrijk op de labels op het module zelf te vertrouwen. Het hierboven getoonde pinout diagram toont de pin-indeling van modules geproduceerd door fabrikant DIYables.

Raspberry Pi Code - Enkelvoudige Sleutel

Snelle Stappen

  • Zorg dat u Raspbian of een ander Raspberry Pi compatibel besturingssysteem geïnstalleerd heeft op uw Pi.
  • 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, zie hoe u de Raspberry Pi installeert
  • 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 verbinding maakt met uw Raspberry Pi via SSH.
  • Controleer of de RPi.GPIO bibliotheek geïnstalleerd is. 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 de mfrc522 bibliotheek is geïnstalleerd. Zo niet, installeer met:
sudo pip3 install mfrc522
  • Maak een Python script bestand met de naam rfid_lock.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-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()
  • Sla het bestand op en voer het Python script uit met het volgende commando in de terminal:
python3 rfid_lock.py

Het script draait in een oneindige lus tot u op Ctrl + C drukt in de terminal.

Om de UID van een RFID/NFC tag te bepalen, houdt u de RFID/NFC tag tegen het RFID-RC522 module, de UID wordt weergegeven in de Terminal.

PuTTY - Raspberry Pi
Houd RFID/NFC tag tegen de lezer Access denied for user with UID: 3A C9 6A CB

Wanneer u uw UID heeft:

  • Pas regel 18 van de code hierboven aan door byte keytagUID[4] = {0xFF, 0xFF, 0xFF, 0xFF}; te vervangen door uw UID, bijvoorbeeld byte keytagUID[4] = {0x3A, 0xC9, 0x6A, 0xCB};
  • Upload de aangepaste code naar uw Raspberry Pi
  • Houd een RFID/NFC tag tegen het RFID-RC522 module
  • Bekijk de uitvoer in de Terminal
PuTTY - Raspberry Pi
Houd RFID/NFC tag tegen de lezer Access is granted
  • Controleer het elektromagnetische slot om zeker te zijn dat het niet beveiligd is.
  • Houd een andere RFID/NFC tag tegen het RFID-RC522 module.
  • Bekijk de uitvoer in de Terminal
PuTTY - Raspberry Pi
Houd RFID/NFC tag tegen de lezer Access is granted Access denied for user with UID: BD 1E 1D 00

※ Notiz:

  • Voor testdoeleinden is de ontgrendelingstijd ingesteld op 2 seconden; dit zou in praktijk of bij demonstraties verhoogd moeten worden.
  • Installatie van de MFRC522 bibliotheek is vereist. Zie voor meer informatie de Raspberry Pi - RFID/NFC RC522 tutorial.

Raspberry Pi Code - Meerdere Sleutels

De onderstaande code ondersteunt meerdere geautoriseerde kaarten.

# 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-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()

Herhaal dezelfde stappen als hierboven en houd elke tag tegen het RFID-RC522 module. De uitvoer in de Terminal zou als volgt moeten verschijnen:

PuTTY - Raspberry Pi
Houd RFID/NFC tag tegen de lezer Access is granted Access is granted

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 visuele begeleiding bij dit project! De video biedt extra inzichten en helpt u beter te begrijpen hoe u het systeem bouwt en programmeert.

※ 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!