Balise de localisation alimentée sur piles utilisant SigFox – Intégration du GPS (8)

Dernière minute : pour accéder à des informations plus à jour, vous pouvez désormais suivre en temps réel l’actualité de nos balises connectées sur notre nouveau site techno wwww.philoc.fr. Bonne visite, et merci pour votre intérêt. Phil.

Priorité de l’intégration :la précision de la localisation

La précision de la géolocalisation intrinsèque à sigfox ne permettant pas d’atteindre mes objectifs, j’ai accordé ma priorité à l’intégration de la fonction GPS, plutôt qu’à la basse consommation, pour le premier temps en tout cas..

Je n’ai donc pas encore mis en œuvre les fonctions d’endormissement ni du processeur SAM ni du module GPS.

J’ai choisi un module GPS équipé du circuit u-blox neo-6m, alimenté sous 3.3V, et ainsi compatible du fonctionnement du SAM en 3.3V (pas besoin de level shifter sur la liaison UART).

Je vous en livre en vrac les grandes lignes avant le départ en vacances. Les travaux reprendront à la rentrée mais je trouve les premiers résultats conformes à mes attentes.

Liaison UART sur le mkrfox1200 : Serial1 sans SoftwareSerial

La plupart des articles traitant de l’intégration du module GPS u-blox neo-6m recommandent deux librairies:
– SoftwareSerial
– tinyGPS

Pour commencer testons l’UART en rebouclant TX sur RX : on vérifiera en boucle que ce l’on écrit, on le relit.

Je ne suis pas arrivé à obtenir une version de SoftwareSerial compatible su circuit SAM et du mkrfox1200.

Quà celà ne tienne, j’ utilise directement l’objet Serial1 (avec des commandes cousines de SerialUSB) pour piloter l’UART. Cela fonctionne tout de suite

Décodage des informations GPS avec tinyGPS

C’est le boulot de tinyGPS, et il le fait très bien. Mieux que NeoGPS, qui m’a généré des erreurs de compilation.
La bonne surprise, c’est que tinyGPS n’est pas adhérent à SoftwareSerial et que les exemples donnés s’adaptent très facilement aux primitives Serial1.

Sans rien connaître au GPS, on obtient le positionnement GPS très facilement, avec les traces en boucle sur la liaison USB.

Intégration GPS et sigfox : remontée de la localisation sur le backend sigfox

J’ai passé beaucoup de temps à tester la manière de structurer mes deux valeurs de test – la latitude et la longitude – au niveau des messages sigfox. Etant donné que les informations du type de structure disparaissent au niveau du backend – où que je ne les ai pas vues – j’ai déclaré mes deux variables en tant qu’union des trois types : flottant, entier long, chaîne d’octets … et c’est sous forme d’une chaîne de 4 octets par variable que je constitue mes messages sigfox.

Attention, l’octet en tête du message est l’octet de poids le plus faible …

J’ obtiens ainsi des messages sur le backend sigfox, mais dans tous les cas de format choisi, ils n’y sont visibles  que comme une chaîne d’octets … inexploitable.

D’où le besoin de remonter les messages vers mon serveur web pour un traitement ultérieur …

Comme mon premier callback vers email, et celui lié à la géolocalisation intrinsèque à sigfox ne sont plus d’actualité, j’ai construit un callback basé sur le POST, que j’ai réussi après efforts et temps passé à faire fonctionner, de façon encore très très approximative.

A chaque message remonté au backend, le callback envoie un POST HTTP, qui est configuré pour réveiller un fichier PHP en racine de mon site WEB.

Ne disposant que de très peu de documentation ni d’exemples chez sigfox, j’ai eu du mal à paramétrer le callback, pour que ma fonction PHP puisse manipuler les variables, que je me suis limité à stocker dans un fichier au format CSV… c’est là que j’ai vu que mes latitude et longitude se retrouvaient affichées en format flottant, à condition d’avoir bien attaché le type float32 dans les menus de configuration du callback, et pour qu’il ait un ordre des octets correct, j’ai effectivement croisé l’ordre des octets à la source, sur le mkrfox1200, lors de la transition entre tinyGPS et sigfox.

Restera encore à faire à la rentrée, mais la chaîne d’acquisition fonctionne de bout en bout (matériel et logiciel), et c’est déjà une bonne chose. On peut même utiliser le module en se contentant de l’alimenter en USB – sans atelier Arduino IDE couplé – mais pour celà il faut désactiver tous les appels  de traces sur la liaison USB, bien sûr.

Je documenterai un peu plus tard mes étapes de progression, et je citerai les très bon sites qui m’ont été utiles ; mais vous pouvez me contacter en attendant, c’est le but visé dans cet article écrit à la hâte.

Appel à concours

Si un habitué de WordPress m’aide à trouver une extension pour l’affichage de ma position en temps réel sur une carte Google Map, à partir des données collectées depuis le backend sigfox, je suis preneur.

J’ai déjà obtenu le zoom Google Maps sur ma maison, en important le fichier CSV alimenté par les callbacks. Mais une visualisation en temps réel, ça serait plus efficace !

Voici le site utilisé : http://www.gpsvisualizer.com.

Merci d’avance pour vos tuyaux.

Phil

Le 1 juillet 2017.

 

 

A propos philgeek

Fan de technologies

Laisser un commentaire