Show Posts
Pages: [1]
1  International / Proyectos / Control de Acceso [Arduino Mega 2560+ Ethernet Shield PoE+RFID MFRC522] on: April 03, 2013, 12:44:27 pm
Estoy realizando mi proyecto de fin de carrera haciendo un sistema de control de acceso con RFID y Ethernet. La idea es que el sistema se pueda usar online comparando el número de serie único del tag con una base de datos alojada en un servidor y adicionalmente tenga respaldo offline ante cualquier falla del servidor comparando el número de serie del tag con un archivo guardado en la SD. El código por el momento va de la siguiente forma:

Code:
#include <SoftwareSerial.h>
#include <SPI.h>
#include <SD.h>
#include <Ethernet.h>

//Configuración Ethernet
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; // Ethernet Shield MAC
IPAddress ip ( 192,168,0,5 ); // Ethernet Shield IP
IPAddress server (192,168,0,10); // Server IP
EthernetClient client;
float value;

// String para almacenar UID
String dataString;
// Pin de Sálida
int led=13;


void setup()
{
Serial.begin(9600);
Serial1.begin(9600);
Serial1.write(0x02);
pinMode(53, OUTPUT);
SD.begin(4);
Ethernet.begin(mac,ip);
}

// Bucle Principal
void loop()
{
Get_RFID();
}

//Lectura de Datos RFID
void Get_RFID(){
if (Serial1.available()){
  Serial.println();
  Serial.print("\n\rCARD UID: ");
    if (Serial1.available()){
    dataString = "";
      for(int i=0;i<4;i++)
      {
      dataString += String(Serial1.read(), HEX);
      }   
     }
   Serial.print(dataString);
   if (client.connect(server, 80)) {
   Serial.println("ON");
   Serial.println("GET http://192.168.0.10/datalog.txt HTTP/1.0");
   Serial.println();
   if (client.available()) {
    Serial.println("Esto hay en la DB");
    char c = client.read();
    Serial.print(c);
    }
    else{
          //got what we need here! We can disconnect now
          client.stop();
          Serial.println("disconnecting.");
    }
   }
   else{
     for (int j=0;j<3;j++){
     String Lin = ReadFile(j,"datalog.txt");
    //Mostramos el resultado
     Serial.println(Lin);
       if (dataString.compareTo(Lin)==0){Serial.print("Iguales");break;}
     }
    }
   }
}

// Función para Leer Datos de la SD
String ReadFile(int Linea,char Ruta[]){
  int Lin=0;
  String Resultado;
  File myFile;
  byte Bin;
  myFile = SD.open(Ruta);;
  if (myFile) {     
      while (myFile.available()) {
        Bin=myFile.read();
        if (Bin==13){Lin++;myFile.read();}
        else
        {
          if (Lin==Linea){Resultado=Resultado+(char(Bin));}
          if (Lin>Linea){myFile.close();return Resultado;}
        }
     }
     myFile.close();return Resultado;
  }
}

La parte offline funciona correctamente, pero al hacer las pruebas con el servidor no puedo obtener los datos del archivo alojado en el servidor, al estar conectado al servidor el programa entra al if client.connect() pero nunca entra al if de client.avalaible(). Alguna sugerencia?

 
2  International / Documentación / Re: Control de Acceso con arduino mega 2560 + RFID MFRC522 on: March 28, 2013, 02:11:04 pm
Bueno consegui solucionar el inconveniente que se me presentaba, ahora a trabajar en la parte online de mi proyecto.
3  International / Documentación / Re: Control de Acceso con arduino mega 2560 + RFID MFRC522 on: March 28, 2013, 12:56:09 pm
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?

4  International / Documentación / Control de Acceso con arduino mega 2560 + RFID MFRC522 on: March 26, 2013, 02:14:06 pm
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.
5  International / Documentación / Arduino Mega 2560 + RFID on: December 12, 2012, 03:20:48 pm
Cordial Saludo.

Estoy trabajando en un proyecto para control de acceso a un aula. Para esto utilizare una arduino mega 2560, arduino ethernet Shield con PoE, un host usb shield sparkfun y un lector RFID SL040 (http://www.stronglink-rfid.com/es/rfid-modules/sl040.html). El lector RFID SL040 funciona como un teclado virtual y tiene comunicación USB, asi que intento hacer la comunicación del lector RFID con mi arduino utilizando el host shield USB. La verdad soy nuevo en esto de arduino asi que no tengo muy claro como lograr esto. Además quisiera saber como usar el archivo dll de mi lector RFID con mi arduino. ¿Hay alguna forma de pasar esta dll a una libreria en C?. De antemano les agradezco por su ayuda.
Pages: [1]