Tracker GPS

Système de géolocalisation en temps réel avec Arduino, Flutter et Symfony

Présentation et définition du projet Tracker GPS

Le Tracker GPS est un projet personnel que j'ai développé pour introduire le monde de l'électronique embarqué dans mes compétences. Ce projet reflète ma passion pour l'intégration de technologies diverses et ma volonté de créer un système complet de géolocalisation en temps réel. Il vise à offrir une solution fiable et précise pour le suivi des déplacements, que ce soit pour des véhicules, des activités sportives ou d'autres applications nécessitant une localisation précise. L'objectif principal était de concevoir un dispositif capable de collecter, transmettre et visualiser des données GPS de manière fluide et efficace.

La genèse du projet a évolué par étapes. Au début, j'avais simplement le capteur GPS et l'Arduino, ce qui me forçait à brancher l'Arduino à mon PC portable pour recevoir les données. Ensuite, j'ai réfléchi à une solution pour rendre le dispositif plus portable. J'ai d'abord opté pour un module Bluetooth HC-05, mais celui-ci n'était pas compatible BLE (Bluetooth Low Energy) et donc incompatible avec iOS. J'ai finalement choisi le module HM-10 compatible BLE pour assurer une meilleure compatibilité avec tous les smartphones.

Le Tracker GPS se distingue par son architecture complète, allant du dispositif embarqué jusqu'à l'interface web. Au cœur du système, un Arduino connecté à un module GPS et à un module Bluetooth HM-10 assure la collecte et la transmission des coordonnées. J'ai ensuite développé une application mobile très simple, quasiment sans interface, qui me sert de passerelle : les données arrivent en Bluetooth à mon téléphone qui les transmet en 5G vers mon API Symfony où elles sont insérées en base de données. La visualisation est réalisée avec Symfony et Mercure pour un affichage en temps réel sur une carte interactive.

La réalisation de ce projet s'est appuyée sur une méthodologie itérative, améliorant progressivement chaque composant du système. J'ai assuré l'intégration des différentes technologies, depuis la programmation du microcontrôleur jusqu'à la mise en place de l'interface web. Cette expérience m'a permis de renforcer mes compétences en développement embarqué, en programmation mobile et en développement web, tout en relevant le défi de faire communiquer efficacement ces différentes technologies.

J'ai documenté ce projet avec des photos et vidéos du matériel, de l'affichage cartographique et de l'application mobile simple que j'ai développée. Ces éléments illustrent les différentes étapes de développement et le fonctionnement du système complet.

Logo Tracker GPS

Logo du projet Tracker GPS

Objectifs, contexte, enjeux et risques

Le développement du Tracker GPS répond à plusieurs enjeux spécifiques dans le domaine de la géolocalisation. Face aux solutions commerciales souvent limitées en termes de personnalisation ou excessivement onéreuses, j'ai identifié l'opportunité de concevoir un système sur mesure répondant exactement à mes besoins. Ce projet s'inscrit également dans une démarche d'apprentissage continu et d'exploration des technologies émergentes dans le domaine de l'IoT (Internet des Objets).

Les principaux enjeux du projet étaient multiples. Sur le plan technique, il s'agissait d'intégrer harmonieusement des technologies hétérogènes (embarqué, mobile, web) dans un système cohérent et performant. L'enjeu énergétique était également crucial : il fallait optimiser la consommation d'énergie du dispositif embarqué pour maximiser son autonomie, un aspect essentiel pour un appareil mobile.

La fiabilité constituait un autre défi majeur, avec la nécessité d'assurer une transmission robuste des données GPS, même dans des conditions d'utilisation difficiles comme les zones urbaines denses ou les environnements naturels accidentés. Enfin, l'expérience utilisateur représentait un enjeu important : concevoir une interface intuitive pour la visualisation et l'analyse des données de géolocalisation, permettant une compréhension immédiate des informations collectées.

Les risques identifiés étaient nombreux, notamment les limitations de portée du Bluetooth, les problèmes potentiels de réception GPS dans certains environnements, et les défis d'interopérabilité entre les différentes couches technologiques. J'ai dû également faire face à des choix technologiques cruciaux, comme celui du protocole de transmission sans fil. Initialement, j'avais envisagé d'utiliser la technologie LoRaWAN pour sa longue portée et sa faible consommation énergétique, mais j'ai dû abandonner cette option en raison de la couverture insuffisante dans ma région. Ce choix m'a conduit à adopter une approche hybride utilisant le Bluetooth pour la connexion locale et la 4G/5G pour la transmission à distance.

L'un des défis majeurs du projet reposait sur la fiabilité de la communication entre les différents composants. La transmission Bluetooth devait être optimisée pour minimiser la consommation d'énergie tout en garantissant l'intégrité des données. L'application mobile devait fonctionner de manière fluide, même en cas de perte temporaire de connexion avec le dispositif embarqué ou avec le serveur. L'API devait être capable de gérer efficacement un grand nombre de requêtes et de stocker les données de manière optimisée pour permettre des requêtes spatiales performantes.

Sur le plan personnel, ce projet représentait un véritable défi d'apprentissage et de montée en compétences. Il m'a fallu acquérir rapidement des connaissances dans des domaines variés, depuis la programmation de microcontrôleurs jusqu'à la gestion de bases de données spatiales. Cette diversité de compétences requises a constitué à la fois un défi stimulant et une opportunité d'enrichissement professionnel considérable.

Aspects fondamentaux du projet Tracker GPS

Le projet Tracker GPS repose sur plusieurs aspects principaux qui ont guidé sa conception et son développement. Plutôt que de dérouler une chronologie, j'ai choisi de mettre en avant les dimensions essentielles qui rendent ce projet unique et pertinent.

Architecture fonctionnelle et contexte d'utilisation

L'architecture fonctionnelle du Tracker GPS a évolué au fil du développement pour répondre aux défis spécifiques de la géolocalisation en temps réel. Le système se compose de trois grandes parties : le dispositif embarqué, l'application mobile et l'interface web. Cette architecture modulaire permet une grande flexibilité d'utilisation et facilite les évolutions futures.

Le dispositif embarqué est basé sur un Arduino Nano, choisi pour sa taille compacte et sa faible consommation énergétique. Il est connecté à un module GPS qui assure la réception des signaux satellites et le calcul des coordonnées géographiques. Initialement, je devais connecter l'Arduino directement à mon ordinateur portable pour récupérer les données, ce qui limitait fortement la mobilité du système. Pour résoudre ce problème, j'ai d'abord intégré un module Bluetooth HC-05, mais j'ai rapidement constaté qu'il n'était pas compatible BLE (Bluetooth Low Energy) et donc inutilisable avec les appareils iOS. J'ai finalement opté pour un module HM-10 compatible BLE, ce qui a considérablement amélioré la compatibilité et la portée du système.

L'application mobile que j'ai développée est volontairement minimaliste, presque sans interface utilisateur. Elle joue un rôle essentiel de passerelle : elle reçoit les données GPS via Bluetooth depuis l'Arduino, puis les transmet immédiatement via le réseau 5G vers mon API Symfony où elles sont insérées en base de données. La visualisation est réalisée avec Symfony et Mercure pour un affichage en temps réel sur une carte interactive.

Acquisition et traitement des données GPS

L'acquisition et le traitement des données GPS constituent le cœur du projet. Le module GPS connecté à l'Arduino reçoit les signaux des satellites et génère des trames NMEA contenant diverses informations : position, altitude, vitesse, cap, nombre de satellites visibles, etc. Au début du projet, je devais connecter physiquement l'Arduino à mon ordinateur portable pour récupérer ces données, ce qui limitait considérablement la mobilité et l'utilité du système.

Pour résoudre ce problème, j'ai mené des recherches approfondies sur différentes technologies de transmission sans fil. Je me suis d'abord renseigné sur le LoRaWAN, une technologie prometteuse pour l'IoT grâce à sa longue portée et sa faible consommation énergétique. Cependant, j'ai dû abandonner cette piste en raison du manque de couverture dans ma région, ce qui aurait limité l'utilité du dispositif. C'est pourquoi je me suis finalement orienté vers une solution hybride utilisant le Bluetooth pour la connexion locale et la 4G/5G pour la transmission à distance.

J'ai d'abord intégré un module Bluetooth HC-05 qui permettait de transmettre les données sans fil. Cependant, j'ai rapidement identifié une limitation majeure : ce module n'était pas compatible avec la technologie BLE (Bluetooth Low Energy) et ne fonctionnait donc pas avec les appareils iOS. Après des recherches, j'ai opté pour le module HM-10 compatible BLE, qui offre une meilleure compatibilité avec tous les smartphones et une consommation énergétique réduite, élément crucial pour un dispositif portable.

L'application mobile que j'ai développée joue un rôle de passerelle essentiel dans le traitement des données. Très simple et presque sans interface utilisateur, elle reçoit les données GPS via Bluetooth depuis l'Arduino et les transmet immédiatement via le réseau 5G vers mon API Symfony. Cette architecture en deux étapes permet de contourner les limitations de portée du Bluetooth tout en exploitant la puissance et la couverture des réseaux mobiles. Les données sont ensuite insérées dans une base de données PostgreSQL et visualisées en temps réel grâce à Mercure, une technologie qui permet des mises à jour instantanées de l'interface web sans rechargement de page.

Application mobile et interface utilisateur

L'application mobile que j'ai développée pour ce projet est volontairement très simple, presque sans interface utilisateur. Contrairement aux applications GPS traditionnelles qui offrent une expérience utilisateur riche, j'ai opté pour une approche minimaliste où l'application joue essentiellement le rôle de passerelle entre le module Bluetooth HM-10 et mon API Symfony. Cette conception répond parfaitement à l'objectif du projet : transmettre efficacement les données GPS sans consommer inutilement les ressources du smartphone.

L'application se connecte automatiquement au module HM-10 dès son lancement, reçoit les données GPS en temps réel, et les transmet immédiatement via le réseau 5G vers mon API Symfony. Elle fonctionne principalement en arrière-plan, ne nécessitant aucune interaction de l'utilisateur une fois la connexion Bluetooth établie. Cette approche permet d'économiser la batterie du smartphone tout en assurant une transmission fiable des données.

La véritable expérience utilisateur se trouve sur l'interface web, développée avec Symfony et JavaScript. C'est là que j'ai concentré mes efforts en termes d'ergonomie et de fonctionnalités. L'interface web affiche les données de géolocalisation en temps réel grâce à Mercure, une technologie qui permet des mises à jour instantanées sans rechargement de page. Elle propose une carte interactive montrant le parcours en cours, ainsi que des statistiques comme la vitesse, la distance parcourue et le temps écoulé. J'ai également implémenté des fonctionnalités d'historique permettant de consulter et d'analyser les trajets précédents.

Stockage et analyse des données spatiales

Le stockage et l'analyse des données GPS reposent sur une base de données PostgreSQL avec l'extension PostGIS, spécialisée dans la gestion des données spatiales. Cette combinaison permet de stocker efficacement les coordonnées GPS et d'effectuer des requêtes spatiales complexes, comme le calcul de la distance parcourue, la détection des zones de stationnement, ou l'identification des points d'intérêt à proximité d'un trajet.

Le modèle de données a été conçu pour optimiser les performances des requêtes spatiales tout en minimisant l'espace de stockage. Les coordonnées GPS sont stockées sous forme de points dans un système de référence spatiale adapté (SRID 4326, correspondant au système WGS84 utilisé par le GPS), et les trajets sont représentés par des lignes (LineString) reliant ces points. Des index spatiaux ont été mis en place pour accélérer les requêtes, et les données sont organisées en partitions temporelles pour faciliter l'archivage et améliorer les performances sur de grands volumes de données.

L'API RESTful développée en Symfony sert d'interface entre l'application mobile et la base de données. Elle expose des endpoints sécurisés pour la création, la lecture, la mise à jour et la suppression des données GPS, ainsi que pour des opérations plus complexes comme le calcul d'itinéraires ou la génération de rapports. L'API intègre également des mécanismes de validation et de normalisation des données pour garantir leur cohérence et leur qualité.

Les acteurs et les interactions

Bien que le Tracker GPS soit un projet personnel plusieurs acteurs ont aidé à sa réussite par exemple des amis passionnés d’électronique et d’informatique ont apporté leurs conseils et leur expertise sur certains aspects. Leurs retours sur les premières versions du prototype ont permis d’identifier des améliorations et d’affiner les fonctionnalités. Des utilisateurs volontaires ont testé le système en conditions réelles pour fournir des remarques pertinentes sur l’ergonomie de l’application mobile et la fiabilité du dispositif embarqué.

J’ai aussi pris l’initiative de contacter des professionnels du secteur via LinkedIn afin d’obtenir leurs avis sur certains points techniques précis. Ces échanges avec des experts en IoT en géolocalisation et en développement embarqué m’ont permis de recueillir des conseils, utiles et des perspectives variées sur mes choix technologiques et méthodologiques, cette démarche proactive a joué un rôle essentiel pour dépasser certains obstacles techniques et optimiser l’architecture du système.

La communauté des développeurs, Arduino Flutter et Symfony, a également joué un rôle indirect mais important car les forums tutoriels et bibliothèques open source m’ont aidé à résoudre les difficultés techniques rencontrées tout au long du projet. Les expérience d’autres développeurs sur des projets similaires m’ont évité certains pièges et grâce à eux et à leur partage, j'ai pu utiliser les meilleures pratiques.

Pour faciliter la communication et le suivi du projet je me suis mis en place des outils de gestion comme GitHub pour versionner le code, j'ai aussi pris des photos des branchements des capteurs à l'Arduino pour ne rien oublier. Cette approche méthodique a assuré une progression régulière et a permis de capitaliser sur chaque apprentissage réalisé tout au long du projet.

Résultats et réflexion personnelle

La bonne mise en place du Tracker GPS a permis d'avoir un système fiable et performant répondant pleinement aux objectifs définis, le module embarqué assure une acquisition fidèle des données GPS et un flux de transmission vers l'application mobile. Bien que minimaliste et surtout conçu pour servir de relais entre le module Bluetooth et l’API, l’application mobile remplit parfaitement son rôle de passerelle. C’est l’interface web qui offre une expérience utilisateur riche car elle est en mesure de permettre une analyse fine des trajets et une gestion fine des données géolocalisées.

Les essais menés dans différentes situations d'utilisation ont montré la robustesse du système. Le système embarqué est fiable même en environnements difficiles pour la réception GPS, tant que le GNSS GPS est disponible. L’application mobile assure une connexion fiable au module embarqué et gère efficacement les coupures momentanées de connexion, du côté de l’API et de la base de données, un traitement et un stockage optimal des données sont assurés, garantissant d'excellentes performances même avec des volumes élevés ou lors de requêtes spatiales complexes.

J'ai trouvé ce projet très enrichissant j'ai pu gagner des compétences techniques dans plusieurs domaines, comme la programmation embarquée sur Arduino puis le développement mobile avec Flutter, le développement web avec Symfony, JavaScript, et l'administration des bases de données spatiales avec PostgreSQL et PostGIS. J'ai également élargi mes compétences en gestion de projet et en résolution de problèmes.

Ce projet m'a confirmé l'utilité d'une approche méthodologique et pas à pas pour un développement technique complexe puis un découpage clair de l'ensemble du projet en modules indépendants mais liés les uns aux autres a permis un développement plus facile et les différentes étapes de test tout en permettant une évolution du système. Une documentation complète des options techniques et des problèmes rencontrés a également permis de conserver les connaissances acquises, les futures améliorations sont ainsi plus faciles à mettre en œuvre.

Les lendemains du projet : dans un futur immédiat, à distance, aujourd'hui

Le Tracker GPS est déjà fonctionnel et performant ; pourtant il continue d’évoluer. À court terme l’équipe prévoit d’ajouter des notifications instantanées quand un véhicule dépasse une zone prédéfinie ou roule trop vite. Elle cherche aussi à prolonger l’autonomie par des modes de veille intelligents et une communication Bluetooth optimisée.

Une autre piste consiste à remplacer le module actuel qui ne lit que le GPS américain. Un récepteur multi-GNSS compatible avec Galileo GLONASS et BeiDou apporterait plus de précision et une meilleure fiabilité du signal dans les rues denses ou sous un couvert végétal épais.

À moyen terme le dispositif pourrait intégrer de nouveaux capteurs : accéléromètre, gyroscope, température ou humidité. Des algorithmes d’apprentissage analyseraient les trajets et prédiraient les parcours habituels. Une version plus compacte et étanche dotée d’une batterie rechargeable simplifierait l’usage dans des environnements variés.

Sur la durée le Tracker a vocation à devenir une plate‑forme complète de gestion de flotte. Il suivrait plusieurs véhicules en même temps et proposerait une maintenance prédictive fondée sur les données collectées. Des réseaux bas débit comme LoRaWAN ou NB‑IoT remplaceraient le Bluetooth pour gagner en portée tout en réduisant la consommation.

Aujourd’hui cet outil prouve déjà qu’il est possible d’orchestrer un système de géolocalisation sur mesure en combinant électronique embarquée application mobile et interface web. Les compétences acquises forment une base solide pour explorer d’autres défis IoT comme l’énergie solaire embarquée ou la détection d’incident en temps réel par vision embarquée.

Mon regard critique

J'ai adoré me creuser la tête sur la conception ou sur le choix du matériel, ça a été un défi stimulant et une occasion de progresser, j’ai constaté qu’un projet technique complexe exige des compétences solides, mais aussi une vision claire puis une bonne planification et une vraie capacité d’adaptation face aux imprévus. Cette aventure m’a donné une vue d’ensemble sur l’intégration de technologies dont je n'avais pas beaucoup de compétence et sur les contraintes propres à chaque domaine et sur les compromis indispensables pour bâtir un système cohérent et performant.

Ma valeur ajoutée s’est surtout exprimée dans la maîtrise du web. J'ai la chance aussi d'avoir des bases en éléctronique lorsqu'il m'a fallu faire les branchements. Cette vision transverse m’a aidé à concevoir une architecture fluide où chaque composant s’imbrique naturellement avec les autres. J’ai su ajuster la démarche aux contraintes du projet, qu’il s’agisse de consommation énergétique, de fiabilité des communications ou de performances sur les requêtes spatiales.

En prenant du recul je vois qu'il y a eu des points qui auraient pu être abordés différemment comme le prototypage initial aurait eu de la chance d'être plus structuré avec des tests rigoureux des composants avant leur intégration. La gestion des versions du firmware Arduino et de l’application mobile aurait dû l’être plus rigoureusement et j’aurais dû les documenter pour faciliter le suivi de modifications et de bugs et le développement dans un environnement de développement. L’interface utilisateur sur mobile et sur web aurait d’ailleurs bénéficié d’un soin plus important dès le départ et pas tellement d’être révisée petit à petit.

Ce projet illustre bien l’importance de l’apprentissage et de l’esprit d’ouverture aux nouvelles technologies, chaque problème rencontré a été un atout pour approfondir mes connaissances et m’ouvrir à de nouvelles compétences. Cette expérience confirme ma confiance pour réaliser d'autres projets techniques de ce niveau.

Compétences mobilisées

La réalisation du Tracker GPS, m'a permis de consolider plusieurs compétences clés. J'ai mené le développement embarqué sur Arduino, créé l'application mobile sous Flutter puis j'ai bâti le front et back‑end avec Symfony, j'ai aussi administré une base spatiale PostgreSQL PostGIS et mis en place la cartographie interactive avec JavaScript Leaflet.

J'ai renforcé mes savoir‑faire transversaux en communication puis gestion de projet et résolution de problèmes. Le caractère multidisciplinaire du projet m'a poussé à relier des connaissances variées et m'a donné une vue complète des systèmes de géolocalisation.

Ces atouts ont été décisifs de la conception jusqu'à la mise en production. Ils forment aujourd'hui un socle solide pour relever de nouveaux défis techniques ou organisationnels. Pour approfondir un domaine précis, vous pouvez consulter les pages dédiées.

Conclusion

Tracker GPS est simplement un projet personnel pour le moment, mais il fait partie d'un long chemin que je commence à emprunter et qui a pour but d'ouvrir le monde du développement de systèmes embarqués. Cela permettrait de faire évoluer ma carrière professionnelle dans ce monde et notamment l'embarqué embarqué sur les voitures de course.

Les prochaines mises à jour pourraient ajouter des notifications en temps réel pour signaler les anomalies comme par exemple un accident et optimiser l’efficacité énergétique afin d’allonger l’autonomie et de commenter de nouvelles fonctions embarquées comme la détection d’accélérations violentes ou de la mesure de la température.

Avec ce projet j'ai encore plus envie de m'enfoncer dans les compétences Arduino et de trouver tout les systèmes embarqués pour faciliter mon futur projet professionnel.