samedi 2 février 2019

Module RFID-RC522 et ESP8266 / ESP32


N.B. Cet article a été mis à jour le 28 juillet 2019 afin d'ajouter les informations concernant l'ESP32.

Aujourd'hui, notre mission consistera à créer, au moyen d'un module RC522 et d'une carte ESP8266 ou ESP32, un système qui affichera dans une page web les 10 plus récentes détections de tags RFID.

Les informations présentées sur la page web seront, pour chaque détection: la date et l'heure de l'événement, et le numéro d'identification (UID) du tag.

Pour le développement de ce petit projet, j'ai utilisé ma carte Wemos D1, qui est rapidement devenue mon outil préféré pour le prototypage impliquant l'ESP8266. Bien entendu, vous pourrez réaliser le projet avec n'importe quel module ESP8266 (sauf l'ESP-01, qui comporte trop peu de broches GPIO).

Il est facile de se procurer en ligne un module RFID-RC522. Ils sont généralement accompagnés de deux tags de formats différents: une carte de plastique et un petit porte-clés.

Chaque tag RFID possède son propre numéro d'identification. Lorsque vous approchez le tag du module RC522, celui-ci détecte la présence du tag et capte son numéro d'identification.

Pour des projets RFID n'impliquant pas de communication Wi-Fi, vous pouvez consulter mes articles sur l'utilisation d'un détecteur RC522 avec un Arduino, un Raspberry Pi (python), un STM32 Nucleo (mbed) ou un MSP430 Launchpad (Energia).

Installation de la bibliothèque MFRC522

J'ai utilisé la bibliothèque MFRC522 de Miguel Balboa, qui est pleinement compatible avec l'ESP8266.

Connexions

Puisque le module RC522 utilise le protocole SPI, il est connecté à l'ESP8266 de la façon suivante:
  • SDA du RC522 --- GPIO4 de l'ESP8266 ou de l'ESP32
  • SCK du RC522 --- GPIO14 de l'ESP8266 ou GPIO18 de l'ESP32
  • MOSI du RC522 --- GPIO13 de l'ESP8266 ou GPIO23 de l'ESP32
  • MISO du RC522 -- GPIO12 de l'ESP8266 ou GPIO19 de l'ESP32
  • IRQ du RC522 -- Pas connectée
  • GND du RC522 -- GND
  • RST du RC522 -- GPIO 5 de l'ESP8266 ou de l'ESP32
  • 3.3 V du RC522 -- 3.3 V
Le schéma ci-dessous montre ces connexions sur une carte Wemos D1.


Et voici un schéma des connexions sur une carte ESP32:



Vérification du bon fonctionnement du module

Avant d'aborder un programme plus élaboré, ce n'est pas une mauvaise idée d'utiliser un programme minimaliste qui nous permettra de vérifier rapidement le fonctionnement correct de notre module RC522.

Le sketch ci-dessous affiche dans le moniteur série l'UID (numéro d'identification) de chaque tag détecté. Il s'agit du même sketch que j'avais déjà utilisé pour une carte Arduino, la seule différence étant le numéro des broches assignées aux broches RST et SDA.




Un sketch plus élaboré

Pour terminer, voici un sketch qui exploite beaucoup mieux les possibilités de l'ESP8266: il permet de consulter une page web qui affiche les 10 plus récents scans d'un tag RFID (une fois ouverte, cette page web se met à jour automatiquement toutes les 10 secondes).



Lors du démarrage du programme, l'adresse IP qui permet d'accéder à la page web est affichée dans le moniteur série.

Chaque fois qu'un tag RFID est scanné, l'ESP8266 mémorise son numéro d'identification (UID). Il communique également avec un serveur NTP afin de connaître l'heure exacte. 



Yves Pelletier   (TwitterFacebook)

8 commentaires:

  1. Bonjour ,je viens de faire cette application,
    avec Edge impossible d'avoir l'adresse 192 ect...
    avec Chrome çà va sauf l'heure qui est moins 6 heures
    cordialement JC

    RépondreSupprimer
    Réponses
    1. Pour éliminer le décalage de 6 heures, il s'agit de régler la constante "decalage" en fonction de votre lieu de résidence.

      Supprimer
  2. CAN YU TEL ME WERE DO YU GET THAT esp8266 ON FRITZING ?

    RépondreSupprimer
  3. bonjour,
    c'est possible d'utiliser votre programme en incluant a une arduino uno ou mega un ESP8266 et un module rc522 ?
    merci

    RépondreSupprimer
  4. ah oui et une autre question, si je veut envoyer une information a mon programme par wifi (esp8266) à l'arduino à partie de mon serveur web, comment dois- je faire ? en fait j'aimerais que par l'envoie d'une information a mon proggrame, une action s'execute.
    voila, sinon super site que je viens de decouvrir bravo

    RépondreSupprimer
  5. Bonjour, je veux réaliser le même type de projet mais avec l'esp32. J'ai trouver sur instructable un projet dans ce sens avec l'esp8266, seulement je ne comprends pas et je ne c'est pas si je peux l'adapter à l'esp32.

    Merci

    RépondreSupprimer
  6. Question bête... comment télécharger les programmes de vos sketch s ?

    RépondreSupprimer