TP 9 :
Simulateur de DAB
avec Arduino et RFID
Ce Travaux Pratiques (TP) visant à vous initier au développement d'un simulateur de
Distributeur Automatique de Billets (DAB) à l'aide d'une carte Arduino et d'un lecteur RFID. Ce TP
combine des aspects de l'Internet des objets (IoT) et de l'interaction utilisateur via le terminal série.
Objectif du TP :
L'objectif principal de ce TP est de vous familiariser avec le développement d'un système
interactif permettant de simuler les fonctionnalités d'un DAB. Plus spécifiquement, les objectifs
incluent :
Communication Série : Apprendre à établir une communication série entre une carte Arduino
et un terminal, offrant une interface simple mais puissante pour l'interaction utilisateur.
Gestion RFID : Comprendre comment intégrer un lecteur RFID pour la lecture des cartes,
permettant ainsi l'identification des utilisateurs et le stockage d'informations associées.
Interface Utilisateur : Créer une interface utilisateur intuitive via le terminal série, permettant
aux utilisateurs d'interagir avec le simulateur de manière simple et efficace.
Tests et Débogage : Acquérir des compétences pratiques dans la phase de tests, débogage et
correction des erreurs éventuelles dans le code Arduino.
1
1. Description du Système à Concevoir :
1.1 Composants Principaux :
Carte Arduino : La carte Arduino continuera à être le cœur du simulateur, gérant toutes les
opérations et la communication série.
Lecteur RFID : Utilisez un lecteur RFID pour l'identification des utilisateurs.
1.2 Fonctionnalités Principales :
Identification Utilisateur : Les utilisateurs seront identifiés par des cartes RFID, chaque carte
étant associée à un compte utilisateur.
Vérification du Mot de Passe : La sécurité du compte sera assurée par la vérification du mot
de passe associé à chaque carte RFID.
Consultation de Solde : Les utilisateurs pourront consulter leur solde en envoyant une
commande spécifique via le terminal série.
Autorisation de Crédit : Simuler une fonction d'autorisation de crédit via des messages dans le
terminal série.
Communication Série : La communication entre le système et l'utilisateur se fera exclusivement
via le terminal série. Les messages d'interaction et les résultats des transactions seront affichés
dans le terminal.
2. Montage
1. Carte Arduino : Placez la carte Arduino au centre de votre espace de travail.
2. Lecteur RFID : Connectez le lecteur RFID à la carte Arduino en suivant les
connexions appropriées. Assurez-vous de respecter les spécifications de votre
lecteur RFID spécifique, mais généralement, cela implique de connecter les
broches VCC, GND, RX, et TX.
2
Figure 1. Monatge Arduino-RFID
3. Programmation
3.1 Structures de données
Nous avons choisi de structurer les données bancaires des clients au format JSON en raison de
sa simplicité, de sa lisibilité et de sa facilité d'utilisation. Le format JSON (JavaScript Object
Notation) offre une manière claire et concise de représenter les informations des comptes des
clients sous forme de paires clé-valeur. Cette approche facilite la manipulation des données
dans le contexte du simulateur de DAB avec une carte Arduino et un lecteur RFID.
Chaque compte est représenté en tant qu'objet JSON, avec des champs spécifiques tels que le
numéro de compte, le numéro de carte RFID, le mot de passe, le solde et l'autorisation de crédit.
Cette structuration permet une organisation logique des données, rendant la lecture et la
compréhension du fichier JSON directement accessible aux développeurs et aux utilisateurs.
Soit la structure JSON suivante :
{
"comptes": [
{
"numero_compte": "123456789",
"numero_carte_rfid": "ABC123",
"mot_de_passe": "motdepasse123",
"solde": 1000.00,
"autorisation_credit": true
},
3
{
"numero_compte": "987654321",
"numero_carte_rfid": "XYZ789",
"mot_de_passe": "secretpassword",
"solde": 500.00,
"autorisation_credit": false
},
// Ajoutez d'autres comptes au besoin
]
}
Explications des champs :
numero_compte: Le numéro de compte associé à un utilisateur.
numero_carte_rfid: L'identifiant de la carte RFID associée à ce compte.
mot_de_passe: Le mot de passe permettant d'accéder au compte.
solde: Le solde du compte, indiquant la quantité d'argent disponible.
autorisation_credit: Un indicateur booléen indiquant si l'utilisateur a l'autorisation de crédit
(true pour autorisé, false pour non autorisé).
3.2 Librairie nécessaire pour le développement du simulateur
Avant de plonger dans le développement de votre simulateur de DAB, assurez-vous d'installer
les deux bibliothèques essentielles pour le bon fonctionnement du projet. Premièrement, la
bibliothèque ArduinoJson sera cruciale pour la gestion des données au format JSON, facilitant
ainsi la manipulation des informations relatives aux comptes des utilisateurs. Deuxièmement,
n'oubliez pas d'installer la bibliothèque MFRC522 qui simplifiera la communication avec le
lecteur RFID, permettant ainsi l'identification des cartes et la récupération des données
associées.
Etapes pour l’Installation de la bibliothèque ArduinoJson :
Pour installer ces bibliothèques, suivez les étapes fournies précédemment dans l'IDE Arduino,
en sélectionnant la version la plus récente de chaque bibliothèque. Une fois installées, vous
serez prêt à tirer parti de ces puissantes ressources pour développer efficacement votre
simulateur. N'hésitez pas à consulter la documentation de chaque bibliothèque pour comprendre
comment les utiliser de manière optimale dans le cadre de votre projet. Cette étape est
essentielle pour garantir une gestion fluide des données au format JSON et une communication
efficace avec le lecteur RFID, jetant ainsi les bases d'un simulateur de DAB fonctionnel.
Ouvrez l'IDE Arduino.
Cliquez sur "Sketch" dans la barre de menus.
4
Naviguez vers "Include Library" > "Manage Libraries...".
Dans la bibliothèque de gestion, recherchez "ArduinoJson".
Sélectionnez la dernière version de la bibliothèque ArduinoJson et cliquez sur "Install".
Installation de la bibliothèque MFRC522 :
Ouvrez l'IDE Arduino.
Cliquez sur "Sketch" dans la barre de menus.
Naviguez vers "Include Library" > "Manage Libraries...".
Dans la bibliothèque de gestion, recherchez "MFRC522".
Sélectionnez la dernière version de la bibliothèque MFRC522 et cliquez sur "Install".
Une fois ces bibliothèques installées, vous pouvez les inclure dans votre code Arduino. Voici
un exemple de l'inclusion de ces bibliothèques au début de votre programme :
#include <ArduinoJson.h> // Bibliothèque ArduinoJson
#include <MFRC522.h> // Bibliothèque MFRC522
Création des comptes clients
#include <ArduinoJson.h>
void setup() {
[Link](9600);
// Création d'un objet JSON pour stocker les données des utilisateurs
StaticJsonDocument<200> jsonDocument;
// Création d'un tableau JSON pour stocker plusieurs comptes utilisateurs
JsonArray comptes = [Link]("comptes");
// Ajout de données pour le premier utilisateur
JsonObject utilisateur1 = [Link]();
utilisateur1["numero_compte"] = "123456789";
utilisateur1["numero_carte_rfid"] = "ABC123";
utilisateur1["mot_de_passe"] = "motdepasse123";
utilisateur1["solde"] = 1000.00;
utilisateur1["autorisation_credit"] = true;
5
// Ajout de données pour le deuxième utilisateur
JsonObject utilisateur2 = [Link]();
utilisateur2["numero_compte"] = "987654321";
utilisateur2["numero_carte_rfid"] = "XYZ789";
utilisateur2["mot_de_passe"] = "secretpassword";
utilisateur2["solde"] = 500.00;
utilisateur2["autorisation_credit"] = false;
// Convertir l'objet JSON en chaîne
String jsonStr;
serializeJson(jsonDocument, jsonStr);
// Afficher la chaîne JSON
[Link](jsonStr);
void loop() {
// Le code de la boucle n'est pas nécessaire ici
Fonctionnalités Principales :
Pour mener à bien ce projet, il est essentiel que l'étudiant se concentre sur l'implémentation
des cinq fonctionnalités clés énoncées dans le cahier des charges (décrite ci-dessous). Chaque
fonctionnalité représente une étape cruciale dans le développement du simulateur de DAB,
offrant une expérience utilisateur réaliste et complète.
En premier lieu, assurez-vous de bien comprendre le processus d'identification de la carte
RFID (déjà effectué dans la séance précédente) et de l'extraction des informations associées
au compte utilisateur. Cette étape constitue le point de départ essentiel pour toutes les
fonctionnalités subséquentes.
Ensuite, mettez en œuvre la logique qui permettra d'afficher un menu interactif sur le
terminal série, proposant des options telles que la consultation du solde et le retrait d'argent.
Assurez-vous que l'interaction utilisateur est claire et intuitive, guidant efficacement
l'utilisateur à travers les différentes fonctionnalités.
La consultation du solde doit afficher de manière précise et lisible le solde actuel du compte,
offrant une vue instantanée de la situation financière. La fonctionnalité de retrait d'argent,
bien que simulée, doit simuler de manière réaliste la transaction, mettant à jour le solde et
fournissant une confirmation à l'utilisateur.
Enfin, si le temps le permet, considérez l'implémentation de la fonctionnalité optionnelle
permettant aux utilisateurs de changer leur mot de passe. Cela ajouterait une couche
supplémentaire de sécurité et d'interaction avec le système.
6
Cahier des charges
Identification de la Carte RFID :
Lorsqu'un utilisateur approche sa carte RFID du lecteur, le système doit identifier la carte et
extraire les informations associées au compte.
Affichage du Menu d'Options :
Après l'identification réussie, le système doit afficher un menu interactif via le terminal série,
proposant des options telles que la consultation du solde, le retrait d'argent, et d'autres services
bancaires simulés.
Consulter le Solde :
L'utilisateur peut choisir l'option de consultation du solde. Le système doit répondre en
affichant le solde actuel du compte sur le terminal série.
Retrait d'Argent (Simulé) :
L'option de retrait d'argent doit permettre à l'utilisateur de simuler un retrait d'espèces. Le
système doit vérifier si le solde est suffisant et afficher un message de confirmation.
Changement du Mot de Passe (Optionnel) :
Une option facultative peut être ajoutée pour permettre aux utilisateurs de changer leur mot de
passe. Cette fonctionnalité renforce la sécurité des comptes
Bonne chance