Autor Tema: Duda en Proyecto Pic 16f887 y Lector RFID rc522  (Leído 2834 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Cristian Lara

  • PIC10
  • *
  • Mensajes: 1
Duda en Proyecto Pic 16f887 y Lector RFID rc522
« en: 07 de Julio de 2019, 18:22:30 »
Buenas Tardes, Veran lo que pasa es que tengo un proyecto para La Materia de Microcontroladores I, en la cual, en mi proyecto en especial tenemos que hacer una Cerradura electrónica con Un Lector RFID y con un Micro-controlador PIC16F887 y solo se puede realizar con este, El problema parte al momento de hacer la lectura con el pic, el muestra el código en HEX pero al momento de que solo lea una tarjeta el micro no lo hace, solo muestra los cualquier tarjeta que se registre, como puedo hacer para que la memoria del pic almacene el Código de 10 dígitos de cada tarjeta y que solo cuando el lector tenga ese código haga cualquier función, ya sea imprimir admitido en ese caso o denegado en caso de que sea otra tarjeta.

#include <16F887.h>
#FUSES NOWDT,NOBROWNOUT,NOLVP
#use delay(clock=8000000)
#INCLUDE <LCD.C>
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
#define DELAY 10

#define MFRC522_CS PIN_A0 //sda
#define MFRC522_SCK PIN_A1
#define MFRC522_SI PIN_A2
#define MFRC522_SO PIN_A3
#define MFRC522_RST PIN_A4
#include<Lib_rc522.h>


void main()
{
lcd_init();
port_b_pullups(255);
//Presentacion inicial en la LCD
lcd_gotoxy(2,1);
lcd_putc("acerque tarjeta");
delay_ms(1000);
lcd_putc("\f"); //Borra la LCD
lcd_gotoxy(1,1);
;
char tar1[16];

unsigned int TagType;
char i;

MFRC522_Init ();
lcd_putc("ok");
delay_ms(1000);
lcd_putc("\f");
while (1)
{
if (MFRC522_isCard (&TagType)) {


//Read ID
if (MFRC522_ReadCardSerial (&tar1))
{
lcd_gotoxy(1,2);
for (i = 0; i < 5; i++)
{

printf (lcd_putc,"%X",tar1);


}
if(lcd_getc(1,2)=="0"){
lcd_gotoxy(1,1);
lcd_putc("admitido");}
}
}
lcd_putc("\n");
}
MFRC522_Halt () ;
}


Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re:Duda en Proyecto Pic 16f887 y Lector RFID rc522
« Respuesta #1 en: 08 de Julio de 2019, 00:28:37 »
Que tal Cristian Lara,

Pues la parte difícil ya la tienes que es lograr la lectura del ID de la tarjeta y el mostrar su valor en la LCD.
Ahora lo que tienes que hacer es guardar en la memoria EEPROM de datos los 5 bytes correspondientes al numero ID de la tarjeta para luego así cuando realices la lectura de la tarjeta lo que harás será realizar la comparación de esos 5 bytes leídos contra los 5 bytes almacenos en la EEPROM interna del microcontrolador. En caso de ser iguales, entonces muestras en el LCD el mensaje de "admitido" y en caso de ser diferente muestras el mensaje de "denegedo".
Comienza primero con guardar el ID de la tarjeta en la EEPROM y luego sigues con la comparación.

Saludos,

elreypic.

Desconectado AccioRw

  • PIC16
  • ***
  • Mensajes: 165
Re:Duda en Proyecto Pic 16f887 y Lector RFID rc522
« Respuesta #2 en: 08 de Julio de 2019, 11:16:22 »
Hola Cristian Lara, que compilador estás usando?
Dependiendo el compilador que uses tendrás unas librerías para el uso de la memoria EEPROM.

Por lo demás como te ha dicho elreypic2 solo debes guardar en la EEPROM el numero ID de la targeta que quieres que sea válida.

Haces un array (variable con por ejemplo 20 IDs, debe definirse como algo similar a esto "unsigned char LLAVES[5,20]") con todas las que quieras guardar y al arrancar el pic lo primero que haces es leer la EEPROM y actualizar el array de tus números IDs válidos, cuando quieras escribir alguno nuevo escribes uno nuevo en la EEPROM y lo añades a tu array en esa misma función.

Aunque si no te quieres complicar puedes hacerlo directamente leyendo y escribiendo sobre la EEPROM, yo te mencioné esa manera por que es la mas rapida de trabajar, es mas rápida la RAM que la EEPROM para leer los valores, solo que en la EEPROM vas leyendo con saltos de 5 en 5.
« Última modificación: 08 de Julio de 2019, 11:18:25 por AccioRw »

Desconectado ericzon

  • PIC10
  • *
  • Mensajes: 6
Re:Duda en Proyecto Pic 16f887 y Lector RFID rc522
« Respuesta #3 en: 19 de Mayo de 2020, 02:06:32 »
Elreypic podrias por favor dar un ejemplo de lo que mencionas
Como hacer para comparar la tarjera que hacercas al lector con los ya almacenados en la eeprom
Por lo que entiendo al acercar la tarjeta al lector,el programa lee en la eeprom todos los valores de tarjetas almacenados y si uno coincide al comparar sale admitido pero como seria ese proceso de programacion.salu2