*
Description
Nous allons contrôler l'existence et la validité d'un numéro de tag RFID dans une base de données pour, par exemple, contrôler l'accès à une installation (immeuble, domicile, véhicule, paiement, remontée de ski, pass-expo, etc. ...).

Le projet consitste simplement à lire le numéro d'une carte de fréquence 125kHz (la fréquence caractérise la norme qui la défini) et de vérifier si ce numéro est écrit dans une base de données et dont les dates de début et de fin encadrent la date d'aujourd'hui.

La base de donnée est sous MySQL sur le poste local (mais ce n'est pas obligatoire).

Le programme client (coté lecteur) est écrit en Python et le programme serveur est écrit en PHP.

Remarques techniques

Nous aurions pu choisir d'effectuer une saisie directe dans un formulaire PHP coté serveur, mais ce programme à été développé sur un ordinateur Raspberry Pi qui ne possédait aucun écran.

A propos de Python : Python est un langage Orienté Objet (OO) mais les concepts développés ici n'ont pas beaucoup d'importance dans la compréhension du logiciel client.

Le programme serveur est plus complexe et nécessite une connaissance de HTTP et PHP plus approfondie (conversion de caractères, header, codes erreur, etc. ...).

Le logiciel Client (coté lecteur)
Le logiciel en Python va attendre la lecture d'une carte. celle-ci se traduit par une saisie de caractères qui représente le numéro de la carte.
Ce numéro est envoyé au serveur web distant. Selon la réponse du serveur (Ok ou non), on joue une musique : beep ok ou beep erreur.

Explication des différents sources

Le logiciel comprend trois sources :
  • lectureCarte.py : Programme principal, il effectue la lecture des cartes en boucle et demande une vérification au programme serveur. selon la réponse, il lance un beep ok ou erreur.
  • Carte.py : Classe, outil de conversion du numéro de carte, le numéro lu par le lecteur remplace une saisie. Mais, le lecteur utilise un clavier QWERTY et non AZERTY. donc les caractères transmis doivent être convertis en chiffres.
  • Connexion.py : Classe, programme permettant de faire la connexion avec la base de données mySQL. Il utilise la blibliothèque usrlib qui est à installer.

Source : lectureCarte.py

Source : Carte.py

Source : Connexion.py

Coté serveur
Le code du fichier serveur est assez complexe : il récupère des paramètres et les teste puis envoie le résultat d'une requête prédéfinie

Principe

Après s'être connecté au serveur de base de données, on récupère les paramètres envoyés par l'application cliente,

Source : carteCheck.php

Source : cartes_rfid.sql