Différences entre versions de « Projets:A-maze »
Ligne 182 : | Ligne 182 : | ||
'''Mise à jour avec intégration d'un interrupteur ON/OFF et témoin led de mise sous tension''' | '''Mise à jour avec intégration d'un interrupteur ON/OFF et témoin led de mise sous tension''' | ||
− | [[File:Taekwondo-v1-1-vibreurs_FRITZING.jpg| | + | [[File:Taekwondo-v1-1-vibreurs_FRITZING.jpg|900px]] |
=====Ecran d'accueil qui contient l'identifiant du contrôleur avec lequel il faut se connecter avec l'appli sur le téléphone===== | =====Ecran d'accueil qui contient l'identifiant du contrôleur avec lequel il faut se connecter avec l'appli sur le téléphone===== |
Version du 20 juin 2022 à 13:35
Description du projet
Créer un dispositif pour améliorer l'apprentissage du Tae Kwon Do par des malvoyants.
L'idée est de créer une application qui permette de choisir différentes séquences de mouvements avec des rotations et des déplacements afin que l'usager puisse être corrigé en temps réel avec un retour haptique sur les épaules sous forme de vibration.
Il existe un vingtaine de patterns (séquence de mouvements) incluant chacun une dizaine de rotation.
L'entrée et la sortie sont situés à la même position pour chaque pattern.
Pour les patterns, "les labyrinthes virtuels", la surface de deplacement est de 20m2. Il y a peu de déviation en réalité. Il n'y a jamais plus de 2 ou 3 pas d'affilé, suivis de rotation.
La séquence que nous appelons ici un labyrinthe virtuel change selon le niveau du pratiquant. La largeur du couloir est équivalent à environ 50 cm, largeur du bassin. Il s'agit de créer un exercice de mobilité avec lequel il travaille ses orientations. Le retour haptique représente le retour du mur du labyrinthe virtuel par rapport au déplacement.
Les pratiquants les plus avancés font des huitièmes de 360 degrés , soit 45 degrés. Pour arriver à cette précision il faut environ 6 ans pour un malvoyant et cet exercice permettrait d'accélérer l'apprentissage.
Il y a trois rotations possibles: 45, 90 et 180 degrés.
Les épaules sont reliées au bassin.
Aujourd'hui sans ce dispositif, le maitre rectifie avec tapotement sur l'épaule ou en bougeant le noeud de ceinture, la personne s'oriente. Il n'y a pas de vocalisation, pour rester concentré sur le mouvement et c'est la raison pour laquelle on ne souhaite pas vocaliser les erreurs.
Le principe ici serait de faire porter à la personne un gyroscope au niveau de la ceinture, "la boussole" du Tae Kwon Do, située à 3cm derrière le nombril, centre de gravité, point par lequel passe le point de rotation
Le dispositif est composé de trois parties :
- Le gyroscope au niveau de la ceinture
- un moteur vibrant sur chaque épaule
- une application depuis laquelle on choisit quelle séquence on travaille
Fonctionnement du dispositif:
- on declenche la séquence sur le téléphone (ou microcontroleur)
- le gyroscope reçoit et contrôle les angles de la séquence reçus en bluetooth de l'application (téléphone)
- le retour haptique (les moteurs vibreurs) indique à l'usager s'il fait une erreur.
Schéma du dispositif
Les éléments à prendre en compte pour programmer l'application
Un angle est détecté seulement si l'angle est supétieur à 35 degrés (à voir). La marge d'erreur toléré sur l'angle doit être réglable selon le niveau de l'usager et selon la taille de la personne.
L'usager aurait une seule chance de rectifier sinon tant pis il continue le pattern mais comme les angles sont relatifs à sa position, pas de problème. Dans le soft, il y a l'apsect usager final qui choisit son pattern et l'éducateur qui peut entrer le pattern. Ces patterns devraient pouvoir être ajoutés via l' interface utilisateur avec retour visuel du pattern.
En 1ere approche seuls les changements de direction sont à prendre en compte. Séquence d'angles.
Si on veut 180 et qu'on fait plus, vibration, mais si moins de 160 retour haptique?
Il faut signer les angles plus ou moins 90 degrés pour savoir si on est allé "dans le mur" ou si on a fait une rotation incomplète . Par défaut on est au nord. Travaille avec les points cardinaux.
Quand erreur, ca vibre, et arrete de vibrer quand l'utilisateur rectifie.
Pour passer à l'étape suivante mettre un autre seuil que celui du retour haptique. Par exemple, jusqu'à 20 degrés c'est un degré parasite, de 20 à 40, c'est une rotation et c'est donc une erreur de rotation qui n'a pas atteint les 45 degrés.
Cahier des charges
Analyse de l'existant
Equipe (Porteur de projet et contributeurs)
- Porteurs du projet : Sébastien
- Concepteurs/contributeurs : Yves, Delphine
- Animateur (coordinateur du projet)
- Fabmanager référent :Delphine
- Responsable de documentation
Matériel nécessaire
- Téléphone Android
- ESP 32 velleman
- batterie externe (suffisament puissante) type Batterie Romoss 5V 10000 mA. Si on débite pas assez d'ampérage il se coupe, minimum de conso pour qu'il reste éveillé
- Condensateur polarisé de 10 uF pour pouvoir télécharger le programme sans manipulation de la carte
- IMU Cmps12
- 1 buzzer
- 1bouton poussoir
- 1 écran Oled i2c de contrôle 128x64
- 1 led rouge.
- 2 breadboards et/ ou veroboard
- fils duponts mâle mâle
- 4 résistances : 330ohms ou 220 Ohms et 10k (anti-rebond du bouton poussoir) et 2*470R (pour les optocoupleurs) ,
- 1 condensateur non polarisé céramique 10nf
- 2 moteurs vibreurs (Micro Moteur Vibrant, 5pcs 3V 44000rpm Micro Moteur de Vibration sans Noyau Petit Moteur Électrique Fortes Vibrations Faible Bruit Faible Consommation d'Énergie 0.6W 0.08A ou Moteur vibrant mini, 5pcs DC 3V 80mA téléavertisseur et téléphone portable Coin plat vibrant micro moteur miniature étanche DC moteur de brosse pour téléphones mobiles, téléavertisseur (34MM)
- 2 optocoupleurs TLP 621
Outils nécessaires
Coût
Délai estimé
Fichiers source
- Schémas de montage électronique : Télécharger les schéma au format Fritzing
- Code : Télécharger le programme de l'ESP32 intégrant les deux moteurs vibreurs et un seuil de tolérance de la rotation en degrés
- Code initial démonstrateur de faisabilité sans les vibreurs (la led fait office de témoin pour signaler l'eereur) :Télécharger le programme de l'ESP32 sans l'intégration des vibreurs ni le seuil de tolérance sur les rotations
Etapes de fabrication pas à pas
Application Android pour envoyer la séquence du pattern au boitier contrôleur du pratiquant
Télécharger le zip et installer l'APK sur le téléphone
l'application sur le smartphone de l'enseignant.
Définir les différents patterns
Dans un tableur, définir les patterns sous le format suivant : (format provisoire )
Nom du pattern | Niveau de difficultée | A définir (ex: rotation) | A définir (ex: temps) | A définir (ex: rotation) | A définir (ex: temps) (etc...) |
---|
Exporter le fichier au format csv avec virgule comme séparateur
Connecter le téléphone à l'ordinateur
Copier le fichier CSV dans le téléphone dans le repertoire suivant : Mémoire de stockage interne/Android/data/appinventor.ai_yveslc35.TAEKWONDO/files/Nom_du_fichier.csv
NB: Si on désinstalle l'application le fichier va disparaitre il faudra le réinstaller au même endroit.
Si on est en mode développeur sur Appinventor en mode Companion , le fichier est à uploader depuis l'application companion dans le "File"
Usage de l'application
- Ouvrir l'application TaeKwonDo sur le téléphone.
- Cliquer sur le bouton "Scan"
- La liste bluetooth des contrôleurs de TaekwonDo apparait
- Sélectionner le contrôleur (sous tension) de l'usager taekwondo (ex: "taekwondo 01") et cliquer sur le bouton "Connecter"
- Cliquer le bouton "Valider le choix du contrôleur" ou le bouton "déconnection" puis recommencer.
- Une fois le choix validé la liste déroulante des patterns s'affiche. Cliquer sur le pattern voulu. La liste des niveaux correspondant à ces patterns s'affiche.
- Cliquer sur le niveau voulu
- Cliquer sur le bouton "Validation". L'ensemble du pattern est alors transmis au contrôleur.
- Cliquer sur le bouton en bas "Autre contrôleur" et recommencer la procédure avec le contrôleur suivant
Démonstrateur de faisabilité du contrôleur
Programme ESP32
Programme source pour ESP32 : Télécharger le programme source
Schémas de montage
Télécharger les schéma au format Fritzing
Pour démarrer la séquence il faut faire un appui long sur le bouton.
A chaque pas de séquence un bip est émis à la fin du temps alloué à ce pas. On effectue à ce moment là le contrôle de la rotation éventuelle et on vérifie que l'angle de la rotation effectuée correspond à celui du pas dans la limite des marges convenues (ici plus ou moins 15 degrés).
A la fin de la séquence un bip d'une autre tonalité signale la fin de la séquence et l'cran affiche le nombre d'erreurs de rotations non valides.
Si on veut interrompre la séquence en cours d'éxécution on refait un appui long sur le bouton.
Quand on effectue un double clic sur le bouton on appelle la fonction utilisée pour le contrôle des rotations qui affiche l'angle de départ, l'angle de fin, le sens de la rotation (droite ou gauche), et l'angle de la rotation. le sens de la rotation est celui des aiguilles d'une montre (positif à droite).
Mise à jour du schéma avec intégration des moteurs vibreurs
Mise à jour avec intégration d'un interrupteur ON/OFF et témoin led de mise sous tension
Ecran d'accueil qui contient l'identifiant du contrôleur avec lequel il faut se connecter avec l'appli sur le téléphone
Menu de commandes
Pattern reçu sur le contrôleur suite à l'envoi par application du téléphone
Ecran de contrôle de l'éxécution du pattern
Fin d'éxécution de la séquence avec le nombre d'erreurs affichées
Test de rotations (acquisition du gyroscope du contrôleur)
Principe de détection des rotations
Le diagramme affiche les valeurs brutes issues du gyroscope à savoir que les rotations sont mesurées dans le sens trigonométrique ce qui explique que les rotations à droites sont négatives et positives à gauche. (En se branchant en USB, on peut voir le diagrame en temps réer l'IDE d'Arduino en ajoutant quelques lignes de code).
Durée de fabrication du prototype final
Journal de bord
14/02/2022
Bonne nouvelle : le module CMPS12 est très réactif et convient parfaitement pour la détection de mouvements ou de rotations Cliquer sur le PDF pour voir l'intégralité du document. Proposition ci-dessous.
- Comment dissocier un mouvement parasite d'une rotation mal faite?
- suggestion: avoir deux capteurs pour dissocier mvt parasite: quand rotation, les jambes bougent, donc si bougent pas c'est parasite donc on ne calcule pas la rotation (ce n'est donc pas une rotation mal faite)
17/02/2022
- Comment dissocier un mouvement parasite d'une rotation mal faite?
- suggestion Yann: avoir deux capteurs pour dissocier mvt parasite: quand rotation, les jambes bougent, donc si bougent pas c'est parasite donc on ne calcule pas la rotation (ce n'est donc pas une rotation mal faite)
- Relecture du pdf
- ajouter angle 270 et zéro pour mouvement sans rotation. Il y aura les angles suivants dans les patterns :0, 90, 180, 270 degrés
- scénario d'usage :intégrer un timing pour chaque rotation
2 modes pour application
- une sans timing. Apprentissage de l'espace
- une avec timing pour entrainement à compétition de la personne pour une personne qui maitrise déjà l'espace.
Mode timing
Le découpage du temps peut être différent du découpage des rotations.
Entre deux rotations, il peut y avoir un découpage de temps ou pas. Et ce que chaque élément de mvt a une durée différente? Oui. Avoir en surimpression de rotation un métronome qui donne le rythme.
Soit quand le temps est écoulé, on fait un son pour dire que le temps est écoulé
Scénario d'usage
- Dans l'application du téléphone on importe un fichier csv qui contient tous les patterns.
- On choisit le pattern et à quel microcontrôleur (positionné sur le pratiquant) on l'envoie en bluetooth
- Le pratiquant non voyant déclenche le début de séquence avec un bouton relié au microcontrôleur
Fonctionnement du microcontroleur que le pratiquant malvoyant porte sur son nombril. Informations retours à l'usager
- Bip (son) = timing
- Vibration (retour haptique sur les épaules) = correction
Chaque bip précède un mouvement qui peut être une rotation ou pas.
La séquence de mouvement une fois envoyée se déroule continuellement. Si l'usager tourne alors qu'il devrait pas, il faut une indication. (Vérifier que les non rotations sont bien des non rotations.)
Limites de calcul
Tant que la rotation n'est pas figée , le calcul ne se lance pas (si je depasse ma rotation et revient en un seul mouvement, le dépassement bn'est pas prise en compte).
Tableau à remplir par usager final (enseignant) pour écrire les séquences
Priorité secondaire de développement
Nom du pattern | Niveau | Mouvement | Angle | Angle accepté (seuil tolérance) | Temps |
---|---|---|---|---|---|
Pattern 1 | A | 1 | 90 | 87-97 | 1 |
Pattern 1 | A | 2 | 0 | -10-10 | 1 |
Pattern 2 | B | 1 | 90 | 87-97 | 1 |
A transformer en un fichier csv où chaque ligne est un pattern. On importe le fichier csv qui contient tous les patterns dans le téléphone où on a un menu pour choisir quel pattern on sélectionne.
Pour initialiser et terminer la séquence
Le téléphone (appli globale des patterns pour le coach) envoie en bluetooth la séquence au microcontroleur du pratiquant. Bouton sur microcontroleur qui se trouve sur l' utilisateur puis séquence (salut+respiration+séquence).
A la fin de la séquence, on signale que c'est terminé par 3 bips
En cas d'erreur ou abandon en cours de route
Eventuellement, il faudrait avoir un point de reprise quand abandon de séquence en cours de route (priorité secondaire). Si on a pas fini la séquence et qu'on rappuie sur le bouton cela la stoppe. Si on rappuie dessus on repart du début.
En cas de de plusieurs séquences les unes à la suite des autres. Il faudrait envoyer les séquences additionnés de manière dissociée. Quand l'usager clique une fois, le déroulement de la séquence s'arrête. S'il clique une fois, la séquence reprend (celle qui a été bandonné). Double clic on reprend l'ensemble des séquences depuis le début.
To DO
- Réflexion de Sébastien et Yann, pour valider le format du pattern car il manque peut-être des informations pour corrections, notamment la direction