PROJET-1FO5 1819 SkiLocator

From air
Jump to navigation Jump to search

Ski Locator

La recherche d’un ski perdu est une expérience déplaisante de par l’effort que nécessite la recherche ainsi que de par l’idée de devoir avoir à acheter une nouvelle paire de ski. La présence de poudreuse rend d’autant plus difficile cette recherche car il est parfois impossible de retrouver des traces du ski perdu. Le système que nous allons décrire ici a pour but de remédier à ce problème en utilisant les moyens modernes offerts par l’IoT. Nous avons décidé de nommer notre produit HuSki en références aux chiens de traineaux réputés pour leur ténacité et leur sens de l’odorat.

HuSki se décline en trois composants:

  • La HuCard, une carte dans un boîtier fixé sur les skis. Cette carte traque les skis et envoie leur position GPS par communication LoRa.
  • La HuConnect, une carte dans une coque de téléphone servant de gateway entre la HuCard et l’application mobile. La HuConnect reçoit les données LoRa et les transmet via Bluetooth.
  • L’application HuSki, une application mobile android pour géolocaliser les HuCards connectées.

Dans la suite de ce rapport nous allons détailler le fonctionnement de chacun de ces trois composants, les difficultés rencontrées lors du développement et nous finirons avec les ouvertures que ce projet apporte. Cependant, avant de poursuivre, il semble tout de même nécessaire de présenter l’équipe.


Iot-lora-alliance-logo.png

Équipe du projet

Membre Rôles
Quentin FOMBARON Chef de projet
Joffrey FERREIRA SCRUM Master
Tim LEPAGE Développeur
Titouan LARNICOL Développeur
Thomas OZENDA Développeur
  • Supervisé par : Bernard Tourancheau

Abstract

Mots clés

  • IOT
  • Ski
  • GPS
  • LoRa
  • Localisation
  • Application mobile

Budget

Élément Par heure Total
Salaire 120.35 19 857.75
Batiment/Matériel 5.45 900
Frais exceptionnel 170
Ordinateurs personnels 6.96 1 148.32
Total 246€

SCRUM

Une liste plus actualisée des tâches est disponible sur Trello

Journal

Sprint 0 - Du 28/01 au 04/02

Lundi 28/01

  • Boitier imprimé en 3D pour une meilleure intégration au ski
  • Problème de la batterie (rapport taille/poids et autonomie)
  • Application smartphone (Android/iOS)
  • Changement de nom : Ski-Locator
  • Rendez-vous avec M. Tourancheau cet après-midi :
  • Établir liste du matériel necessaire
  • Recherche sur la localisation auto (triangulation)
  • DVA : Radio très longues ondes
  • Suivi de trajectoire sur le ski, quand on le perd on a une prédiction de la position du ski
  • Stocker les données sur le ski et l'envoyer que si besoin
  • RSSI pour trouver le ski dans une zone donnée par LoRa Bluetooth


Mardi 29/01

  • Réalisation de l'architecture et IHM
  • Kanban bien avancé, sprint de 1 semaine
  • User stories


Mercredi 30/01

  • IHM
  • Réalisation des maquettes de l'application
  • Début application Ionic
  • Récupération matériel


Vendredi 01/02

  • Envoi de données sur TTN via la SODAQ ExpLoRer.
  • Prise en main de l'Heltec ESP32 avec scan des réseaux WiFi.
  • Tentative d'envoi de donnée LoRa via l'ESP32.

Sprint 1 - Du 04/02 au 11/02

Lundi 04/02

  • Communication LoRa hello entre deux cartes ESP32 et premiers tests sur le Bluetooth et le chiffrement des données
  • Modification de la maquette pour s'adapter à la nouvelle méthode de localisation
  • On passe de ionic à Android Studio. Trop de dépendances et de problèmes de version avec Ionic pour utiliser certaines fonctionnalités. Ionic non adapté car difficultés à accéder à l'hardware du téléphone.

Mardi 05/02

  • Journée à essayer de faire fonctionner la carte GPS SIM28 avec la carte Heltec Wifi LoRa 32. Sans succès...

UPDATE (du soir) : Après un test sur mon Arduino UNO, j'ai eu confirmation que la carte Grove GPS fonctionnait bel et bien. Après l'utilisation de HardwareSerial et non plus de SofwareSerial, nous réccupérons bien les coordonnées GPS de la carte 😊

  • APP: création des fragments, intégration de la boussole, ajout d'un ski par lecture QRCode et de la liste de ski.


Mercredi 06/02

  • Réflexion sur la construction des trames entre carte/Gateway et entre Gateway/Application.
  • APP: Sauvegarde de la liste de skis, correctifs et améliorations.
  • Cryptage des communications LoRa avec une clef de 16 octets


Jeudi 07/02

  • APP: Boussole opérationnelle, pointe vers une position GPS donnée. Problème lorsque le cache de localisation est vide à fix
  • Récupération de l'état de la batterie 4V avec un diviseur de tension pour ne pas abimer la carte qui supporte jusque 3.3V sur ses entrées analogiques.

Vendredi 08/02

  • Regroupement des fonctionnalités sur l'envoi des données à la GW (ChipID + Long + Lat + Batterie). Résolution d'un bug faisant redémarrer la carte après chaque envoie de donnée.
  • Regroupement des données du coté Gateway
  • APP : QRCode reader fonctionnel

Sprint 2 - Du 11/02 au 18/02

Lundi 11/02:

  • APP: Sauvegarde des skis enregistrés sur le téléphone pour persister en cas d'application fermée.
  • APP: Utilisation du Qrcode -> redirection pour ajouter un ski.
  • Gestion des connexions BT sur la gateway et transition des données app<->carte faite
  • Tentative de chiffrement des données avant l'envoi à la GW, plus compliqué que prévu au vu de la complexité de transformer les données en char * !
  • Decision prise de lancer la partie DevOps du projet : renseignement sur les techniques, choix des technos

Mardi 12/02

  • Abandon pour le moment du chiffrement de données, nous avons peur de perdre un temps précieux, nous reviendrons dessus si le temps nous le permet.
  • Script permettant l'envoi ET la réception de donnée en LoRa.
  • APP: début du protocole Bluetooth pour envoyer recevoir données
  • APP: redirection, ajustement drawer, QR code opé et ajout de carte via qr code fonctionnel
  • APP: Amélioration de la naviguation entre fragments.
  • DevOps: Mise en place de CircleCI, hook GitHub

Mercredi 13/02

  • APP: Fin du protocole bluetooth, on peut communiquer entre l'app et la GW, Création d'un parser pour recevoir les données et les traiter.
  • La puce GPS a besoin de 5V, la batterie ne délivre que 3,7V. Je me suis donc procurer un booster pour toujours délivrer 5V.
  • DevOps: Sur CircleCI, production d'une APK

Jeudi 14/02

  • APP: Merge des différentes fonctionnalités de l'application. Correction de bug par rapport à la naviguation.
  • ACK vérifiant l'activation des modes ACTIVE et NORMAL, à peaufiner.
  • DevOps: Difficulté pour les InstrumentedTests avec CircleCI, recherche d'une nouvelle solution : Décision de mettre en place un serveur Jenkins

Vendredi 15/02

  • Conf call avec Bernard Tourancheau
  • APP: Corrections de bugs et optimisations + envoi de tags à la GW pour info Lora
  • APP: Tutoriel - Carte : Ack des changements de mode effectuer"
  • DevOps: Production d'une APK signée sur Jenkins

Sprint 3 - Du 4/03 au 11/03

Vacances (18/02 - 01/03)

  • Modélisation 3D du boitier des HuCards

Lundi 04/03

  • Management le matin : budget du projet fait
  • Préparation du diaporama de soutenance de mis-parcours
  • Reception des cartes **Heltec** et des régulateurs de tension, ajout de ces derniers au protoype.
  • Mise en place UnitTests avec Jenkins + signature APK

Mardi 05/03

  • Dernières préparations avant la soutenance de mi-parcours
  • Suite de la modélisation 3D du boitier
  • Fin de codage du chiffrage
  • Mise en place des InstrumentedTests via Firebase Lab

Mercredi 06/03

  • Découverte des possibilités de l'écran par curiosité car ce dernier sera désactivé dans le boitier, il ne sert uniquement à afficher des logs durant les tests.
  • Premiers tests en extérieur avec les cartes et l'applications.
  • Debug du chiffrage
  • Tentative mise en place SonarQube server -> passage sur SonarCloud pour plus de simplicité.

Jeudi 07/03

  • Fini le chiffrage des communications dans les deux sens
  • Amélioration du modèle 3D du boitier
  • Difficile de faire fonctionner SonarCloud correctement, passage sur Codacy

Vendredi 08/03

  • Debut de la feature de suppression de carte
  • Préparation pour impression

Sprint 4 - Du 11/03 au 15/03

Lundi 11/03

  • Impression de la première version du boitier

Mardi 12/03

  • Fin des implémentations d'optimisation principale pour les cartes
  • Prototypage du circuit imprimé comprenant la carte Heltec, le déviseur et régulateur de tension, le GPS et la batterie. L'ajout d'un interupteur pour allumer/éteindre la carte a été ajouté.
  • Résolution de bug sur Jenkins qui empechait la production de l'APK
  • changement de design

Mercredi 13/03

  • Correction de quelques erreurs sur la première version du boitier puis impression de la seconde version.
  • Essai d'utilisation de GitHub Release pour mettre à disposition l'APK signée
  • finition design final

Jeudi 14/03

Vendredi 15/03

  • Préparation soutenance
  • Commencement du diaporama

Sprint final

  • Rédaction rapport
  • Préparation soutenance
  • Documentation et commentaire de code

Génie Logiciel

Diagramme de Contexte

SL2019-DC.png

Arbre des tâches

Retrouver un ski perdu SL2019-AT.png


Ajouter un ski à l'application SL2019-AT2.png

Vue Logique de haut niveau

SL2019-VLH.png

Vue Logique de bas niveau

SL2019-VLB.png

Vue Sequentielle

SL2019-VS.png


SL2019-VS2-1.png

Vue physique

SL2019-VP.png

IHM abstraite

SL2019-IMHA.png

IHM concrète

2019 SkiLocator maquette ajouter.png

2019 SkiLocator maquette cartes.png

2019 SkiLocator maquette menu.png

2019 SkiLocator maquette ski loin.png

2019 SkiLocator maquette ski proche.png

2019 SkiLocator maquette warning.png

User Stories

User Story
US_001 En tant que skieur, je souhaite pouvoir avoir une zone de recherche de mes skis
US_002 En tant que skieur, je souhaite pouvoir localiser précisément mes skis
US_003 En tant que skieur, je souhaite pouvoir identifier mes skis (ski droite/ ski gauche)
US_004 En tant que skieur, je souhaite pouvoir associer des skis à mon application mobile via QR Code
US_005 En tant que skieur, je souhaite pouvoir visualiser le niveau de batterie des capteurs sur les skis
US_006 En tant que skieur, je souhaite pouvoir connaître à tout moment la position des skis
US_007 En tant que skieur, je souhaite pouvoir enregistrer plusieurs paires de skis
US_008 En tant que skieur, je souhaite pouvoir visualiser le niveau de batterie sur la gateway
US_009 En tant que skieur, je souhaite pouvoir avoir une distance approximative à mes skis
US_010 En tant que skieur, je souhaite pouvoir avoir de l'aide pour me connecter à la GW (indication, ...)
US_011 En tant que skieur, je souhaite pouvoir déclarer mes skis perdu
US_012 En tant que skieur, je souhaite pouvoir déclarer un ski que j'ai trouvé
US_013 En tant que skieur, je souhaite pourvoir changer de téléphone et ne pas apareiller de nouveaux mes skis
US_014 En tant que skieur, je souhaite pouvoir appeler à l'aide avec mon smartphone sans raison
US_015 En tant que skieur, je souhaite pouvoir nommer mes skis appareillés