In dit project laat ik jullie zien hoe je zelf een RFID reader aansluit op je Arduino.
Dit project geeft je een basis idee van de werking van RFID. We gaan met een Pasje en een Sleutelhanger verschillende LEDjes laten branden. Als je klaar bent met dit project kan je zelf bijvoorbeeld een servo aansturen om een RFID Slot te maken.
De codes die nodig zijn voor dit project kunnen lastig zijn om te begrijpen voor beginners.
Let op: Voor dit project is een soldeerbout nodig.
- Niveau – Beginner / Gevorderde 50%
- Tijdsduur – 15/25Min 40%
- Kosten – €42,42 euro compleet 35%
Stap 1: Benodigdheden
-
Aanbieding!
Breadboard 830 tie points
Oorspronkelijke prijs was: €7,49.€6,95Huidige prijs is: €6,95. /€5,74 excl. btw -
Arduino Uno Rev3 – ATMEGA328
€24,85 /€20,54 excl. btw -
Premium Jumper Wires 40stuks 20cm M/M
€3,45 /€2,85 excl. btw -
5mm LED Rood
€0,29 /€0,24 excl. btw -
5mm LED Groen
€0,29 /€0,24 excl. btw -
RFID Reader kit
€5,95 /€4,92 excl. btw -
Aanbieding!
Breadboard 830 tie points – Transparant
Oorspronkelijke prijs was: €8,49.€6,95Huidige prijs is: €6,95. /€5,74 excl. btw -
3mm LED Rood
€0,24 /€0,20 excl. btw -
3mm LED Groen
€0,24 /€0,20 excl. btw
Stap 2: Bouwen en Bedraden
Nu gaan we het project in elkaar zetten.
Om te beginnen gaan we de Pin header aan de RFID Reader vast solderen. Wij hebben gekozen voor de gebogen headers omdat de reader dan rechtop in het breadboard staat.
Sluit de componenten aan zoals op de onderstaande Fritzing aangegeven.
Stap 3: Programmeren
Nu je klaar bent met het bedraden en bouwen van je Arduino RFID LED Controller kan je beginnen met het programmeren van de Arduino Uno.
Voor deze code moeten wij een library toevoegen.
Een Library of Include file bevatten vaak code welke vaak hergebruikt kan worden in andere Sketches. Vaak zijn libraries (bibliotheken) een verzameling samenhangende functies gericht op een bepaalde toepassing. Bijvoorbeeld om een strip met LEDjes aan te sturen, speciale wiskundige functies of bijvoorbeeld om een LCD schermpje aan te sturen.
Wij gebruiken de library voor de RFID Reader, anders weet de Arduino niet wat hij met de binnenkomende data moet doen.
dit doen we door het mapje MFRC522 te kopieren of te verplaatsen naar de map libraries.
deze map is normaal te vinden in https://www.arduinolibraries.info/libraries/mfrc522 of https://github.com/ljos/MFRC522
Voor deze library hebben we versie 1.4.5 gebruikt.
De onderstaande code kan je kopiëren naar de Arduino IDE.
//elektronicavoorjou.nl
//Download de MFRC522 library hier: https://github.com/ljos/MFRC522 of https://www.arduinolibraries.info/libraries/mfrc522
#include <SPI.h>
#include <MFRC522.h>
//Geeft de pinnen aan
#define SS_PIN 10
#define RST_PIN 9
//Geeft aan op welke pin de led is aangesloten
const int ledpin1 = 7;
const int ledpin2 = 6;
const int buzzer = 8;
//Creëert eigen veriabele voor kaart reader
MFRC522 myReader(SS_PIN, RST_PIN);
void setup()
{
//zet buzzer op pin 8 als output
pinMode(buzzer, OUTPUT);
//Start communicatie met de monitor
Serial.begin(9600);
//Library SPI
SPI.begin();
//Tot en met versie 1.4.5 deze aanroep
myReader.PCD_Init();
//Print op monitor: “..”
Serial.println(“Presenteer je key-tag”);
Serial.println();
//initialiseerd de pin 7 en 6 als output
pinMode(ledpin1, OUTPUT);
pinMode(ledpin2, OUTPUT);
}
void loop()
{
//kijkt of er geen nieuwe kaarten worden gedetecteerd
digitalWrite(ledpin1, HIGH);
if ( ! myReader.PICC_IsNewCardPresent())
{
// niet gevonden, stopt met zoeken
return;
}
//Kijkt of de key-tag uitgelezen kan worden
if ( ! myReader.PICC_ReadCardSerial())
{
// niet gelukt om uit te lezen
return;
}
//Show UID on serial monitor
String key= “”;
for (byte i = 0; i < myReader.uid.size; i++)
{
key.concat(String(myReader.uid.uidByte[i] < 0x10 ? ” 0″ : ” “));
key.concat(String(myReader.uid.uidByte[i], HEX));
}
//Zet code van gevonden sleutel in hoofdletters voor betere vergelijking
key.toUpperCase();
//Afdrukken naar monitor zodat je weet welke key gelezen wordt
Serial.println();
Serial.print(“key tag is : “);
Serial.print(key);
//Geeft toegang als key “..” hetzelfde is
//Elke key-tag heeft een eige code, lees u code uit via monitor
Serial.println();
Serial.print(“Toegang : “);
if (key == ” 93 F9 BE A9″)
{
//Rode led uit, groen gaat aan
digitalWrite(ledpin1, LOW);
digitalWrite(ledpin2, HIGH);
//Bepaalt frequentie van de buzzer
tone(buzzer, 1000);
// 1 seconden wachten
delay (1000);
//stopt geluid
noTone (buzzer);
//Print op monitor
Serial.print(“Verleend”);
delay(3000);
digitalWrite(ledpin1, HIGH);
digitalWrite(ledpin2, LOW);
}
else {
//Rode led aan, groen uit
digitalWrite(ledpin1, HIGH);
digitalWrite(ledpin2, LOW);
//Bepaalt frequentie van de buzzer
tone(buzzer, 500);
// 1 seconden wachten
delay (1000);
//stopt geluid
noTone (buzzer);
//Print op monitor
Serial.print(“Niet verleend”);
delay(3000);
}
Serial.println();
}
Aangezien elke RFID pas een andere basiswaarde heeft moeten we deze eerst uitlezen.
Dit doen we door de seriële monitor rechtsboven in de Arduino IDE te openen. Als je nu een pasje voor de RFID reader houdt komt er een waarde te voorschijn. Zie onderstaande foto.
Deze waarde moet je naar de in de code plakken voor (key == ” _____”) hier komt de waarde van uw pas.
De waarde die hier aan is gekoppeld komt in dit geval overeen met de groene LED.
De rode LED brand bij alle pasjes die niet worden herkent.
Je bent nu klaar met dit project. Voeg zelf een relais en servo toe om je eigen RFID slot te maken!
Jammer maar werkt niet.
Serial.print(“Niet Verleend”);
stray ‘\342’in program
Dag Arie,
Een stray 342 verwijst meestal naar een kopieer fout.
Probeer de code eens over te typen. Lukt het dan wel?