dimanche 25 octobre 2020

Mesure d'une distance avec télémètre laser VL53L1X et Raspberry Pi

J'ai déjà eu l'occasion de parler du télémètre laser VL53L1X il y a quelques mois: je l'avais alors utilisé avec une carte Arduino.  Il s'agit d'un dispositif qui mesure avec une assez bonne précision la distance d'un obstacle situé à 4 mètres ou moins, grâce à un laser infrarouge de type VCEL.

Cette fois, je l'utilise avec un Raspberry Pi et un programme en Python.


Connexions au Rasbperry Pi

Mon module VL53L1X a été conçu par la compagnie Waveshare.  Sparkfun et Pololu offrent également leur propre module à base de VL53L1X, j'imagine qu'ils se branchent de la même façon.

Le module comporte 6 connecteurs, mais je n'en ai utilisé que 4:
  • VCC: Branché à une sortie 3,3 V du Raspberry Pi (broche 1)
  • GND: Branché à une broche GND du Raspberry Pi (broche 6)
  • SDA: Branché à la broche SDA1 du Raspberry Pi (broche 3)
  • SCL: Branché à la broche SCL1 du Raspberry Pi (broche 5)
  • SHUT:  "shutdown control". Je ne l'ai pas utilisée.
  • INT:  "interrupt output". Je ne l'ai pas utilisée.

Installation de la bibliothèque de Sparkfun

Sparkfun a mis au point un module Python; pour l'utiliser avec Python 3, il s'agit de taper cette commande dans le terminal:

sudo pip3 install sparkfun-qwiic-vl53l1x


Exemple de script #1

Voici un premier script qui affiche la distance en millimètres.

-

-


Exemple de script #2

Ce deuxième script utilise tkinter pour afficher la distance dans une fenêtre plus esthétique.


-

-

La précision est excellente pour un objet situé à quelques dizaines de centimètres (la mesure varie d'environ 5 mm pendant que l'objet demeure immobile). Pour des objets situés à 2 mètres, l'imprécision peut être de quelques centimètres.


Yves Pelletier (Twitter, Facebook)


samedi 17 octobre 2020

Balance à base de Raspberry Pi


Je vous ai récemment présenté ma balance constituée d'une cellule de charge et d'un module HX711. Après l'avoir testée avec succès avec une carte Arduino Uno, je me suis amusé, cette fois, à la brancher à un Raspberry Pi.

Assemblage de la balance

La cellule de charge est vissée à deux plaques de façon à former un profil qui rappelle la lettre "S".  Au besoin, vous trouverez quelques photos supplémentaires dans mon article précédent.


Connexion de la cellule de charge au module HX711

Le module HX711 comporte 6 connecteurs servant à brancher la cellule de charge (E+, E-, A-, A+, B-, B+), et quatre connecteurs servant à l'alimentation et à la communication avec le Raspberry Pi (GND, DT, SCK, VCC).


La cellule de charge est branchée au module HX711 de la façon suivante:

  • Fil rouge: E+
  • Fil noir: E-
  • Fil blanc: A-
  • Fil vert: A+


Connexion du module HX711 au Raspberry Pi

J'ai branché le module HX711 au Raspberry Pi de cette façon:

  • GND du HX711: GND du Raspberry Pi
  • DT du HX711: broche GPIO 5 du Raspberry Pi
  • SCK du HX711: broche GPIO 6 du Raspberry Pi
  • VCC du HX711: sortie 3,3 V du Raspberry Pi

Installation de la bibliothèque de tatobari

Pour faciliter la programmation en Pyhton, j'ai téléchargé cette bibliothèque sur le github de Tatobari.

Un script minimaliste

Basé sur le script example.py, fourni avec la bibliothèque, le script ci-dessous accomplit le strict minimum, soit afficher la masse à chaque demi-seconde.


Pour calibrer ma balance, j'ai d'abord utilisé "1" comme paramètre à hx.set_reference_unit() (ligne 23 du script), puis j'ai placé une masse connue sur le plateau de la balance. J'ai ensuite divisé la mesure affichée par la masse, ce qui m'a donné 382,6, qui est devenu le nouveau paramètre de hx.set_reference_unit().

Par exemple: 
  • J'exécute le script avec hx.set_reference_unit(1).
  • Lorsque la balance est prête, je place une masse de 200 grammes sur le plateau.
  • Le programme affiche 76520.
  • Je calcule 76520/200, ce qui donne 382,6.
  • J'exécute à nouveau le script, mais avec hx.set_reference_unit(382.6).
  • La masse s'affiche correctement en grammes.
-

-

Une interface grahique avec Tkinter

Pour faire plus joli, j'ai aussi programmé cette deuxième version.



-

-

À lire également:


Yves Pelletier (Twitter, Facebook)