Pages: [1]   Go Down
Author Topic: Lector RFID RDM630  (Read 1536 times)
0 Members and 1 Guest are viewing this topic.
Palencia (Spain)
Offline Offline
Newbie
*
Karma: 1
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola,
En primer lugar me presento, ya que es mi primer post en el foro.Estoy realizando un proyecto sobre Control de Accesos utilizando el lector RFID RDM630 con un Arduino UNO Rev3. El caso es que no consigo que me muestre por el puerto Serial el ID del tag, lo unico que me aparece son estas siglas,"ÿÿÿÿÿÿÿÿÿÿÿÿÿ", y no consigo saber a qué es debido, ¿os ha sucedido algo de esto?. Gracias!
Logged

Spain
Offline Offline
God Member
*****
Karma: 25
Posts: 956
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

No he usado nada de lo que tienes pero ¿Has mirado que la velocidad del serie sea la misma que tienes en la consola de arduino?
Code:
  // start serial port at 9600 bps:
  Serial.begin(9600);

Logged

CUIDADO !! MIS POST NO SON APTOS PARA MENORES. SI ERES MENOR DE 14 AÑOS DEBES DE LEERLOS ACOMPAÑADO DE UN ADULTO

Cordoba
Offline Offline
God Member
*****
Karma: 31
Posts: 545
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

aca hay un ejemplo que encontre en una pagina, de paso te pregunto cuanto lo pagaste?

 #include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);
unsigned char card[12];
void setup()
{
Serial.begin(9600);
lcd.print(“Card ID :”);
}
 
void loop()
{
unsigned char i=0;
for(;smiley-wink
{
if (Serial.available()>0)
{
card=Serial.read();
i++;
}
if (i>=11)
{
i=0;
decode();
}
}
}
void decode()
{
lcd.setCursor(0, 1);
unsigned char p;
for(p=3;p<11;p++)
{
lcd.print(card[p]);
}
}

http://blog.iteadstudio.com/play-rdm630-with-arduino/
Logged

El que pregunta aprende, el que responde aprende a responder.

Palencia (Spain)
Offline Offline
Newbie
*
Karma: 1
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola,
gracias por las respuestas! La verdad es que he comprobado todo lo que decís, y a la salida del puerto serie me sigue apareciendo lo mismo: "Tag ID:ÿÿÿÿÿÿÿÿÿÿÿÿÿ". La verdad, no tengo ni idea a que puede llegar a ser debido, pero no me reconoce ninguno de las 7 tags que tengo. He buscado varios codigos que hay por el foro y no me funciona con ninguno. Os adjunto el codigo que mas se aproxima al funcionamiento que pretendo, que lea y muestra el ID del tag", en principio  que me lo muestre por el puerto serie, pero la idea es que sea despues por un LCD:

En cuanto al dispositivo RDM630, actualmente creo que esta descatalogado, pero en ebay esta a muy bien precio, os paso el link: http://www.ebay.com.au/itm/321022704800

//Codigo de lectura de tag mediante modulo RFID RDM630
#include <SoftwareSerial.h>

#define SIZESTR 12

SoftwareSerial RFID(2, 3);

String msg = String();

void setup() 
{
   Serial.begin(9600);
   Serial.println("
  • Serial Ready !");
   RFID.begin(9600);
   Serial.println("
  • RFID Ready !");
}

char c;

void loop()
{
  while(RFID.available()>0)
  {
   c=RFID.read();
   msg.concat(c);
   if(msg.length()==SIZESTR+1){
     Serial.print("
  • Tag ID = ");
     Serial.println(msg);
     msg=""; 
     RFID.flush();
   }
  }
}
Logged

Cordoba
Offline Offline
God Member
*****
Karma: 31
Posts: 545
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Primero que nada no hace falta que uses el serialsoftware para probarlo porque el el tag solo transmite y vos usas solo el pin de recepcion, por lo que para mostrar la salida lo haces con el mismo puerto.
Yo probe primero con una terminal como hyperterminal u otro y ver que transmite, en mi caso tengo un conversor usb-rs232 que incluso me sirve para alimentar el modulo id20. ahi pruebo en crudo que larga por el puerto serie.
Despues no me funciono el saber byte por byte si seguian mas datos directamente con un for leeo todos los caracteres que deberian llegar.

  char val = 0;
  int  i;
  int index = 0;
  boolean reading = false;
  char readByte;
// Seccion critica no interrumpir con nada
//  noInterrupts();
  if (Serial.available() > 0 )
  {
    if ( (val = Serial.read()) == 02 )
    {   
       //Esperar caracter de marca de inicio
       Serial.print("[SOT] ");
       //Leer hasta encontrar el caracter de stop
      for ( i = 0; (val = Serial.read()) != 03 ; i++)
      {
        Serial.print(val, HEX);
        Serial.print(" ");
        IDstring = val;
      }
              Serial.println("[EOT]");
              Serial.println();
              Serial.print("  IDString[");
              IDstring[10] = 0x00;        // agregar fin de linea al string CR-LF
              Serial.print(IDstring);
              Serial.println("] ");
              Serial.println();
      lcd.cursorTo(2, 0);
      lcd.printIn(IDstring);
    }
  }


espero te ayude
Logged

El que pregunta aprende, el que responde aprende a responder.

Palencia (Spain)
Offline Offline
Newbie
*
Karma: 1
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

la cosa me parece muy extraña, porque con este codigo simple recibo por el puerto serie el mismo mensaje, sea del tag que sea, asi que no tengo ni idea de qué puede estar fallando, percibo que puede que o bien el modulo no tiene interface TTL y lleva otra o que los tags no son validos para este modulo (aunque el tag combo pone que si).


int data1 = 0;

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  if (Serial.available() > 0) {
    // read the incoming number on serial RX
    data1 = Serial.read();
    // display incoming number   
    Serial.print(" ");
    Serial.println(data1, DEC);
  }
}

Logged

Palencia (Spain)
Offline Offline
Newbie
*
Karma: 1
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

lo que veo por el puerto serie:

 255
 255
 255
 255
 255
 255
 255
 255
 255
Logged

Cordoba
Offline Offline
God Member
*****
Karma: 31
Posts: 545
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

como hicist las conexiones?
es ttl rs232 o wiegand?
aparentemente vienen 2 modelos con las mismas conexiones, si el tuyo no es rs232 tenes que usar otro metodo de lectura. Te aconsejo metas derecho sin usar arduino a una pc con un hyperterminal y vas a tener que envia si es rs232.

Los datos son leidos con el ejemplo que te envie
02 10ASCII Data Characters Checksum 03


aca te dejo una pagina con ejemplo completo
http://maniacbug.wordpress.com/2011/10/09/125khz-rfid-module-rdm630/

otro ejemplo
http://www.practicalarduino.com/projects/rfid-access-control-system

aca hay un hilo donde explica el posible error de la libreria
http://arduino.cc/forum/index.php?topic=113970.0


Logged

El que pregunta aprende, el que responde aprende a responder.

Palencia (Spain)
Offline Offline
Newbie
*
Karma: 1
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Gracias por la info maxid.Como bien dices, el formato que debe apareces es el que has puesto. Las conexiones son muy simples; Pin TX del RDM630 al RX del Arduino UNO, 5V DC del RDM630 a 5V del Arduino y GND del RDM630 a GND del Arduino. Opcionalmente puedes colocar también un led que te indique que hay proceso de lectura al pasar el tag por la antena.

He borrado de mi IDE Arduino la librería SoftwareSerial que tenia y acabo de introducir la ultima version de la lirbería NewSoftSerial, en su version 12.

Todo parece indicar que el RDM630 que tengo no lleva interface TTL-RS232 y viene con Wiegand, por lo que los datos que recibe por el puerto serie son confusos.

Otra posibilidad es la velocidad de transmisión de datos, según este usuario no puede ser igual o mayor a 9600bps, ya que si no imprime basura (a lo mejor lo que me sucede a mi). Probaré con 4800 bps a ver que sucede.
-link: http://arduino.cc/forum/index.php?action=printpage;topic=53717.0http://arduino.cc/forum/index.php?action=printpage;topic=53717.0
Logged

Cordoba
Offline Offline
God Member
*****
Karma: 31
Posts: 545
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

No me parece que sea problemas de velocidad, sino que no es la interfaz correcta, wiegand usa 2 lineas para los datos es un poco mas complicada.
Encontre una pagina que da elemplo de como hacerlo
http://www.pagemac.com/azure/arduino_wiegand.php
Si tenes un osciloscopio o un analizador logico podrias ver las salidas de los pines, sino proba con ese codigo como si fuera wiegand.
Logged

El que pregunta aprende, el que responde aprende a responder.

Palencia (Spain)
Offline Offline
Newbie
*
Karma: 1
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Maxid, estas en lo cierto. Muchas gracias por el código para lectores wiegand. Efectivamente este modulo lleva una interfaz Wiegand 26, al cargarlo en mi Arduino UNO me detecta 26bits y muestra el FC (Facility Code) y el CC (Card Code) en decimal. Este es el resultado que obtengo por el puerto serie al pasar uno de mis tags:

Read 26 bits. FC = 162, CC = 50382

Creo que el asunto esta resuelto, estaba trabajando en una interfaz que no era la que tenía el módulo RDM630.



Logged

Cordoba
Offline Offline
God Member
*****
Karma: 31
Posts: 545
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Cuanto me alegro. Modifica el hilo como solucionado y contanos mas de tu experiencia con el modulo.
Logged

El que pregunta aprende, el que responde aprende a responder.

Pages: [1]   Go Up
Jump to: