MicroPython: Mesurer la vitesse de l'air avec le capteur FS3000
Amis de MicroPython... Bonjour,
Cela faisait longtemps que nous n'avions pas eu l'occasion de porter un nouveau pilote sous MicroPython.
Renesas FS3000
Cette fois, nous nous sommes penchés sur le capteur FS3000 de Renesas qui mesure la vélocité de l'air. Capteur que l'on retrouve sur les breakout FS3000 de SparkFun.
![]() |
| Capteur FS3000 de SparkFun |
Ce type de capteur est principalement utilisé dans des systèmes de refroidissement ou de conditionnement d'air. Comme il dispose d'une interface I2C, il est très facile de l'exploiter avec de nombreux microcontrôleur.
Les cartes breakout existent en deux versions:
- FS3000-1015 mesurant des flux jusqu'à 15m/s (54 Km/H).
- FS3000-1005 mesurant des flux jusqu'à 7ms/s (25 km/H).
Pilote MicroPython
Bien que SparkFun propose un pilote MicroPython --ce que je salue-- celui-ci est construit sur une surcouche d'abstraction permettant permettant d'utiliser le capteur avec CircuitPython et MicroPython.
Etant un fan inconditionnel de MicroPython, je pense qu'il est préférable de disposer d'un code qui va droit au but... avec le moins de détour possible! C'est ainsi que l'on maintient une efficacité optimale d'exécution.
J'ai décidé de recréer un pilote à partir du code Arduino. En effet, il à été plus facile de travailler à partir du code Arduino que de suivre la couche d'abstraction CircuitPython/MicroPython.
Le pilote alternatif est disponible sur notre dépôt esp8266-upy/qwiic-ait-velocity .
Brancher sur un Raspberry-Pi Pico
Le schéma suivant indique comment brancher le capteur sur un Pico à l'aide d'un câble Qwiic (qui transporte un bus I2C).
![]() |
| Brancher un capteur FS3000 sur un Raspberry-Pi Pico |
Du code pour le peuple
Après avoir transféré la bibliothèque airspeed sur la plateforme MicroPython, il ne reste plus exécuter l'exemple ci-dessous.
from machine import I2C,Pin from airspeed import FS3000, AIRFLOW_RANGE_15_MPS import time # Raspberry-Pi Pico i2c = I2C( 1, sda=Pin.board.GP6, scl=Pin.board.GP7 ) # Adresse par défaut air_speed = FS3000( i2c ) # air_speed.set_range( AIRFLOW_RANGE_7_MPS ) air_speed.set_range( AIRFLOW_RANGE_15_MPS ) while True: print( "FS3000 lecture brute:", air_speed.read_raw() ) # 125ms acquisition # lecture en metre par seconde, retourne un float de 0 - 7.23 pour FS3000-1005, 0 - 15 pour FS3000-1015 airflow_mps = air_speed.read_mps() if airflow_mps != None: # retourne None en cas d'erreur CRC! print( " m/s:", airflow_mps ) airflow_kmh = airflow_mps*3600/1000 print( " Km/h:", airflow_kmh ) airflow_mph = airflow_mps*2.2369362912 print( " Miles/h:", airflow_mph ) time.sleep( 1 )
Ressources
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.

