Canne Intelligente

{{ :cours:oc:gr6_16_17:comment-choisir-sa-canne_logo1.gif?nolink |}}
Une canne connectée destinée aux personnes souffrant de trouble de mobilité
===== Groupe : ===== * Meriem Chebaane , meriemchebaane93@gmail.com , IAM * Eslam Hossam , eslamhossam23@gmail.com , IAM * Sherif Meimari , sherifmeimari@gmail.com , IAM ===== Design : ===== Un objet adaptable avec n'importe quelle forme de canne. Cet objet doit répondre à deux contraintes principales : * le poids qui ne doit pas affecter l'équilibre de la canne. * le design qui doit être élégant et simple. ==== Scénario : ==== Contexte Général : Notre prototype d'une canne intelligente est destiné principalement aux personnes qui ont des troubles de mobilité citant l'exemple des personnes âgées,des personnes accidentées... En effet, notre canne a pour but d'aider ces personnes à bien etablir leur traitement de réeducation de marche selon les prescriptions du medecin. Cettes fonctionnalités clefs consistent donc de pouvoir approximer le nombre de pas effectués à chaque promenade à partir de chaque appui sur la canne, de bien localiser la canne en cas de perte et d’alerter l'utilisateur par un système de notification dans des cas bien spécifiques qu'on va expliquer en détail au niveau des scénarios ci-dessous. Une fonctionnalité supplémentaire est que l'utilisateur peut monitorer sa fréquence cardiaque en temps réel en cas d'utilisation de l'extension de ceinture de fréquence cardiaque. Afin de mieux comprendre l'utilité de notre solution proposée, nous allons présenter le scénario actuel d’utilisation auquel participe notre utilisateur principal pour bien identifier son rôle et ses besoins: Jean Paulin, 60 ans, a eu un accident de voiture ça fait deux mois, après avoir subi un traitement de séance de kinésithérapie le medecin lui a demandé de faire chaque jour 1 kilometre de marche pour bien rééduquer sa jambe. Afin de bien suivre son emploi de rééducation, il a pris la canne intelligente. 1- Jean manifeste l'envi de sortir se promener. 2- Il ouvre notre application sur Smartphone et appuie sur nouvelle promenade. 3- Il vérifie que la canne est bien chargée. Variation 1 : 4- Lors de sa marche Jean a dépassé la durée maximale que le medecin lui a précisée. 5- Une alerte s’affiche dans son Smartphone sous forme d’une notification : le message affiché sera "Reposez un peu! Vous avez dépassé un kilomètre." Variation 2 : 4- Lors de sa marche, Jean est reposé dans un jardin pendant un quart d'heure. 5- Il a décidé de recommencer sa promenade. 6- Au bout d'un moment, il a remarqué qu'il a oublié sa canne. 7- Pour bien identifier sa position, il ouvre l'application sur son Smartphone et appuie sur bouton "Chercher ma canne". 8- La position de canne s'​affiche dans une carte. Variation 3 : 4- Jean marche tranquillement. 5- Il est rentré chez lui. 6- Il a voulu vérifier l'évolution de son état physique pour cette semaine. 7- Il ouvre l'application sur son smartephone et appuie sur bouton "Suivi de mon état". Variation 4 : "extension" 4- Lors de son promenade, Jean accélère un peu . 5- Son rythme cardiaque augmente au cours du temps. 6- Une alerte s'​affiche "​Ralentissez un peu". ==== Équipements TIC : ==== ^ Produit ^ Prix ^ Références ^ |Raspberry Pi Model B+|**36.34**|[[https://www.seeedstudio.com/Raspberry-Pi-Model-B%2B-p-1943.html]]| |Module GrovePi+ 103010002|**36.60**|[[http://www.gotronic.fr/art-module-grovepi-103010002-23075.htm]]| |Carte micro SD 8 GB et adaptateur|**9.95**|[[http://www.gotronic.fr/art-carte-micro-sd-8-gb-21475.htm]]| |Module accéléromètre 3 axes Grove 101020039|**10.90**|[[http://www.gotronic.fr/art-module-accelerometre-3-axes-grove-101020039-23846.htm]]| |Module GPS Grove 113020003 RPISER|**32.90**|[[http://www.gotronic.fr/art-module-gps-grove-113020003-18954.htm]]| |Polar H7 Émetteur de Fréquence Cardiaque|**49**|[[https://www.amazon.fr/gp/product/B00M670230/ref=pd_cp_200_1?ie=UTF8&psc=1&refRID=DJ7GWCWV05DZ4XM4M3HS]]| |Module Grove BLE 113020007|**21,90**|[[http://www.gotronic.fr/art-module-grove-ble-113020007-21994.htm]]| |Lampe torche USB ZLUSB|**5.40**|[[http://www.gotronic.fr/art-lampe-torche-usb-zlusb-19921.htm]]| |TeckNet PowerZen G2 9600mAh Power Bank With BLUETEK|**27.91**|[[http://www.tecknet.co.uk/tecknetr-powergen-iep390-9000mah-power-bank-with-bluetekr-technology-black.html]]| |Câble USB avec interrupteur|**3.30**|[[http://www.gotronic.fr/art-cable-usb-avec-interrupteur-22175.htm]]| | ^ Total | | | |**234.20**| | ==== Services TIC & API : ==== {{ :cours:oc:gr6_16_17:diagramme_services_web.png?nolink&600 |}} On a choisi d'utiliser UPnP et on a défini les services suivantes: * Position GPS de la canne en cas de sa perte * Nombre d'​appuis effectués par la canne équivalent au nombre de pas effectués par l'utilisateur * Fréquence cardiaque de l'​utilisateur (en cas de l'​utilisation de l'​extension) Services rendues par une bean: * Notification par mail en cas de dépassement d'une certaine threshold de pas et arrêt de calcul de pas * Notification par mail en cas de battements cardiaques élevés par rapport à une certaine threshold * Notification par mail en cas de demande de la localisation de la canne ===== Enveloppe de l'Objet 3D : ===== Notre objet sera dans une boîte qui s'​attache à la canne à travers deux ceintures. Elle est positionné verticalement pour bien distribuer la masse et ne pas perturber la balance de la canne. Elle contient également tous les capteurs (sauf celui de la fréquence cardiaque) et elle est alimentée par un power bank. ===== Modèle 3D : =====
Boite virtuelle
{{ :cours:oc:gr6_16_17:capture.png?nolink&500 |}} {{ :cours:oc:gr6_16_17:capture2.png?nolink&500 |}} {{ :cours:oc:gr6_16_17:capture3.png?nolink&500 |}} {{ :cours:oc:gr6_16_17:capture4.png?nolink&500 |}} {{ :cours:oc:gr6_16_17:capture5.png?nolink&500 |}}
Boite virtuelle sur un exemple de canne
{{ :cours:oc:gr6_16_17:capture6.png?nolink&500 |}} {{ :cours:oc:gr6_16_17:capture7.png?nolink&500 |}} {{ :cours:oc:gr6_16_17:capture8.png?nolink&500 |}} {{ :cours:oc:gr6_16_17:capture9.png?nolink&500 |}} ====== Rendu final ====== == Améliorations apportées après la soutenance == * L'équation de calcul des appuis de la canne prenait en compte l'accélération des trois axes. Nous l'avons changée de façon qu'il calcule juste depuis l'axe "x" vu que l'objet final assure que seulement le changement de valeur de cette axe indique un appui de la canne. L'algorithme est beaucoup plus précis maintenant et la rotation de la canne ne cause pas de "faux appuis" ce qui était une des problèmes évoqués pendant la soutenance. * Nous avions une seule bean monolithique comprenant trois actions pour l'envoi des Mails de notification. Nous avons modifié notre code de sorte que nous avons maintenant quatre beans indépendantes. Une seule bean pour l'envoi des messages et trois autres pour la gestion et contrôle des données des capteurs. De cette manière, on assure la modularité et on permet l'extension de notre application selon les besoins d'un utilisateur. On va vous montrer les paramètres à régler à la section de photos des composantes WComp. == Image de l'objet démonté == * Accéléromètre {{ :cours:oc:gr6_16_17:accelerometre.jpg?nolink&300 |}} * Bluetooth USB Dongle {{ :cours:oc:gr6_16_17:bluetooth_dongle.jpg?nolink&300 |}} * GPS {{ :cours:oc:gr6_16_17:gps.jpg?nolink&300 |}} * Grove Pi {{ :cours:oc:gr6_16_17:grove_pi.jpg?nolink&300 |}} * Power Bank {{ :cours:oc:gr6_16_17:power_bank.jpg?nolink&300 |}} * Raspberry Pi {{ :cours:oc:gr6_16_17:raspberry.jpg?nolink&300 |}} * SD Card {{ :cours:oc:gr6_16_17:sd_card.jpg?nolink&300 |}} * Wifi USB Dongle {{ :cours:oc:gr6_16_17:wifi_dongle.jpg?nolink&300 |}} == Image de l'objet fini sans la canne == {{ :cours:oc:gr6_16_17:objet_final.jpg?nolink&300 |}} == Image de l'objet monté sur la canne == * Vue face {{ :cours:oc:gr6_16_17:vue_face.jpg?nolink&300 |}}{{ :cours:oc:gr6_16_17:vue_face_2.jpg?nolink&300 |}} * Vue profil {{ :cours:oc:gr6_16_17:vue_profil.jpg?nolink&300 |}}{{ :cours:oc:gr6_16_17:vue_profil_2.jpg?nolink&300 |}} == Code Source == Vous pouvez trouver le code source du projet au lien suivant: https://github.com/eslamhossam23/ocs == Environnement de travail Raspberry == Tout d'abord, il faut installer la version raspbian jessie lite version 4.4.21-v7 sur la carte SD de la raspberry Il faut aussi configurer le SSH à On sur la raspberry Il faut ensuite installer les composantes suivantes: * Python 2.7 * Python-pip * Librairie UPnP https://github.com/fuzeman/PyUPnP via le fichier setup.py qui est la librairie qui permet la déclaration du device et ses services, actions et ses variables d'état * Librairie PyGattlib via pip install gattlib. Lien de la documentation de la librairie https://bitbucket.org/OscarAcena/pygattlib/overview * GrovePi via le lien suivant https://www.dexterindustries.com/GrovePi/get-started-with-the-grovepi/setting-software/ == Exécution du code device == On a configuré la rasp de sorte qu'elle connecte automatiquement au Wifi de l'Ubiquarium suivant les étapes du lien suivant: http://weworkweplay.com/play/automatically-connect-a-raspberry-pi-to-a-wifi-network/ Il faut allumer le power bank. Il faut aussi s'assurer que vous êtes équipé du capteur de fréquence cardiaque. Ensuite, pour démarrer notre device sur notre raspberry, il vous suffit d'écrire depuis un Terminal PuTTY: ./run * Nom de l'hôte: canne * Utilisateur: pi * Mot de passe: raspberry Vous allez le voire sous Device Spy. == Image du device sur Device Spy == {{ :cours:oc:gr6_16_17:device_spy.png?nolink&600 |}} Il faut souscrire aux évènements de chaque service pour voir les modifications sur device spy. == Environnement de travail WComp == Il faut installer WComp 3.5 via le lien suivant: http://www.wcomp.fr/sharpwcomp3 Il faut ajouter le fichier binaire MailTest.dll sous la directoire Beans sous la directoire d'installation de SharpDevelop. Ce fichier contient les quatre beans qu'on a développées sous WComp. == Image des composantes sur WComp == Etapes: * Vous devez ajouter la composante du device sous WComp via Nouveau -> Fichier -> UPnP Proxy Wizard * Vous trouverez la bean du device sous la catégorie UPnP Device {{ :cours:oc:gr6_16_17:device.png?direct&300 |}} * Vous devez faire Nouveau -> Fichier -> C# Cointainer * Vous trouverez nos beans sous la catégorie Custom {{ :cours:oc:gr6_16_17:beans.png?direct&300 |}} * Voici la composition initiale sans liaison sous WComp {{ :cours:oc:gr6_16_17:composition_sans_liaison.png?direct&300 |}} * On doit lier les évènements de la raspberry aux beans correspondantes en cliquant sur les flèches sortantes de la raspberry et puis sur la flèche entrante de la bean{{ :cours:oc:gr6_16_17:heartrate_et_envoi_de_mail.png?direct&300 |}} {{ :cours:oc:gr6_16_17:location_event_and_method.png?direct&300 |}} {{ :cours:oc:gr6_16_17:steps_event_and_method.png?direct&300 |}} * On doit lier l'évènement stopcounting de la bean des appuis à la méthode StopSuivi qui signale à la raspberry d'arrêter le calcul des appuis et les évènements{{ :cours:oc:gr6_16_17:alert_stop_suivi.png?direct&300 |}} * Si vous voulez changer les mails de la Mail Bean, par exemple modifier l'émetteur et le récepteur, vous trouverez les paramètres de la bean quand vous la sélectionnez. To: récepteur, From: émetteur, Password: mot de passe de l'émetteur. On a utilisé une addresse mél, qu'on a créee pour la canne, pour l'envoi des méls. {{ :cours:oc:gr6_16_17:parametres_mail.png?direct&300 |}} * Pour les deux beans d'appuis et de battements cardiaques, vous pouvez modifier la valeur limite après laquelle on envoie l'alerte depuis la propriété Threshold. {{ :cours:oc:gr6_16_17:parametres_heart_beat.png?direct&300 |}}{{ :cours:oc:gr6_16_17:parametres_step.png?direct&300 |}} == Image de la composition finale == {{ :cours:oc:gr6_16_17:composition_finale.png?direct&300 |}}