Projets:Fit and Fun Kids

De wikilab
Fit and Fun Kids

Icon-Fit-and-fun-Kids.png

Ce projet recherche ces compétences :

Informatique, Internet des objets

Informations
Description Fit & Fun Kids œuvre à développer des jeux interactifs, adaptés à différents types d’activités physiques tout en encourageant leur pratique.
Evènement associé Fabrikarium Palavas 6 au 8 juin 2023
Catégorie Motricité
Etat d'avancement En cours
Techniques scratch, micro-bit
Durée de fabrication de 0 à 2 h
Coût matériel De 50 à 100 euros
Niveau Moyen
Licence autre: MIT
Date de création 2023-06-06
Équipe
Porteur de projet Tya, Koreilya: maman de Tya
Contributeurs ChristineAzevedo, Cecilepacoret, Maxime, Siméon Getti, Virginie Ceccarelli, Gaelle Thibaudat, Rémy Devos, Guillaume Colin, Judith Maurin, Tanguy Dréan, Pissard
Animateur Sijobert
Fabmanager Sijobert
Référent documentation Tiago Coelho
Partenaires: Humanlab Autonabee, Humanlab INRIA"Humanlab INRIA" n’est pas dans la liste (le collège des Hautes Ourmes (Rennes), le collège des Chalais (Rennes), l’Institut Médico Educatif PREFAAS (Rennes), le collège Bellevue (Redon), l’Institut d’Education Motrice La Clarté (Redon), le collège Mahatma Gandhi (Fougères), l’Institut d’Education Sensoriel Paul Cézanne (Fougères), le collège Du Querpon (Maure-de-Bretagne), l’Institut Médico Éducatif Les enfants du pays (Poligné), Lab4i, ...) de valeurs autorisées pour la propriété "A partenaires".
Nom humanlab Humanlab_SP
Documentation
Statut de la documentation Partielle
Relecture de la documentation Non vérifiée

Description du projet

Cahier des charges

Le projet Fit&Fun Kids a pour objectif principal de rendre la pratique d'activités physiques ludique pour Tya, 11 ans, que ce soit à domicile ou en salle de sport (APA’MOUV). Il s’agit de proposer des activités adaptées, incluant l'utilisation d'équipements d'entraînement spécialisés. Les dispositifs actuellement disponibles, principalement destinés à la rééducation des adultes, proposent rarement des interactions ludiques pendant l'activité physique.

Description des besoins sous forme de fonctions du produit final dans les sous-sections suivantes.

Développement de Jeux interactifs

  • Déclencher des actions lors d’exercices physiques de l’utilisateur:
    • Pédalage (utilisation d’un ergocycle)
    • Extension du bras
    • Ouverture de la main (extension des doigts et du poignet)
    • Rotation externe de la main (supination)
    • Lever le bras
  • Répondre à une variable soit binaire soit analogique issue de divers capteurs
  • Permettre l’utilisation du logiciel Scratch pour permettre à des enfants de modifier des jeux existants (personnages, couleurs, musique…) ou de créer de nouveaux jeux.
  • Inclure dans l’un des jeux un dauphin, la couleur rouge et s’inspirer de dessins animés japonais pour répondre au souhait de Tya
  • Permettre un déploiement sur le PC personnel de Tya (Windows 11) et sur une console dédiée

Capteurs

Autoriser l’utilisation de divers types de capteurs (centrales inertielles, Electromyographie, Capteurs Flex…). Les capteurs devront permettre d’évaluer les mouvements (sans besoin d’une grande précision). L’encombrement, le poids et le mode de fixation des capteurs portés par Tya ne doivent pas perturber la bonne exécution des mouvements et Tya doit pouvoir s’équiper seule.

Portabilité et interface utilisateur physique

  • Contenir l’électronique (capteur + batterie + communication)
  • Permettre la circulation d’air pour limiter l’échauffement de l’électronique (batterie et antenne wifi)
  • Isoler thermiquement et mécaniquement la batterie qui se déforme dans le temps
  • Brancher facilement un câble USB micro
  • Limiter la torsion sur le connecteur USB
  • Avoir accès au bouton reset
  • Être démontable pour changer les composants
  • Les logiciels développés sous Scratch devront pouvoir être exportés en Python pour une utilisation sur la console.
  • Architecture de communication inter-code et sans-fil

Architecture

Ffk architecture.png

Analyse de l'existant et liens utiles

  • Certaines briques développées dans le projet Fit&Fun seront exploitées.
  • Vidéos captées dans la salle APA’Mouv des jeux déjà utilisés
    • APA Mouv - ErgoCycle.mp4
    • APA - Mouv - Capteur de force.jpg
    • VID_20230606_160439.mp4
    • VID_20230606_160838.mp4
    • APA Mouv - Capteur de force 2.jpg
    • APA Mouv - Jeu multijoueurs.mp4
    • APA - Mouv Muscu Elastique.mp4
  • Intérêt des Quaternions versus angle d’Euler pour la reconstruction d’attitude. Meilleure gestion des singularités cf lien

Matériel

Deux pistes ont été explorées, la première est l’utilisation du logiciel SCRATCH en ligne, la seconde est l’adaptation de la solution Fit&Fun existante avec une version sur console et une version sur PC. Nous souhaitons que les jeux développés sous SCRATCH soient exportables dans la plateforme Fit&Fun pour permettre un développement facile de jeux sous SCRATCH en plus de développements de type Pygame.

Plateforme SCRATCH-MICRO:BIT sur PC

TDB photo à intégrer

Cette plateforme est décrite en détails ainsi que les procédures d’installation de l’environnement sur PC dans le document [LINK Fit&FunKids-Scratch&Co]


Logiciel SCRATCH + extension micro:bit + installation SCRATCH LINK

L’interface de programmation SCRATCH s'utilise dans un navigateur internet. SCRATCH permet de développer des jeux interactifs de façon simple en utilisant un langage de programmation graphique en blocs. SCRATCH est enseigné en collège ce qui permettra aux plus jeunes de programmer de nouveaux jeux ou de modifier les jeux existants (changement d’avatar, de décor…).

Carte micro:bit BBC V1 ou V2 + alimentation via une pile bouton 3,2V

Micro:bit est une carte électronique programmable créée pour promouvoir l'apprentissage du codage auprès des plus jeunes. La carte embarque des capteurs et actionneurs, dont une centrale inertielle. Une extension permet d’utiliser une carte micro:bit BBC V1 ou V2 sous SCRATCH. La connexion avec la carte micro:bit utilise le bluetooth.

Système de fixation sur la main de Tya

Le module micro:bit et son alimentation se glissent dans des gants ou des bandeaux que nous avons réalisés en néoprène en adaptant des gants de planche à voile. Il est aussi possible d’utiliser une single à velcros.

Assemblage de gants de planche à voile adaptés au capteur micro:bit (couture d’une pièce de néoprène sur le dessus de la main et découpe des 4 doigts pour simplifier l’enfilage)

TDB insertion photo gants


6 jeux fonctionnels

Ils ont été mis à la disposition de Tya sur un studio SCRATCH auxquels elle accède depuis son PC personnel. Ces jeux permettent à Tya de déclencher des actions de divers personnages en inclinant la carte micro:bit : d’avant en arrière pour travailler l’extension des doigts / poignet / coude / épaule ou de gauche à droite pour travailler la supination. Les jeux proposent des exercices qui nécessitent des répétitions de mouvements ou le maintien de certaines positions. Des explications sont fournies pour chaque jeu. Il n’est pas nécessaire d’avoir un compte utilisateur pour jouer.

TBD insertion photo studio et des films

Présentation des jeux sous forme de vidéos :

  • Installation
  • Corde à Sauter
  • Attrape Mouette
  • Chat et Souris
  • Grenouille
  • Space dog

Plateforme Fit&Fun sur Console dédiée

Lors du Fabrikarium 2022 à Rennes, le projet Fit & Fun devait rendre un pédalier à main basique plus ludique. Ce dispositif est utilisé dans les salles de sport adaptées (APA’Mouv, ANTS) et les centres dé rééducation fonctionnelle. Une console de jeux ‘rétrogaming’, à base de Raspberry 4, a été réalisée dont le contrôle du jeu est relié à la vitesse du pédalier par l’intermédiaire d’un capteur sans fil MQTT. Siméon en stage a travaillé par la suite du Fabrikarium à l’extension des fonctionnalités et la ‘robustifcation’ de la console. On veut étudier la piste de réutiliser certains composants (capteurs MQTT par exemple) pour ce projet voire d’intégrer les jeux kids sur cette console.

TBD Ajouter l’image du dispositif + film (récup sur PC de Siméon)->ROGER

Utilisation du protocole MQTT

Pour répondre à la demande de Tya, nous avons exploré la possibilité d’utiliser divers capteurs. Pour connecter les capteurs et l’ordinateur de Tya, nous avons utilisé une connexion Wi-Fi et le protocole MQTT. Ce protocole permet à un grand nombre de clients connectés à un même réseau Wi-Fi de communiquer via des messages, envoyés sur un topic spécifique et redistribués à tous les autres clients abonnés à ce topic. Plus de détails sur le fonctionnement de MQTT ici

Pour fonctionner, ce protocole nécessite la présence de 4 éléments :

  • Un réseau Wi-Fi partagé
  • Des clients souhaitant communiquer
  • Un “broker MQTT”, logiciel qui tourne en fond sur une machine connectée au réseau et chargé de la distribution des messages en fonction des abonnements des différents clients
  • Des topics en commun

Dans notre cas, nous avons essayé tout d’abord une approche où le broker était hébergé sur l’ordinateur où tournaient les jeux (celui de Tya). Cette solution nous a paru un peu lourde du point de vue de Tya : nous avons voulu simplifier la procédure pour que Tya aie le moins de manipulation possible à exécuter avant de pouvoir jouer.

Nous avons donc choisi une autre solution : embarquer le broker MQTT directement sur la carte responsable de l’envoi des données du capteur (dans notre cas, un ESP32 ou un M5StickC-Plus). Nous sommes même allés plus loin en hébergeant directement le réseau Wi-Fi sur cette même carte. Ainsi, Tya aurait seulement à allumer le capteur (via un interrupteur) et connecter son PC au réseau Wi-Fi hébergé par la carte avant de pouvoir jouer. En fonction du capteur utilisé, la carte associée va envoyer à intervalle régulier un message concernant un topic spécifique sous la forme “fit_and_fun/[nom_du_capteur]”. Le programme Python tournant sur la machine de Tya reçoit ensuite ces données et les interprète pour interagir avec le jeu.


Microcontrôleur ESP32

Le module ESP32 est une plateforme de développement polyvalente largement utilisée dans le domaine de l'Internet des Objets (IdO). Doté d'un processeur puissant, de connectivités Wi-Fi et Bluetooth intégrées, ainsi que de nombreuses broches d'entrées/sorties (E/S) programmables, l'ESP32 offre une grande flexibilité pour la création de projets électroniques. Il est apprécié pour sa facilité d'utilisation, sa compatibilité avec les langages de programmation tels que le langage Arduino, ainsi que pour sa capacité à se connecter à des réseaux sans fil, ce qui en fait un choix privilégié pour les applications de l'IdO et les projets de prototypage rapide. Overview | Adafruit HUZZAH32 - ESP32 Feather. Ce microcontrôleur sera utilisé en Wi-Fi. La batterie est fixée en permanence, car le microcontrôleur permet la charge via l’USB.

Point d’accès et Broker embarqué

Note : dans cette partie le terme contrôleur de jeu définit le ou les capteurs de mouvement permettant d’interagir avec le jeu vidéo. La console de jeu désigne l’appareil sur lequel est lancé le jeu, PC , Tablette…

Le choix d’embarquer le point d’accès wifi ainsi que le service de communication au contrôleur de jeu apporte une facilité de mise en place du système par l’utilisateur. Afin de mettre en place le système, il suffit de se connecter au réseau wifi créé par le contrôleur de jeu, puis de lancer l’application de jeu sur la console.

Ce choix évite des manipulations d’appareillage et de configuration du jeu et offre également une portabilité aisée des applications sur tablette ou d’autre système d’exploitation du fait de la standardisation des capteurs.

Schéma d'architecture : TBD insérer schéma

Génération du point d’accès wifi

La gestion et la création du point d’accès via la library <WiFi.h>. Elle permet de créer facilement le point d’accès wifi en l’appelant dans la partie setup du code via : WiFi.mode(WIFI_AP);

Choix du broker

Le broker PicoMQTT a été choisi après une phase d’essai/erreur. Il permet de créer un broker MQTT stable sur l’ESP32 et suffisamment rapide pour maintenir la communication. Il a également l’avantage de pouvoir publier est souscrire a un topic par lui-même.

Capteurs testés

Nous avons testé différents capteurs.

Centrale inertielle BNO055 (IMU DIY) : il s’agit d’un module qui permet de mesurer et suivre avec précision mouvement et l'orientation d'un objet dans l'espace tridimensionnel. Doté de capteurs de gyroscope, accéléromètre et magnétomètre, il fournit des mesures précises et stables, permettant de calculer l'angle d'orientation, la vitesse angulaire, l'accélération linéaire et les champs magnétiques. plus d'info

Un boîtier a été réalisé pour accueillir le capteur et le porter avec une sangle tel un bracelet

TBD insertion film Animation boîtier.mp4


Centrale inertielle M5StickC : basé sur un ESP32-Pico incluant des interfaces WiFi et Bluetooth combinées à un afficheur LCD 1,14". alimenté par un accu LiPo de 120 mAh et doté d’un connecteur Grove. Il est doté de capteurs: 1 accéléro/gyro MPU6886, 1 micro RTC BM8563, 1 bouton poussoir… plus d'info

Capteur Electromyogramme (EMG) MyoWare : L'électromyogramme (EMG) est la mesure de l’activité musculaire en mesurant les signaux électriques générés par les muscles lorsqu’ils se contractent. Dans le cadre de notre projet, l'objectif est de détecter l'ouverture de la main à travers la contraction des muscles de l’avant-bras. Pour ce faire, nous avons intégré le capteur MyoWare Muscle Sensor Kit, qui permet de capturer les signaux électromyographiques et de les convertir en informations exploitables. Dans le cadre du projet, la version 1.0 du capteur MyoWare Muscle Sensor a été utilisée pour les tests de validation, bien qu'il existe une version plus récente disponible (MyoWare 2.0 Muscle Sensor - DEV-21265 - SparkFun Electronics). De plus, l'utilisation de la carte MyoWare Power a été intégrée pour garantir une alimentation fiable et optimale du capteur, assurant ainsi des mesures précises et cohérentes de l'activité musculaire.

Liens utiles pour utiliser la carte MYOWARE POWER: MyoWare Muscle Sensor Kit - SparkFun Learn 3-lead Muscle / Electromyography Sensor for Microcontroller Applications Concernant la position et l'orientation des électrodes du capteur musculaire, elles ont un impact significatif sur la qualité du signal mesuré. Il est important de placer les électrodes au centre du groupe musculaire ciblé et de les aligner dans le sens de l'orientation des fibres musculaires.


Figure x - Positionnement correct des électrodes

Plus la contraction est forte, plus le nombre d’unités motrices recrutées est grand et plus la force musculaire gérée est importante et une plus grande activité électrique dans le muscle. MyoWare analyse cette activité électrique et émet un signal analogique qui représente la quantité de contraction. La sortie indicative doit s'activer (LED verte) lorsqu'une contraction est détectée. Voir les étapes ci-dessous pour placer le capteur et mesurer les signaux. 1) Nettoyer la surface de la peau 2) Fixer les patchs adhésifs aux connecteurs du capteur. 3) Placer le capteur sur le muscle souhaité 4) Placez l'électrode de référence sur une partie osseuse ou musculaire à proximité du muscle ciblé. 5) Connectez l'entrée ADC d'une carte de développement (exemple MS5STICK) pour le traitement du signal.


Figure x - Connexion MyoWare à M5Stick pour l'acquisition de données EMG. Pour alimenter MyoWare et obtenir des données, trois câbles sont nécessaires (port Grove) : Vout (rouge), GND (noir), G33 (jaune).

Pour effectuer des tests en étant connecté à la plateforme de développement (par exemple, Arduino IDE), il est nécessaire de faire attention au schéma de connexion, comme indiqué ci-dessous.

Figure x - Schéma de connexion à la plateforme de développement. Dans l’image, l’Arduino illustre l’autre système informatique utilisé

Vidéo de test du capteur avec un jeu Fit&Fun : https://drive.google.com/file/d/1gFXCSU-u7OXf7zFS6elBnkpH-EOZ6Z-c/view?usp=drive_link


Capteur FLEX : capteur de flexion ou capteur de force flexible qui détecte et mesure le degré de flexion ou de courbure d'un objet physique. Il s'agit d'une fine bande ou d'un module flexible qui modifie sa résistance électrique lorsqu'il est soumis à une flexion ou à une courbure. Ils peuvent être intégrés dans des gants, des exosquelettes et d'autres technologies portables pour capturer et mesurer les mouvements des doigts ou des articulations. Le capteur de flexion est généralement composé d'un matériau substrat avec des pistes conductrices ou des matériaux intégrés. Lorsque le capteur se plie, l'espacement entre les éléments conducteurs change, entraînant une variation de la résistance électrique. Cette variation de résistance est proportionnelle à la quantité de flexion ou de courbure appliquée au capteur. Pour d'autres informations techniques et des exemples, consultez la fiche technique d'un modèle à l'adresse : https://www.gotronic.fr/pj2-fiche-technique-capteur-de-flexion-2093.pdf Les capteurs de flexion agissent généralement comme des résistances variables. Une méthode courante pour exploiter la variation de résistance consiste à intégrer le capteur de flexion dans un circuit diviseur de résistance. En connectant le capteur de flexion en série avec une résistance fixe, une tension analogique peut être générée à travers le capteur de flexion en fonction de la tension appliquée au circuit diviseur de résistance. Cette tension peut ensuite être mesurée et utilisée pour un traitement ultérieur ou une interface avec d'autres composants électroniques. Par exemple, la tension de sortie du capteur de flexion peut être convertie en une valeur numérique à l'aide d'un convertisseur analogique numérique, permettant des mesures précises et une intégration avec des systèmes numériques (Figure x).

Figure x - Le capteur de flexion dans un circuit diviseur de résistance. Circuit a) uniquement le diviseur de tension qui serait connecté à l'entrée du convertisseur analogique-numérique ; b) diviseur de tension avec le capteur flex associé à un circuit de conditionnement (amplificateur opérationnel dans la configuration non inverseur) pour le réglage du gain et qui serait également relié à l'entrée du convertisseur analogique-numérique. La configuration a a été utilisée dans les expériences et était suffisante pour détecter une main ouverte ou fermée.

Profitant de cette solution simple, le capteur a été utilisé pour détecter l'ouverture ou la fermeture de la main. Pour illustrer son applicabilité dans ce contexte, une simulation tinkercad a été réalisée. La simulation est disponible sur le lien : https://www.tinkercad.com/things/1cNeFTw3pid


Figure x - Capteur non fléchi pour indiquer une main ouverte. La configuration simple du diviseur de tension a été utilisée.

Figure x - Capteur fléchi pour indiquer une main fermée. La configuration simple du diviseur de tension a été utilisée.

Intégration du capteur FLEX dans un tube en néoprène associé à une pièce imprimée en 3D.





Vidéos de test du capteur https://drive.google.com/file/d/1ekCK_oaYbLvkIv_UD86L7IvguFW57F9q/view?usp=drive_link

Outils

Pour la version SCRATCH PC:

  • PC sous windows
  • carte micro:bit
  • Imprimante 3D pour imprimer le boitier capteur
  • Pile

Pour la version Console Fit&Fun:

  • PC sous Linux
  • Dispositif Fit&Fun

Fichiers source

Jeux directement en scratch

Disponible sur le portail scratch

Jeux python convertis depuis scratch

Disponible sur Github Autonabee

Ce code permet de générer des jeux scratch (.sb3) en Python que l’on peut exécuter sur 1 PC (linux/ubuntu, Windows non testé) connecté à des capteurs mqtt. Les jeux sont dans games/:

  • Attrape_Mouai_te_by_Tya
  • Jeu_de_la grenouille_mode
  • Jeu_du_chat_et_de_la_souris_mode
  • Space_dog

Le répertoire contient deux sous-projets:

  • Le code du micro-controleur mqtt_sensors. On peut configurer le code du microcontroller (struct esp_config cfg) pour choisir le type de données capteurs à renvoyer, si il active un hot-spot wifi et un broker mqtt (un seul capteur dans ce mode si on utilise plusieurs capteurs).
  • Le générateur de code python sb3topy qui est un outil qui convertit un projet Scratch 3.0 en Python. Le projet qui est exporté dans un seul fichier sb3, une fois traduit peut être exécuté en utilisant le moteur d’exécution sb3topy et Pygame. Les fichiers Python du moteur d’exécution sont copiés automatiquement lors de la conversion. Le lien est un clone avec des modifications mineures pour corriger un bug. Fit&Fun kids propose une extension au moteur d’exécution sb3topy dont le principe est de faire correspondre une variable (MODE) Scratch/Python avec la valeur du capteur de mouvement envoyé par MQTT. La variable constamment mise à jour par la valeur capteur est alors utilisé dans le jeu.

Plan 3D

TBD

  • Boitier capteur : Fichiers STL et FUSION
  • Tige doigt pour capteur Flex: A récupérer

Etapes de fabrication pas à pas

Retours utilisateurs