Logo des Enovateurs
Lire & écrire sur des badges/cartes RFID avec un Raspberry Pi : le code

Lire & écrire sur des badges/cartes RFID avec un Raspberry Pi : le code

Je reviens vers vous comme promis pour la suite de mon dossier RFID. Si vous nous rejoignez, consultez tout d’abord la partie qui concerne le montage :

Vérification des mises à jour

Vous devez avoir l’habitude de ces deux commandes classiques :

sudo apt-get update
sudo apt-get upgrade

Histoire de commencer sur de bonnes bases et d’être à jour au niveau du système. Ceci nous permettra d’éviter le genre d’erreurs qui nous font perdre un temps fou.

Installation de Python 2.7

Ensuite, nous allons installer notre grand ami python. Et pour cela, nous allons faire un simple :

sudo apt-get install python2.7-dev

Vous devriez obtenir le même résultat :

Installation de Python 2.7

Il faut bien entendu taper la lettre Y et appuyer sur entrée.

Installation de la librairie SPI-Py

Une simple commande :

git clone https://github.com/lthiery/SPI-Py.git

Celle-ci vous permet d’obtenir ce résultat :

Git clone SPI PY

L’objectif de cette librairie, c’est d’installer les composants pour gérer l’interface SPI. Nous allons maintenant passer à l’installation en effectuant les deux commandes suivantes :

cd ~/SPI-Py
sudo python setup.py install

En lançant ces deux commandes vous obtiendrez le même résultat que moi. Si ce n’est pas le cas, je vous invite à m’en faire part dans les commentaires de cet article.

Resultat installation Librairie SPI

Installation d’une classe simple pour utiliser la carte RC-522

Pour cela, nous allons faire un dernier git clone afin de récupérer cette fameuse classe :

git clone https://github.com/pimylifeup/MFRC522-python.git

Vous obtiendrez ce résultat :

Git clone MFRC522

Et voilà, tout est installé ! Nous allons pouvoir « coder » un peu.

Codage du fichier pour écrire sur une carte RFID

Pour commencer, rendons-nous dans le répertoire que nous avons récupéré en provenance de GitHub. C’est le moment d’écrire dans un fichier que nous allons tout simplement nommer Write.py. Pour cela, vous devez exécuter les commandes suivantes :

cd ~/MFRC522-python
sudo nano Write.py

A l’intérieur de ce fichier, nous allons écrire le code suivant :

Voici comment fonctionne ce code. Tout d’abord, la première ligne indique qu’il s’agit de code python. Ensuite, on importe la classe propre au Raspberry Pi qui permet d’utiliser les GPIO (afin de transmettre des informations à travers le câblage réalisé – cf article précédent). On continue en important la classe permettant de manipuler la carte RC-522. Puis on instancie la classe SimpleMFRC522 pour pouvoir l’utiliser. Ensuite, on demande à l’utilisateur de saisir du texte qui sera écrit sur la carte RFID. Dès que l’utilisateur aura appuyé sur la touche entrée pour valider, la ligne contenant la commande reader.write pourra écrire sur la carte RFID. Pour cela, le Raspberry Pi sera placé en position d’attente jusqu’à ce qu’une carte RFID se présente au dessus de notre module RC-522. A cet instant, la console répondra le terme Written et libérera le contrôle des GPIO.

Dès que vous avez copié-collé le code dans le fichier, vous devez taper un CTRL+X et appuyer sur la touche Y pour enregistrer le fichier qui a été édité.

Il ne vous reste plus qu’à lancer le programme que nous venons d’écrire avec un simple :

sudo python Write.py

Ensuite saisissez un mot, puis validez en appuyant sur entrée. Vous devez maintenant placer votre carte RFID devant le module. Ce qui produira le résultat suivant dans la console :

Ecrire sur une carte RFID avec un Raspberry Pi

Codage du fichier pour lire une carte RFID

A présent nous allons vérifier que la phase d’écriture s’est bien déroulée, en lisant la carte RFID. Pour cela, nous allons écrire un nouveau programme dans un fichier Read.py. On lance donc la commande suivante :

sudo nano Read.py

Et on y inscrit le code suivant :

Je vous explique : c’est quasiment la même chose que pour l’écriture, sauf qu’on fait un reader.read à la place du reader.write. Cette fonction va nous retourner deux valeurs : un id et un texte, que nous afficherons dans la console. Pour enregistrer le fichier, même chose que tout à l’heure : un petit CTRL+X suivi de la touche Y. Pour lancer le programme, il vous suffit de faire un :

sudo python Read.py

Une fois que vous aurez lancé le programme, celui-ci attendra sagement que vous présentiez la carte RFID pour vous afficher la réponse. Lorsque cela sera fait, vous obtiendrez le même résultat que moi :

Lecture du code RFID Raspberry Pi

J’espère que cet article vous a permis de découvrir plein de notions intéressantes. Bien sûr, si jamais vous rencontriez des soucis, les commentaires sont là pour vous exprimer.

Jérémy PASTOURET
Jérémy PASTOURET
Journaliste en recherche constante de nouveaux outils plus légers, accessibles à tous et respectueux de la vie privée de leurs utilisateurs.

Commentaires

  • ghiles

    2020-3-31 21:42

    Bonjour,

    j’ai suivis votre tuto, quand j’ai essayé d’exécuter le programme de lecture , j’ai eu cette erreur :

    ine 12, in
    rc522 = RFID() #On instancie la lib
    File « /usr/local/lib/python3.7/dist-packages/pirc522/rfid.py », line 47, in __init__
    self.spi.open(bus, device)
    FileNotFoundError: [Errno 2] No such file or directory

    Donc pouvez vous m’aider s’il vous plait ?

    Merci

    • Jérémy PASTOURET

      2020-4-2 09:57

      Bonjour,
      avez-vous lancé cette commande : sudo python setup.py install ?
      De plus, je vois que vous utilisez python 3, dans l’article j’utilise la version 2.7.
      Il faut aussi essayer de lancer le code avec Python 2.

  • Guillaume

    2020-4-26 18:37

    Bonjour,
    Votre tuto est superbe ! Une première étape de résolue pour moi. 🙂
    Je chercherai a déverrouiller ma raspberry avec ma puce RFID, telle un mot de passe en quelque sorte. Vous n’auriez pas quelque piste a me donner ?
    Merci d’avance

  • Darryl Kenneth

    2020-11-3 12:56

    Bonjour,
    Excellent Tuto, facile à comprendre, j’ai passé des semaines à comprendre mais là avec votre tuto, une demi-journée était suffisante.
    J’ai un souci et je ne sais pas si vous avez un élement de réponse,
    J’aimerais envoyer les données RFID depuis le RASPBERRY PI vers un serveur local (MySQL par exemple) : dois-je utiliser quelle fonctionnalité? (connexion mobile, reseau WIFI, ou bien GPRS)?
    MErci

    • Jérémy PASTOURET

      2020-11-4 10:23

      Bonjour et merci pour votre commentaire.
      Pour votre problématique, tout dépend de votre environnement.
      Dans quel condition est utilisé votre Raspberry Pi ?
      S’il est dans un bureau, je vous conseille le WIFI ou par câble Ethernet.

      • Darryl Kenneth

        2020-11-4 15:8

        Merci de m’avoir répondu.
        En effet, j’ai fait le test au bureau (via wifi et meme cable Ethernet) tout marche. La seule problématique c’est que j’aimerais utiliser le raspberry comme un microcontroleur qui fonctionne à distance(dans un véhicule) qui alimente un lecteur RFID afin d’effectuer une controle d’accès à l’entrée du véhicule. Du coupe la base de données est à distance(locale dans un host au bureau). Et je ne sais pas par quelle fonctionnalité je pourrais envoyer les données d’identification depuis le Raspberry PI installé dans le véhicule vers une base de donnée à distance(installé au bureau).
        Est ce que Par voie TCP/IP? GPRS?

        • Jérémy PASTOURET

          2020-11-9 18:22

          Bonjour,
          Pour votre problème, je vois trois solutions possible :
          – Avoir un modem de type 4G comme font certains opérateurs et connecter le Raspberry Pi grâce au Wifi
          – Faire un partage de connexion avec un smartphone et connecter le Raspberry Pi au téléphone.
          – Rajouter une antenne 4G et un lecteur de carte SIM au Raspberry Pi
          J’espère que cela vous aidera.
          Jérémy.

  • Common Stéphane

    2021-6-9 14:12

    Bonjour
    Je débute avec Raspberry et Python !!!
    J’ai suivi votre procédure mais quand j’exécute j’ai le message par lequel il ne trouve pas SimpleMFRC522 (ligne 4) ?
    Merci

    • Jérémy PASTOURET

      2021-6-11 12:18

      Bonjour,
      A priori SimpleMFRC522 n’est pas installé dans votre projet.
      Pour cela, vous pouvez utiliser la commande suivante :
      sudo python setup.py install
      ou encore
      sudo python2.7 SimpleMFRC522.py install

  • Francois

    2021-7-24 13:23

    Bonjour
    D’abord merci pour ce tuto, bien fait et expliqué,
    Par contre j’ai un retour d’erreur lorsque je lance Write ou read.py
    voila le message d’erreur: from . import MFRC522
    ImportError: attempted relative import with no known parent package

    Je suis sur un Raspberru pi 4B avec la version Python 3.7.3

    Une idée

    Merci

Ecrire un commentaire

Sobriété

Pour aller plus loin

Découvrez nos tutos !

Les Enovateurs

Rejoignez notre communauté de lecteurs

Retrouvez-nous aussi sur

linkedin