IoT, Sigfox et tortue au Hackathon Snootlab 2014

| 6 minutes read

Du 21 au 23 mars a eu lieu l’édition 2014 du Hackathon organisé par Snootlab, sur le thème Internet des Objets (aussi appelé IoT / Internet of Things). Bert Poller et moi (et un invité surprise) avons été volontaires pour y participer.

Rappel : qu’est-ce qu’un hackathon ?

Un hackathon est un rassemblement sur un thème donné (programmation, électronique, etc.) organisé dans le but de réaliser des projets en équipe en un temps limité. Il est possible (et même conseillé) de s’entraider entre équipes, et les projets finis devraient être placés en Open Source / Open Hardware.

Dans le cadre du Hackathon Snootlab, le thème principal (mais pas obligatoire) était organisé autour de leur nouvelle carte Akeru, qui est une carte de développement basée sur un Arduino Uno à laquelle a été ajouté un modem Sigfox.

Carte Akeru

Carte Akeru

Le projet IoT d’ekito

Le projet prévu par Bert et moi était un traceur GPS pour animaux domestiques (gros animaux étant donné la taille de la carte – pensez cheval ou gros chien, pas hamster), avec report de la dernière position sur une carte en ligne. Il est à noter que le traceur GPS n’aurait pas pu envoyer les coordonnées en temps réel, les conditions d’utilisation du réseau Sigfox n’autorisant qu’un message (de douze octets maximum) toutes les dix minutes.

Le projet de secours en cas de problème avec l’idée initiale était un releveur de consommation de compteur EDF via la sortie télé-info, avec envoi des relevés par le réseau Sigfox. Dans ce cas d’utilisation, la précision de dix minutes était largement suffisante.

En regardant les autres projets, tous ceux associés à une carte Akeru étaient aussi des traceurs GPS (pour ballon sonde ou générique).

Premier jour

Le premier jour (premier soir même, le hackathon commençant à 18h00) a permis de découvrir à la fois la carte Akeru et l’API liée, ainsi que Actoboard, le tableau de bord de réception des données Sigfox, développé par Sylvain Wallez, ainsi que l’environnement proche des développeurs, avec sa fontaine de jouvence à bière. Bert et moi avons mis à profit cette soirée pour valider la faisabilité technique du projet (on a dû se faire prêter par la suite un récepteur GPS). Ensuite, on s’est attaqué à la création d’un shield batterie conçu pour rendre le traceur autonome en énergie, ainsi qu’au montage de la carte Akeru (il y a juste à souder les headers latéraux et le connecteur d’alimentation).

Suite à un retard dans l’obtention des informations nécessaires pour créer le compte sur Actoboard et enregistrer la carte Akeru, nous n’avons pas eu le temps de tester rapidement le point de la transmission des données.

Deuxième jour

Le deuxième jour, nous pouvons enfin rentrer dans le vif du sujet. Ayant reçu toutes les informations nécessaires, nous pouvons tester la carte Akeru et valider le format d’envoi de données. La répartition des tâches est simple : Bert s’occupe du serveur web devant recevoir les données et afficher la carte, et moi je m’occupe de la programmation de la carte Akeru pour la gestion du GPS et l’envoi des données au serveur.

Bert arrive rapidement à un prototype fonctionnel du serveur, basé sur du code Q&D (Quick & Dirty), puis se lance dans un refactoring afin de le rendre plus robuste et facilement maintenable.

De mon côté, n’ayant pas de récepteur GPS sous la main, je commence par coder un parseur de trames NMEA, et envoie dans un premier temps les coordonnées de trames codées en dur dans l’application. Par la suite, on me prête un récepteur GPS et à cause de certaines subtilités dans la communication série entre le récepteur et la carte Akeru, je mets à la poubelle tout le code de mon parseur et passe par une bibliothèque externe (taille du programme principal réduite de 75%, si ça ce n’est pas de l’optimisation 🙂 )

En fin de journée, tout fonctionne comme prévu, projet terminé. Le reste de la soirée est passé à documenter le code et les dépôts GitHub associés, et filer un coup de main à un autre participant ayant des soucis de communication GPS, pendant que Bert rentre chez lui retrouver femme et enfants.

Le résultat final est disponible ici : TrackMyPet

Troisième jour

Le troisième jour a été relativement court, mais caractérisé par un invité surprise : Eros, la tortue de Bert. Elle nous a permis de constater que le traceur va nécessiter quelques adaptations pour être utilisé sur de petits animaux.

Sinon, une journée tranquille : Bert s’est occupé du projet de relevé de compteur EDF, quant à moi j’ai fini d’aider le participant mentionné précédemment sur ses soucis de GPS.

Puis en milieu de journée, retour à la maison et repos bien mérité.

Eros, la tortue GPS

Eros, la tortue GPS

Architecture technique de TrackMyPet

Pour les fanatiques des détails, voici un petit point « technical porn » :

  • Le traceur GPS est fait à partir d’une carte Akeru, d’un shield batterie fait maison (une LiPo, un convertisseur de tension de 3,7V à 5V, un interrupteur, une résistance et une LED – le schéma électronique est disponible avec les sources), et d’un récepteur GPS basé sur la puce MTK3339.
  • Le serveur web est une application Java basée sur le framework Play! 2.2, hébergée sur un serveur Heroku. Les données du GPS sont stockées dans un datastore Kinvey.
  • La transmission des données passe par le chemin suivant :
    • Envoi d’un message de douze octets maximum par la carte Akeru (nous n’utilisons que huit octets : quatre pour la latitude, quatre pour la longitude).
    • Réception du message par le backend Sigfox et retransmission telle-quelle vers Actoboard.
    • Réception du message par Actoboard qui le décode pour extraire les deux valeurs des coordonnées GPS, et envoie ces dernières via une requête HTTP POST vers notre serveur Heroku.
    • Réception des données par le serveur Heroku, et stockage de ces dernières dans le datastore Kinvey.
  • En option, une tortue pour test, modèle dit « de Horsfield ».

Les sources du projet

Les sources du projet sont disponibles dans trois dépôts GitHub :

  • hackerz_akeru : le code source pour la carte Akeru, ainsi que le schéma électronique pour les branchements.
  • hackerz-server : le code source pour le serveur web.
  • hackerz_3d : les modèles 3D pour le support de la carte Akeru.

Arnaud Boudou Author: Arnaud Boudou

Développeur Java et mobile (iOS) ; enthousiaste des TIC ; photographe amateur (un jour, peut-être…).

Mes hashtags : #j2ee #objc #raspberrypi #inneedforgadgetry

@boudouarnaud sur Twitter

Like it?  Share  it!

Share Button