Vêtements intelligents : Différence entre versions

De Wiki d'activités IMA
(Semaine 9)
 
(42 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
 +
<include nopre noesc src="/home/pedago/pimasc/include/video-TShirtConnecte-iframe.html" />
 +
__TOC__
 +
<br style="clear: both;"/>
 
==Cahier des Charges==
 
==Cahier des Charges==
 
===Présentation générale du projet===
 
===Présentation générale du projet===
Ligne 16 : Ligne 19 :
 
Deux parties seront mise en oeuvre :
 
Deux parties seront mise en oeuvre :
 
      
 
      
* un système embarqué compact permettant de recevoir des information et en transmettre ;
+
* un système embarqué compact permettant de recevoir des informations et en transmettre ;
 
* une application Android permettant de communiquer avec le système.
 
* une application Android permettant de communiquer avec le système.
  
Ligne 30 : Ligne 33 :
  
 
Dans un premier temps nous devons faire une étude du marché pour savoir ce qui a déjà été fait.  
 
Dans un premier temps nous devons faire une étude du marché pour savoir ce qui a déjà été fait.  
Nous devons savoir quelles types d'informations les vêtements et objets connectés transmettent, pour quels usages et pour quels publics.
+
Nous devons savoir quels types d'informations les vêtements et objets connectés transmettent, pour quels usages et pour quels publics.
  
 
====Le Sport====
 
====Le Sport====
Ligne 57 : Ligne 60 :
 
->Calculer le nombre de pas (Podomètre)
 
->Calculer le nombre de pas (Podomètre)
  
->Calculer une distance, la vitesse, la position sur un carte? (GPS)
+
->Calculer une distance, la vitesse, la position sur une carte? (GPS)
  
 
->Calculer la fréquence cardiaque ? (Cardiofréquencemètre)
 
->Calculer la fréquence cardiaque ? (Cardiofréquencemètre)
Ligne 79 : Ligne 82 :
 
** Créer une application Android simple (Par exemple HelloWorld)
 
** Créer une application Android simple (Par exemple HelloWorld)
 
** Importer l'application sur smart-phone
 
** Importer l'application sur smart-phone
** Savoir faire un menu et sous-menu [http://a-renouard.developpez.com/tutoriels/android/menu-sous-menu/]
+
** Faire un menu et sous-menu [http://a-renouard.developpez.com/tutoriels/android/menu-sous-menu/]
 
** Comprendre les Services [http://nbenbourahla.developpez.com/tutoriels/android/services-sous-android/], les maîtriser: [http://blog.developpez.com/ndruet/p8571/android/creation_de_service]
 
** Comprendre les Services [http://nbenbourahla.developpez.com/tutoriels/android/services-sous-android/], les maîtriser: [http://blog.developpez.com/ndruet/p8571/android/creation_de_service]
 
** Comprendre les vues sous Android [http://nbenbourahla.developpez.com/tutoriels/android/introduction-vues-sous-android/]
 
** Comprendre les vues sous Android [http://nbenbourahla.developpez.com/tutoriels/android/introduction-vues-sous-android/]
Ligne 118 : Ligne 121 :
 
Nous avons fait le point sur les capacités qu'aura notre t-shirt connecté.
 
Nous avons fait le point sur les capacités qu'aura notre t-shirt connecté.
  
Après discussion avec M.Boë nous avons décidé d'utiliser dans un premier temps deux capteurs, Accéléromètre et capteur de température (emprunté à M.Redon), pour nous concentrer plus rapidement sur les deux problèmes majeur que nous allons rencontrer, celle de la communication entre l'arduino (Lilypad), le BLE et l'application androïde du téléphone et celle de l'énergie où le problème réside dans l'alimentation système embarqué. Nous devons trouver un composant à la fois petit, pour pouvoir être porté, et assez puissant pour délivrer de l'énergie au microprocesseur pendant plusieurs mois. Nous devons nous demander quand éteindre le micro-contrôleur et à quel moment le Bluetooth sera connecté. Nous allons pour cela ajouter un interrupteur glissière au tee-shirt.
+
Après discussion avec M.Boë nous avons décidé d'utiliser dans un premier temps deux capteurs, Accéléromètre et capteur de température (emprunté à M.Redon), pour nous concentrer plus rapidement sur les deux problèmes majeur que nous allons rencontrer, celle de la communication entre l'arduino (Lilypad), le BLE et l'application androïde du téléphone et celle de l'énergie où le problème réside dans l'alimentation système embarqué. Nous devons trouver un composant à la fois petit, pour pouvoir être porté, et assez puissant pour délivrer de l'énergie au microprocesseur pendant plusieurs mois. Nous devons nous demander quand éteindre le microcontrôleur et à quel moment le Bluetooth sera connecté. Nous allons pour cela ajouter un interrupteur glissière au tee-shirt.
  
 
Nous nous sommes informés sur le bluetooth de type BLE :
 
Nous nous sommes informés sur le bluetooth de type BLE :
Ligne 154 : Ligne 157 :
 
Nous avons établi une connexion avec l'Atmega 328P et communiqué avec l'accéléromètre et le capteur de température. Malheureusement le capteur de température LyliPad n'est pas très précis, nous avons donc opté pour un capteur DS18B20, c'est un capteur 1-wire. Nous avons donc commencé par comprendre cette technologie puis grâce à un programme trouvé sur internet, nous essayons de l'adapter à notre microprocesseur lillypad pour communiquer avec le DS18B20.
 
Nous avons établi une connexion avec l'Atmega 328P et communiqué avec l'accéléromètre et le capteur de température. Malheureusement le capteur de température LyliPad n'est pas très précis, nous avons donc opté pour un capteur DS18B20, c'est un capteur 1-wire. Nous avons donc commencé par comprendre cette technologie puis grâce à un programme trouvé sur internet, nous essayons de l'adapter à notre microprocesseur lillypad pour communiquer avec le DS18B20.
  
Parallèlement nous avons débuté la programmation d'application Android. Nous utilisons pour cela l'IDE Eclipse. Nous rencontrons actuellement des problèmes pour compiler un programme Android simple comme "Hello World".
+
Parallèlement nous avons débuté la programmation d'application Android. Nous utilisons pour cela l'IDE Eclipse. Nous rencontrons actuellement des problèmes d'environnement pour compiler un programme Android simple comme "Hello World".
 
 
  
 
===Semaine 3===
 
===Semaine 3===
*Partie Hardware:
+
*'''Partie Hardware'''
 
**Toujours des problèmes avec le capteur de température DS18B20. Nous arrivons à envoyer le programme C sur l'arduino mais la communication avec le capteur ne se fait pas. Nous avons donc décortiqué le programme et comprendre son fonctionnement.
 
**Toujours des problèmes avec le capteur de température DS18B20. Nous arrivons à envoyer le programme C sur l'arduino mais la communication avec le capteur ne se fait pas. Nous avons donc décortiqué le programme et comprendre son fonctionnement.
  
*Partie application:
+
*'''Partie application'''
 
**Après de nombreux bug d’installation des plateformes (Eclipse, JDK, SDK, Bibliothèque etc..) nous réussissons à lancer l'application "HelloWorld" dans un émulateur de téléphone Android. Nous pouvons maintenant nous concentrer vers la programmation orienté objet Android et détailler plus spécifiquement les étapes à réaliser avant de pouvoir coder notre programme final (cf "Etapes du Projet").
 
**Après de nombreux bug d’installation des plateformes (Eclipse, JDK, SDK, Bibliothèque etc..) nous réussissons à lancer l'application "HelloWorld" dans un émulateur de téléphone Android. Nous pouvons maintenant nous concentrer vers la programmation orienté objet Android et détailler plus spécifiquement les étapes à réaliser avant de pouvoir coder notre programme final (cf "Etapes du Projet").
 
Notions à connaitre:
 
Notions à connaitre:
Ligne 168 : Ligne 170 :
  
 
===Semaine 4===
 
===Semaine 4===
*Partie Hardware:
+
*'''Partie Hardware'''
 
** Nous arrivons à communiquer avec le capteur DS18B20. Notre programme détecte le capteur, arrive à l'initialiser mais nous avons à présent des problèmes d'envoi de données pour connaitre la température.
 
** Nous arrivons à communiquer avec le capteur DS18B20. Notre programme détecte le capteur, arrive à l'initialiser mais nous avons à présent des problèmes d'envoi de données pour connaitre la température.
  
*Partie application:
+
*'''Partie application'''
 
** Nous essayons dans un premier temps d'afficher un menu simple dans lequel nous pouvons naviguer [http://www.tutomobile.fr/faire-des-menus-et-sous-menus-tutoriel-android-n%C2%B012/27/07/2010/] cependant nous rencontrons des problèmes de librairies, en effet nous ne disposons pas de toutes les images publique qu'Android nous offre [http://developer.android.com/guide/topics/resources/drawable-resource.html], nous devrons donc ajouter les images nous même [http://androiddrawableexplorer.appspot.com/] dans la librairie..
 
** Nous essayons dans un premier temps d'afficher un menu simple dans lequel nous pouvons naviguer [http://www.tutomobile.fr/faire-des-menus-et-sous-menus-tutoriel-android-n%C2%B012/27/07/2010/] cependant nous rencontrons des problèmes de librairies, en effet nous ne disposons pas de toutes les images publique qu'Android nous offre [http://developer.android.com/guide/topics/resources/drawable-resource.html], nous devrons donc ajouter les images nous même [http://androiddrawableexplorer.appspot.com/] dans la librairie..
  
 
===Semaine 5===
 
===Semaine 5===
*Partie Hardware:
+
*'''Partie Hardware'''
**Toujours des problèmes de communication avec le capteur de température. Le programme avec l'IDE fonctionne mais nous ne comprennons pas pourquoi cela ne marche pas avec le programme en c.
+
**Toujours des problèmes de communication avec le capteur de température. Le programme avec l'IDE fonctionne mais nous ne comprenons pas pourquoi cela ne marche pas avec le programme en c.
  
*Partie application:
+
*'''Partie application'''
 
Nous avons réussis à afficher un menu simple dans lequel figure quelques boutons qui nous serviront à naviguer entre les activités:
 
Nous avons réussis à afficher un menu simple dans lequel figure quelques boutons qui nous serviront à naviguer entre les activités:
 
** Entrainement
 
** Entrainement
Ligne 186 : Ligne 188 :
  
 
Voici à quoi ressemble notre menu pour le moment:
 
Voici à quoi ressemble notre menu pour le moment:
[[Fichier:Main activity Avant.png|vignette|centre|upright=1.25]]
+
[[Fichier:Main activity Avant.png|250px|gauche]]
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
  
 
====Définition des différentes activités:====
 
====Définition des différentes activités:====
 
=====L'activité "Entrainement"=====
 
=====L'activité "Entrainement"=====
Une fois connecté via Bluetooth grâce à l'activité "Connexion", l'utilisateur devra appuyer sur le bouton "Start" pour commencer son entrainement. L'application affichera en temps réel les données envoyé depuis le t-shirt et indiquera à l'utilisateur le temps qui c'est écoulé. En background elle écrira dans un fichier texte afin de traiter ces données par la suite.
+
Une fois connecté via Bluetooth grâce à l'activité "Connexion", l'utilisateur devra appuyer sur le bouton "Start" pour commencer son entrainement. L'application affichera en temps réel les données envoyées depuis le-t-shirt et indiquera à l'utilisateur le temps qui s'est écoulé. En background elle écrira dans un fichier texte situé dans un dossier spécifique afin de traiter ces données par la suite.
 
Lorsque l'utilisateur termine son entrainement il devra appuyer sur le bouton "Stop", une fenêtre s'ouvrira et lui demandera s'il souhaite enregistrer ou supprimer les données de l'entrainement qu'il vient d'effectuer. S'il décide d'enregistrer il sera automatiquement redirigé vers l'activité "Stats" (non pas accessible depuis le menu) qui affichera le bilan de son entrainement.
 
Lorsque l'utilisateur termine son entrainement il devra appuyer sur le bouton "Stop", une fenêtre s'ouvrira et lui demandera s'il souhaite enregistrer ou supprimer les données de l'entrainement qu'il vient d'effectuer. S'il décide d'enregistrer il sera automatiquement redirigé vers l'activité "Stats" (non pas accessible depuis le menu) qui affichera le bilan de son entrainement.
  
 
=====L'activité "Historique"=====
 
=====L'activité "Historique"=====
Recense tout les entrainements effectué par l'utilisateur. De cette activité il pourra décider de supprimer ses anciens entrainements (cela supprimera le fichier texte associé en background) ou bien d'en afficher ses statistiques ("Activité Stats").
+
Recense tout les entrainements effectués par l'utilisateur. De cette activité il pourra décider de supprimer ses anciens entrainements (cela supprimera le fichier texte associé en background) ou bien d'en afficher ses statistiques ("Activité Stats").
  
 
=====L'activité "Paramètre"=====
 
=====L'activité "Paramètre"=====
Activité optionnel, servira à récupérer certaines informations sur l'utilisateur qui pourrait nous être utile pour certains calcul. Comme le nombre de calories dépensé lors de l'entrainement ou autre.. Nous n'avons pas encore défini les calculs que nous effectuerons
+
Activité optionnel, servira à récupérer certaines informations sur l'utilisateur qui pourrait nous être utile pour certains calculs. Comme le nombre de calories dépensé lors de l'entrainement ou autre... Nous n'avons pas encore défini les calculs que nous effectuerons
  
 
=====L'activité "Connexion"=====
 
=====L'activité "Connexion"=====
Ligne 203 : Ligne 231 :
  
 
===Semaine 6===
 
===Semaine 6===
*Partie Hardware
+
*'''Partie Hardware'''
** Nous avons essayé de télécharger d'autres programmes pour communiquer avec le capteur de température mais sans aucun succès. Nous avons donc essayé de traduire le programme de l'IDE (écrit en c++) en c mais toujours pas de résultat. Nous avons donc décider de laisser tomber ce capteur 1-WIRE et de prendre un capteur analogique, le TMP36. Nous sommes donc passés à la communication Bluetooth sur le lilypad avec le BLE nrf8001.
+
** Nous avons essayé de télécharger d'autres programmes pour communiquer avec le capteur de température mais sans aucun succès. Nous avons donc essayé de traduire le programme de l'IDE (écrit en c++) en c mais toujours pas de résultat. Nous avons donc décidé de laisser tomber ce capteur 1-WIRE et de prendre un capteur analogique, le TMP36. Nous sommes donc passés à la communication Bluetooth sur le lilypad avec le BLE nrf8001.
  
*Partie application
+
*'''Partie application'''
**Nous avons configuré l'activité "Paramètre". Elle demande quelques information à l'utilisateur comme son Nom, son âge, sa taille et son poids, utile pour calculer certains paramètres qui reste toujours à définir. (Savoir son nom ne nous est pas vraiment utile, il sert à créer une affinité entre l'utilisateur et l'application)
+
**Nous avons configuré l'activité "Paramètre". Elle demande quelques informations à l'utilisateur comme son Nom, son âge, sa taille et son poids, utile pour calculer certains paramètres qui reste toujours à définir. (Savoir son nom ne nous est pas vraiment utile, il sert à créer une affinité entre l'utilisateur et l'application)
  
  
Ligne 214 : Ligne 242 :
  
 
===Semaine 7===
 
===Semaine 7===
*Partie Hardware
+
*'''Partie Hardware'''
** Après avoir étudier le fonctionnement du BLE, nous avons téléchargé un code source sur internet pour l'IDE d'arduino que nous avons retranscrit en C. Le programme comportait à ce moment beaucoup de bogs que nous deviez résoudre.
+
** Après avoir étudié le fonctionnement du BLE, nous avons téléchargé un code source sur internet pour l'IDE d'arduino que nous avons retranscrit en C. Le programme comportait à ce moment beaucoup de bugs que nous devions résoudre.
 +
 
 +
*'''Partie application'''
 +
** Découverte et apprentissage des fonctions permettant la communication Bluetooth.
 +
 
 +
Nous avons rajouté une "actionbar" et également redéfini l'affichage du menu qui maintenant est plus sobre:
  
*Partie application
+
[[Fichier:Menu apres.png|250px]]
** Découverte et apprentissage des fonctions permettant la communication Bluetooth
 
  
 
===Semaine 8===  
 
===Semaine 8===  
*Partie Hardware
+
*'''Partie Hardware'''
** Après avoir déboguer la communication I2C sur le programme arduino et les quelques autres bogs, nous avons pu commencer à utiliser la communication Bluetooth avec l'application téléphone. Nous avons donc établi un protocole de communication entre l'application et le lilypad pour pouvoir communiquer.
+
** Après avoir débogué la communication I2C sur le programme arduino et les quelques autres bogs, nous avons pu commencer à utiliser la communication Bluetooth avec l'application téléphone. Nous avons donc établi un protocole de communication entre l'application et le lilypad pour pouvoir communiquer.
*Partie application
+
*'''Partie application'''
** Problème avec la connexion Bluetooth, certaines fonctions ne sont pas reconnu par l'IDE. Cela est peut être dû à une mauvaise installation des bibliothèques? Nous avons donc transféré notre projet vers un nouveaux projet qui maintenant compile, allez savoir comment..
+
** Problème avec la connexion Bluetooth, certaines fonctions ne sont pas reconnues par l'IDE. Cela est peut être dû à une mauvaise installation des bibliothèques? Nous avons donc transféré notre projet vers un nouveaux projet qui maintenant compile, allez savoir comment..
  
 
===Semaine 9===
 
===Semaine 9===
*Partie Hardware
+
*'''Partie Hardware'''
** Premier essai d'un programme pour mettre le lilypad en mode veille lorsque aucun appareil n'est connecté au Bluetooth. Reste à faire des tests de consommation électriques pour valider le code.
+
** Premier essai d'un programme pour mettre le lilypad en mode veille lorsqu'aucun appareil n'est connecté au Bluetooth. Reste à faire des tests de consommation électriques pour valider le code.
  
*Partie application
+
*'''Partie application'''
** Premiers test de la connexion Bluetooth effectué, nous arrivons
+
** Premiers test de la connexion Bluetooth effectué. Nous avons abandonné l'idée d'utiliser l'émulateur de téléphone car il ne supporte pas le Bluetooth. Nous arrivons à communiquer avec le T-shirt, nous pouvons émettre et recevoir des caractères. Pour une question pratique la connexion ne se fera plus depuis le bouton "Connexion" du menu mais directement dans l'activité "Entrainement". Lorsque l'utilisateur appuiera sur ce bouton depuis le menu, l'application lui demandera de se connecter au T-shirt. Une fois connecté le bouton "Start" apparait puis la communication débutera lorsqu'il appuiera dessus.
  
 
===Semaine 10===
 
===Semaine 10===
** Ajout du capteur de température sur le lilypad pour envoyer les données. Nous avons également tester de nouveau la communication Bluetooth suite à une modification de l'application.
+
*'''Partie Hardware'''
 +
** Ajout du capteur de température sur le lilypad pour envoyer les données. Nous avons également testé de nouveau la communication Bluetooth suite à une modification de l'application.
 +
 
 +
*'''Partie application'''
 +
**Définition de l'activité "Historique":
 +
 
 +
Cette activité va scanner tous les fichiers créés par l'utilisateur et les afficher à l'aide d'une listView [http://www.tutomobile.fr/personnaliser-une-listview-tutoriel-android-n%C2%B07/04/07/2010/]. Lorsque l'on cliquera sur l'un des fichiers l'activité "Stats" se lancera. Nous avons également configuré une AlertDialog [http://www.tutomobile.fr/personnaliser-un-alertdialog-tutoriel-android-n%C2%B020/04/11/2010/] qui s'affiche lorsque l'on clique longuement sur un Item, celle-ci demande alors si l'on veut supprimer ou afficher les statistiques.
 +
 
 +
Voici à quoi ressemble cette activité:
 +
 
 +
[[Fichier:Historique.png|250px]] [[Fichier:Historique possibilite de supprimer les fichier.png|250px]]
 +
 
 +
 
 +
 
 +
Nous devons encore déterminer les détails que chaque Item aura et ajouter un TextView à la AlertDialog qui indiquera quelle Entrainement a été sélectionné.
  
 
===Semaine 11===
 
===Semaine 11===
** Ajout de l'accéléromètre pour réaliser le podomètre. Nous allons pouvoir commencer la construction du tee-shirt.
+
*'''Partie Hardware'''
 +
** Ajout de l'accéléromètre pour réaliser le podomètre. C'est un accéléromètre numérique (MMA8452Q), cet accéléromètre va nous permettre de générer une interruption à chaque fois qu'une accélération est détectée. Quelques petits problèmes lors de l'initialisation de celui ci mais les problèmes ont été résolu rapidement. Nous allons pouvoir commencer la construction du tee-shirt.
 +
[[Fichier:Mma8452q.jpg|200px]]
 +
*'''Partie application'''
 +
**Définition de l'activité "Stats".
 +
Cette activité va lire tout le fichier écris au préalable lors de l'entrainement, calculera des moyennes et permettra d'afficher des graphiques de certains paramètres en fonction du temps, pour cela nous avons utilisé la librairie GraphView, disponible via ce lien: [http://www.android-graphview.org/]
 +
 
 +
En voici un premier jet, dans cet exemple nous avons affiché le graphique de la fréquence cardiaque en fonction du temps.
 +
:
 +
 
 +
[[Fichier:Stats 2.png|250px]]
 +
 
 +
===Semaine 12===
 +
*'''Partie Hardware'''
 +
*Nous avons cousu les composants électroniques sur le T-shirt
 +
 
 +
[[Fichier:Exterrieur.jpg|250px]]  [[Fichier:Interrieur.jpg|265px]] [[Fichier:Exterrieur Lily.jpg|250px]] [[Fichier:Interrieur Lily.jpg|235px]]
 +
 
 +
*Il ne reste qu'a effectuer des tests sur le code globale avec le tee-shirt, quelques problèmes sur les connections entre les fils et les composants mais cela fonctionne. Encore des tests à effectuer sur la consommation électrique de l'ensemble en mode veille et en mode connecté. Nous avons ajouté une poche sur le tee-shirt pour pouvoir y placer une batterie.
 +
 
 +
*'''Partie application'''
 +
**Redéfinition du Menu
 +
Nous avons apporté quelques modifications à l'application, désormais le menu ne comporte plus le bouton connexion. La connexion Bluetooth sera établie lorsque l'utilisateur sélectionnera le bouton "Entrainement".
 +
 
 +
[[Fichier:Menu.png|250px]]
 +
 
 +
* Entrainement:
 +
Si l'utilisateur n'a pas activé son bluetooth l'application lui demande automatiquement de l'activer, s'il ne le fait pas il ne pourra faire l'entrainement. Il devra ensuite sélectionner le T-Shirt pour s'y connecter, une fois la connexion établi l'entrainement pourra commencer. Il pourra alors constater en temps réels les données envoyé par le T-shirt, c'est à dire [...]
 +
 
 +
[[Fichier:Entrainement demande de connection bluetooth.png|250px]] [[Fichier:Entrainement Start.png|250px]] [[Fichier:Entrainement 1km.png|250px]] [[Fichier:Entrainement fini.png|250px]]
  
  
 +
* Redéfinition de la page Historique
 +
Il est désormais possible de sélectionner plusieurs éléments afin de les supprimer en même temps. Nous avons modifié l'affichage, seul la date, l'heure ainsi que le numéro de l'entrainement sont affiché.
 +
 +
[[Fichier:Historique 2.png|250px]] [[Fichier:Historique selection.png|250px]] [[Fichier:Historique suppression.png|250px]]
 +
 +
* Ajout d'information sur la page "Détails"
 +
L'utilisateur peut désormais connaitre la distance parcouru lors de son entrainement (en supposant qu'un pas vaut 70cm). Il peut également passer d'un graphique à l'autre pour voir l'évolution de la température de son corps ou de sa fréquence cardiaque lors de l'entrainement. Nous affichons maintenant la vraie date (et non le nom du fichier), nous indiquons aussi l'heure de début de l'entrainement.
 +
 +
[[Fichier:Détails Freq.png|250px]] [[Fichier:Détails temp.png|250px]]
  
 
== Liens ==
 
== Liens ==
Ligne 272 : Ligne 356 :
  
 
Tuto GPS android: [http://www.tutomobile.fr/geolocalisation-grace-au-gps-ou-au-reseau-mobile-tutoriel-android-n%C2%B015/13/08/2010/]
 
Tuto GPS android: [http://www.tutomobile.fr/geolocalisation-grace-au-gps-ou-au-reseau-mobile-tutoriel-android-n%C2%B015/13/08/2010/]
 +
 +
== Fin du Projet ==
 +
 +
===Vidéo de présentation===
 +
 +
Vidéo du projet disponible via ce [https://drive.google.com/folderview?id=0ByMLCar3e2e0fkxidU11cjA5Qy16MU8zXzBtTUFNQ3BvWmtYUWVjSm5ZVHBEdFh1eVNXaDQ&usp=sharing_eid lien]
 +
 +
===Rapport===
 +
 +
Vous pouvez trouver le rapport de notre projet ici : [[Fichier:Rapport_de_projet.pdf]]
 +
 +
===Fichiers Codes===
 +
 +
Code Java pour l'application : [[Fichier:Application Android Bown Piat.zip]]
 +
 +
Code C pour le microprocesseur : [[Fichier:BLE.zip]]

Version actuelle datée du 15 juin 2015 à 15:30


Vidéo HD


Cahier des Charges

Présentation générale du projet

Objectif

Concevoir un système d'interaction avec des objets connectés sur les vêtements ou le corps.

Description du projet

Les systèmes embarqués sur les humains commencent à se développer (lunettes Google, montres connectées).

Nous proposons ici de réaliser une plateforme basée sur la technologie BLE (Bluetooth Low Energy ou Bluetooth 4.0).

Deux parties seront mise en oeuvre :

  • un système embarqué compact permettant de recevoir des informations et en transmettre ;
  • une application Android permettant de communiquer avec le système.


Le système sera intégré sur un t-shirt en utilisant notamment la machine à coudre numérique disponible au Fabricarium de Polytech Lille.

Contexte

Informations à traiter

Pour que notre projet soit intéressant, aux yeux des consommateurs, nous devons définir l'utilité que pourrait avoir un vêtement connecté. Notre application ne doit pas être un simple gadget mais un objet qui semble utile et faire en sorte qu'il soit indispensable dans le futur. "Il faut créer le besoin si l'on veut vendre un objet et faire du profit."

Dans un premier temps nous devons faire une étude du marché pour savoir ce qui a déjà été fait. Nous devons savoir quels types d'informations les vêtements et objets connectés transmettent, pour quels usages et pour quels publics.

Le Sport

La plupart des objets connectés à l'Homme sont utilisés pour l'informer de ses performances physiques: Combien de kilomètres ils ont parcouru, combien de pas ont été effectués, combien de calories ont été perdues.

Ce sont principalement des performances liées à la marche et la course à pied. De nouveaux objets connectés ont vu récemment le jour, notamment les bracelets connectés permettant de récolter des informations sur les nageurs, toujours dans le but d'avoir un suivi sur ses performances (nombres de mètres nagés par rapport à un certain temps).

Santé et bien être

Encore en pleine expansion que très peu d'objets connectés se sont intéressés au domaine de la santé: ici un exemple de t-shirt connecté permettant de contrôler le rythme cardiaque: [1]

Beaucoup d'application ont déjà vu le jour: [2]

Quelles sont les applications que l'on pourrait faire? Quels suivis sont à faire pour quels types de maladie etc..?

La régulation de température

Grâce aux fibres électroniques tissées il est possible de chauffer un t-shirt ou de le refroidir cela pourrait se régler en fonction de la température du corps ou bien par simple commande de l'utilisateur (cela pourrait s'avérer très utile avec le réchauffement climatique qui est en train d'arriver, winter is comming..).

Notre Projet

Ce que nous voulons faire nous: Un T-shirt permettant à la fois de calculer les performances sportives mais aussi d'avoir un suivi sur notre santé et pourquoi pas faire en sorte de réguler la température du corps lors d'un effort..

->Calculer le nombre de pas (Podomètre)

->Calculer une distance, la vitesse, la position sur une carte? (GPS)

->Calculer la fréquence cardiaque ? (Cardiofréquencemètre)

->Afficher la fréquence cardiaque sur LED

->Mesurer la température du corps

->Transférer toutes ses informations sur l'application mobile (Android)

Etapes du Projet

  • Partie électronique
    • Définition des différents modules (Capteurs de températures, accéléromètre..)
    • Connecter et programmer les différents modules au microprocesseur Lilypad
    • Créer un programme pour ordonnancer les différents modules
    • Connecter le module Bluetooth BLE et le configurer
    • Intégrer les composants au tee-shirt
  • Partie informatique
    • Créer une application Android simple (Par exemple HelloWorld)
    • Importer l'application sur smart-phone
    • Faire un menu et sous-menu [3]
    • Comprendre les Services [4], les maîtriser: [5]
    • Comprendre les vues sous Android [6]
    • Comment utiliser SQLite sur Android [7]
    • Créer les programmes principaux:
      • Intégration Google Map sur Android (pour utiliser le GPS) [8]
      • Ajouter les protocoles nécessaires pour communiquer en Bluetooth [9], utilisation du NFC [10]
      • Une vue pour afficher les différentes applications (activités)
      • Une activité pour gérer l'affichage des informations envoyé depuis le microprocesseur


Matériel possédé

  • LilyPad Accelerometer ADXL335 [11] [fourni le 28/1/2015]
  • LilyPad Temperature Sensor [12] [fourni le 28/1/2015]
  • Arduino Lilypad Atmega 328P [13] [fourni le 28/1/2015]
  • SparkFun FTDI Basic Breakout - 3.3V [14] [fourni le 28/1/2015]
  • Une dizaine de LilyPad LED Red [15] [LEDs LilyPad blanches disponibles]
  • Interrupteur [fourni le 28/1/2015]
  • BLE nRF8001 [16] [1 fourni le 9/2/2015]

Matériel nécessaire

  • Olimex platine ECG
  • [ Du fil conducteur en bobine ]

Tableau de bord

Semaine 1

Nous avons fait le point sur les capacités qu'aura notre t-shirt connecté.

Après discussion avec M.Boë nous avons décidé d'utiliser dans un premier temps deux capteurs, Accéléromètre et capteur de température (emprunté à M.Redon), pour nous concentrer plus rapidement sur les deux problèmes majeur que nous allons rencontrer, celle de la communication entre l'arduino (Lilypad), le BLE et l'application androïde du téléphone et celle de l'énergie où le problème réside dans l'alimentation système embarqué. Nous devons trouver un composant à la fois petit, pour pouvoir être porté, et assez puissant pour délivrer de l'énergie au microprocesseur pendant plusieurs mois. Nous devons nous demander quand éteindre le microcontrôleur et à quel moment le Bluetooth sera connecté. Nous allons pour cela ajouter un interrupteur glissière au tee-shirt.

Nous nous sommes informés sur le bluetooth de type BLE :

Histoire du Bluetooth: [17]

Projet de conception d'une liaison bluetooh 2.0 : [file:///tmp/P12Rap_bluetooth.pdf]

Protocole Bluetooth: SIG (Special Interest Group)

Bluetooth 2.0 :

Appairage facile et sécurisé : le SSP (Secure Simple Pairing)

Protocole?: EDR (Enhanced Data Rate)

Bluetooth 3.0:

Protocole: HS (High Speed)


Bluetooth 4.0

Conception d'un module bluetooth : [18]

Classic Bluetooth: Regroupe les versions 1.0 -> 3.0

Protocole: LE (Bluetooth Low Energy) --> Réduit fortement la consommation de la puce Bluetooth avec un protocole différent

Dans le 4.0 le constructeur peut décider d'implémenter deux modes: Bluetooth Low Energy seul (single mode) ou avec le Classic Bluetooth (dual mode) qui lui permet de conserver la compatibilité avec les autres appareils.


Semaine 2

Nous avons établi une connexion avec l'Atmega 328P et communiqué avec l'accéléromètre et le capteur de température. Malheureusement le capteur de température LyliPad n'est pas très précis, nous avons donc opté pour un capteur DS18B20, c'est un capteur 1-wire. Nous avons donc commencé par comprendre cette technologie puis grâce à un programme trouvé sur internet, nous essayons de l'adapter à notre microprocesseur lillypad pour communiquer avec le DS18B20.

Parallèlement nous avons débuté la programmation d'application Android. Nous utilisons pour cela l'IDE Eclipse. Nous rencontrons actuellement des problèmes d'environnement pour compiler un programme Android simple comme "Hello World".

Semaine 3

  • Partie Hardware
    • Toujours des problèmes avec le capteur de température DS18B20. Nous arrivons à envoyer le programme C sur l'arduino mais la communication avec le capteur ne se fait pas. Nous avons donc décortiqué le programme et comprendre son fonctionnement.
  • Partie application
    • Après de nombreux bug d’installation des plateformes (Eclipse, JDK, SDK, Bibliothèque etc..) nous réussissons à lancer l'application "HelloWorld" dans un émulateur de téléphone Android. Nous pouvons maintenant nous concentrer vers la programmation orienté objet Android et détailler plus spécifiquement les étapes à réaliser avant de pouvoir coder notre programme final (cf "Etapes du Projet").

Notions à connaitre:

  • Introduction aux ressources Android (les éléments qui s'afficheront à l'écran ou avec lesquels l'utilisateur pourra interagir [19])
  • Introduction à la notion de "Style" et de "Thèmes" [20]

Semaine 4

  • Partie Hardware
    • Nous arrivons à communiquer avec le capteur DS18B20. Notre programme détecte le capteur, arrive à l'initialiser mais nous avons à présent des problèmes d'envoi de données pour connaitre la température.
  • Partie application
    • Nous essayons dans un premier temps d'afficher un menu simple dans lequel nous pouvons naviguer [21] cependant nous rencontrons des problèmes de librairies, en effet nous ne disposons pas de toutes les images publique qu'Android nous offre [22], nous devrons donc ajouter les images nous même [23] dans la librairie..

Semaine 5

  • Partie Hardware
    • Toujours des problèmes de communication avec le capteur de température. Le programme avec l'IDE fonctionne mais nous ne comprenons pas pourquoi cela ne marche pas avec le programme en c.
  • Partie application

Nous avons réussis à afficher un menu simple dans lequel figure quelques boutons qui nous serviront à naviguer entre les activités:

    • Entrainement
    • Historique
    • Paramètres
    • Connexion

Voici à quoi ressemble notre menu pour le moment:

Main activity Avant.png














Définition des différentes activités:

L'activité "Entrainement"

Une fois connecté via Bluetooth grâce à l'activité "Connexion", l'utilisateur devra appuyer sur le bouton "Start" pour commencer son entrainement. L'application affichera en temps réel les données envoyées depuis le-t-shirt et indiquera à l'utilisateur le temps qui s'est écoulé. En background elle écrira dans un fichier texte situé dans un dossier spécifique afin de traiter ces données par la suite. Lorsque l'utilisateur termine son entrainement il devra appuyer sur le bouton "Stop", une fenêtre s'ouvrira et lui demandera s'il souhaite enregistrer ou supprimer les données de l'entrainement qu'il vient d'effectuer. S'il décide d'enregistrer il sera automatiquement redirigé vers l'activité "Stats" (non pas accessible depuis le menu) qui affichera le bilan de son entrainement.

L'activité "Historique"

Recense tout les entrainements effectués par l'utilisateur. De cette activité il pourra décider de supprimer ses anciens entrainements (cela supprimera le fichier texte associé en background) ou bien d'en afficher ses statistiques ("Activité Stats").

L'activité "Paramètre"

Activité optionnel, servira à récupérer certaines informations sur l'utilisateur qui pourrait nous être utile pour certains calculs. Comme le nombre de calories dépensé lors de l'entrainement ou autre... Nous n'avons pas encore défini les calculs que nous effectuerons

L'activité "Connexion"

Servira à connecter l'application au T-Shirt via Bluetooth

Semaine 6

  • Partie Hardware
    • Nous avons essayé de télécharger d'autres programmes pour communiquer avec le capteur de température mais sans aucun succès. Nous avons donc essayé de traduire le programme de l'IDE (écrit en c++) en c mais toujours pas de résultat. Nous avons donc décidé de laisser tomber ce capteur 1-WIRE et de prendre un capteur analogique, le TMP36. Nous sommes donc passés à la communication Bluetooth sur le lilypad avec le BLE nrf8001.
  • Partie application
    • Nous avons configuré l'activité "Paramètre". Elle demande quelques informations à l'utilisateur comme son Nom, son âge, sa taille et son poids, utile pour calculer certains paramètres qui reste toujours à définir. (Savoir son nom ne nous est pas vraiment utile, il sert à créer une affinité entre l'utilisateur et l'application)


ParamPref.png
ParamPref Nom.png


Semaine 7

  • Partie Hardware
    • Après avoir étudié le fonctionnement du BLE, nous avons téléchargé un code source sur internet pour l'IDE d'arduino que nous avons retranscrit en C. Le programme comportait à ce moment beaucoup de bugs que nous devions résoudre.
  • Partie application
    • Découverte et apprentissage des fonctions permettant la communication Bluetooth.

Nous avons rajouté une "actionbar" et également redéfini l'affichage du menu qui maintenant est plus sobre:

Menu apres.png

Semaine 8

  • Partie Hardware
    • Après avoir débogué la communication I2C sur le programme arduino et les quelques autres bogs, nous avons pu commencer à utiliser la communication Bluetooth avec l'application téléphone. Nous avons donc établi un protocole de communication entre l'application et le lilypad pour pouvoir communiquer.
  • Partie application
    • Problème avec la connexion Bluetooth, certaines fonctions ne sont pas reconnues par l'IDE. Cela est peut être dû à une mauvaise installation des bibliothèques? Nous avons donc transféré notre projet vers un nouveaux projet qui maintenant compile, allez savoir comment..

Semaine 9

  • Partie Hardware
    • Premier essai d'un programme pour mettre le lilypad en mode veille lorsqu'aucun appareil n'est connecté au Bluetooth. Reste à faire des tests de consommation électriques pour valider le code.
  • Partie application
    • Premiers test de la connexion Bluetooth effectué. Nous avons abandonné l'idée d'utiliser l'émulateur de téléphone car il ne supporte pas le Bluetooth. Nous arrivons à communiquer avec le T-shirt, nous pouvons émettre et recevoir des caractères. Pour une question pratique la connexion ne se fera plus depuis le bouton "Connexion" du menu mais directement dans l'activité "Entrainement". Lorsque l'utilisateur appuiera sur ce bouton depuis le menu, l'application lui demandera de se connecter au T-shirt. Une fois connecté le bouton "Start" apparait puis la communication débutera lorsqu'il appuiera dessus.

Semaine 10

  • Partie Hardware
    • Ajout du capteur de température sur le lilypad pour envoyer les données. Nous avons également testé de nouveau la communication Bluetooth suite à une modification de l'application.
  • Partie application
    • Définition de l'activité "Historique":

Cette activité va scanner tous les fichiers créés par l'utilisateur et les afficher à l'aide d'une listView [24]. Lorsque l'on cliquera sur l'un des fichiers l'activité "Stats" se lancera. Nous avons également configuré une AlertDialog [25] qui s'affiche lorsque l'on clique longuement sur un Item, celle-ci demande alors si l'on veut supprimer ou afficher les statistiques.

Voici à quoi ressemble cette activité:

Historique.png Historique possibilite de supprimer les fichier.png


Nous devons encore déterminer les détails que chaque Item aura et ajouter un TextView à la AlertDialog qui indiquera quelle Entrainement a été sélectionné.

Semaine 11

  • Partie Hardware
    • Ajout de l'accéléromètre pour réaliser le podomètre. C'est un accéléromètre numérique (MMA8452Q), cet accéléromètre va nous permettre de générer une interruption à chaque fois qu'une accélération est détectée. Quelques petits problèmes lors de l'initialisation de celui ci mais les problèmes ont été résolu rapidement. Nous allons pouvoir commencer la construction du tee-shirt.

Mma8452q.jpg

  • Partie application
    • Définition de l'activité "Stats".

Cette activité va lire tout le fichier écris au préalable lors de l'entrainement, calculera des moyennes et permettra d'afficher des graphiques de certains paramètres en fonction du temps, pour cela nous avons utilisé la librairie GraphView, disponible via ce lien: [26]

En voici un premier jet, dans cet exemple nous avons affiché le graphique de la fréquence cardiaque en fonction du temps.

Stats 2.png

Semaine 12

  • Partie Hardware
  • Nous avons cousu les composants électroniques sur le T-shirt

Exterrieur.jpg Interrieur.jpg Exterrieur Lily.jpg Interrieur Lily.jpg

  • Il ne reste qu'a effectuer des tests sur le code globale avec le tee-shirt, quelques problèmes sur les connections entre les fils et les composants mais cela fonctionne. Encore des tests à effectuer sur la consommation électrique de l'ensemble en mode veille et en mode connecté. Nous avons ajouté une poche sur le tee-shirt pour pouvoir y placer une batterie.
  • Partie application
    • Redéfinition du Menu

Nous avons apporté quelques modifications à l'application, désormais le menu ne comporte plus le bouton connexion. La connexion Bluetooth sera établie lorsque l'utilisateur sélectionnera le bouton "Entrainement".

Menu.png

  • Entrainement:

Si l'utilisateur n'a pas activé son bluetooth l'application lui demande automatiquement de l'activer, s'il ne le fait pas il ne pourra faire l'entrainement. Il devra ensuite sélectionner le T-Shirt pour s'y connecter, une fois la connexion établi l'entrainement pourra commencer. Il pourra alors constater en temps réels les données envoyé par le T-shirt, c'est à dire [...]

Entrainement demande de connection bluetooth.png Entrainement Start.png Entrainement 1km.png Entrainement fini.png


  • Redéfinition de la page Historique

Il est désormais possible de sélectionner plusieurs éléments afin de les supprimer en même temps. Nous avons modifié l'affichage, seul la date, l'heure ainsi que le numéro de l'entrainement sont affiché.

Historique 2.png Historique selection.png Historique suppression.png

  • Ajout d'information sur la page "Détails"

L'utilisateur peut désormais connaitre la distance parcouru lors de son entrainement (en supposant qu'un pas vaut 70cm). Il peut également passer d'un graphique à l'autre pour voir l'évolution de la température de son corps ou de sa fréquence cardiaque lors de l'entrainement. Nous affichons maintenant la vraie date (et non le nom du fichier), nous indiquons aussi l'heure de début de l'entrainement.

Détails Freq.png Détails temp.png

Liens

RFDUINO [www.rfduino.com/] : RFD22102 RFduino DIP [27]

Nordic rf8001 (BLE) [28]

Arduino SHIELD-EKG-EMG: [29]

Électrocardiogramme [30]

LED [31] --> Fil de LED Bleu [32] ---> Lot de 25 LED [33] ---> [34]

GraphView: [35]

Library for DS18B20 [36]

Tuto

Tuto arduino : [37]

Tuto capteur de température: [38]

Tuto Bluetooth: [39] connexion app [40]

Tuto Android: [41] [42] [43] fiche: [44]

Tuto BLE Android: [45]

Tuto ListView: [46] GraphView: [47]

Tuto GPS android: [48]

Fin du Projet

Vidéo de présentation

Vidéo du projet disponible via ce lien

Rapport

Vous pouvez trouver le rapport de notre projet ici : Fichier:Rapport de projet.pdf

Fichiers Codes

Code Java pour l'application : Fichier:Application Android Bown Piat.zip

Code C pour le microprocesseur : Fichier:BLE.zip