Commit 74ab161c authored by MACHADO-VICENTE MICKAEL's avatar MACHADO-VICENTE MICKAEL
Browse files

Merge branch 'master' of git.unistra.fr:ghure/qui-est-ce

parents 6d28d044 0ddfd71c
......@@ -2,7 +2,7 @@
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="jdk" jdkName="Python 3.6 (qui-est-ce)" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
\ No newline at end of file
# qui-est-ce
# Qui-est-ce
Le projet Qui-est-ce est un jeu s'inscrivant dans un cadre pédagogique.
Le but est de comprendre le fonctionnement d'un arbre de décision par le biais du principe de jeu du "qui est-ce?".
Ce projet est à mettre en place avec une installation physique.
Le projet n'étant pas terminé, il se peut que des modifications soient nécessaires.
Il est actuellement découpé en deux partie :
- Un projet python (Lecture de la base de données, algorithme de verification de l'arbre et communication entre le Raspberry Pi et l'Arduino).
- Un projet Arduino (script devant être lancé sur l'Arduino lisant les tags RFID et allumant les LEDs).
# Prérequis
Ce projet nécessite un Arduino Mega, un Raspberry Pi (ou tout autre ordinateur capable de se connecter à l'Arduino et d'utiliser python), des lecteurs RFID RC522 13,56 MHz et des tags RFID 13,56 MHz des bandeaux de LEDs.
Packages pour les scripts python :
- Python 3.6.10
- Pandas 1.0.3
- xlrd 1.2.0
- pyserial
# Démarrer
La partie python peut être mise en marche en lancant le ["main.py"](main.py).
Concernant la partie Arduino, elle doit être chargée dans l'arduino et être lancée directement dessus.
# Fonctionnement du flux de données
1. L'Arduino interroge tous les lecteurs RFID.
2. Les tags lus sur les lecteurs sont envoyé par l'Arduino au Raspberry Pi.
3. Le raspberry Pi lit la base de données se trouvant dans ce projet sous ["/data/base_donnees.xslx"](/data/base_donnees.xslx). Cette étape est faite une seule fois.
4. Le raspberry Pi analyse les tags reçus par l'Arduino en prenant en compte les attributs prevenant de la base de données.
5. Le raspberry Pi envoie à l'Arduino la couleur que les chemins de LED doivent prendre.
6. Les LEDs s'allument sur l'Arduino avec la bonne couleur (rouge s'il y a une erreur, vert si le chemin est bon, éteint si aucune information).
# Communication Rasbperry Pi - Arduino
Des tests ont été réalisés pour s'assurer que la communication Raspberry Pi et Arduino fonctionne correctement. Nous avons ici testé la communication via le Port USB.
Pour l'Arduino, le code se trouve sous ["/arduino/test_arduino_raspberry.ino"](/arduino/test_arduino_raspberry.ino). Ce code ne comporte que les tests de communication, pas tout le projet avec la lecture des tags.
Pour le Raspberry Pi, le code se trouve dans ["test_communication.py"](test_communication.py).
# La base de données
Elle peut être agrandie mais doit être dans un fichier excel et être composée de deux feuilles.
- La feuille "Personnages" doit contenir le numéro de personnage, le tag du personnage, les tags des questions et les réponses à ces questions.
- La feuille "Questions" doit contenir le numéro des la question, le tag de la question et la question.
# Lancement des tests
A lancer à la racine du projet
python -m unittest discover -v .\tests
# Auteurs
Pauline MELEDO, Yoann KLEIN, Mickaël MACHADO VICENTE, Gabrielle HURE
de l'école Télécom Physique Strasbourg
......@@ -24,6 +24,8 @@ lecteur_bd = LecteurBd(chemin_bd)
"""
On initialise la communication par le port série avec l'Arduino
On flush pour supprimer tout potentiels messages qui pourrait s'envoyer lors de l'initialisation
'/dev/ttyACM0' est le port de l'Arduino, il peut changer en fonction de l'ordinateur utilisé.
Lien vers la doc : https://pyserial.readthedocs.io/en/latest/pyserial_api.html
"""
ser = serial.Serial('/dev/ttyACM0', 19200, timeout=1)
ser.flush()
......@@ -84,4 +86,4 @@ while True:
#L'arduino renvoie une chaine de caractère pour signaler que tout s'est bien passé
line = ser.readline().decode('utf-8').rstrip()
print(line)
\ No newline at end of file
print(line)
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment