vendredi 20 mars 2020

Serveur ESP32 : implémentation (3ème partie)



Serveur ESP32 : implémentation

(3ème partie)



Ceci est la suite des deux articles précédents :
Serveur ESP32 : implémentation
Serveur ESP32 : implémentation (2ème partie)

Dans cette 3ème partie nous ajoutons un lecteur de cartes et badges RFID MIFARE RC522.

1. Le RC522

Le RC522 est un lecteur capable de lire et écrire les cartes sans contact MIFARE. Ces cartes sont très utilisées pour le contrôle des accès à des locaux d'entreprises.

En général on utilise assez peu la mémoire de stockage interne. On se contente de lire ne N° de carte (UID), et les accès sont gérés par un serveur, ce qui permet de vous radier facilement lorsque vous quittez l'entreprise, et également de palier facilement aux pertes de cartes.

Ici nous allons procéder de la même façon. Les données utilisateur seront stockées sur le serveur.
Le lecteur est branché comme suit sur l'ESP32 :
  • 3.3V : 3.3V
  • RST : pin D5
  • GND : GND
  • MISO : D19
  • MOSI : D23
  • SCK : D18
  • SS (SDA) : D4
La librairie utilisée est la suivante :
https://github.com/miguelbalboa/rfid.git

Il est recommandé de charger tout d'abord l'exemple readNUID afin de vérifier que tout fonctionne correctement.

Dans cet exemple il faut changer quelques constantes :

#define SS_PIN 4
#define RST_PIN 5



2. L'implémentation

2.1 Le module abonnés

Le code implémenté dans le fichier subscriber.cpp ne change pas fondamentalement.
La méthode readMedia() reprend en grande partie le code de l'exemple readNUID.
Lorsque l'UID de la carte est lu readMedia() effectue une recherche dans la liste des abonnés en comparant l'UID de la carte avec l'ID de chaque abonné.

En cas d'erreur elle retourne une valeur nulle ou négative :
  • ZERO : l'abonné n'existe pas
  • ERR_NOCARD : pas de carte
  • ERR_READCARD : erreur de lecture
  • ERR_CARDTYPE : la carte n'est pas une MIFARE
Le code d'erreur ERR_NOTFOUND est utilisé lors d'une recherche par ID ou par nom dans le formulaire, afin de pouvoir afficher un message d'erreur différent.

Un méthode d'ininitalisation begin() est ajoutée. Elle est appelée par la fonction setup().

Je me suis ajouté dans la liste des abonnés, et la carte RFID associée à mon profil est ma carte d'accès à mon ex-entreprise.

Voilà, c'est tout.

2.1. L'application

Les modifications de l'application (le sketch) concernent principalment la gestion des nouvelles erreurs.

3. Fonctionnement du lecteur

Apparemment le lecteur n'apprécie pas une trop grande proximité avec la carte. Si celle-ci est posée à même le lecteur, il a du mal à la lire plusieurs fois de suite.

Je ne pense pas qu'il s'agisse d'un problème d'alimentation.
Dans un projet fini il conviendrait de couvrir le lecteur d'une cible en matière plastique. De toutes manières il serait assez déconseillé de laisser le lecteur nu en façade d'un boîtier, surtout en extérieur. Et d'un point de vue esthétique le résultat serait déplorable.

Il peut être tentant de placer des LEDs gérées en PMM sur la cible. Mais c'est plutôt déconseillé. Le PWM génèrerait un champ magnétique qui perturberait le lecteur.

Certains constructeurs placent un écran TFT sur le lecteur. Vous avez certainement rencontré ce genre de terminal dans les transports en commun :


Le lecteur n'est pas un lecteur ARDUINO, il s'agit de matériel beaucoup plus élaboré. Le lecteur est certainement derrière l'écran, mais l'antenne est probablement située autour de celui-ci. Désolé, vous ne pourrez pas faire la même chose avec le lecteur RC522, vu que son antenne est imprimée sur le PCB.

4. Téléchargement

Cette version 2.0 est disponible ici :
https://bitbucket.org/henri_bachetti/webserver-form/src/v2.0/esp32-subscriber/

Comme c'est un ajout de fonctionnalité majeur, l'indice de version passe à 2.0.

Les autres version sont encore disponibles bien entendu : voir les articles précédents.

5. Conclusion

Voilà donc une partie importante du projet finalisée en peu de temps. Merci aux
concepteurs de librairies et en particulier à André Balboa, pour sa librairie RFID.

Ce n'est pas fini. Il reste la partie gestion des données utilisateurs.


Cordialement
Henri

Aucun commentaire:

Enregistrer un commentaire