RFID Sensor

Der RFID-Sensor bietet die Möglichkeit Signale eines bestimmten Tags zu erkennen. Diese Signale werden für die Öffnung der Tür des Briefkasten genutzt, wenn der erkannte Tag autorisiert ist.

Der verbaute MFRC522 RFID-Sensor nutzt das SPI-Interface des Wemos D1 Mini und benötigt daher sieben verschiedene Pins um alle nötigen Daten zu übertragen.
Die Schaltung muss, wie in Abb.1 zu sehen, verbunden werden, sodass der RFID-Sensor einwandfrei funktioniert.

Abb 1: RFID Schaltplan1

Im Programm wird zunächst überprüft, ob ein neuer RFID-Tag erkannt wird. Erkennt der RFID-Sensor einen neuen Tag, wird die Variable „ChipID” zurückgesetzt, um mögliche IDs aus vorherigen Erkennungen zu löschen.
Folgend wird die ID des neu ausgelesenen Tags in „ChipID” gespeichert und zur Erkennung in der Konsole ausgegeben.

 /* Nutzt RFID Sensor, um neu gelesenen Chip mit angegebener ChipID zu vergleichen.
   * Wenn der passende Chip gelesen wird, wird true zurueckgegeben, sonst false.
 */
  boolean RFIDDetected(){
    if (mfrc522.PICC_IsNewCardPresent()){
       //ChipID wird resettet
       chipID = 0;
       mfrc522.PICC_ReadCardSerial();
       
       // Neue ChipID in Variable laden
       for (byte i = 0; i < mfrc522.uid.size; i++){
         chipID=((chipID+mfrc522.uid.uidByte[i])*10);
       }
       Serial.println(chipID);


Nach dem Auslesen der ID wird diese mit einem, im Programmkopf festgelegten, Array „grantedChipIDs” verglichen. Dieses Array enthält alle IDs, die dazu berechtigt sein sollen, die Tür des Briefkasten zu öffnen.
Ist die neu ausgelesene „ChipID” in dem Array enthalten, wird der boolescher Wert „grant” auf „true” gesetzt.

 //gelesene ChipID mit allen erlaubten ChipIDs vergleichen
       boolean grant = false;
       for(int i = 0; i < sizeof(grantedChipIDs); i++){
         long tempChipID = grantedChipIDs[i];
         if(chipID == tempChipID){
           grant = true;
         }
       }

Im weiteren Verlauf wird „grant” genutzt, um als Rückgabevariable ein „true” oder „false” zurückzugeben. Ebenfalls wird in der Konsole eine Information zur Zulassung des Tags geschrieben.
Wird kein Chip erkannt, wird dies ebenfalls auf der Konsole wiedergegeben und der Wert „false” zurückgegeben.

//Je nach Ergebnis des Vergleichs wird true oder false zurueckgegeben
       if (grant){
         Serial.println("Zugang gewaehrt!");
         return true;
       } else {
         Serial.println("Chip hat keine Zugangsrechte!");
         return false;
       }
    } else {
      Serial.println("keinen Chip erkannt");
      return false;
    }
  }

In Abb.2 ist die Konsolenausgabe nach dem Erkennen eines zugelassenen Tags zu sehen.

Abb. 2: Konsole nach Erkennung eines zugelassenen Tags

1 MFRC522 RFID Reader am ESP8266 D1 Mini, 08.21.2020 makesmart.net/mfrc522-rfid-reader-esp8266-d1-mini/