Hola, Muy Buenos Días.. O Tardes.. Agradezco primero que nada su tiempo para responderme.. tengo el siguiente problema..
Estoy tratando de hacer un sistema de registro de usuarios mediante el modulo RFID “RDM-3600” para la apertura de una puerta, con PHP y MYSQL, no tengo mucho conocimiento en programacion pero estoy investigando todo lo que puedo, llevo días en esto, y no consigo tener una captura correcta con el lector RFID, puedo realizar la lectura, pero no consigo detenerla, ya que al pasar la tarjeta por el lector este realiza multiples lecturas y no captura el dato como lo necesito, encontre algunos codigos buscando en google, pero no consigo hacerlos funcionar, hasta ahorita tengo esto:
String estado;
char charBuf[3];
void setup() {
Serial1.begin(9600); // inicia el puerto serial para comunicacion con el Bluetooth
Serial.begin(9600);
pinMode(2,OUTPUT);
}
void loop() {
if (Serial1.available() > 0) { // lee el bluetooth y almacena en estado
estado = Serial1.read();
estado.toCharArray(charBuf, 3);
Serial.print(charBuf);
Serial.println(" ");
}
}
Esto me lee la tarjeta, pero realiza multiples lecturas y no logro almacenar el "valor" como tal, para poder interactuar con el, para despues enviarlo por el comando "GET" y así poder almacenarlo en la base de datos, tengo entendido que hay que envíar un byte para marcar el inicio de la lectura y un byte para marcar el final, solo que no se como hacerlo, espero y puedan ayudarme y comentar el codigo en cada linea para poderlo comprender mejor, MUCHAS MUCHAS GRACIAS!
Hace 24 hs o menos en la sección General le respondí a alguien por el mismo tema.
Buscalo!!
Sino busca en Search (arriba derecha).
Ya conseguí solucionarlo!, indage un poco mas en google, MUCHAS GRACIAS y disculpa la molestía, igual comparto el codigo por si a alguien le sirve:
Esto lo hice utilizando un arduino mega, el modulo RFID - "RDM 3600" y el ETHERNET SHIELD.
Este codigo captura el valor sensado por el RFID y lo envía hacia la base de datos
el unico problema es que lo envía 2 veces, y para que no me lo almacenara 2 veces en la base de datos la variable en phpmyadmin te da la opcion de asignarle un valor unico y esto impide que se repita.
ahora estoy detenido con lo que sigue... **¿como lograr que el arduino consulte la base de datos para que al momento de volver a leer la "tarjeta", arduino consulte en la base de datos si la tarjeta está registrada y si se valida la acción active un relé ? **
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress server(192, 168, 0, 2);
EthernetClient client;
int flag=0,RX_Flag=0;//serial port sign
char Code[14];
long Num=0;//decode data
long tag;
void Read_ID(void)
{
int i=0;
char temp;
for(i=0;(Serial1.available()>0);i++)//
//while(Serial.available()>0)
{
temp=Serial1.read();
//Serial.print(temp);
delay(2);
//Serial.println(i);
if(temp==0X02) //recieve the ssrt bit
{
flag=1;i=0;RX_Flag=0;//
}
if(flag==1)//detect the start bit and recieve data
{
if(temp==0X03)//detect the end code,
{
flag=0; //zero clearing
if(i==13) RX_Flag=1;//
else RX_Flag=0;
break;
}
Code[i]=temp;
}
}
flag=0;//
}
void Envio_DATO(void)
{
Serial.println("Connecting...");
//Serial.println(tag);
if (client.connect(server, 80)>0) { // Conexion con el servidor
client.print("GET /test/prueba.php?valor=");; // Enviamos los datos por GET
client.print(tag);
tag = 0;
client.println(" HTTP/1.0");
client.println("User-Agent: Arduino 1.0");
client.println();
Serial.println("Conectado");
} else {
Serial.println("Fallo en la conexion");
}
if (!client.connected()) {
Serial.println("Disconnected!");
}
client.stop();
client.flush();
delay(1000); // Espero un minuto antes de tomar otra muestra
}
void setup() {
Serial1.begin(9600); // inicia el puerto serial para comunicacion con el Bluetooth
// start the serial library:
Serial.begin(9600);
// start the Ethernet connection:
if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to configure Ethernet using DHCP");
// no point in carrying on, so do nothing forevermore:
for(;;)
;
}
// give the Ethernet shield a second to initialize:
delay(1000);
Serial.println("connecting...");
// if you get a connection, report back via serial:
}
void loop()
{
if(tag > 0){
Envio_DATO();
}
int i;
long temp=0,time=0;
RX_Flag=0;
while(1)
{
Read_ID();
if(RX_Flag==1)
{
for(i=5;i<11;i++)//
{
Num<<=4;
if(Code[i]>64) Num+=((Code[i])-55);
else Num+=((Code[i])-48);
//Serial.println(Num);
}
//Serial.println(Num);
tag = Num;
while(Serial1.read()>0);//
RX_Flag=0;//
Num=0;//
}
break;
}
}