Difference between revisions of "Projets-2016-2017-UltraTeamBest"

From air
Jump to navigation Jump to search
Line 94: Line 94:
 
== Week 8 (March 09nd - March 15nd) ==
 
== Week 8 (March 09nd - March 15nd) ==
   
  +
La carte commence à fonctionner, on peut ajouter des markers.
* Travail sur la partie NFC.
 
  +
On positionne aléatoirement des gens sur la carte.
* Récupération des puces NFC et du code réalisé par des élèves de l'ENSIMAG pour utiliser le lecteur NFC.
 
  +
On peut calculer les distances entre eux.
* Adaptation du code au projet.
 
  +
  +
Ajout d'une page de configuration
   
 
== Week 9 (March 16nd - March 22nd) ==
 
== Week 9 (March 16nd - March 22nd) ==
   
  +
Corerection de bug sur la map
* Problème avec le lecteur NFC et le code fourni.
 
  +
Partage de données entre activity
* Problème avec une puce NFC... décidemment '^^...
 
  +
Ajout de la possiblité de mettre un point de rendez vous que tous le monde voit
* Visite de la CTI.
 
   
 
== Week 10 (March 23nd - March 29nd) ==
 
== Week 10 (March 23nd - March 29nd) ==
   
  +
Ajout d'animation à la carte
* Problème du lecteur NFC résolu -> nouveau lecteur bien mieux
 
  +
Amélioration des structures de données
* Intégration du code NFC -> OK
 
* Récupération de puces NFC supplémentaires car seulement une puce fonctionne (pas terrible pour les tests)
 
* Récupération du nouveau PC à installer dans la borne (il y a de la musique quand on ouvre la boite ou qu'il y a de la lumière)
 
* Récupération d'une clé pour installer Windows 7 Professionnel 64bits
 
* Récupération d'un téléphone Android pour programmer les puces (Android c'est nul xD)
 
   
 
== Week 11 (March 30nd - April 05nd) ==
 
== Week 11 (March 30nd - April 05nd) ==
   
  +
Refonte du design de l’application
* Nous avons trouvé une solution formidable pour afficher les emplois du temps de chaque filière avec Reveals.js ce qui permettra de consulter très facilement les emplois du temps sur la borne
 
  +
Ajout d'un bouton SOS.
* Réalisation de lien les gestes et les diapositives de Reveal.js avec Openni + Processing en utilisant websocket
 
  +
Ajout de son lors du démarrage de la carte et de l'appui sur le bouton SOS
* Installation de Windows 7 Professionnel sur le nouveau PC + tous les drivers Intel NUC D54250WYKH
 
* Installation du programme qui gère les emplois du temps (avec WampServer)
 
* Installation du programme qui gère l'affichage sur la borne et la détection des gestes
 
 
=Synthèse du projet=
 
 
==Contexte==
 
[[Interactive Digital Signage]]
 
 
Les bornes interactives à la pointe de la technologie commencent à apparaitre dans nos villes. Au potentiel infini, elles vont révolutionner le monde de l’information et de la publicité.
 
 
'''Examples:'''
 
* http://vds-technology.com/PLV-dynamique/nos_produits/e-totems/
 
* http://www.connected-store.com/des-cabines-d%E2%80%99essayage-virtuelles-et-connectees-dans-un-magasin-john-lewis-4894
 
* http://www.connected-store.com/un-miroir-interactif-et-connecte-dans-un-magasin-de-lenseigne-princess-polly-9832
 
* http://www.connected-store.com/une-vitrine-tactile-et-des-bornes-connectees-pour-le-nouveau-concept-store-dorange-a-lile-maurice-4002
 
 
==Matériel==
 
*Borne IDS contenant
 
** Intel NUC D54250WYKH avec Windows 7
 
** TV 37 Pouces Full HD
 
** Verre trempé IKEA
 
** Kinect XBox
 
** Haut Parleurs
 
** Lecteur NFC (SCM Microsystems Inc. SCL3711 reader & NFC device 0)
 
*Tag NFC
 
*Téléphone Android (pour programmer les puces NFC)
 
 
Lecteur NFC SCL3711:
 
 
[[File:ids_nfc.png | 200px]]
 
 
Kinect:
 
 
[[File:Kinect.jpg | 200px]]
 
 
==Logiciels (utilisés)==
 
 
* http://voxygen.fr/index.php (synthèse vocale)
 
* javax.smartcardio (lecteur NFC)
 
* Reveals.js (affichage interactif des informations)
 
* [[OpenNI]] (Kinect)
 
* Processing
 
* [[Intel® Perceptual Computing SDK]]
 
   
 
==Logiciels (réalisés)==
 
==Logiciels (réalisés)==
Line 167: Line 122:
   
 
Voici la liste des différentes applications que nous avons réalisées dans le but de répondre au cahier des charges.
 
Voici la liste des différentes applications que nous avons réalisées dans le but de répondre au cahier des charges.
 
=== Emploi du temps et NFC ===
 
 
Le programme créé tourne en tache de fond sur la borne. Dès qu'une puce NCF est détectée, une fenêtre s'ouvre avec les informations sur le prochain cours de la personne, la salle dans laquelle elle sera, son enseignant ainsi que les horaires du cours. Au moment de l'ouverture de cette fenêtre, la borne se met à parler à la personne qui est en face d'elle pour lui donner verbalement ces informations via la synthèse vocale. À la fin du speech, la fenêtre se referme.
 
 
'''Fonctionnement du programme :'''
 
 
Le schéma ci-dessous résume la façon dont le logiciel fonctionne de façon schématique. Tout d'abord, lors de son premier lancement, le programme télécharge les emplois du temps de chaque filière au format iCalendar. Ensuite, les fichiers iCalendar sont traités et les informations utiles sont stockées en mémoire dans des structures de données. Maintenant vient le début de la boucle principale de fonctionnement. Il ne sortira jamais de cette boucle sauf en cas d'arrêt du programme évidemment. Le programme est autonome. Il se mettra à jours automatiquement. Lors qu'une personne passe une puce NFC devant la borne, le programme interroge ses structures de données contenant les emplois du temps comme expliqué dans le paragraphe qui suit. Ensuite, il vérifie qu'il dispose bien des emplois du temps de la semaine courante et effectue la mise à jour si nécessaire. Il affiche alors le résultat de la requête dans une fenêtre et active la synthèse vocale qui fait parler la machine.
 
 
[[File:caca1.png | 300px]]
 
 
'''Interrogation des structures de données :'''
 
 
Le schéma ci-dessous résume la façon dont le logiciel procède après identification de la personne qui a passé la puce NFC devant la borne. Ce qu'il faut retenir, c'est que si 'est un élève, c'est facile, il suffit d'aller interroger la liste correspondant à l'emploi du temps des la classe de l'étudiant. Ensuite on cherche une correspondance entre l'élève, la date et l'horaire. En revanche, dans le cas d'un enseignant, nous ne disposons pas de la classe avec laquelle il a cours puisque qu'un enseignant peut faire cours à plusieurs classes de différentes filières. Il faut donc chercher dans toutes les listes contenant les emplois du temps des différentes filières une correspondance entre l'enseignant, la date et l'horaire.
 
 
[[File:caca2.png | 400px]]
 
 
'''Mise à jour automatique des emplois du temps :'''
 
 
C'est une histoire de différence entre la date correspondant à la dernière fois que les emplois du temps ont été mis à jours et la date actuelle en tenant compte du jour de la semaine où la demande est effectuée. Un code tel que celui-ci est robuste et fonctionnera toujours. Dans le cas présent, les emplois du temps sont mis à jour chaque semaine.
 
 
[[File:caca3.png | 600px]]
 
 
'''Info sur le programme'''
 
 
Le programme a été écrit intégralement en Java.
 
 
Les emplois du temps de chaque filière sont téléchargés automatiquement dès la première demande qui est effectuée.
 
 
La synthèse vocale fonctionne grâce au site web de l'entreprise Voxygen qui permet d'utiliser des voix à la pointe de la technologie qui ont été mise en ligne comme exemple.
 
 
Le texte du speech est créé dynamiquement par le programme pour s'adapter à chaque utilisateur. Ensuite, il est envoyé sur le serveur de Voxygen qui va alors renvoyer un fichier audio au format mp3 avec le contenu vocal souhaité. Enfin, le programme lance la lecture du fichier son pour faire parler la borne.
 
 
Les adresses web pour télécharger les emplois du temps de chaque filière se trouve dans un fichier nommé "adweb.txt". Il est donc très simple d'ajouter des classes, d'en enlever ou de mettre à jours une adresse qui aurait changé.
 
 
Le fichier est construit de la façon suivante :
 
 
[[File:ids_edt.png | 300px]]
 
 
Les puces NFC contiennent simplement un numéro d'étudiant (numéro d'étudiant par exemple). Une fois le numéro lu, il suffit d'aller chercher l'étudiant correspondant dans la base de données qui est en fait un simple fichier texte nommé "nfc.txt". Une des améliorations de notre projet sera d'aller chercher les informations dans la base de données en ligne qui a été réalisée par l'université. Ce sera ainsi plus simple que de rentrer tous les étudiants avec leur numéro d'étudiant, leur nom, leur prénom et leur classe dans un fichier.
 
 
Le fichier est construit de la forme suivante :
 
 
[[File:ids_etu.png | 400px]]
 
 
Pour ce qui est de la voix choisie, c'est également dans un fichier que l'on peut la choisir. Dans le fichier "speak.txt", il faut donc indiquer la voix que l'on veut utiliser et également indiquer le chemin du dossier qui contient la partie du code PHP qui est utilisé par WampServer chaque fois qu'une requête est effectuée. Enfin, c'est également dans ce fichier que l'on saisit le jour de la semaine et l'heure où le téléchargement automatique des emplois du temps sera effectué.
 
 
Le fichier est construit de la forme suivante :
 
 
[[File:ids_voix.png | 200px]]
 
 
Fenêtre du programme (cas d'un élève):
 
 
[[File:ids_fenetre.png | 400px]]
 
 
Fenêtre du programme (cas d'un enseignant):
 
 
[[File:ids_fenetre2.png | 400px]]
 
 
La machine dira par exemple : "Bonjour Didier, vous avez cours de projet en salle TP259IIA ou peut être en salle S125 avec les RICM4 de 13h30 à 17h30. Je vous souhaite une excellente journée."
 
 
'''Info sur la partie en PHP Voxygen'''
 
 
Le code PHP est exécuté par WampServer. Le dossier "PHP-Voxygen-master" doit donc se trouver dans le dossier "www" de WampServer pour que tout fonctionne correctement. Il faut donc bien mettre le lien vers le dossier "PHP-Voxygen-master" dans le fichier "speak.txt" comme expliqué un peu plus haut sinon ça ne pourra pas fonctionner.
 
 
=== Kinect et Reveals.js ===
 
 
Pour utiliser Kinect dans Windows il faut installer
 
*nite-win64-1.5.2.21-dev
 
*openni-win64-1.5.4.0-dev
 
*SensorKinect092-Bin-Win64-v5.1.2.1
 
(Il existe un conflit de pilot de Kinect entre SensorKinect et Windows Kinect)
 
 
On créer le sevrer et faire la communication entre Processing et page web en utilisant webbit
 
* https://github.com/webbit/webbit
 
 
Pour réaliser les gestes on utilise le API de openni
 
* http://kinectcar.ronsper.com/docs/nite/classXnVSwipeDetector.html
 
 
Pour utiliser les gestes dans reveal.js on utilise le façon en base des gestes avec webcam
 
*https://github.com/willy-vvu/reveal.js
 
 
=Ressources=
 
* https://github.com/SalemHarrache/ricm.quicker
 
* https://developer.mozilla.org/fr/docs/IndexedDB/Using_IndexedDB
 
* [[Reveal.js]]
 
* https://github.com/hakimel/reveal.js/issues/1039
 
* http://revealjs.herokuapp.com/
 

Revision as of 22:17, 2 April 2017

Project presentation

Ce projet propose de développer une application Web mobile permettant aux membres d'une équipe ou d'un groupe de randonneurs (marche, ski rando, ski piste, , ski nordique ...) de se positionner les uns les autres (temps de course, de marche, distance) en temps réel et de surveiller/gérer l'effort des membres de l'équipe.

L'application permettra d'enrôler facilement les membres d'une équipe/groupe (Code numérique, QRCode, NFC, ...)

L'application permettra de charger ou d'échanger les traces (GPX, GeoJSON) et les mesures physiologiques (Hearth rate, Foulée, ...) via des supports de stockage comme OwnCloud, Google Drive, Dropbox, Facebook, Trace de Trail ...

L'application permettra également de mesurer l'effort en temps réel de/des coureurs (temps passé dans les régimes cardiaques) et d'en informer le coureur et/ou le chef d'équipes, les guides accompagnateurs. Pour cette fonctionnalité, il est prévu d'intégrer les mesures collectées sur des montres ou des bandes cardio Bluetooth 4.0 HRM.

L'application devra pouvoir fonctionner avec/sans réseau 4G/3G, avec/sans 2G (ie SMS), avec/sans un réseau LPWAN opéré ou privé (SigFox, LoRa), avec un réseau LPWAN adhoc (broadcast).

Matériel fourni:

API Google Android Wear

Team

  • Supervisors : Didier Donsez
  • Members : Clément Rouquier, Anthony Geourjon

Progress of the project

The project started January 14th, 2015.

Week 1 (January 13th - January 18th)

  • Choix du projet

Week 2 (January 19th - January 25th)

  • Découverte du projet
  • Mise en route de la machine
  • Récupération du code
  • Mise en place des exigences

23 Janvier 2017

Connexion au modem : lsusb

voir le nom de la connexion

su apt-get install arduino

run arduino

Onglet : outils-> noniteur série-> choisir son device

Onglet : outil->Moniteur série -> choisir 57600 bauds et choisir NL & CR

Merci N. Palix pour l'astuce de l'utilisation d'Arduino.

Utiliser les commandes fournies par D. Donsez dans son doc google ou le manuel pour interagir avec le modem. Manuel

24 janvier 2017

Création d'une mini appli android qui permet d’accéder au modem lorsqu'il est branché en série au téléphone. Si je connecte un modem au téléphone et le second à un PC, je peux les faire communiquer. Upload sur Github d'ici demain au pire. Pour réaliser cette magie noire, j'ai utilisé USBSerial : https://github.com/felHR85/UsbSerial. Et j'ai forké l'appli exemple du même auteur https://github.com/felHR85/SerialPortExample. La difficulté à été de faire fonctionner et surtout comprendre l'ensemble. J'ai ensuite configuré le code pour qu'il marche avec nos modems (bauds rate, parity none, cr and lf).


Week 3 (January 26th - February 01st)

Réalisation des diagrammes UML

Week 4 (February 02nd - February 08th)

Essai d'intégration de l'application à GreenHouseCI pour faire du déploiement continu. Essai de divers IDE online pour essayer de faire du déploiement continu Amélioration de l'application p

Week 5 (February 09th - February 15th)

Modification de l'appli en application avec des onglets. Un onglet terminal USB série, un onglet GPS, un onglet configuration

Week 6 (February 23th - March 1st)

Travail sur la map. Suivi d'un tuto pendant de longues heures pour que celui ci se révèle obsolete et donc innutilisables. Création de la clé pour l'API de Google pour les maps.

La clé : AIzaSyB4iTwLc9rSwh5RebtpKjUR0XKIIv5P9gY


Week 7 (March 02nd - March 08nd)

Travail sur la map, tous les tutos se contredisent. Création d'un nouveau dépot GitHub afin de repartir sur de bonnes bases car tout le dépot est cancérisé

Week 8 (March 09nd - March 15nd)

La carte commence à fonctionner, on peut ajouter des markers. On positionne aléatoirement des gens sur la carte. On peut calculer les distances entre eux.

Ajout d'une page de configuration

Week 9 (March 16nd - March 22nd)

Corerection de bug sur la map Partage de données entre activity Ajout de la possiblité de mettre un point de rendez vous que tous le monde voit

Week 10 (March 23nd - March 29nd)

Ajout d'animation à la carte Amélioration des structures de données

Week 11 (March 30nd - April 05nd)

Refonte du design de l’application Ajout d'un bouton SOS. Ajout de son lors du démarrage de la carte et de l'appui sur le bouton SOS

Logiciels (réalisés)

Le dépôt global des sources est sur github

Voici la liste des différentes applications que nous avons réalisées dans le but de répondre au cahier des charges.