Commit 3a5c8832 authored by MACHADO-VICENTE MICKAEL's avatar MACHADO-VICENTE MICKAEL
Browse files

Merge branch 'communication-arduino-raspberry' into 'master'

Communication arduino raspberry

See merge request !3
parents 89ecff34 d585eed2
void setup() {
// On initialise la communication série
Serial.begin(19200);
}
void loop() {
// On regarde si on a reçu des données via le port série
if (Serial.available() > 0) {
// On a bien reçu des données
String data = Serial.readStringUntil('\n');
// Si le raspberry envoie un "Ok" c'est le signal pour envoyer la liste des capteurs
if (data == "Ok") {
// On envoie la liste des capteurs
String listeCapteurs = "1631131625874;21517614058209;218381011253;422003312207;874124856190;711704057252;231468758232;154814212237;1515323556113;1671142045633;19913424456141;1351587057102;1831092485626;2021444312125;19912824156142";
Serial.println(listeCapteurs);
}
else {
// Le raspberry renvoie l'état des Leds
// C'est ici qu'on devrait allumer les leds
// Pour tester, on renvoie simplement un message au raspberry qu'il va afficher pour s'assurer que la communication s'est bien passée
Serial.print("J'ai bien reçu la liste suivante : ");
Serial.println(data);
}
}
}
"""
Projet : Qui-est-ce ?
Auteurs : Pauline MELEDO, Yoann KLEIN, Mickaël MACHADO VICENTE, Gabrielle HURE
Ecole : Télécom Physique Strasbourg
Ce fichier est le script qui doit être lancé.
La Base de données y est lue.
L'arbre est testé grace aux tags des capteurs qui doivent être donnés au script.
L'état des LEDs doit être renvoyé à l'Arduino
"""
from lecteur_bd import *
from verification_elements import *
import os
import serial
import time
from pathlib import Path
"""
Lecture base de données
"""
chemin_bd = Path(os.getcwd()).joinpath("data/base_donees.xlsx")
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
"""
ser = serial.Serial('/dev/ttyACM0', 19200, timeout=1)
ser.flush()
count = 0
while True:
"""
On envoie un Ok à l'arduino pour qu'il renvoie la liste des capteurs
"""
ser.write(b"Ok\n")
"""
On a besoin d'attendre un petit peu pour recevoir les données
Augmenter le timeout lors de l'initialisation pourrait peut-être résoudre ce problème
"""
time.sleep(1)
#On réceptionne la liste des capteurs renvoyée par l'arduino
reponse_arduino = ser.readline().decode('utf-8').rstrip()
"""
Le premier message renvoyé par l'arduino n'est pas celui que l'on attend.
Pour contourner ce problème, on force un deuxième tour de la boucle lors de la première exécution pour être sûr d'avoir la liste des capteurs.
Sans ça, le code plante.
"""
count = count+1
if (count > 1):
print('Réponse arduino', reponse_arduino)
#La communication se fait à base de chaine de caractère représentant une liste séparée par des ; on la transforme donc en une vrai liste ici
liste = reponse_arduino.split(';')
print("liste", liste)
#On initialise les capteurs
capteurs = []
for i in range(1, 16):
capteurs.append(Capteur(i, liste[i - 1]))
#On lance l'algorithme
verif = VerificationElements(lecteur_bd.liste_personnages, lecteur_bd.liste_question, capteurs)
verif.verification_globale()
print("nb étage = {}".format(verif.nb_etage))
#On créé une chaine de caractère avec l'états des LEDs
reponse_leds = ""
print("Etat des LEDs:")
for idx, valeur in enumerate(verif.resultat_leds):
print("Index de la LED : ", idx, " --> valeur de la LED : ", valeur)
reponse_leds += str(valeur)
reponse_leds += ";"
#On supprime le dernier point virgule et on ajoute un retour à ligne pour signaler la fin de la chaine
reponse_leds = reponse_leds[:-1]
reponse_leds += "\n"
#On envoie la réponse à l'arduino
ser.write(reponse_leds.encode('utf-8'))
#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
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