Pages: [1]   Go Down
Author Topic: Control de Acceso [Arduino Mega 2560+ Ethernet Shield PoE+RFID MFRC522]  (Read 674 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

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?

 
Logged

Pages: [1]   Go Up
Jump to: