Met Radio-frequency identification (RFID) kan je op (korte) afstand een 'tag' (kaart, sleutelhanger, hond) 'uitlezen'. Iedere tag heeft een uniek nummer en zo kan je de kaart met het juiste nummer toegang geven, patiënten de juiste medicijnen geven, beveiliging tegen diefstal maken, bonus kaarten uitgeven etc., etc..
Hier gebruiken we de Mifare RC-522 RFID tag-reader. Als je de Arduino code die hieronder staat upload kan je op de seriële monitor het (UID) nummer van de tag zien en er wordt geschreven of er wel of geen toegang is. In de code zijn ook twee ledjes toegevoegd (die staan er in het onderstaande schema niet bij maar die kan je er zelf bijplaatsen). Als je de tag boven de lezer houdt zie je op de seriële monitor het UID nummer. Het nummer van de tag die je 'toegang' wil geven moet je veranderen in in de code (regel 56). Als je meer kaarten toegang wil geven kan je met de logische of (or, ||) zoveel tags bijplaatsen als je wil (hieronder een voorbeeld voor vier tag's):
if (content.substring(1) == "F6 E7 3C D5"
|| content.substring(1) == "AC 07 3D D5"
|| content.substring(1) == "40 9C 3C D5"
|| content.substring(1) == "9E 0C 3D D5"
) // ------VERANDER hier het UID nummer van de tag die je toegang wil geven----------
In plaats van een ledje kan je natuurlijk ook een relais aansluiten zodat je een grote stroom kan aansturen voor bij voorbeeld de magneetschakelaar voor een slot. In sommige gevallen is het handig om een servomotor te gebruiken, de code daarvoor kan je ook invoegen in de voorbeeld code (gebruik wel een PWM pin (met het ~ teken)).
Pinaansluitingen:
SDA pin 10
SCK pin 13
MOSI pin 11
MISO pin 12
IRQ niet aangesloten
GND pin GND
RST pin 9
3,3v pin 3,3v
De ledjes staan op de pinnen 6 en 7.
De code is voornamelijk afkomstig van deze site: http://randomnerdtutorials.com/
In de code worden twee 'bibliotheken' gebruikt: SPI.h (voor de seriële master-slave communicatie) en de MFRC522.h voor de Mifare RC522. De eerste is standaard geïnstalleerd, de tweede moet je waarschijnlijk wel nog downloaden en installeren. Ga voor downloaden van de library naar:
http://randomnerdtutorials.com/security-access-using-mfrc522-rfid-reader-with-arduino/
Ga voor het installeren van libraries naar:
https://sites.google.com/site/hwcontwerpen/sensoren/libraries-installeren
/* RFID RC-522 met leds
Code voornamelijk afkomstig van deze site: http://randomnerdtutorials.com/
Er worden twee bibliotheken (libraries) gebruikt. SPI.h is standaard aanwezig.
De MFRC522 kan je indien nodig van de bovenstaande site downloaden.
Created by FILIPEFLOP
Modified by Rui Santos
Aangepast door Stan Roukens
*/
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);
int groeneLed = 6;
int rodeLed = 7;
void setup(){
Serial.begin(9600);
SPI.begin();
mfrc522.PCD_Init(); // Initialiseer MFRC522
Serial.println("Houd de kaart/tag boven de lezer");
Serial.println();
pinMode(groeneLed, OUTPUT);
pinMode(rodeLed, OUTPUT);
}
void loop(){
if ( ! mfrc522.PICC_IsNewCardPresent()) { // Kijk of er een nieuwe tag is
return;
}
if ( ! mfrc522.PICC_ReadCardSerial()) { // Lees de tag
return;
}
Serial.print("UID tag :"); //Schrijf het UID nummer op de seriele monitor
String content = "";
byte letter;
for (byte i = 0; i < mfrc522.uid.size; i++) {
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
Serial.print(mfrc522.uid.uidByte[i], HEX);
content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
content.concat(String(mfrc522.uid.uidByte[i], HEX));
}
Serial.println();
Serial.print("Controle : ");
content.toUpperCase();
if (content.substring(1) == "F6 E7 3C D5") { //[[VERANDER hier het UID nummer van de tag die je toegang wil geven]]
Serial.println("Toegang OK");
Serial.println();
digitalWrite(groeneLed, HIGH);
delay(2000);
digitalWrite(groeneLed, LOW);
}
else {
Serial.println(" Geen Toegang");
Serial.println();
digitalWrite(rodeLed, HIGH);
delay(1000);
digitalWrite(rodeLed, LOW);
}
}