Profilwalzen


Google-Suche auf MEINE-SCHALTUNG.de :





Online Rechner

Chronik

Dauerkalender


LED-Steuerung mit RFID

Bei einem RFID-System (Radio-Frequency Identification) handelt es sich um ein Gespann, das aus einem Reader (Lesegerät) und Transponder besteht. Der Datenaustausch zwischen den beiden Komponenten erfolgt via Funk berührungslos. Die RFID-Systeme werden grundsätzlich zur eindeutigen Kennzeichnung von Objekten in automatischen Produktionslinien, Transport oder Lagerung verwendet.
Der eigentliche Datenträger in dem RFID-System ist der Transponder. Der Datenumfang kann sehr unterschiedlich sein und hängt von der Anwendung ab. Jeder Transponder besitzt eine Antenne und einen elektronischen Chip, auf dem die Daten gespeichert sind. Viele Transponder verfügen nicht über eigene Energiequelle und können keine Daten senden oder empfangen. Erst wenn sie in die Nähe des Readers kommen und in das von ihm erzeugte elektromagnetische Feld „eintauchen“, werden sie auf diese Weise mit Energie versorgt und können am Datenaustausch teilnehmen. Die Transponder werden auch als „Tag“ bezeichnet. Jeder Transponder ist mit einer eindeutigen Identifikationsnummer (UID) versehen. Es ist möglich, sowohl die Daten von einem Transponder zu lesen als auch auf ihm zu speichern. Die Daten, die der Reader von einem Transponder empfängt, werden dann weiter an einen Mikrocontroller übertragen.
In dem Versuch kommt ein RFID RC522 Reader zum Einsatz. Als Transponder werden vier RFID-Chips und eine RFID-Card getestet. Das Lesemodul überträgt die Daten zu Arduino Mega. Jedem Chip wird in dem Versuch eine Leuchtdiode mit anderer Farbe zugeordnet, die er dann, sobald er den zugehörigen Chip erkennt, zum Leuchten bringt. Mit der Card werden dann alle Leuchtdioden gleichzeitig eingeschaltet. Das Lesegerät ruft bei dem Transponder die Identifikationsnummer ab und danach entscheidet er, welche Leuchtdiode eingeschaltet wird.

RFID-RC522

RFID-RC522

Bei dem Modul RFID-RC522 handelt es sich um eine Platine mit Abmessungen 60x40 mm. Das Lesegerät ist kein echtes Funkgerät. Das Modul funktioniert durch Erfassen kleiner Impedanzänderungen in Antennenkreis, die durch einen Transponder, der in seine Nähe gebracht wird, verursacht werden.

Technische Daten

- Chip: MFRC522
- Betriebsfrequenz: 13.56MHz
- Betriebsspannung: 3.3 V
- Stromverbrauch: 13 – 26 mA
- Erkennungsabstand: 30 mm
- Kommunikation: SPI interface

Anschlüsse

Anschlüsse

Card-Transponder

Card-Transponder

Chip-Transponder

Chip-Transponder


Arduino Mega

Arduino Mega

Der Reader benutzt die SPI-Schnittstelle für die Kommunikation mit dem Mikrocontroller. Der Mikrocontroller empfängt die Daten und abhängig von der Programmierung reagiert auf sie.

Arduino


Spannungsregler mit Anzeige

Spannungsregler

Der RFID-Reader arbeitet mit einer Versorgungsspannung von 3,3V. Man muss hier darauf achten, dass keine höhere Spannung an das Modul angeschlossen wird. Ggf. kann das Modul beschädigt werden. Mit einem richtig eingestellten separaten Spannungsregler ist man auf der sicheren Seite.

Spannungsregler


Schaltplan

Schaltplan


Identifikationsnummer auslesen

Die Aufgabe der Schaltung ist einfach. Es werden nacheinander vier RFID-Chips und eine RFID-Card in den Empfangsbereich des Readers gebracht. Der Mikrocontroller empfängt von dem Reader die Identifikationsnummer und schaltet eine Leuchtdiode ein. Damit das möglich ist, muss der Mikrocontroller im Vorfeld die Identifikationsnummer der Transponder, mit welchen er kommuniziert kennen. Nur dann kann er richtig reagieren. Bevor also die Schaltung getestet werden kann, müssen die Identifikationsnummer aus den Transpondern ausgelesen und im Programm eingegeben werden. Das Auslesen der Identifikationsnummer kann mit dem folgenden Programm erledigt werden:

// *********************************************************************************
// RFID-Chip- oder Card-UID auslesen
// Arduino Mega
// Arduino IDE 2.2.1
// *********************************************************************************

#include <SPI.h>
#include <MFRC522.h>

#define RST_PIN   5
#define SS_PIN    53

MFRC522 mfrc522(SS_PIN, RST_PIN);   

void setup() {

  Serial.begin(9600);  
  SPI.begin(); 
  mfrc522.PCD_Init();
}

void loop() {

  if ( ! mfrc522.PICC_IsNewCardPresent() || ! mfrc522.PICC_ReadCardSerial() ) {
    delay(50);
    return;
  }

  Serial.print(F("Card UID:"));
  for (byte i = 0; i < mfrc522.uid.size; i++) {
    Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
    Serial.print(mfrc522.uid.uidByte[i], HEX);
  } 
  Serial.println();

  mfrc522.PICC_HaltA();
  delay(1000);
}
// ********************************************************************************* 

Damit das Programm funktioniert, muss die Bibliothek (library) “MFRC522” der “GithubCommunity” installiert werden. Dies kann in der Arduino IDE mit dem Bibliothekenverwalter erledigt werden. Bei der Installation der eigentlichen Bibliothek werden auch Beispiel-Sketche gespeichert, die unter der Registerkarte Datei > Beispiele > MFRC522 zu finden sind.
Nachdem das Programm übertragen wurde, muss das serielle Monitor geöffnet werden. Hier wird, sobald ein Transponder in die Nähe des Readrs kommt, seine Identifikationsnummer angezeigt. Diese muss dann anschließend in unserem unten stehendem Hauptprogramm eingetragen werden.
Ergebnisse auf dem seriellen Monitor:

Ausgabe auf dem seriellen Monitor


Testschaltung

Testschaltung



Programm

// ************************************************************************************************
// LED-Steuerung mit RFID
// mit Arduino Mega
// Arduino IDE 2.2.1
// ************************************************************************************************
#include <SPI.h>                               // SPI - Bibliothek
#include <MFRC522.h>                           // MFRC522 - Bibliothek V 1.4.10

#define RST_PIN   5                            // Konfiguration RST Pin 
#define SS_PIN    53                           // Konfiguration SDA(SS) Pin

MFRC522 mfrc522(SS_PIN, RST_PIN);              // MFRC522 Instanz

String a;
String String_UID;
int LED_Gruen = 6;
int LED_Gelb = 7;
int LED_Rot = 8;
int LED_Blau = 9;
String UID1_Code = "3D 0F 6E 52 ";             // Identifikationsnummer
String UID2_Code = "23 C8 82 92 ";             // muss vorab ermittelt werden.
String UID3_Code = "23 EA BA 91 ";
String UID4_Code = "33 00 8A 91 ";
String UID5_Code = "24 C4 0F 18 ";

// --------------------------------------------------------------------------------------------------
void setup() {

    SPI.begin();                               // SPI Bus initialisieren
    mfrc522.PCD_Init();                        // MFRC522 Card initialisieren
    pinMode (LED_Gruen, OUTPUT);               // LEDs Pins als Ausgänge definieren
    pinMode (LED_Gelb, OUTPUT);              
    pinMode (LED_Rot, OUTPUT);
    pinMode (LED_Blau, OUTPUT);
}

// --------------------------------------------------------------------------------------------------
void LEDs_Aus() {                              // Alle LEDs ausschalten
    
    digitalWrite (LED_Gruen, LOW);
    digitalWrite (LED_Gelb, LOW);
    digitalWrite (LED_Rot, LOW);
    digitalWrite (LED_Blau, LOW);            
}

// --------------------------------------------------------------------------------------------------    
void loop() {
  
    if ( ! mfrc522.PICC_IsNewCardPresent() || ! mfrc522.PICC_ReadCardSerial() ) {
        delay(50);
        return;
    }
    String_UID = "";
    for (byte i = 0; i < mfrc522.uid.size; i++) {
        a = String(mfrc522.uid.uidByte[i], HEX);
        if (a.length() == 1) { a = "0" + a; }
        String_UID = String_UID + a + " ";     // UID String bilden
    } 

    String_UID.toUpperCase();                  // In Großbuchstaben wandeln

    if (String_UID == UID1_Code) {             // RFID-Chip 1 ?        
        LEDs_Aus();
        digitalWrite (LED_Gruen, HIGH);
    }
    if (String_UID == UID2_Code) {             // RFID-Chip 2 ?
        LEDs_Aus();
        digitalWrite (LED_Gelb, HIGH);
    }  
    if (String_UID == UID3_Code) {             // RFID-Chip 3 ?
        LEDs_Aus();
        digitalWrite (LED_Rot, HIGH);
    }
    if (String_UID == UID4_Code) {             // RFID-Chip 4 ?
        LEDs_Aus();
        digitalWrite (LED_Blau, HIGH);
    }
    if (String_UID == UID5_Code) {             // RFID-Card ?
        digitalWrite (LED_Gruen, HIGH);
        digitalWrite (LED_Gelb, HIGH);
        digitalWrite (LED_Rot, HIGH);
        digitalWrite (LED_Blau, HIGH);
    }          
    mfrc522.PICC_HaltA();
    delay (1000);
}
// ************************************************************************************************        


Kurzvideo

Kurzvideo


Weitere Themen:


Google-Suche auf MEINE-SCHALTUNG.de :


Home Impressum Datenschutz