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
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
- 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
Diagramme de Contexte
Arbre des tâches
Ajouter un ski à l'application
Vue Logique de haut niveau
Vue Logique de bas niveau
Vue Sequentielle
Vue physique
IHM abstraite
IHM concrète
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 |