Go Down

Topic: Problema ID-12 (Read 1 time) previous topic - next topic

zEtA

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é  :(

¿Alguien puede echarme una mano?
Gracias.

Alcafuz

Que tal zEtA, dices
Quote
no me aparece nada en el serial monitor
y luego
Quote
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  :D


Prueba esto : http://hcgilje.wordpress.com/resources/rfid_id12_tagreader/

Saludos!

zEtA

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:

ÿÿÿÿÿÿÿÿÿÿ

zEtA

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

Alcafuz

Ok zEtA, suerte en tu proyecto.

Saludos

zEtA

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...  :smiley-sad-blue:

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:

http://www.sparkfun.com/datasheets/Sensors/ID-12-Datasheet.pdf

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

zEtA

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.

Alcafuz

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??


zEtA

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!

zEtA

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:
Code: [Select]
/* 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.

Code: [Select]
/* 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.

zEtA

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:

http://hcgilje.wordpress.com/resources/rfid_id12_tagreader/

Saludos.

Go Up