Problema ID-12

Hola,

Tengo una Mega 2560 y el rfid ID-12 conectado a ella. Me he bajado el código de playground para empezar a trastear:

http://www.arduino.cc/playground/Code/ID12

Ayer lo hice funcionar sin problemas, pero hoy al intentar cargar el código de nuevo no me aparece nada en el serial monitor. El fallo es en la lectura de la variable "val", pues no tiene valor 2, sino FF. Pero no entiendo por qué :frowning:

¿Alguien puede echarme una mano?
Gracias.

Que tal zEtA, dices

no me aparece nada en el serial monitor

y luego

El fallo es en la lectura de la variable "val", pues no tiene valor 2, sino FF. Pero no entiendo por qué smiley-sad

.

Entonces si aparece algo en serial monitor????, o te estoy entendiendo mal :smiley:

Prueba esto : RFID id-12 tagreader | Conversations with spaces

Saludos!

Hola Alcafuz,

Gracias por contestar. Verás, lo que he hecho es modificar en el código inicial de

http://www.arduino.cc/playground/Code/ID12

introduciendo lo siguiente:

Serial.println("Esperando lectura...");
delay (2000);
if(Serial.available()) {
Serial.println("Serial listo...");
delay (2000);
val = Serial.read();
Serial.print("val es ");
Serial.println(val, DEC);
if(val == 2) { // check for header
bytesread = 0;
...

De manera que cuando lee la tag, me saca por pantalla el valor de la variable val. Este valor debería corresponder a un 2 para que el código continúe, pero sin embargo me dice que es 255 (en HEX FF). Por lo que el programa se salta el condicional y todo lo siguiente. De ahí que no aparezca inicialmente nada en el serial monitor.

He probado a cambiar en el condicional el 2 por el 0xFF y entonces si ejecuta todo el programa, pero me muestra que el código de la tag es FF FF FF FF FF.

Con el ejemplo que me has pasado me aparece en el serial monitor cada vez que paso la tag lo siguente:

ÿÿÿÿÿÿÿÿÿÿ

Solucionado! Al parecer para que funcione se necesita conectar una resistencia Pull up de 4K7 entre los pines 11 y 9 del módulo ID-12. Habían varios comentarios con el mismo problema y luego la solución por Thomas en la página que me has pasado.

Gracias por el aporte! XD

Ok zEtA, suerte en tu proyecto.

Saludos

Parece mentira, pero hoy estoy probándolo de nuevo, incluida la resistencia de 4K7 entre los pines 11 y 9, y vuelvo a tener el mismo problema. Estoy empezando a desesperarme... :disappointed_relieved:

Tengo usados los pines 1(GND), 2(RESET), 8(Tx S0), 9(Rx S0), 10(LED) y 11(+5) tal y como indica el Datasheet:

Y no sé que puede suceder para volver a recibir las ÿÿÿÿÿÿÿÿÿÿ como valor de "val".

Hace 10 minutos de mi post anterior y justo ahora mismo he conseguido que funcione. He quitado la resistencia de 4K7 y he conectado el pin 2(RESET) a +5V y el pin 7 (+/- Format Selector) a GND. Aún así, estoy un tanto desconcertado porque no entiendo todo lo sucedido anteriormente xD.

Saludos.

Hola zEta, raro todo esto que te sucede...has revisado si hay algo más que te pueda estar dando problemas?? cables sueltos, baudrate??, fuente de alimentación, cosas asi??

Hola Alcafuz,

Tengo alimentada la placa por USB y el cableado está bien aparentemente. En la página que me pasaste indica que el ID-12 debe estar alimentado por una tensión de entre 7 y 12 V para evitar posibles comportamientos no deseados del lector. Pero esto no he tenido oportunidad de probarlo aún.

Saludos!

Bueno, escribo de nuevo porque al parecer, el problema sigue ahí. No sé como solucionarlo porque he probado con las distintas soluciones que dan los comentarios del enlace pero sigo igual. Si pruebo el ejemplo básico si me funciona, en el loop va leyendo, guardando y sacando por el serialmonitor la variable c repetidas veces hasta que deja de leer:

/* EJEMPLO BASICO RFID ID12
*/

char val = 0; // variable to store the data from the serial port

void setup() {
Serial.begin(9600); // connect to the serial port
}

void loop () {
// read the serial port

if(Serial.available() > 0) {
val = Serial.read();
Serial.print(val, BYTE);

}
}

Pero escribiéndolo de ésta otra manera y me aparecen varias ÿÿÿÿ entre partes del código de la targeta leída. Utilizo for porque necesito evitarme tener que usar repetidamente la función general loop para mi proyecto y así guardar el valor de la tarjeta en un array en una sola ejecución del código.

/* RFID ID12
*/

char val = 0; // variable to store the data from the serial port
char code[12];
void setup() {
Serial.begin(9600); // connect to the serial port
}

void loop () {
// read the serial port

if(Serial.available() > 0) {
for (int i = 0; i < 13; i++) {
        val = Serial.read();
        code[i]=val;   
       }
      for (int z = 0; z < 13; z++) {
        Serial.print(code[z], BYTE); 
       }
}
}

Si alguien puede echarme un cable, se lo agradeceré con creces, porque no encuentro salida a este problema.
Saludos.

Buff... 130 visitas y ninguna ayudita =(.

¿Alguien que haya trabajado con éste módulo y haya necesitado utilizar una red de estabilización de corriente? O simplemente que me dé una opinión de lo que pueda entender de los comentarios del enlace siguiente, en los que se supone que se exponen soluciones:

Saludos.