Introduction & Contexte

Ce projet de fin d’études a été réalisé dans le cadre de mon BTS SNIR (Systèmes Numériques, option Informatique et Réseaux) au Lycée Pilote Innovant International (LP2I) en 2019. Conçu de bout en bout par un groupe de trois étudiants dont je faisais évidemment parti, il consistait à élaborer un système matériel et logiciel complet de contrôle d’accès en salle informatique. Les objectifs de ce projet se structurait en deux phases : 

Dans un premier temps, il fallait assurer la sécuriser l’accès à une salle pour un public désigné, puis dans un second temps, il fallait contrôler les horaires de passage des étudiants afin de valider leur présence. 

Ce projet exigeait une immersion totale dans l’écosystème de l’Internet des Objets (IoT) en interfaçant des équipements réseaux industriels avec un serveur de base de données. Au sein de cette équipe, notre organisation a exigé une répartition claire des rôles : un développeur qui s’occupait de l’interface web et de la base de données, un second élément qui se chargeait de l’acquisition des données du lecteur principal, et pour ma part, le traitement des tests avancés des protocoles de connexion matériels, des retours d’informations du lecteur NANO RFID, et la communication bidirectionnelle avec la base de données.

armoire_rfid
Mécanisme de fonctionnement du projet RFID

 

Rappel des Objectifs 

Objectifs matériels et réseaux : L’établissement d’une communication réseau fiable via Ethernet entre des lecteurs de badges (un modèle Inveo RFID-IND-U2 à l’extérieur et un NANO RFID à l’intérieur), une gâche électrique de verrouillage, et un serveur web local Apache/MySQL hébergé sous XAMPP.

lecteur_carte_nano_rfid
Lecteur de Carte Nano RFID
lecteur_badge_inveo_rfid_ind_u2
Lecteur de badge Inveo RFID-IND-U2

Objectifs logiciels et fonctionnels : La création d’un système logique capable de vérifier l’identité d’un utilisateur, de recouper cette information avec des critères stricts liés à son emploi du temps, et de déclencher les avertisseurs physiques (LEDs et buzzer). Le système devait donc différencier un badge valide d’un badge non reconnu via des signaux sonores et visuels distincts.

Livrables : La délivrance d’une base de données relationnelle opérationnelle, des scripts en langage PHP de traitement des trames réseau, ainsi qu’une interface web d’administration permettant aux techniciens d’ajouter des badges et aux enseignants de consulter l’historique des passages.

 

Enjeux, Risques & Contraintes

Lors de ce projet, nous avons été confrontés à quelques contraintes. Je vous les énumère les plus majeurs ci-dessous : 

L’exigence du Temps Réel et de la Fiabilité: Pour ce premier cas, c’était le traitement des données qui devait s’effectuer instantanément. Par exemple, dans le cas où un identifiant du badge était valide dans la base MySQL, alors le système devait renvoyer les instructions d’ouverture à la gâche sans latence perceptible pour garantir la fluidité des entrées. Une attente trop longue de l’utilisateur, cela aurait pu démontrer le manque de fiabilité de notre mécanisme et donc créer une certaine frustration chez les utilisateurs. 

Résilience réseau & intégrité des scripts : Il s’agit d’un autre risque majeur inhérent à cette architecture : la communication client-serveur. En effet, si le script PHP chargé de parser la requête HTTP GET (contenant notamment l’adresse MAC du lecteur, l’ID du badge et l’état des entrées in/out) venait à échouer, alors l’accès à la salle devenait physiquement impossible.

Instabilité matérielle et bugs logiciels  : La gestion de l’électronique embarquée implique aussi des aléas. Nous avons été confrontés à des dysfonctionnements critiques liés à la version du firmware des lecteurs Inveo (en version initiale 0.35), rendant la gestion simultanée des LEDs et du buzzer impossible sans l’intervention directe du constructeur.

 

Les différentes étapes du projet

1) Analyse matérielle & structure du projet

Afin de bien comprendre les tenants et les aboutissants de ce projet, nous avons procédé à un inventaire rigoureux des composants IoT. Ci-dessous, les éléments matériels que nous avions à disposition : 

 

liste_materiel_rfid

Ensuite, nous avons procédé à l’élaboration des différents diagrammes UML (Déploiement, Séquence, Cas d’utilisation). Cette étape est essentielle pour la conception, la visualisation et la documentation de la structure du projet et le comportement d’un système logiciel avant de commencer son développement.

Il en était de même pour le diagramme de Gantt qui permettait la représentation visuelle et chronologique de notre projet. 

gantt previsionnel
Ici à gauche, notre diagramme de Gantt prévisionnel
gantt reel
Et à droite, le diagramme de Gantt réel


2) Développement backend & modélisation 

Pour cette étape, nous avons procédé à la création du schéma relationnel liant les identifiants uniques des badges aux informations des étudiants et aux créneaux horaires. On procède ensuite à la connexion au serveur MySQL via l’interface PDO (PHP Data Objects) pour garantir une meilleure sécurité.

Ensuite, on procède à l’écriture des requêtes SQL croisant l’ID du badge avec la table autorisation pour vérifier la validité de l’heure de passage avant l’insertion d’une trace d’horodatage.

3) Programmation de l’Interface et des scripts 

Configuration du serveur pour récupérer et traiter les variables passées dans l’URL par les lecteurs réseau. Génération de trames XML spécifiques en fonction des scénarios :

Si le profil est autorisé, alors une lumière verte apparaît et la gâche se déclenche permettant l’accès à la salle.

Dans le cas inverse, si le profil est refusé, alors une lumière rouge apparaît, la porte reste fermée et l’accès à la salle est donc impossible. 

4) Tests d’Intégration & résolution d’Incidents 

Face à un dysfonctionnement matériel bloquant l’utilisation des avertisseurs, nous avons contacté le support Inveo en Pologne pour obtenir un correctif. Le déploiement du nouveau firmware (version 0.40) a engendré de nouveaux bugs (conflits d’activation matérielle où seul le buzzer fonctionnait sur un boîtier, et seules les LEDs sur l’autre), exigeant une longue série de tests croisés, de débogage des chemins de scripts et de nouveaux échanges techniques. 

 

Retour d’expérience & Perspectives d’avenir

Ce projet fut fondamental dans mon parcours académique, car il a matérialisé la convergence fascinante entre le code informatique immatériel et l’infrastructure physique et électronique.

J’ai réellement pris conscience des différents de criticité des protocoles de communication en réseau et de l’intégrité des bases de données relationnelles dans des contextes réels de sécurité biométrique et d’accès.

Aussi, le fait de devoir déboguer du matériel instable et d’interagir avec le support technique d’un constructeur a forgé ma méthodologie de résolution d’incidents.

Aujourd’hui, fort de mes expériences et de mon parcours, je mettrais davantage l’accent sur la sécurité. 

Retour en haut