Projet

Général

Profil

Présentation de l'interface homme-machine » Historique » Version 1

Anonyme, 31/03/2021 09:21

1 1 Anonyme
h1. Présentation de l'interface homme-machine
2
3
L’interface homme – machine est celle qui commande toutes les fonctionnalités de la lanterne. En effet elle permet de commander l’arduino via une communication USB série.
4
Selon le cahier des charges, l’interface homme – machine est une tablette tactile sous Windows ou iOs, étant donné le coût, nous avons opté pour une tablette hybride Windows.
5
L’interface homme – machine utilisera une application créé avec Qt. L’installation de cette application et son utilisation est expliqué dans le fichier :
6
7
h2. +1) Commandes principales+
8
9
10
Les différentes commandes possibles ont au préalable été définies dans un code implémenté dans le microcontrôleur de l’arduino. 
11
En effet, en fonction du caractère envoyé, on définit la commande du moteur de positionnement de la roue ainsi que pour chaque lumière la commande de couleur d'éclairage.
12
13
h3. Commande moteur
14
15
La commande moteur permet de définir l’ouverture et donc la taille de la tâche projetée.
16
Cette commande se fait grâce à la fonction _commandeMoteur()_ suivante :
17
18
19
  @void FenetrePrincipale::commandeMoteur(int ouv)@
20
@{@
21
@    port->open(QIODevice::ReadWrite);@
22
@    switch(ouv)@
23
@    {@
24
@    case 1 :@
25
@        port->write("1");   // Commande ouverture taille 1@
26
@    break;@
27
@    case 2 :@
28
@        port->write("2");   // Commande ouverture taille 2@
29
@    break;@
30
@    case 3 :@
31
@        port->write("3");   // Commande ouverture taille 3@
32
@    break;@
33
@    case 4 :@
34
@        port->write("4");   // Commande ouverture taille 4@
35
@    break;@
36
@    case 5 :@
37
@        port->write("5");   // Commande ouverture taille 5@
38
@    break;@
39
@    case 6 :@
40
@        port->write("6");   // Commande ouverture taille 6@
41
@    break;@
42
@    }@
43
@}@
44
45
h3. Commande d'éclairage
46
47
La commande des diodes électroluminescentes (DEL ou LED en anglais) est plus complexe que celle du moteur. 
48
En effet, les lumières doivent s’allumer en suivant les contraintes de scénario soit :
49
50
> * En fonction du type de test :
51
>> +Type confusion :+ Pour les couleurs rouge ou verte il est possible d’allumer en même temps un lumière de confusion rouge, verte ou blanche en fonction de la lumière de référence.
52
>> Ce type de test permet de vérifier qu'il n'y a pas de confusion entre les couleurs les plus critiques.
53
>>
54
>> +Type DEL unique :+ Dans ce test seule la lumière centrale s'allume quelque soit le corps d'armée.
55
>> Ce type de test permet de vérifier le daltonisme par détection de couleur seule.
56
>>
57
> * En fonction du corps d’armée du candidat :
58
>> +Marine :+ Les lumières sont positionnées l’une à côté de l’autre.
59
>> +Aviation :+ Les lumières sont positionnés l’une au dessus de l’autre.
60
> 
61
62
C’est pour cela que j’ai choisi de créer une classe lumière associée à l’élément lumière. 
63
Cette classe possède différentes fonctions (voir code du header de la classe Lumiere) permettant de réaliser les commandes en lumière unique 
64
ou en lumière verticale ou horizontale en fonction du corps d’armée.
65
66
 @#ifndef LUMIERE_H@
67
@#define LUMIERE_H
68
@#include "librairies.h"
69
@class Lumiere
70
@{
71
@public:
72
@    Lumiere(QSerialPort *&port, QLabel *&image, QLabel *&image2);
73
@
74
@    QSerialPort *port_en_cours;
75
@    QLabel *image_Centrale, *image_AviationMarine;
76
@    QString couleurDemandee = "";
77
@
78
@        // Variables des adresses des images de lumière à afficher
79
@    QString addRouge;
80
@    QString addBlanc;
81
@    QString addVert;
82
@    QString addBleu;
83
@    QString addOrange;
84
@
85
@       // Commande Del par Del 
86
@    void commandeLedCentrale(QString couleur);
87
@    void commandeLedAviation(QString couleur2);
88
@    void commandeLedMarine(QString couleur2);
89
@
90
@       // Commande globale
91
@    void commandeOff();
92
@    void commande(int cpt);    // Test DEL unique complet
93
@    void commandeConfusion(QString typeArmee, int cpt);   // Test de confusion complet
94
@
95
@    void setCouleur(QString nouvelleCouleur);
96
@    QString getCouleur();
97
@private:
98
@        // Compteur de couleurs car chaque lumière s'allume trois fois par scénario
99
@    int cptRouge = 0;
100
@    int cptVert = 0;
101
@    int cptBleu = 0;
102
@    int cptOrange = 0;
103
@    int cptBlanc = 0;
104
@
105
@    int coul = 0, coul2 = 0, prec = 0, prec2 = 0;
106
@    int tempsOff, tempsOn;
107
@};
108
@#endif // LUMIERE_H@
109
110
111
Les fonctions _commandeLed--(QString couleur)_ sont similaires et servent à allumer la lumière défini grâce aux valeurs définies dans le code arduino.
112
113
!https://forge.clermont-universite.fr/attachments/download/11984/couleur_code.JPG!
114
_+Figure 3.1 :+_ Caractère associé aux commandes de couleur
115
116
h2. +2) Les données+
117
118
Enfin l’interface doit aussi permettre l’enregistrement des données de chaque examen dans un fichier tableur. 
119
N’ayant pas de contrainte, le choix de tableur est un fichier _corpsArmee_nom-prenom.csv_ qui est plus facile pour le traitement.
120
Le fichier résultant est comme suit :
121
122
!https://forge.clermont-universite.fr/attachments/download/12007/fichierCSV.PNG!
123
_+Figure 3.2 :+_ Tableur CSV sauvergarde des données
124
125
Comme le montre la figure précédente, on peut séparer un fichier candidat en quatre parties :
126
127
>1. Date du jour de l'examen (Rouge)
128
>2. Zone de données personnelles du candidat (Bleu)
129
>3. Zone de données personnelles de l'examinateur (Violet)
130
>4. Zone de résultats du scénario (Orange)
131
132
Pour définir la date de l'examen il suffit d'utiliser la classe existante QDate.
133
134
Cependant, pour les trois points suivants, j'ai créé deux classes pour chaque élément pour faciliter et améliorer la lisibilité du code.
135
La première classe définit l'élément principal (le candidat, l'examinateur ou le test).
136
La deuxième classe définit la création d'une fenêtre pour la collection des données (voir le visuel en partie _3)_ ).
137
138
Les classes candidat, examinateur et fenêtre associé sont très similaire car les données nécessaires sont les mêmes à l'exception de la date de naissance.
139
Pour ce qui est du scénario, pour la classe test permet d'associer à chaque test du scénario les données d'ouverture, de temps d'exposition et d'extinction 
140
des lumières ainsi que le type (confusion ou non).
141
142
Pour conserver les données de l'examinateur même en cas de fermeture de l'application, elles sont sauvegardées dans un fichier _examinateur.txt_ tel que :
143
144
!https://forge.clermont-universite.fr/attachments/download/11997/fichierExaminateur.PNG!
145
_+Figure 3.3 :+_ Fichier des données examinateur
146
147
On retrouve dans ce fichier les données de l'examinateur de la _figure3.2_.
148
> Examinateur : RYMLAND Solange, personnel navigant de l'aviation.
149
150
h2. +3) Le visuel+
151
152
La fenêtre principale permettra le visuel de chaque scénario et sert de lien entre toutes les classes créées et utilisées.
153
154
h3. Aspect général
155
156
La fenêtre principale de l'application est composée d'une barre de menu séparée en cinq parties :
157
158
> * Maintenance (Permet d'effectuer une maintenance manuelle ou automatique)
159
> * Examinateur (Permet de gérer les données de l'examinateur)
160
> * Candidat (Permet de gérer les données du candidat)
161
> * Scénario (Permet de définir un scénario exécuter test par test ou chaque test aléatoirement)
162
> * Exporter données (Permet d'exporter les données dans le fichier vu figure 3.2)
163
164
!https://forge.clermont-universite.fr/attachments/download/12000/application.gif!
165
*_+Figure 3.4 :+_ Application visuel global*
166
167
h3. Maintenance
168
169
Le menu de maintenance permet de faire la maintenance des lumières en les allumant toutes de la couleur définie de façon manuelle 
170
(cinq premiers choix du menu, couleur par couleur) ou de façon automatique en sélectionnant le mode automatique.
171
172
!https://forge.clermont-universite.fr/attachments/download/12003/maintenance.gif!
173
_+Figure 3.5 :+_ Phase de maintenance (automatique/manuelle)
174
175
> Dans le premier cas, l'écran affiche simplement une image centrale avec la couleur supposée des lumières en maintenances (Orange sur la _figure 3.5_).
176
> Dans le second cas, l'écran affiche en plus un message de vérification de la maintenance (Blanc sur la _figure 3.5_)
177
178
!https://forge.clermont-universite.fr/attachments/download/12008/resultatMaintenance.gif!
179
_+Figure 3.6 :+_ Résultat de la maintenance automatique
180
181
Lors du choix de la maintenance automatique, il y a deux résultats possibles :
182
183
> * Toutes les lumières sont fonctionnelles, la maintenance est terminée
184
> * Une des couleurs possèdent au moins une lumière non fonctionnelle, dans ces cas-là un message de demande de changement de lumière.
185
186
h3. Données
187
188
Pour définir/modifier les données concernant l'examinateur, le candidat ou bien les variables de test, 
189
on utilise des fenêtres comme le montre la _figure3.7_.
190
191
!https://forge.clermont-universite.fr/attachments/download/12001/fenetres.gif!
192
_+figure 3.7 :+_ Fenêtres de collecte des données
193
194
Sur les fenêtres précédentes, on retrouve les données du fichier en _figure3.2_. En effet:
195
> Candidat : PROJET polytech, né le 6 mars 1992, personnel non navigant de l'aviation.
196
> Conditions du test 1 : Test de confusion avec un temps d'affichage 400 ms, un temps d'extinction 1000 ms et l'ouverture 1.
197
198
h3. Phase de test
199
200
En phase de test, il y a 4 affichages différents possibles.
201
> Boutons seuls : phase d'extinction des lumières, permet de sélectionner la réponse du candidat.
202
> Images superposées : phase de test de type confusion pour l'aviation.
203
> Images cote a cote : phase de test de type confusion pour la marine.
204
> Image seule : phase de test lumière unique ou test de confusion.
205
206
!https://forge.clermont-universite.fr/attachments/download/12009/test.gif!
207
_+figure 3.7 :+_ Exemple de tests
208
209
Pour les phases de test de type confusion : 
210
> la lumière de référence est verte ou rouge.
211
> la lumière de confusion est verte, rouge ou blanche.
212
Pour les phases de test de type classique :
213
> la lumière de référence est verte, rouge, blanche, orangé ou bleu.
214
215
Quel que soit le type de test, il y a trois types d'erreurs:
216
> *erreur inacceptable :* pas de confusion autorisée entre le rouge et le vert
217
> *erreur critique :* confusion du rouge ou du vert avec une autre couleur
218
> *erreur acceptable :* toute confusion entre deux couleurs autre que rouge et vert
219
220
h2. +3) Ce qu'il reste à faire+
221
222
Pour terminer le projet, il reste des améliorations à faire ainsi que quelques contraintes à respecter :
223
> * Sauvegarde de l'examinateur
224
>> Idée : Enregistrer dans un fichier texte les données de l'examinateur qui deviendront référence et resteront sauvegarder en cas de fermeture de l'application
225
>> Le fichier texte enregistrant les données de l'examinateur ne fonctionne pas lorsque le lien est relatif et non absolue.
226
>> Il faut donc trouver une solution à ce problème ou trouver un autre système de sauvegarde
227
228
> * Créer un scénario aléatoire
229
>> Idée : Sélectionner le nombre de tests choisis pour le scénario.
230
>> Afficher autant de fenêtre de sélection de donné des tests qu'il y a de test.
231
>> Réaliser aléatoirement chacun des tests définis.
232
233
> * Créer un scénario type
234
>> Idée : Ajouter dans le menu scénario une action _"scénario type"_.
235
>> Conserver les données dans un fichier texte pour pouvoir les conserver en cas de fermeture de l'application qui est lu par l'action précédente.
236
>> Ajouter dans le menu scénario une action _"modifier scénario type"_ qui permet d'enregistrer dans le fichier texte.
237
238
> * Définir les paramètres de la machine
239
>> Idée : Conserver les données dans un fichier à modifier que lors de changement lanterne.
240
>> Les paramètres sont : nom, numéro de série, lieu.
241
>> Il faut récupérer ces données dans le fichier en enregistrant.
242
243
> * Prendre en compte la maintenance
244
>> Idée : Il faut réaliser un test entre chaque candidat et donc mettre un message d'erreur si non réalisé.
245
>> Bien enregistrer sur le fichier candidat que la maintenance a été réalisé.
246
247
> * Prendre en compte la connexion USB
248
>> Idée : Détecter si le port est débrancher et arrêter le test dans ce cas-là.
249
>>Il faut aussi détecter avec quel port communiquer et le prendre en compte dans l’application.
250
>>Idée : Sélectionner le port de communication via l’interface
251
252
> * Visuel
253
>> Idée : Améliorer le rendu visuel.
254
255
> * Enregistrement
256
>> Idée : créer un fichier de plusieurs page ou revoir l'organisation des données pour une meilleure lisibilité.
257
258
> * Autres
259
>> Vérifier avec les clients si il n'y a pas de contraintes supplémentaires.
260
261
Les codes utilisés pour l'interface sont accessibles à ce lien :
262
https://forge.clermont-universite.fr/projects/p18ab08/repository/show/application_Lanterne-2
263
L'utilisation de Qt est expliqué dans la note d'application à ce lien :
264
https://forge.clermont-universite.fr/documents/1162
265
266
267
<<[[Choix Techniques]] / [[Conclusion]]>>
268
269
270
"couleur_code.JPG":https://forge.clermont-universite.fr/attachments/download/11984/couleur_code.JPG - Corresponde couleur _ valeur 
271
272
"fichierExaminateur.PNG":https://forge.clermont-universite.fr/attachments/download/11997/fichierExaminateur.PNG - fichier examinateur associé 
273
274
"application.gif":https://forge.clermont-universite.fr/attachments/download/12000/application.gif - application : visuel global 
275
276
"fenetres.gif":https://forge.clermont-universite.fr/attachments/download/12001/fenetres.gif - Affichage des différentes fenêtres 
277
278
"maintenance.gif":https://forge.clermont-universite.fr/attachments/download/12003/maintenance.gif - Phase de maintenance 
279
280
"fichierCSV.PNG":https://forge.clermont-universite.fr/attachments/download/12007/fichierCSV.PNG - exemple fichier candidat 
281
282
"resultatMaintenance.gif":https://forge.clermont-universite.fr/attachments/download/12008/resultatMaintenance.gif - résultat de maintenance 
283
284
"test.gif":https://forge.clermont-universite.fr/attachments/download/12009/test.gif