Control de Acceso con arduino mega 2560 + RFID MFRC522

Cordial Saludo.

Estoy trabajando en mi proyecto de fin de carrera realizando un control de acceso a las aulas utilizando una arduino mega 2560, una ethernet Shield con Poe y un RFID Reader/Writer MFRC522 MIFARE. La idea es que el sistema se pueda usar online y tenga respaldo offline ante cualquier falla del servidor. Por ahora estoy trabajando en la parte offline, donde se lee el número de serie único del tag utilizando el RFID, se trasnmite por serial a mi arduino mega y esta debe comparar el serial del tag con los seriales guardados en la memoria SD. Mi código como va es el siguiente:

#include <SoftwareSerial.h>
#include <SPI.h>
#include <SD.h>

byte dato[4],aux;

void setup() 
{
// Incialización RFID
  Serial.begin(9600);
  Serial.println("Waiting for Card\n");
  Serial1.begin(9600);
  Serial1.write(0x02);// Comando para que el RFID este en modo Lectura de datos
// Inicialización SD
  Serial.print("Inicializando SD...");
  pinMode(53, OUTPUT);  
// La SD fue iniciada?
  if (!SD.begin(4)) {
    Serial.println("Tarjeta defectuosa o no presente");
    return;
  }
    Serial.println("Tarjeta OK");
}

// Run over and over
void loop() 

{
delay(500);
  if (Serial1.available()){
      Serial.println();
      Serial.print("\n\rCARD UID: ");
      for (unsigned int i=1; i<5 ;i++){ 
       if (Serial1.available()){ 
         dato[i]= Serial1.read();
        if (dato[i]< 16)   
     Serial.print("0");
     Serial.print(dato[i],HEX);  
         }// Fin if de imprimir
        }// Fin Ciclo For
  File myfile=SD.open("datalog.txt");
     if (myfile){
     while(myfile.available()){
       Serial.write(myfile.read());
     }
     myfile.close();
     }
     else{
     Serial.println("error opening test.txt");
   }
  
       } //Fin primer if
       
}// Fin del Loop

Mi duda esta en como hago para comparar el dato del tag que estoy leyendo con cada uno de los datos que se encuentran en la SD. De antemano agradezco su ayuda.

Trabajando un poco en mi código he logrado convertir los datos recibidos del RFID a un String y almacenar los datos de la SD en una variable tipo String, pero tengo problemas al momento de comprarlos aun. Este es mi código:

#include <SoftwareSerial.h>
#include <SPI.h>
#include <SD.h>

String dataString, sdString,m;
int i;

void setup() 
{
// Incialización RFID
  Serial.begin(9600);
  Serial.println("Waiting for Card\n");
  Serial1.begin(9600);
  Serial1.write(0x02);
// Inicialización SD
  Serial.print("Inicializando SD...");
  pinMode(53, OUTPUT);  
// La SD fue iniciada?
  if (!SD.begin(4)) {
    Serial.println("Tarjeta defectuosa o no presente");
    return;
  }
    Serial.println("Tarjeta OK");
}

// Run over and over
void loop() 

{
delay(500);
  if (Serial1.available()){
      Serial.println();
      Serial.print("\n\rCARD UID: ");
       if (Serial1.available()){ 
         dataString = ""; 
         for(i=0;i<4;i++)
           {
           dataString += String(Serial1.read(), HEX); 
           }    
         }// Fin if Get UID
         Serial.print(dataString);
         byte Bin;
         int j=0;
         File myFile = SD.open("datalog.txt");
         if (myFile) { 
           
      while (myFile.available()) {
        sdString = "";
        Bin=myFile.read();
        sdString=sdString+char(Bin);
        Serial.print(sdString);
        if (strcmp(dataString, sdString) == 0) {Serial.print("Son iguales");} // Esta es la linea de comparación pero me presenta error.
     }
     
     myFile.close();
  }
       } //Fin if Puerto Serial Ok
}// Fin del Loop

Alguna sugerencia?

Bueno consegui solucionar el inconveniente que se me presentaba, ahora a trabajar en la parte online de mi proyecto.

buenas tardes, me interesa el tema de tu proyecto, yo he realizado controles de acceso off line, guardando los cof¿digos en la memoria de arduino, nunca logre hacerlo desde memoria sd, podrias facilitarme el codigo de la comparacion, para ver si lo puedo agregar a mi proyecto.

Gracias

Julio

Hola como estan?

Perdonen soy nuevo en esto podrán ayudarme a enterner como manejar rfid con FRC522? :grin:

Desde ya gracias!

Muy bueno tu proyecto pero no es un tutorial o documentación entonces está mal ubicado.
Tendrías que pedirle al moderador que te mueva este proyecto a justamente PROYECTOS.

Porque si vamos a debatir el sitio para hacerlo es aquel y no este.
Gracias y perdón porque no aporté mas que para reubicarte la ubicación del Topico.

Hola.
Me uno a lo dicho por surbyte. Probablemente te has sentido solo y es porque este esta es más una sección de exposición que de solicitud de ayuda.
Me interesaría saber, para poder darte alguna idea en la optimización, qué formato tienen los datos de esas etiquetas (cuántos caracteres, si son numéricos decimales o hexadecimales, o alfanuméricos...)