RFID RC522 de fréquence 13,56 MHz PIC 16f877

 

* Module RFID RC522 de fréquence 13,56 MHz avec PIC 16F877 *





/ C'est quoi RFID ?

RFID (Radio Frequency Identification, identification par radio) est une méthode d'identification automatique sur la base des données stockées à distance en utilisant dispositif d'étiquette RFID et un lecteur RFID..
Les étiquettes RFID peuvent être substitués pour les codes à barres sur les produits vendus dans les magasins au lieu de mettre l'appareil pour scanner les codes-barres pour la surveillance, la RFID permet à l'information ( Identifiant ) d'être transmit sans contact physique.
Les étiquettes RFID sont utilisé dans de nombreux domaines tels que la gestion des ressources humaines, gestion des marchandises des supermarchés,  animaux , la gestion du trafic dans les gares de péage, la protection de la carte projecteurs ...etc.

/ Quel est la bande de fréquences de fonctionnement du système RFID ?

Pour choisir un système RFID, la première exigence de sélection est la bande de fréquences de fonctionnement du système. 

  • Basse fréquence - Faible fréquence de 125 KHz: faible à court vitesse de lecture de lecture de plage 
  •  Haute fréquence - haute fréquence 13,56 MHz : lecture d'une vitesse moyenne à courte distance.
  •  hyperfréquence  - de 868 à 928 MHz fréquence UHF: haute vitesse de lecture .
  •  Micro-ondes : Micro-ondes de 2,45 à 5,8 GHz: grande vitesse de lecture et plage de lecture très large.

/Le module RFID RC522 :


  • Tension de fonctionnement: 3,3 V .
  • Consommation en mode veille: <80uA .
  • Courant maximale : 30mA 
  • Fréquence de fonctionnement: 13.56Mhz .
  • Distance de lecture: 0 - 60mm .
  • type de communication: SPI 
  • débit de données maximum: de 10Mbit/s 
  • Taille: 40 x 60 mm 
  • Température de fonctionnement: -20 à 80 ° C 
  • Humidité de fonctionnement: 5% -95%
  • SPI haut débit: 10 Mbit/s



Module RFID RC522



Communication avec le microcontrôleur PIC16F877A:


    /*
SPI SS      RFID-RC522(SDA) - SlaveSelect (SS)                                   
SPI SDI     RFID-RC522(MOSI)                                                        
SPI SDO     RFID-RC522(MISO)
SPI SCK     RFID-RC522(SCK)   
 */
#define MFRC522_CS PIN_E2                 
#define MFRC522_SCK PIN_C3
#define MFRC522_SI  PIN_C4                           
#define MFRC522_SO  PIN_C5              
#define MFRC522_RST PIN_E0

Le code :



   
void main()
{

   CHAR UID[6];
   UNSIGNED int TagType;    
   CHAR size;                         
   CHAR i;                                        
   lcd_init ();                                                                    
   printf (LCD_PUTC, "\fImed Elmottakel\n.blogspot.com");
   delay_ms (1000) ;
   // enable_interrupts (INT_EXT);              
   // enable_interrupts (INT_EXT_H2L);    
   //enable_interrupts (GLOBAL);
   printf (LCD_PUTC, "\fInitializing"); 
   MFRC522_Init ();
   printf (LCD_PUTC, "\nDone!");             
  
   



   WHILE (1)
   {
           
      IF (MFRC522_isCard (&TagType)) //Check any card
      {
           
         printf (LCD_PUTC, "\fTAG TYPE:");
         printf (LCD_PUTC, "%X",TagType);
                                                      
         //Read ID 
         IF (MFRC522_ReadCardSerial (&UID))             
         {
            printf (LCD_PUTC, "\nUID: ");
            FOR (i = 0; i < 5; i++)                  
            {
            printf (LCD_PUTC, "%X",UID[i]);
            }
            size = MFRC522_SelectTag (&UID);
            if(get_red(RedData,UID))
            {                    
            output_low(LED_R);
            } 
            else
            {
            output_high(LED_R);
            } 
            //                           
            if(get_blue(BlueData,UID))
            {                    
            output_low(LED_B);
            } 
            else
            {
            output_high(LED_B);
            }
            //  
            if(get_red(GreenData,UID))
            {                    
            output_low(LED_G);  
            } 
            else
            {
            output_high(LED_G);
            }
            
             
         }                                      
         




                                                                     
                              
         IF (MFRC522_Auth (PICC_AUTHENT1A, 7, &key, &UID) == 0) //authentication key A   
         {
            //Write data to block 1  
            lcd_gotoxy(13,1); 
            MFRC522_Write (1,&writeData);
            printf (LCD_PUTC, "W-A!"); 
         }                                        

         else IF (MFRC522_Auth (PICC_AUTHENT1B, 7, &key, &UID) == 0) //authentication key B 
         {
            //Write data to block 1 
            lcd_gotoxy(13,1); 
            MFRC522_Write (1,&writeData);
            printf (LCD_PUTC, "W-B!"); 
         }                                          

         ELSE
         {   
            lcd_gotoxy(13,1);   
            printf (LCD_PUTC, "W-Err!"); 
            CONTINUE;                             
         }
                         
         
                   
         IF (MFRC522_Read (4,&writeData) == 0)   
         {
            printf (LCD_PUTC, "\n%c", &writeData);
         }

         //Ngu dong
         MFRC522_Halt () ;
      }
      
   }
}