Pages: [1]   Go Down
Author Topic: Control de Acceso con arduino mega 2560 + RFID MFRC522  (Read 2670 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:

Code:
#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.
« Last Edit: March 26, 2013, 09:21:09 pm by bakuza » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:

Code:
#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?

Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Offline Offline
Newbie
*
Karma: 0
Posts: 1
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Pages: [1]   Go Up
Jump to: