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:

pip3 install matplotlib

J'ai aussi eu besoin d'installer gi cairo:

sudo apt-get install python3-gi-cairo

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)


samedi 16 novembre 2019

Écran couleur SPI ST7735 et carte STM32

Je vous présente aujourd'hui un petit tuto sur l'art de piloter un écran couleur SPI ST7735 (128 X 160 pixels) au moyen d'une carte STM32 (Nucleo ou Blue Pill, par exemple) que nous programmerons au moyen de l'IDE Arduino.


(Si vous n'avez pas l'habitude de programmer une carte STM32 avec l'IDE Arduino, il pourrait être utile de consulter ce précédent billet qui explique comment ajouter les cartes STM32 grâce au gestionnaire de cartes.)

Installation des bibliothèques GFX et ST7735 d'Adafruit

Si ce n'est pas déjà fait, il faut installer les plus récentes version de la bibliothèque Adafruit GFX et de la bibliothèque Adafruit ST7735. Le plus simple est de passer par le gestionnaire de bibliothèque.




Connecteurs de l'écran

Mon écran ST7735 comporte 16 connecteurs, mais seulement 9 d'entre eux sont utiles pour faire apparaître une image sur l'écran.

4 connecteurs servent à l'utilisation du lecteur de carte SD, au verso de l'écran (je n'utilise pas ce lecteur dans le présent article), et 3 connecteurs  identifiés par la mention NC ne sont pas connectés à quoi que ce soit.






Connexions à la carte Nucleo

Pour utiliser l'écran avec mon Nucleo F030R8, j'ai utilisé les connexions suivantes:
  • Broche GND de l'écran - Broche GND du Nucleo
  • Broche VCC de l'écran - Broche 5 V du Nucleo
  • Broche RESET de l'écran - Broche PA9/D8 du Nucleo
  • Broche AO de l'écran - Broche PA10/D2 du Nucleo
  • Broche SDA de l'écran - Broche PA7/D11 du Nucleo
  • Broche SCL de l'écran - Broche PA5/D13 du Nucleo
  • Broche CS de l'écran - Broche PA8/D7 du Nucleo
  • Broche LED+ de l'écran - Broche 3V3 du Nucleo
  • Broche LED- de l'écran - Broche GND du Nucleo



Connexions à la Blue Pill (STM32F103C8T6)

Pour utiliser l'écran avec ma Blue Pill, j'ai utilisé ces connexions:
  • Broche GND de l'écran - Broche G de la Blue Pill
  • Broche VCC de l'écran - 5 V *
  • Broche RESET de l'écran - Broche A9 de la Blue Pill
  • Broche AO de l'écran - Broche A10 de la Blue Pill
  • Broche SDA de l'écran - Broche A7 de la Blue Pill
  • Broche SCL de l'écran - Broche A5 de la Blue Pill
  • Broche CS de l'écran - Broche A8 de la Blue Pill
  • Broche LED+ de l'écran - Broche 3.3 de la Blue Pill
  • Broche LED- de l'écran - Broche G de la Blue Pill
* Dans les faits, puisque ma Blue Pill était alimentée en 3,3 V, j'ai branché cette broche de l'écran à une sortie 5 V de mon programmateur ST-Link. Notez aussi que certains modèles d'écrans nécessitent une alimentation de 3,3 V, et qu'il est possible de retirer un pont de soudure pour que le modèle 5 V devienne un modèle 3,3 V.

Exemple de sketch

Voici, pour finir, un sketch qui montre les principales possibilités de la bibliothèque GFX: affichage de texte, dessin de différentes formes géométriques, affichage d'une image bitmap, etc.


----
---

À lire aussi

Si vous préférez, il est possible de contrôler cet écran avec un Arduino , un Raspberry Pi Picoun ESP32 ou un ESP8266.

Vous trouverez sur cette page une liste de projets réalisés avec des cartes STM32 (programmées avec l'IDE Arduino ou avec mbed), comme par exemple le contrôle d'un écran OLED SH1106 ou d'un afficheur LCD 2 X 16.

Yves Pelletier   (TwitterFacebook)