Pytelemetry
Pytelemetry vous permet de faciliter le développement d'applications embarqués, telles que Arduino, Mbed, etc.
Pytelemetry c'est :
- Un protocole de communication tolérant aux erreurs, disponible en C et en Python
- Une puissante interface en ligne de commande pour, depuis un pc, contrôler votre application embarquée, récupérer de la télémétrie dessus, l'afficher dans des graphes ouverts à la volée, et plus encore.
Objectifs
Pytelemetry est fait pour vous si vous :
- avez besoin de donner des ordres a distance à une application embarquée
- avez besoin de configurer des paramètres à distance
- avez besoin de récupérer des données depuis votre ordinateur
- utilisez
printf
pour debugger (et ça commence gentiment à vous taper sur les nerfs de compiler et recompiler) - souhaitez affiner les réglages d'une application de manière rapide
- visualiser à distance et en temps réel des données sur l'application embarquée
Pour tout ça, Pytelemetry est très efficace.
Par exemple, le code pour lire les données des trois canaux de l'accéléromètre et la valeur du slider capacitif de la carte NXP KL25Z prends moins de 40 lignes de code.
Et les données reçues côté ordinateur peuvent êtres affichées dans un graphe à l'aide d'une seule commande. Les données du slider sont envoyées sous le nom touch
, d'où la commande (… attention, suspense)
1 | :> plot touch |
Une voiture radiocommandée contrôlée a distance peut être codée en moins de 100 lignes de code.
Installation et Contribution
Par souci de modularité, le projet est divisé en trois dépôts github.
- Le protocole de communication, implémenté en C (pour l'application embarquée), nommé
Telemetry
- dépôt - Le même protocole de communication, implémenté en Python (pour les applications PC), nommé
Pytelemetry
- dépôt - - La ligne de commande
Pytelemetrycli
- dépot -
Les packages python sont sur le registre officiel PyPi et peuvent donc s'installer, une fois python installé, en tapant une seule commande dans un terminal. Par exemple pour Pytelemetry
1 | pip install pytelemetry |
Il y a quelques prérequis pour l'installation de la ligne de commande, le README contient toutes les informations régulièrement mises à jour.
L'installation a été validée sous Windows et Mac OS, si une âme charitable souhaite tenter sous Linux j'en serais très reconnaissant
Côté application embarquée, pour l'instant je supporte de manière officielle la plateforme ARM Mbed, ce qui signifie que Pytelemetry peut être utilisé pour l'instant sur 85 cartes différentes
Une petite préférence personnelle pour la NXP KL25Z qui coute 12$, avec un solide microcontrôleur ARM et une flopée de capteurs déjà sur la carte.
Le support des Arduino est prévu très prochainement, dés que j'aurais remis ma main sur une de ces bestioles.
Les instructions avec et sans Mbed sont sur le Wiki qui est encore en chantier mais va s'améliorer progressivement. Il est aussi possible de me contacter, pour cela lisez la suite.
Alternatives
Le cœur de l'application, la ligne de commande capable d'ouvrir des graphes et de communiquer avec l'application embarquée, n'a à ma connaissance, aucune alternative directe. Et ce n'est pas faute d'avoir cherché. La seule chose qui s'en rapproche, c'est l'outil Freemaster.
Les différences sont les suivantes :
- Supporte uniquement les plateformes NXP
- Pas open-source
- Tres intrusif (les écritures de variables sont faites directement dans la memoire)
- Limité a lire seulement 8 variables
- Pas de support pour les structures de données complexes, telles que les tableaux, structures hiérarchiques
Pour le protocole de communication, eh bien, il est possible de trouver comme alternative tout protocole point-à-point de type PubSub. Par contre, il est je pense difficile de trouver une implémentation totalement testée, avec un système de build portable et pouvant être intégrée dans n'importe quelle nouvelle plateforme avec 4 lignes de code.
Bonus pour les lecteurs courageux
Si vous avez lu jusque là, bravo !
Pour les motivés qui veulent tester cet ensemble d'outils, ou contribuer au projet, vous pouvez me contacter sur le gitter du projet ou observer l'avancement du développement sur le waffle.io. Voire vous-assigner un ticket et contribuer au code vous même !
Si jamais vous avez fait une démo sympa, n'hésitez surtout pas à m'en parler ou à l'ajouter vous même à la liste.
Happy coding !