Projets:Myocoach v2
Myocoach v2 | |
---|---|
Informations | |
Description | Le MyoCoach est un appareil de rééducation DIY permettant d'apprendre à utiliser des capteurs EMG (musculaires) de manière ludique. |
Catégorie | Motricité Membre supérieur |
Etat d'avancement | Réalisés |
Techniques | arduino, raspberry pi |
Durée de fabrication | de 0 à 2 h |
Coût matériel | De 50 à 100 euros |
Niveau | Facile |
Licence | by-sa |
Date de création | 2022-09-27 |
Équipe | |
Porteur de projet | Bionico |
Contributeurs | Orthopus, Re-factory, Bionico, Mathis, ValentinMHK |
Fabmanager | Bionico, ValentinMHK |
Référent documentation | Bionico, ValentinMHK |
Nom humanlab | Humanlab_MHK |
Documentation | |
Statut de la documentation | Complète |
Relecture de la documentation | Non vérifiée |
Description du projet
Le MyoCoach est une solution Do It Yourself de fabrication d'un appareil de rééducation fonctionnel permettant d'apprendre à utiliser des capteurs EMG (capteurs musculaires) de manière ludique. Ses fonctionnalités permettent de jouer à des jeux vidéos minimalistes à partir des contractions musculaires de l'avant-bras. Sur le plus long terme, il vise à se familiariser avec ces capteurs dans l’objectif d’utiliser une prothèse myoélectrique.
Cahier des charges
Facile à mettre en place (plug n play).
Facile à utiliser.
Diversité des jeux.
Open source.
Relativement abordable.
Analyse de l'existant et liens utiles
Il est déjà possible d’apprendre à utiliser et contrôler sa prothèse de main électrique chez un prothésiste. Cela reste cependant un exercice complexe qui nécessite de se déplacer (parfois loin) pour pratiquer avec le prothésiste.
Cet apprentissage se fait notamment avec l'outil MyoBoy commercialisé par Ottobock
Il existe également le projet opensource BaahBox qui offre également un choix d'application et de jeux intéressants.
L’entreprise Orthopus a développé le Myocoach, une solution pour utiliser sa prothèse chez soi, disponible en open source ici
Ce projet s’inscrit dans la continuité de celui d’Orthopus et vise à simplifier l’utilisation de l’outil notamment au niveau des branchements et des interférences. Le projet documenté ici est basé sur la version 1.0.1 du MyoCoach.
Matériel
Electronique
- 1 Carte Raspberry Pi (3B+) et carte micro SD 16Go (1)
- 1 Cable USB A vers microUSB (2)
- 1 Carte Arduino Uno (3)
- 1 Cable USB A vers USB B (4)
- 2 Capteurs EMG avec prise jack 3,5mm (5)
- 1 Batterie externe (2 ampères)
Hardware
- 1 boîtier pour Arduino Uno (3)
- 1 boîtier pour Raspberry Pi (1)
- 4 vis 5mm x Ø2mm
- 4 vis 10mm x Ø2mm
- 1 Brassard (7)
Outils
- Ordinateur personnel ou smartphone avec une interface réseau Wi-Fi
Fichiers source
https://github.com/orthopus/01-myocoach
Montage
Préparation des cartes électroniques:
Installer la carte Raspberry Pi (1) dans son boitier.
Refermer le boitier et insérer la carte microSD dans l'emplacement prévu à cet effet.
Installer la carte Arduino Uno (3) dans son boitier en veillant à bien la clipser au fond de ce dernier.
Sécuriser la carte en place à l'aide des 4 vis 5mm x Ø2mm.
Installer les 2 prises jack femelles dans les emplacements prévu à cet effet et les maintenir en place à l'aide des écrous de serrage.
Vérifier que le branchement sur la carte corresponde au schéma suivant.
Refermer le boitier et le maintenir en place à l'aide des 4 vis 10mm x Ø2mm.
Assemblage des des éléments :
Brancher la carte Arduino Uno (3) à la carte Raspberry Pi (1) à l'aide du câble USB A (3).
Brancher les 2 capteurs myoélectriques (5) à la carte Arduino (3) via les prises jacks.
Brancher la carte Raspberry Pi (1) à la batterie externe (6) à l'aide du câble microUSB (2).
Le Myocoach est allumé à partir du moment où il est branché.
Utilisation du Myocoach
Une fois le Myocoach assemblé et donc allumé, il apparait dans les réseaux wifi auquel on peut se connecter dans un délai de 30 secondes.
Se connecter au Myocoach en sélectionnant "myocoach" dans les réseaux disponibles.
Une fenêtre internet s'ouvre avec un portail de connexion.
Choisir "Continue" pour valider l'authentification.
Copier le lien fourni (http://app.myocoach.lan) et le coller dans un nouvel onglet (navigateur Chrome ou Firefox recommandé).
Fermer la fenêtre précédente.
L'appli Myocoach est dès lors lancée et les captations des capteurs myoélectriques apparaissent à l'écran.
Positionner les capteurs myoélectrique comme souhaité et les maintenir en place à l'aide du brassard (7).
Régler le gain du capteur à l'aide du potentiomètre situé sur la face supérieure du capteur jusqu'à obtenir l'intensité désirée.
Une fois la préparation terminée, choisir une activité parmi "Signal", "Training" et "Games" à l'aide du bandeau textuel en haut à gauche.
Etapes de fabrication
Matériel nécessaire
Electronique
- 2 Prises jack femelle 3 pôles avec écrou de verrouillage
- 2 Câbles jack mâle 3 pôles démontables
- 4 Câbles Dupont mâle/mâle ou mâle/femelle (rouge, noir et 2 autre couleurs différentes)
- 2 blocs de 3 pin header mâle/mâle
- Câblerie (câble avec 3 fils, fils noir et rouge)
- Gaine thermorétractable
Composants
- 1 ordinateur personnel avec une interface réseau Wi-Fi (ou smartphone/tablette) avec un navigateur Web
- 2 Capteurs musculaires de chez Orthopus
- 1 carte Raspberry Pi (3B+)
- 1 Carte micro SD ((16Go A1 minimum recommandé))
- 1 carte Arduino Uno
- 1 câble USB vers USB A
Outils et logiciels nécessaires
- Tournevis plat et cruciforme
- Pince à bec long
- Cutter
- Pince à dénuder
- Pince coupante
- Imprimante 3D (et consommable)
- Fer a souder (et consommable)
- Station à air chaud ou briquet
- Interface de programmation Arduino (Arduino IDE)
- Interface d’impression 3D (Cura)
Préparation des capteurs myoélectriques
Dans cette version du projet et dans un souci de facilité d’utilisation, les capteurs myoélectriques se branchent à l’aide de prises jack 3,5mm sur la carte Arduino.
Couper à la longueur souhaitée les 2 câbles qui relieront les capteurs à l’Arduino (25-30cm).
Dénuder les deux parties sur 2 cm et les fils individuellement sur 8mm.
Ajouter la gaine thermorétractable sur chaque fil.
Souder les fils sur la prise jack et les pin headers en respectant la polarité suivante.
Image circuit.
Chauffer la gaine thermorétractable au briquet ou à l’air chaud.
Refermer la prise jack.
Emmancher la gaine thermorétractable sur le câble, brancher le pin header sur la fiche du capteur.
Verrouiller l’ensemble en chauffant la gaine.
Préparation des prises jack.
Préparer les 4 fils dupont en coupant une extrémité de manière à garder une fiche mâle et dénuder la partie coupée.
Préparer 2 fils noirs et 2 fils rouges d’environ 5cmet dénuder les extrémités.
Emmancher de la gaine thermorétractable sur chacun des fils et souder l’ensemble en suivant le schéma de montage suivant.
Chauffer la gaine thermorétractable pour sécuriser l’ensemble.
Flash Raspberry Pi
Configuration du système d'exploitation
Téléchargez une image Raspberry Pi OS Lite disponible à l'adresse suivante depuis un poste de travail :
https://www.raspberrypi.org/software/operating-systems/#raspberry-pi-os-32-bit
Décompressez l'archive téléchargée pour obtenir le fichier image (extension de fichier .img).
Depuis un terminal, allez dans le répertoire où se trouve le fichier .img puis connectez une carte MicroSD sur le poste (16Go A1 minimum recommandé).
La carte MicroSD doit être démontée si elle a été montée automatiquement.
Lancez ensuite la commande suivante :
Remarque : Remplacez 2021-05-07-raspios-buster-armhf-lite par le nom de fichier .img réel.
~ > sudo dd bs=1m if=2021-05-07-raspios-buster-armhf-lite.img of=/dev/rdisk2
Éjectez la carte MicroSD de la fente SD de la station de travail, puis insérez-la dans la fente MicroSD du Raspberry Pi.
Connectez un écran, un clavier et un câble ethernet puis allumez la carte Raspberry Pi.
Attendez que le système soit prêt.
Une fois le système démarré, authentifiez-vous sur le terminal avec l'utilisateur "pi" (mot de passe : raspberry).
Accès SSH
Sur le Raspberry Pi, activez l'accès ssh pour autoriser la connexion à distance à partir d'un autre poste de travail.
Exécutez la commande suivante :
pi@raspberrypi : ~ $ sudo raspi-config
Sélectionnez l'option suivante sur l'interface utilisateur : 3 Options d'interface , P2 SSH puis sélectionnez Oui . Enfin, sélectionnez Terminer pour enregistrer la configuration et revenir à l'invite de commande.
Clavier
Il peut être nécessaire de configurer le type de clavier utilisé. Exécutez la commande suivante :
pi@raspberrypi : ~ $ sudo raspi-config
Sélectionnez l'option suivante sur l'interface utilisateur : 5 Options de localisation , Clavier L3 puis suivez les instructions pour configurer le clavier (par exemple : Logitech, Français-Français (ancien, alt.), La disposition par défaut du clavier, Pas de touche de composition) . Enfin, sélectionnez Terminer pour enregistrer la configuration et revenir à l'invite de commande.
Mot de passe Pi
Pour changer le mot de passe par défaut, exécutez la commande suivante :
pi@raspberrypi : ~ $ passwd
Tapez ensuite le mot de passe actuel, le nouveau mot de passe et enfin validez.
Installation des packages système
Pour installer un logiciel à partir d'Internet, il est nécessaire de câbler le Raspberry Pi à un routeur à l'aide de l'interface Ethernet. Pour ce faire, branchez un câble RJ45 sur le port Ethernet de la carte et connectez-le à un routeur disposant d'une connexion à Internet.
Avant d'installer de nouveaux composants, il peut être nécessaire d'obtenir la liste des packages à jour :
pi@raspberrypi : ~ $ sudo apt update
Ainsi que les packages installés par défaut :
pi@raspberrypi : ~ $ sudo apt upgrade
L'installation de MyoCoach nécessite plusieurs packages pour fonctionner correctement : Pip3, VirtualEnv, Flask, NodeJs, SQLite.
Ajoutez d'abord le dépôt nodesource apt afin de pouvoir obtenir les packages nodejs :
pi@raspberrypi : ~ $ curl -sL https://deb.nodesource.com/setup_16.x | sudo bash -
Installez ensuite les packages :
pi@raspberrypi : ~ $ sudo apt install nodejs git python3-pip python3-flask sqlite3 virtualenv
Configuration de l'application
Obtenir le code d'application
Pour obtenir la dernière version du code source de l'application, maintenez la carte connectée à Internet via le port Ethernet et exécutez les commandes suivantes :
pi@raspberrypi : ~ clone $ git https://github.com/orthopus/01-myocoach.git
Récupérer les dépendances des applications
Sur le Raspberry Pi, rendez-vous dans le répertoire de la webapp MyoCoach :
pi@raspberrypi : ~ $ cd 01-myocoach/src/software/webapp/
Pour obtenir les packages Python, exécutez la commande suivante :
pi@raspberrypi : ~ /01-myocoach/src/software/webapp $ sudo pip3 install -r requirements.txt
Exécutez la commande suivante pour obtenir les dépendances nodejs :
pi@raspberrypi : ~ /01-myocoach/src/software/webapp $ installation npm
Variables d'environnement et compilation
Créez une copie du fichier .env.example nommé .env :
pi@raspberrypi : ~ /01-myocoach/src/software/webapp $ cp .env.example .env
Vérifiez ensuite son contenu et adaptez-le si nécessaire à l'aide d'un éditeur de texte :
pi@raspberrypi : ~ /01-myocoach/src/software/webapp $ nano .env .
.env
NODE_ENV=production ENDPOINT=http://app.myocoach.lan
Puis lancez la compilation Webpack avec la commande suivante :
pi@raspberrypi : ~ /01-myocoach/src/software/webapp $ npx webpack --config webpack.prod.js
Mise en réseau
Nom d'hôte
Dans l'objectif de changer le nom d'hôte MyoCoach (actuellement raspberrypi), ouvrez l'interface des paramètres système avec les commandes suivantes :
pi@raspberrypi : ~ $ sudo raspi-config
Sur l'interface des paramètres système, sélectionnez 1 Options système , Nom d' hôte S4 puis OK . Tapez le nouveau nom "myocoach" . Sélectionnez Terminer pour enregistrer la configuration. Enfin, sélectionnez Oui pour redémarrer le système afin que les modifications prennent effet.
Le nom d'hôte du fichier hosts doit être actualisé pour enregistrer le nouveau nom d'hôte.
pi@myocoach:~ $ less /etc/hosts hôte 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters 127.0.1.1 myocoach
Configuration d'avahi
Ouvrez le fichier de configuration avahi afin que MyoCoach obtienne le nom "myocoach.lan" sur le réseau :
pi@myocoach:~ $ sudo nano /etc/avahi/avahi-daemon.conf
avahi-daemon.conf
... [serveur] host-name=myocoach nom-de-domaine=lan ...
Redémarrez le service pour que les changements prennent effet avec les commandes suivantes :
pi@myocoach:~ $ sudo systemctl reload avahi-daemon pi@myocoach:~ $ sudo systemctl restart avahi-daemon
Point d'accès - RaspAP
Pour activer le sans fil sur le Raspberry Pi, utilisez la commande suivante :
pi@myocoach:~ $ sudo rfkill unblock wlan pi@myocoach:~ $ curl -sL https://install.raspap.com | bash
Puis suivez les instructions.
Une fois le Raspberry Pi redémarré, connectez-vous au réseau raspap-webui (psk : ChangeMe) avec la station de travail. Allez sur l'interface de gestion du point d'accès depuis la station de travail avec un navigateur web à l'adresse suivante 10.3.141.1. S'authentifier sur l'interface avec le nom d'utilisateur "admin" (mot de passe : secret) puis aller dans la section Authentification pour changer le mot de passe.
Portail captif
Le portail captif est géré par l'application Nodogsplash.
pi@myocoach:~ $ sudo apt-get install libmicrohttpd-dev pi@myocoach:~ $ sudo mkdir /srv/nodogsplash pi@myocoach:~ $ sudo chown pi /srv/nodogsplash pi@myocoach:~ $ sudo chgrp pi /srv/nodogsplash pi@myocoach:~ $ git clone https://github.com/nodogsplash/nodogsplash.git /srv/nodogsplash
Pour compiler Nodogsplash, exécutez les commandes suivantes :
pi@myocoach:~ $ cd /srv/nodogsplash pi@myocoach:~ $ make pi@myocoach:~ $ sudo make install Ouvrez le fichier de configuration nodogsplash.conf :<br> pi@myocoach:~ $ sudo nano /etc/nodogsplash/nodogsplash.conf
Modifiez les lignes suivantes :
GatewayInterface wlan0 GatewayAddress 10.3.141.1 RedirectURL http://10.3.141.1:2050/redirect.html
Dans l'objet FirewallRuleSet users-to-router, ajoutez la ligne suivante :
FirewallRule allow tcp port 5000
Sauvegardez et fermez le fichier.
Supprimer les fichiers html du portail captif par défaut de nodogsplash :
pi@myocoach:~ $ sudo rm -rf /etc/nodogsplash/htdocs.
Puis créer un lien vers les fichiers html du portail captif de myocoach :
pi@myocoach:~ $ sudo ln -s /home/pi/01-myocoach/src/software/captiveportal /etc/nodogsplash/htdocs.
Ouvrez le fichier de configuration dnsmasq.conf :
pi@myocoach:~ $ sudo nano /etc/dnsmasq.conf
Ajoutez ou modifiez la ligne suivante :
address=/#/10.3.141.1
Sauvegardez et fermez le fichier.
Copiez le fichier nodogsplash.service puis activez le démarrage au démarrage :
pi@myocoach:~ $ sudo cp /srv/nodogsplash/debian/nodogsplash.service /lib/systemd/system/ pi@myocoach:~ $ sudo systemctl enable nodogsplash.service
Activer le lancement au démarrage :
pi@myocoach:~ $ sudo systemctl enable dnsmasq.service
Enfin, redémarrez le système pour enregistrer les modifications.
Configuration de Lighttpd
Afin d'accéder à l'interface web de MyoCoach et à l'interface web de RaspAP, Lighttpd doit être configuré.
Tout d'abord, l'interface web RaspAP doit avoir un accès restreint au nom de sous-domaine raspap.myocoach.lan.
pi@myocoach:~ $ sudo nano /etc/lighttpd/conf-available/50-raspap-router.conf
50-raspap-router.conf
server.modules += ("mod_rewrite") $HTTP["host"] == "raspap.myocoach.lan" { $HTTP["url"] =~ "^/( ?!(dist|app|ajax|config)).*" { url.rewrite-once = ("^/(.* ?)(\ ?.+)?$"=>"/index.php/$1$2" ) server.error-handler-404 = "/index.php" } }
Ensuite, créez un nouveau fichier pour déclarer l'hôte virtuel app.myocoach.lan.
pi@myocoach:~ $ sudo nano /etc/lighttpd/conf-available/40-myocoach.conf
40-myocoach.conf
server.modules += ("mod_proxy" ) # proxy myocoach $HTTP["host"] == "app.myocoach.lan" { proxy.debug = 1 proxy.server = ( """ => ( ("host" => "10.3.141.1", "port" => "5000" ) ) ) proxy.header = ("upgrade" => "enabled" ) }
Ensuite, créez un lien pour activer ce nouvel hôte.
pi@myocoach:~ $ cd /etc/lighttpd/conf-enabled/ pi@myocoach:~ $ sudo ln -s ../conf-available/40-myocoach.conf
Enfin, redémarrez le service pour que les changements soient pris en compte.
pi@myocoach:~ $ sudo systemctl reload lighttpd pi@myocoach:~ $ sudo systemctl restart lighttpd
Service MyoCoach
Créez un lien nommé myocoach dans le répertoire /srv vers le répertoire webapp :
pi@myocoach:~ $ sudo ln -s /home/pi/01-myocoach/src/software/webapp /srv/myocoach.
Créez un lien nommé ledbutton dans le répertoire /srv vers le répertoire ledbutton :
pi@myocoach:~ $ sudo ln -s /home/pi/01-myocoach/src/software/ledbutton /srv/ledbutton.
Créez le service systemd de MyoCoach :
pi@myocoach:~ $ cd /lib/systemd/system pi@myocoach:/lib/systemd/system $ sudo nano myocoach.service myocoach.service [Unit] Description= Controls myocoach webapp service Requires= lighttpd.service After= lighttpd.service [Install] WantedBy= multi-user.target [Service] Type= simple User= root WorkingDirectory= /srv/myocoach/app ExecStart= /bin/python3 ./app.py ExecStartPost= /bin/bash /srv/ledbutton/set_led_color.sh 0 0 255 0 ExecStop= /bin/kill -2 $MAINPID ExecStopPost= /bin/bash /srv/ledbutton/set_led_color.sh 255 255 255 0
Pour démarrer le service, exécutez la commande suivante :
pi@myocoah:~ $ sudo systemctl start myocoach.service
Pour activer le service au démarrage du système, exécutez la commande suivante :
pi@myocoah:~ $ sudo systemctl enable myocoach.service
L'interface web MyoCoach est maintenant accessible à l'adresse suivante : http://app.myocoach.lan
Et l'interface web RaspAP est maintenant accessible à l'adresse suivante : http://raspap.myocoach.lan
Flash Arduino Uno
Connecter la carte Arduino Uno à l’ordinateur
Choisir le type de carte Arduino : Uno
Sélectionner le port COM
Copier le code suivant
void setup() { Serial.begin(9600); // Starts the serial communication } void loop() { int sensorValue1 = analogRead(A0); int sensorValue2 = analogRead(A1); // Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V): float e1 = map(sensorValue1,0,1023,0,255); float e2 = map(sensorValue2,0,1023,0,255); byte data = Serial.read(); if(data == 's') { Serial.print(e1); Serial.print(":"); Serial.print(e2); Serial.println(); } delay(10); }
Téléverser le code à l’aide du bouton Image du bouton