IMA3/IMA4 2019/2021 P24+
Présentation générale
- Nom du projet : Interface graphique pour surveillance des communications d'un système embarqué
- Stagiaire : Théo VAN ROMPAEY / Julien DELABRE
- Encadrant : Thomas VANTROYS
- Durée : 6 semaines (17 Mai - 25 Juin 2021)
Description
Dans le cadre d'un projet de recherche, nous avons besoin d'un outil graphique pour visualiser de manière plus agréable les données renvoyées par des capteurs. Ces données proviennent de ports série. L'interface sera réalisé avec la bibliothèque Qt, l'implémentation sera réalisé en C ou Python3.
Objectifs
Réaliser une interface en QT (Python3 ou C ) pour afficher les données de systèmes embarqués communicants via un port série
Préparation du projet
Cahier des charges
Choix techniques : matériel et logiciel
- Python 3.7.3 QT for Python : https://www.qt.io/qt-for-python
- pySerial pour la réception série
- un emetteur et un recepteur (comprenant une puce LoRa chacun) qui nous ont été fournis
Liste des tâches à effectuer
Interface graphique :
- Comprendre comment fonctionne QT
- Internationaliser tout l'affichage qui pourra être fait
- Faire une partie configuration et une partie affichage des données
- faire une partie visualisation de courbe
- internationaliser le code (francais anglais)
Données :
- Utiliser pySerial pour la réception des données sur port série
- Stockage des données pour l'affichage de courbe par exemple
- Pouvoir modifier les paramètres d'envoie de donnée
Calendrier prévisionnel
Réalisation du Projet
Prologue
Semaine 1
18/05
- Installation des outils de travail : Qt, pySide, gettext, pySerial
Théo :
- prise en main de la bibliothèque pyside6
- création d'une barre de menu pour les diverses futures commandes
- Création d'une interface simple qui dans un premier temps demande la langue voulu puis affiche dans cette dernière quelque informations et boutons ( informations et boutons non définitif utilisé pour le test )
Julien :
- Création d'un 'dictionnaire' afin de traduire de l'anglais vers le français à l'aide de gettext, on remplace alors chaque chaîne de caractères 'string' par _('string') dans notre fichier .py (c'est le standard utilisé par gettext), ensuite on rempli le dictionnaire avec toute nos chaînes de caractères. Les commandes systèmes utilisés afin de créer le fichier binaire utilisé par gettext sont pour le moment exclusive à linux
19/05
Théo :
- finition du design de la fenètre de modification des parametres liés aux ports série, les fonctionnalités ne sont pas encore implémentée
- tentative de détection des emetteur et recepteur que l'on détecte en usb mais pas en série.
Julien :
- internationalisation du code fonctionnelle sur tous les ordinateurs(linux) grace à une détection automatique du chemin des fichier de traductions
- debut de la création de la fenetre de visualisation en utilisant plusieurs onglets un pour la visualitsation un pour les courbes etc ..
20/05
Théo :
- création du design complet de la fenetre de visualisation
- début de la fonction de lecture sur les ports séries
- identification des ports séries corrigées, si les microprocesseurs sont detectés en USB mais pas en série, il faut peut etre reboot l'ordinateur
Julien :
- Ajout d'un fichier permettant l'installation de tout les outils nécéssairent quelquesoit le système ( semble fonctionner pour Linux, devrait fonctionner pour Mac, à faire pour Windows )
- Ajout d'un menu déroulant pour la sélection des ports coté recepteur et transmetteur, ce menu déroulant recupère les ports connecté à l'ordinateur via port.py
- Ajout d'un message d'erreur à l'appuie du bouton enregistrer lors de la sélection du même port pour le recepteur et le transmetteur, sinon fermeture de la fenetre ( avec sauvegarde des infos dans des variable )
- Ajout d'un menu déroulant pour le choix de vitesse
- Ajout d'un fichier de configuration config.txt, c'est là où sont stockés les informations rentré par l'utilisateur
- La fonction de lecture sur les ports série récupère les ports choisi par l'utilisateur depuis le fichier de configuration
- le changement de langue reste maintenant enregistré et peut être changer depuis la page principale ( nécessité de relancer le programme pour changer de langue )
21/05
Théo :
- modification de la fenetre pour parametrer les ports series pour pouvoir rentrer les parametre de la liaison série
- debut de la fenetre pour parametrer les graphes
- debut de la création des graphes
- adaptation de la liaison serie pour qu'elle fonctionne selon les parametres séléctionnés
Julien :
- Changement du lancement de la fenetre de visualisation, elle se lance maintenant à l'appuie d'un bouton depuis la fenêtre principale
- L'affichage des données récupérées en série se fait dans 2 Thread ce qui permet l'accès au reste des commandes pendant que les données défilent sur l'écran de visualisation
- La configuration des ports séries choisi par l'utilisateur reste maintenant enregistré pour la prochaine utilisation, sauf si le port utilisé la dernière fois n'est pas connecté
Semaine 2
25/05
Théo :
- suite du design de la fenetre de parametrage des graphes
- finition des fonctionalités de la fenetre de parametrage de l'echantillonage des mesures
- ajout de traduction et amélioration de l'organisation du gitlab
Julien :
- Création des fichiers et du programme pour sauvegarder les données lors d'une demande d'acquisition
- ajout d'icône
26/05
Théo :
- finition des fonctionalités de la fenetre de parametrage des graphes
- correction de l'organisation des fichiers texte
- tentative de correction d'un bug d'affichage de fenetre
Julien :
- Recherche et test sur les StyleSheet, test sur le logiciel
27/05
Théo :
- correction de bug
- ajout de traduction
Julien :
- Conception logo pour le logiciel
28/05
Théo :
Julien : Sur la fenetre principale remplacement des menus déroulant en bouton et ajout d'un theme
Semaine 3
31/05
Théo :
- creation du debut de la fenetre d'aide
- correction de bogue
Julien : Correction d'un problème qui faisait que certaines fenetres ne ce lançaient pas
01/06
Théo :
Julien : Récupération des parametres de graphe choisi par l'utilisateur et affichage du graphe
02/05
Théo :
- prise en main et installation des programmes liées au microcontrolleur
Julien : ajout de la possibilités à l'utilisateur de demander une acquisition multiple qui se feront l'une après l'autre après validation, l'utilisateur pourra ensuite observer tout les graphes
03/05
Théo :
- Création du nouveau git (serveur down)
- Organisation des fichiers afin d'avoir une structure plus propre
Julien : Corrections des problèmes liés à la nouvelle structuration des fichiers
04/05
Théo :
Julien : Certains parametre sont affiché sur une fenetre différentes => changement dans les fichiers config et dans les programmes récupérant ces infos
Semaine 4
07/05
Théo :
- finition de la barre de chargement
- organisation du code et ajout de commentaire
Julien : modification du code des cartes LoRa peut maintenant se faire grace au parametre choisi par l'utilisateur dans le logiciel entre chaque acquisition
08/05
Théo :
- abandon de la fenetre d'aide au profit d'un bon vieux pdf qui sera plus lisible et pratique a lire
- debut de la redaction du pdf d'aide
- ajout de commentaire et de test d'ouverture des fichiers
Julien : * nouveau message d'erreur lorsque l'utilisateur inverse l'emetteur et le recepteur dans le choix des ports
- Le programme détecte maintenant par lui même quel sont les ports ou il faut écrire pour modifier le code sur les cartes LoRa
09/05
Théo :
Julien :
10/05
Théo :
Julien :
11/05
Théo :
Julien :
Semaine 5
14/05
Théo :
Julien :
15/05
Théo :
Julien :
16/05
Théo :
Julien :
17/05
Théo :
Julien :
18/05
Théo :
Julien :
Semaine 6
21/05
Théo :
Julien :
22/05
Théo :
Julien :
23/05
Théo :
Julien :
24/05
Théo :
Julien :
25/05
Théo :
Julien :