PROJET-1FO5 1819 SkiLocator

=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.



=Équipe du projet=


 * Supervisé par : Bernard Tourancheau

=Abstract=

Mots clés

 * IOT
 * Ski
 * GPS
 * LoRa
 * Localisation
 * Application mobile

=Budget=

=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 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 😊
 * Journée à essayer de faire fonctionner la carte GPS SIM28 avec la carte Heltec Wifi LoRa 32. Sans succès...
 * 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
 * Avancement sur le rapport
 * Assemblage final :
 * ![](https://i.imgur.com/o610FY3.jpg)

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=

Arbre des tâches
Retrouver un ski perdu

Ajouter un ski à l'application

Vue Sequentielle




IHM concrète