Mifare RFID zum lesen und beschreiben von ID Cards und Dongles.
Anschlüsse von Links nach rechts
SDA (SS), SCK, Mosi, Miso, Not used, GND, RST, 3.3V
Bei Arduino Uno, Nano, Micro wird MOSI an Pin 11, MISO an Pin 12, SCK an Pin 13
SDA bzw. SS an Pin 10 (Configurable) und RST an Pin 9 (Configurable) angeschlossen.
SS und RST sind konfigurierbar, die Pins müssen im Sketch angeben werden.
Wenn alles korrekt angeschlossen und die Library installiert ist, dann könnt ihr loslegen.
Als erstes am besten mit dem DumpInfo, da wird der Inhalt der Karte komplett über Seriallprint ausgegeben.
Achtung bei den beigefügten Karten und Dongles lässt sich die UID nicht ändern
Die Sketche zum lesen und schreiben funktionieren wie beschrieben.
Ich selbst habe ein Progrämmchen gemacht das man als Türöffner verwenden könnte.
Es wird eine voreingestellte UID mit der gelesenen verglichen. Der Status Grün oder rot über ein RGB LED angezeigt. Achtung SS und RST wie in meinem Sketch anschliessen oder Sketch ändern
Die Library und Testsketches könnt Ihr hier downlowden.
/*UID lesen und mit gespeicherter vergleichen
LEd blau=Leser wartet, Led Rot=vergeigert, Led gün =OK
getestet 03.2015*/
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 9// so anschliessen
#define RST_PIN 5//so anschliessen
MFRC522 mfrc522(SS_PIN, RST_PIN);
byte soll[4]={
0x81, 0xAA, 0x2C, 0x61};//UID für den Vergleich
byte inhalt[4];
int ledgruen=2;
int ledblau=3;
int ledrot=4;
void setup()
{
Serial.begin(9600);
Serial.println("Leser bereit !");
Serial.println(" ");
SPI.begin();
mfrc522.PCD_Init();
pinMode(ledrot, OUTPUT);
pinMode(ledblau, OUTPUT);
pinMode(ledgruen, OUTPUT);
digitalWrite(ledblau, HIGH);
digitalWrite(ledrot, HIGH);
digitalWrite(ledgruen, HIGH);
}
void loop() {
// Look for new cards
digitalWrite(ledblau, LOW);
digitalWrite(ledrot, HIGH);
digitalWrite(ledgruen, HIGH);
if ( ! mfrc522.PICC_IsNewCardPresent())
return;
// Select one of the cards
if ( ! mfrc522.PICC_ReadCardSerial())
return;
// Show some details of the PICC (that is: the tag/card)
Serial.print("Start ");
digitalWrite(ledblau, HIGH);
digitalWrite(ledrot, LOW);
Serial.println();
Serial.print("PICC type: ");
byte piccType = mfrc522.PICC_GetType(mfrc522.uid.sak);
Serial.println(mfrc522.PICC_GetTypeName(piccType));
// Check for compatibility
if ( piccType != MFRC522::PICC_TYPE_MIFARE_MINI
&& piccType != MFRC522::PICC_TYPE_MIFARE_1K
&& piccType != MFRC522::PICC_TYPE_MIFARE_4K) {
Serial.println("This sample only works with MIFARE Classic cards.");
return;
}
for (byte i = 0; i < 4; i++) {
//Serial.print(mfrc522.uid.uidByte[i],BIN);
inhalt[i]=(mfrc522.uid.uidByte[i]);
}
int open=0;
for (byte i = 0; i < 4; i++) {
if (soll[i] == inhalt[i] ){
open =open+1;
}
}
if (open==4){
digitalWrite(ledrot, HIGH);
digitalWrite(ledgruen, LOW);
}
else
{
digitalWrite(ledrot, LOW);
digitalWrite(ledgruen, HIGH);
}
delay (1000);
}