Dans cette leçon, nous allons jeter un coup d’œil à la radio-identification, RFID pour faire court. Ces systèmes utilisent des chaînes de données stockées à l’intérieur de balises spéciales (ou transpondeurs) pour identifier des personnes ou des objets lorsqu’ils sont scannés par un lecteur RFID. Ces types de systèmes se retrouvent dans de nombreuses applications telles que les livres d’une bibliothèque, l’identification d’animaux, les systèmes de contrôle des stocks, et les systèmes de contrôle d’accès sécurisés.

Lorsque le lecteur est sous tension (branché sur un port USB alimenté dans le cas d’un PhidgetsRFID), il alimente une grande bobine. La bobine crée un champ magnétique externe qui peut ensuite être couplé avec une bobine dans une balise proche. Cette délivre une petite quantité d’énergie sans fil à la balise. Grâce à cette puissance, la balise est capable d’accéder à une petite banque de mémoire interne et de transmettre une chaîne clef au lecteur via la modulation du signal sans fil.

Pour qu’un lecteur RFID, tel que le Kit de démarrage rapide RFID de Phidgets, communique avec une balise RFID, ils doivent partager un protocole commun. Ce protocole agit comme un ensemble de règles concernant la façon dont les données sont transmises sans fil entre le lecteur et la balise. Il est fréquent que les gens supposent qu’une balise RFID et un lecteur n’ont qu’à partager la même fréquence opérationnelle pour être compatibles, ils ont cependant également besoin d’utiliser le même protocole de communication. Consultez le mode d’emploi de votre appareil pour déterminer quels sont les protocoles qu’il prend en charge.

À présent, si vous disposez d’un lecteur et de quelques balises, vous êtes prêt à concevoir une configuration. Pour ce tutoriel, nous allons vous montrer comment configurer un Kit de démarrage rapide RFID de Phidgets.

  1. Branchez le lecteur RFID dans un ordinateur sur lequel les pilotes Phidgets ont été placés (reportez-vous aux instructions de la Leçon 1). Fixez l’anode d’une DEL verte (fil long) à la sortie marquée 0 et l’anode d’une DEL rouge à la sortie marquée 1. Connectez chacune des deux cathodes (fils courts) à la masse. Remarque : une bonne idée consiste à mettre une résistance de 10 à 13 Ω entre l’anode de la DEL verte et la sortie étiquetées 0, en fonction de la tension directe de votre DEL. Cela pourrait fonctionner sans la résistance, mais puisque vous êtes en 5 V par la DEL, elle se consumera très vite.
  2. Téléchargez le code d’exemple pour votre langage de programmation. Pour cette leçon, nous allons travailler en C++, mais les concepts sont valables pour n’importe quel langage.
  3. Modifiez les fonctions des gestionnaires de balises (TagHandler et TagLostHandler) pour réagir de la façon souhaitée. Pour ce programme, une fonction nommée Lookup(char*) cherchera dans un fichier de valeurs de balises approuvées et renverra TRUE (vrai) si la valeur de la variable se trouve dans le fichier, et FALSE (faux) sinon. Si la balise est approuvée, une lumière verte s’allume sur la sortie 0, sinon la sortie 1 (lumière rouge) s’allume. Lorsque la balise est éloignée, la sortie repasse à 0. Les fonctions ressemblent à ceci :

 

int CCONV TagHandler(CPhidgetRFIDHandle RFID, void *usrptr, char *TagVal, CPhidgetRFID_Protocol proto)
{
    //allume la DEL intégrée
    CPhidgetRFID_setLEDOn(RFID, 1);
    if ( Lookup(TagVal) ) // la valeur de la balise est valide
    {
        CPhidgetRFID_setOutputState(RFID, 0, 1);
    }
    else // la valeur de la balise n'est pas valide
    {
        CPhidgetRFID_setOutputState(RFID, 1, 1);
    }
    
    printf("Tag Read: %s\n", TagVal);
    return 0;
}
int CCONV TagLostHandler(CPhidgetRFIDHandle RFID, void *usrptr, char *TagVal, CPhidgetRFID_Protocol proto)
{
    //éteint la DEL intégrée
    CPhidgetRFID_setLEDOn(RFID, 0);
    
    //éteint les sorties numériques
    CPhidgetRFID_setOutputState(RFID, 0, 0);
    CPhidgetRFID_setOutputState(RFID, 1, 0);
    printf("Tag Lost: %s\n", TagVal);
    return 0;
}

 

… and Lookup se présente comme suit :

int Lookup(char *value)
{
    char line
[
128] char check[128] FILE * db; strcpy(check, value); check[strlen(value)] = '\n'; // en lisant le fichier que j'ai installé, cela met un terminateur nul à la fin, // lorsque la balise quand elle est lue n'a pas le terminateur nul db = fopen( "goodtags.txt", "r" ); while (fgets (line, 128, db) != NULL) { if ( strcmp (line, check) == 0 ) { return 1; } } fclose (db); printf("Balise non trouvée, désolé.\n"); return 0; }

 

Pour une plus grande base de données de balises, vous aurez envie de mettre en œuvre un système de stockage plus sophistiqué et un algorithme de recherche, mais ceci n’a pour but que de vous montrer comment peut travailler le RFID. Une utilisation possible à partir d’ici est de connecter un mécanisme à pêne dormant de 5 V à la sortie 0 pour déverrouiller une porte lorsqu’une balise approuvée est scannée. En réalité, une balise peut déclencher énormément de choses.

Le PhidgetRFID peut également écrire des valeurs sur des balises RFID. Vous devrez utiliser des balises de type T5577. Vous pouvez alors utiliser la fonction CPhidgetRFID_write(CPhidgetRFIDHandle RFID, char* tagString, CPhidgetRFID_Protocol protocol, int lock). Trois protocoles sont pris en charge, qui sont donnés par les énumérations suivantes (pour le paramètre de protocole):

  • PHIDGET_RFID_PROTOCOL_EM4100 – EM4100 (EM4102) est un protocole sur 40 bits
  • PHIDGET_RFID_PROTOCOL_ISO11785_FDX_B – ISO11785 FDX-B est un encodage essentiellement utilisé pour de l’identification animale
  • PHIDGET_RFID_PROTOCOL_PHIDGETS – PhidgetTAG est un protocole spécifique à Phidget et permet une valeur ASCII de 24 caractères

Nous pouvons alors créer un programme et modifier la fonction TagHandler pour écrire de nouvelles balises :

int CCONV TagHandler(CPhidgetRFIDHandle RFID, void *usrptr, char *TagVal, CPhidgetRFID_Protocol proto)
{
    //allume la DEL intégrée
    CPhidgetRFID_setLEDOn(RFID, 1);
    printf("Tag Read: %s\n", TagVal);
    fflush(stdout);
    
    printf("Voulez-vous ré-écrire la valeur de la balise (Y/N)?");
    char ans = getchar();
    fpurge(stdin);
    
    if (ans == 'y' || ans == 'Y')
    {
        char newtag[24] // un maximum de 24 caractères ASCII est autorisé
        printf("\nVeuillez saisir une nouvelle valeur de balise : ");
        fgets(newtag, 24, stdin);
        fpurge(stdin);
        
        if (CPhidgetRFID_write(RFID, newtag, PHIDGET_RFID_PROTOCOL_PHIDGETS, PFALSE))
        {
            printf("\nÉcriture réussie de la balise.\n");
            CPhidgetRFID_setOutputState(RFID, 0, 1);
        }
        else
        {
            printf("\nÉchec d'écriture de la balise.\n");
            CPhidgetRFID_setOutputState(RFID, 1, 1);
        }
    }
    
    return 0;
}

 

Sinon, vous pouvez utiliser le Panneau de configuration Phidget (disponible sous Mac et Windows) pour écrire de nouvelles balises :

Utilisation du Panneau de configuration Phidget pour écrire une balise RFID

Utilisation du Panneau de configuration Phidget pour écrire une balise RFID

À présent que vous pouvez lire et écrire avec le PhidgetRFID, il est bon de mentionner quelques autres caractéristiques du RFID :

  • Les balises existent en deux grandes catégories : passives et actives. Les balises actives ont leur propre alimentation, qu’elles utilisent pour alimenter une antenne pour diffuser leurs données. Les balises passives tirent la puissance dont elles ont besoin pour fonctionner directement de la sortie de fréquence radio du lecteur RFID, et aucune autre alimentation n’est nécessaire. Ici, nous avons utilisé des balises passives. Ces balises sont moins chères à produire et bien mieux adaptées pour des applications courantes, tandis que les balises actives sont utilisées dans des situations où une très grande distance de lecture est souhaitable (les wagons, par exemple, sont l’un des rares endroits où des balises actives sont utilisées).
  • Plusieurs balises RFID sur 1 à 2 mètres interfèrent les unes avec les autres. La meilleure manière de surmonter ce problème est de façon logicielle, avec des activer l’antenne d’un RFID individuel lecteurs en séquence.
  • Bien que certains lecteurs RFID offrent la possibilité de lire plusieurs étiquettes en même temps, ce n’est pas le cas de la majorité. Pour lire une balise, les autres balises doivent d’abord être retirées du champ du lecteur.

Les solutions RFID sont parfaites dans des applications de suivi d’objet, et sont souvent intégrées aux bases de données. Vous pouvez utiliser les bases de ce didacticiel pour construire de nombreux projets RFID, alors amusez-vous !