mercredi 20 novembre 2019

Raspberry Pi: présenter des mesures sous forme de graphique cartésien

Dans cet article, je vous présente comment j'ai pu présenter en temps réel, sous la forme d'un graphique cartésien, les mesures prises par un capteur branché aux broches GPIO du Rasbperry Pi.  Pour ce faire, j'ai utilisé un programme en langage Python, ainsi que la bibliothèque Matplotlib.



Installation de la bibliothèque Matplotlib

Matplotlib est une bibliothèque spécialement conçue pour représenter des données sous forme de graphique dans un programme en Python. Une façon simple de l'installer dans votre Raspberry Pi est d'écrire la commande suivante dans le terminal:

pip install matplotlib

Attention: ça risque d'être très long! Plusieurs dizaines de minutes sur mon Raspberry Pi 2.

Suite à l'installation de Matplotlib, mes scripts ont d'abord refusé de fonctionner sous prétexte que cairocffi n'était pas installé. Après un peu de recherche, j'ai fini par régler le problème en faisant:

sudo apt install libffi-dev
pip install cairoffi
sudo apt-get install python-gi-cairo

(je ne sais pas si chacune de ces manoeuvres est nécessaire, tout ce que je peux dire c'est qu'après avoir fait tout ça, ça s'est mis à fonctionner correctement).

Un exemple de script (données calculées)

Voici un script qui fait apparaître un graphique qui se met à jour à toutes les 500 ms. Pour que tout le monde puisse en faire l'essai sans autre matériel qu'un Rasbperry Pi, les données qui s'affichent sur le graphique sont issues d'un calcul plutôt que d'une mesure effectuée par un capteur.

-
-

La variable temps_pause contient le nombre de millisecondes entre chaque mise à jour du graphique. Vous pouvez évidemment modifier cette valeur selon vos besoins (si ce temps est trop court pour la vitesse de votre Raspberry Pi, le graphique restera vide).

Les données à mettre en graphique s'accumulent dans les variables valeurs_x et valeurs_y.

Grâce à la fonction FuncAnimation de matplotlib, la routine animate s'exécute automatiquement, à intervalle régulier.

Le programme s'interrompt lorsque vous fermez la fenêtre du graphique.



Un deuxième exemple de script (données mesurées)

Pour afficher dans le graphique les données mesurées par un capteur, il s'agit de remplacer le calcul de la ligne 30 par une procédure qui ajoute à la variable valeurs_y la mesure issue du capteur. Évidemment, la syntaxe exacte dépend du capteur que vous utilisez.

Voici par exemple un script qui met en graphique les valeurs mesurées par un module PCF8591 (il s'agit en fait de la tension contrôlée par le potentiomètre intégré au module).

-
-

En tournant lentement le potentiomètre, j'ai obtenu ce graphique:


À lire aussi

Vous trouverez sur cette page la liste de tous les articles du blog portant sur le Raspberry Pi, et sur celle-ci les articles portant sur l'utilisation des microcontrôleurs dans un contexte scientifique.

Yves Pelletier   (TwitterFacebook)


Aucun commentaire:

Enregistrer un commentaire