Go Down

Topic: Problema con librería rfid.h Proyecto Automoción (Read 4747 times) previous topic - next topic

victorwild

Hola buenas, en primer lugar presentarme. Soy estudiante de un grado superior de automoción, tengo 22 años y se me ocurrió que mi proyecto sería con arduino, por su multitud de posibilidades y toda la ayuda de gente como vosotros que estais leyendo este post.
El caso es que pensaba que se me iba a hacer todo mas facil, compre un kit de arduino en el cual me incluian varios sensores. Mi idea era con el rfid RC522, Poder abrir las puertas del coche tan solo acercando la targeta o el llavero. Algo ya inventado pero esa era la idea...

Tras mucho mirar, y querer ponerlo en practica me he fijado que en todos los tutoriales la gente usa la libreria RFID de miguel balboa. Pero cuando intento buscarla, y creo encontrarla. Cuando importo la libreria RFID de miguel balboa, me sale como MFRRC522.h, en lugar de RFID.h como en todos los tutoriales. Acabé buscando, pero no logre encontrar nada que me solucione, ningun profesor conoce demasiado el tema... Y a tan solo 1 mes de entregar el proyecto me veo apuradisimo...

- Alguien sabe si es la misma librería?

- Cuando copio y pego el codigo del ejemplo que vi, me sale... Eso es porque no tengo esa libreria verdad?

.ino:12:18: fatal error: RFID.h: No such file or directory
compilation terminated.
Error de compilación

- Por si acaso algo hiciese... Cambie en el codigo, el nombre de las librerias. RFID.h por MFRRC522.h, pero me sale el siguiente error.

sketch_may11b.ino:18:1: error: 'RFID' does not name a type
sketch_may11b.ino: In function 'void setup()':
sketch_may11b.ino:28:3: error: 'rfid' was not declared in this scope

Lógico que no encuentre nada no?... Podriais explicarme un poquito el porque de todo?

Tengo conocimientos bajos... Pero esperaba llevarme mejor con arduino. Espero tener suerte y acabar conociendo este fantastico hardware que es arduino, que permite multitud de proyectos.

GRACIAS de antemano y un saludo!


surbyte

#1
May 11, 2015, 01:37 pm Last Edit: May 11, 2015, 01:55 pm by surbyte
Si es la librería o no es, no te se contestar. Eso respondelo tu mismo con tus pruebas.
Lo que si se, es que tienes mas instalada la librería.

La librería debe quedar en la carpeta libraries de la ruta de la instalación del arduino (IDE).
Mira dentro de la carpeta RFID o como sea que la llamaras y debe coincidir, el archivo que luego llamas en tu sketch con lo que lees dentro.
Si te sale como MFRRC522 asi debe llamarse la carpeta y dentro de la carpeta debes encontrar un MFRRC522.cpp y un MFRRC522.h
Si estan con mayúsculas/minúsculas asi debe llamarse tambien la carpeta. Siempre iguales.

Lo que te debe haber ocurrido es que descargaste un archivo comprimido y al descomprimirlo te quedo esto
MFRRC522=>MFRRC522=>y aca si estan MFRRC522.cpp y MFRRC522.h ademas de algún readme.txt

entonces para que quede claro.
C:\archivos de programa (x86)\arduino\libraries\MFRRC522\MFRRC522.cpp
C:\archivos de programa (x86)\arduino\libraries\MFRRC522\MFRRC522.h

Asi deben quedar los archivos.

Luego en tu sketch usas

Code: [Select]
#include <MFRRC522.h>


Bueno esta es la librería del PLayround Arduino Mifare MFRC522 RFID Reader/Writer

Este es el ejemplo

Code: [Select]
#include <SPI.h>
#include <MFRC522.h>

#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.

void setup() {
Serial.begin(9600); // Initialize serial communications with the PC
SPI.begin(); // Init SPI bus
mfrc522.PCD_Init(); // Init MFRC522 card
Serial.println("Scan PICC to see UID and type...");
}

void loop() {
// Look for new cards
if ( ! mfrc522.PICC_IsNewCardPresent()) {
return;
}

// Select one of the cards
if ( ! mfrc522.PICC_ReadCardSerial()) {
return;
}

// Dump debug info about the card. PICC_HaltA() is automatically called.
mfrc522.PICC_DumpToSerial(&(mfrc522.uid));
}



TODAS las librerías estan en este sitio www.arduino.cc que es donde esta el foro. si no estan acá figura el enlace al sitio web mas actualizado.

victorwild

En primer lugar gracias por la respuesta! También probe a llamarla por MFRC522.h, pero me salía otro error... De momento estaba viendo tutoriales y haciendo copia y pega para intentar descifrar el sketch y poder entenderlo. Estaba usando el siguiente sketch con la intención de saber el tag de la llave que quería utilizar... Pero de momento no se ni dónde me debe aparecer el número...  :smiley-roll-sweat: 
Code: [Select]

//-----------------------------------------------variables, includes, funciones, etc-------------------------------------------------
#include <SPI.h>
#include <MFRC522.h>
 
#define SS_PIN 10
#define RST_PIN 9
 
MFRC522 rfid(SS_PIN, RST_PIN);
 
int numero_serie[5]; // aqui guardaremos el número que nuestro sensor RFID detectará
 
 //-----------------------------------------------variables, includes,funciones, etc-------------------------------------------------
 
void setup()
{
  Serial.begin(9600);
  SPI.begin();
  MFRC522.init();
}
 
void loop()
{
   leer_usuario();
}
 
 
void leer_usuario()
{
    if (MFRC522.isCard())
    {
           if (MFRC522.readCardSerial())
            {
                Serial.print("Numero usuario: "); // guardamos el numero del usuario
                for(int i=0; i<=4 ; i++)
                {
                  numero_serie[i] = MFRC522.serNum[i];
                }
 
                for(int i=0; i<=4 ; i++) // y lo imprimimos
                {
                  Serial.print(numero_serie[i]);
                  Serial.print("    ");
                }
 
                Serial.println(" "); // espacio para el siguiente código
                delay(500); // para que no se imprima constantemente el mismo numero
             }
    }
    MFRC522.halt();
}


Claro... para mi intentar descifrarlo algunas cosas las veo como chino como " for(int i=0; i<=4 ; i++)"

Ando un poco perdido e incluso me lio para entender mas de un tutorial. Me descargue varios pdf para conocer algunos codigos para defenderme pero algunos se me enganchan..

No pido que me den resuelto nada, solo que me orienten un poco para poder conocer y iniciarme un poco mas a fondo.

Gracias de nuevo y un saludo!

surbyte

#3
May 11, 2015, 02:52 pm Last Edit: May 11, 2015, 02:57 pm by surbyte
Pero ahora compila o no?
Code: [Select]

if (MFRC522.readCardSerial())   // Lee la tarjeta RFID
            {
                Serial.print("Numero usuario: "); //Imprime por Serial cartel Numero usuario
                for(int i=0; i<=4 ; i++)               // ciclo que se repite 4 veces para i desde 0 a 3
                {
                  numero_serie[i] = MFRC522.serNum[i];  // lee el numero de serie. Viene en ascii?
                }
 
                for(int i=0; i<=4 ; i++) // y lo imprimimos y de nuevo en un ciclo porque son 4 caracteres
                {
                  Serial.print(numero_serie[i]); //aca sale por el serial.
                  Serial.print("    ");                 // con cada impresion deja un espacio ? Raro
                }
 
                Serial.println(" "); // espacio para el siguiente código
                delay(500); // para que no se imprima constantemente el mismo numero
             }

victorwild

En mi sketch me salia el siguiente error...

sketch_may11b.ino: In function 'void setup()':
sketch_may11b.ino:17:10: error: expected unqualified-id before '.' token
sketch_may11b.ino: In function 'void leer_usuario()':
sketch_may11b.ino:28:16: error: expected primary-expression before '.' token
sketch_may11b.ino:30:23: error: expected primary-expression before '.' token
sketch_may11b.ino:35:44: error: expected primary-expression before '.' token
sketch_may11b.ino:48:12: error: expected unqualified-id before '.' token
Error de compilación

Que quiere decir...? Falta algun punto por ai?  :smiley-roll-sweat: Siento mi inexperiencia, y espero que me podais ayudar para poder terminar el proyecto y por lo menos, acabar con una pequeña base de arduino.

En tu sketch...

Code: [Select]

if (MFRC522.readCardSerial())   // Lee la tarjeta RFID
            {
                Serial.print("Numero usuario: "); //Imprime por Serial cartel Numero usuario.[color=red] Imprime en el sketch verdad? En ("Numero usuario") Debe aparecer? Vi que algunos se metian en el monitor serie para ver el numero de usuario de la tarjeta.
[/color]
                for(int i=0; i<=4 ; i++)               // ciclo que se repite 4 veces para i desde 0 a 3. [color=red]Pero que ciclo? Desde el 0 hasta el 3? De dónde sale eso... :S[/color]
                {
                  numero_serie[i] = MFRC522.serNum[i];  // lee el numero de serie. Viene en ascii?[color=red] No es lo mismo que numero usuario verdad? Según voy entendiendo de camino es que el numero de serie es el número que quieres que acepte, y el numero serie es el numero de la targeta?... Respecto si viene en ascii... no te se responder porque no he conseguido compilar nada y no me aparecido ningún numero...[/color]
                }
 
                for(int i=0; i<=4 ; i++) // y lo imprimimos y de nuevo en un ciclo porque son 4 caracteres. [color=red]Porque debemos volver a imprimir porque son 4 caracteres?...[/color]
                {
                  Serial.print(numero_serie[i]); //aca sale por el serial. [color=red]Aqui es dónde debe aparecer el numero de mi targeta al leer?...[/color]
                  Serial.print("    ");                 // con cada impresion deja un espacio ? Raro [color=red]Venia asi en el tutorial... Solo copie, pegue y me volvi loco para intentar comprenderlo[/color]
                }
 
                Serial.println(" "); // espacio para el siguiente código
                delay(500); // para que no se imprima constantemente el mismo numero
             }


Pues esas son las dudas que tengo... Me sabe hasta mal mi inexperiencia. Pero preguntando es la unica forma de conseguir aclarar mis dudas... Ningun profesor, ni amigo ni conocido... Sois mi ultima esperanza jajaja, Si salgo de esta y consigo funcionar todo, me servira de motivación aunque cueste, quedarme aqui con vosotros y que sea el principio de otros proyectos!

Muchas gracias de antemano por vuestro tiempo, y un cordial saludo!!

Go Up