RFID – RDM 3600 ¿Como Almacenar la Lectura?
Inicio › Foros › Arduino (Nano, Mega, Uno, Mini) › RFID – RDM 3600 ¿Como Almacenar la Lectura?
- Este debate tiene 7 respuestas, 3 mensajes y ha sido actualizado por última vez el hace 2 años, 7 meses por
Antony García González.
-
AutorEntradas
-
-
agosto 4, 2017 a las 11:36 am #10577
Gustavo Soto
ParticipanteHola, 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, estuve leyendo «Transceiver de 433Mhz » y «Cadenas y Arrays» y me sirvio la informacion, solo que no consigo obtener un buen resultado, 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, vi una parte del codigo del «TRANSCEIVER DE 433Mhz» que hacía esto.. pero quisiera que me ayudaran mas a detalle.. AQUI ESTA MI CODIGO:Espero y puedan corregirme y apoyarme mas a detalle con esto..
12345678910111213141516171819202122String estado;char charBuf[3];void setup() {Serial1.begin(9600); // inicia el puerto serial para comunicacion con el BluetoothSerial.begin(9600);pinMode(2,OUTPUT);}void loop() {if (Serial1.available() > 0) { // lee el bluetooth y almacena en estadoestado = Serial1.read();estado.toCharArray(charBuf, 3);Serial.print(charBuf);Serial.println(" ");}} -
agosto 4, 2017 a las 8:44 pm #10578
Antony García González
SuperadministradorHola.
Primero que todo debemos definir aquello de lo que estamos hablando. Una cosa es un lector de RFID y otra cosa muy distinta es un transceptor de 433 MHz. Un módulo de RFID permite leer/escribir tags de RFID y trabajan a frecuencias definidas por estándares, siendo 125 kHz y 13.56 MHz las más comunes.
Un transceptor de 433 MHz permite enviar/recibir información hacia otro transceptor. Se usa para comunicación y no para leer tags de RFID.Sobre RFID te recomiendo el siguiente post: http://panamahitek.com/arduino-rfidnfc-el-shield-pn532/
-
agosto 9, 2017 a las 3:11 pm #10584
Gustavo Soto
Participante¡Gracias por su respuesta!.. mencione el transceptor de 433Mhz porque en una parte mencionaba que este hacía multiples lecturas y en una linea comentada decía que utilizaban esa linea para detener las «multiples lecturas» y pues lo relacioné con el RFID debido a que tambien tenía ese problema de las «multiples lecturas» al pasar la tarjeta por el lector. pero EN FIN…
ya logre avanzar en mi proyecto, pero requiero de mas ayuda PORFAVOR!.. si no es mucha la molestia, logré conseguir que la variable que almacena la lectura del RFID capturara 1 sola lectura, tambien logre que esa lectura se enviara a una base de datos y se almacenara, tambien logré que el arduino comprobara al pasar nuevamente la tarjeta PREVIAMENTE registrada en la base de datos, esta se validara y posteriormente accionara un led, estoy realizando un pequeño sistema con PHP y quiero lograr algo parecido a esto:
https://www.youtube.com/watch?v=h-xyvUcHZPs
ya tengo la pagina PHP del login, y eh realizado un pequeño formulario en donde quisiera que al pasar la tarjeta por el lector, el arduino me desplegara la variable de la tarjeta en el «FORM» o el campo de texto en donde colocaré dicha lectura.
le anexo el codigo que estoy utilizando en el arduino:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213#include <SPI.h>#include <Ethernet.h>#include <SoftwareSerial.h>byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };IPAddress server(192, 168, 0, 3);EthernetClient client;SoftwareSerial RFID(2, 3); // RX and TXint flag=0,RX_Flag=0;//serial port signchar Code[14];long Num=0;//decode datalong tag;String location = "http://192.168.0.3/test/data.php HTTP/1.0"; // este string es donde el PHP le envía datos al arduino para validar los RFID registrados en la DB.char inString[32]; // string for incoming serial dataint stringPos = 0; // string index counterboolean startRead = false; // is reading?String dato;int abierto = 7;int on = 0;int envio = 0;String data;void Read_ID(void){int i=0;char temp;for(i=0;(RFID.available()>0);i++)////while(Serial.available()>0){temp=RFID.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 clearingif(i==13) RX_Flag=1;//else RX_Flag=0;break;}Code[i]=temp;}}flag=0;//}void Envio_DATO(void) // <------ este envía el TAG RFID al PHP para que este lo inserte en la base de datos{Serial.println("Connecting...");//Serial.println(tag);if (client.connect(server, 80)>0) { // Conexion con el servidorclient.print("GET /test/prueba.php?valor=");; // Enviamos los datos por GETclient.print(tag);tag=0;client.println(" HTTP/1.0");client.println("User-Agent: Arduino 1.0");client.println();Serial.println("Conectado");digitalWrite(abierto,HIGH);delay(500);digitalWrite(abierto,LOW);} else {Serial.println("Fallo en la conexion");}if (!client.connected()) {Serial.println("Disconnected!");}client.stop();client.flush();}String connectAndRead(){//connect to the serverSerial.println("connecting...");//port 80 is typical of a www pageif (client.connect(server, 80)) {Serial.println("connected");client.print("GET ");client.println(location);client.println();//Connected - Read the pagereturn readPage(); //go and read the output}else{return "connection failed";}}String readPage(){//read the page, and capture & return everything between '<' and '>'stringPos = 0;memset( &inString, 0, 32 ); //clear inString memorywhile(true){if (client.available()) {char c = client.read();if (c == '<' ) { //'<' is our begining characterstartRead = true; //Ready to start reading the part}else if(startRead){if(c != '>'){ //'>' is our ending characterinString[stringPos] = c;stringPos ++;}else{//got what we need here! We can disconnect nowstartRead = false;client.stop();client.flush();Serial.println("disconnecting.");return inString;}}}}}void setup() {pinMode(abierto, OUTPUT);// start the serial library:Serial.begin(9600);RFID.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++; // le puse esto para que la segunda lectura que hace el lector porque aun que ya no hace multiples lecturas este hace 2...Serial.println(envio);if(envio == 2){ // aquí envío la segunda lectura, para no enviar las 2Envio_DATO();envio = 0;}// y todo lo que está comentado aca abajo es donde al pasar la tarjeta lo valida con la DB// dato = tag;// Serial.print(dato);// String pageValue = connectAndRead(); //connect to the server and read the output// int pos=pageValue.indexOf(dato);//// if (pos>=0) {// on++;// Serial.println(on);// tag = 0;// }// if(on == 2){//// digitalWrite(abierto,HIGH);// delay(1000);// digitalWrite(abierto,LOW);// Serial.print(" ACEPTADA En La Posicion : ");// Serial.print(pos);// Serial.print(" ");// on = 0;// }//Serial.println(pageValue); //print out the findings.}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(RFID.read()>0);//RX_Flag=0;//Num=0;//}break;}}————- aca abajo anexo el codigo PHP que me envía los datos a la DB————–
123456789101112<?php$conexion = mysql_connect("localhost", "root", "");mysql_select_db("test",$conexion);mysql_query("INSERT INTO <code>probando</code>(<code>nombre</code>) VALUES ('" . $_GET['valor'] . "')", $conexion);$dato = $_GET['valor']; // aquí pretendía imprimir el valor pero pues no pasa nada....echo $dato;?>MI DUDA PRINCIPAL: ¿como pasar en tiempo real la lectura del RFID a un campo de texto en un FORM en PHP?
le agradezco mucho por tomarse el tiempo de leer esto tan largo… MUCHAS GRACIAS…
-
agosto 9, 2017 a las 4:10 pm #10585
Antony García González
SuperadministradorAntes de contestar te pregunto algo… donde tienes alojada la página web en la que quieres mostrar la lectura del RFID?
-
-
agosto 10, 2017 a las 10:35 am #10590
Gustavo Soto
Participante¡MUCHAS GRACIAS POR RESPONDER!
todo lo estoy trabajando de forma local, con el xampp, los archivos los tengo en mi pc y de ahí lo ejecuto.
disculpe, olvide mencionar en la respuesta anterior que ya intente también utilizar variables de sesión.
este es el FORMULARIO :
12345678910111213141516171819202122232425262728293031323334353637383940<html><head><title>Formulario</title><link rel="shortcut icon" href="../Imagenes/favi.jpg" /><a href="http://jquery-1.7.1.min.js" rel="nofollow">http://jquery-1.7.1.min.js</a><a href="http://login.js" rel="nofollow">http://login.js</a></head><body><?phpinclude_once("claseprincipal.php");$objeto = new claseprincipal();$objeto->Log_In();$objeto->redir();//$_GET['valor'] = "";echo $_SESSION['cardid'] ;?>Formulario<img src="imagenes/login.png"/>Nombre de Usuario:Numero de Empleado:Card ID:</div></body></html>MIIIL MIL GRACIAS!
-
agosto 10, 2017 a las 11:23 am #10591
Antony García González
SuperadministradorTe pregunto eso porque hay un modelo de Arduino en el cual puedes montar un webserver y hacer eso que quieres de una forma muy sencilla. El Arduino Yún / Linkit Smart Dúo (cualquiera de los dos) te permite montar un webserver y visualizar páginas web directamente desde el Arduino. Vienen con conexión WIFI nativa y te permite ejecutar scripts en PHP, NodeJS, etc.
Lo que quieres hacer con lo que tienes actualmente es difícil. Una forma de lograr lo que quieres es guardar la lectura en una base de datos y hacer que el form cargue ese registro. Pero para ello tendrías que actualizar la página constantemente, utilizando JQuery/Javascript. Sin embargo, eso sobresaturaría tu server por el exceso de peticiones.
La solución elegante es tratar de implementar websockets, pero en eso sí que no tengo conocimientos y ahí no te puedo guiar.
Con el Arduino montarías tu página web en la propia placa, harías la lectura y podrías visualizarla al instante en cualquier navegador web. Quizás exista una solución más sencilla para todo esto pero la verdad es que web no es mi fuerte.
-
-
junio 6, 2018 a las 5:20 pm #11571
Cesar Diaz de Leon
ParticipanteHola amigo, Lograste resolver tu problema??
-
junio 14, 2018 a las 10:00 am #11610
Antony García González
SuperadministradorCreo que podrías crear una variable global donde almacenes la lectura. Actualmente está dentro del Serial.available(), lo cual hace que la variable se destruya una vez finaliza la lectura. Si quieres conservar el dato en la memoria dinámica, crea una variable global.
-
-
AutorEntradas
- Debes estar registrado para responder a este debate.