Mise en œuvre du capteur de température et d’humidité relative HTS221
Cet exemple montre comment mesurer la température (en degrés Celsius) et l’humidité relative (en %) de l’air ambiant toutes les secondes à l’aide du capteur MEMS HTS221 de STMicroelectronics.
Matériel requis
- La carte NUCLEO-WB55
- Une carte d’extension I2C équipée du capteur MEMS HTS221 (par exemple la X-NUCLEO-IKS01A3)
Le code MicroPython
Vous pouvez télécharger les scripts MicroPython de ce tutoriel (entre autres) en cliquant ici.
Le fichier hts221.py est la bibliothèque contenant les classes pour gérer ce capteur. Il doit être copié dans le répertoire du disque USB virtuel associé à la NUCLEO-WB55 : PYBFLASH.
Éditez maintenant le script main.py et copiez-y le code qui suit :
# Objet du script :
# Mesure la température (en degrés celsius) et l'humidité relative (en %) de l'air ambiant toutes les secondes
# Affiche la température et l'humidité sur le terminal de l'USB USER
# Allume ou éteint les LED de la carte selon la température
from machine import I2C # Pilote du bus I2C
import hts221 # Pilotes du capteur
from time import sleep_ms # Pour temporiser
# On utilise l'I2C n°1 de la carte NUCLEO-WB55 pour communiquer avec le capteur
i2c = I2C(1)
# Pause d'une seconde pour laisser à l'I2C le temps de s'initialiser
sleep_ms(1000)
# Initialisation du capteur de température et d'humidité relative
sensor = hts221.HTS221(i2c)
# Initialisation des trois LED de la carte
led_blue = pyb.LED(1)
led_green = pyb.LED(2)
led_red = pyb.LED(3)
while True:
# Temporisation d'une seconde
sleep_ms(1000)
# Mesure de la température et de l'humidité
temp = sensor.temperature()
humi = sensor.humidity()
# Affichage des données au format "nombre à virgule avec 1 décimale"
print("Température : % .1f °C, Humidité relative : % .1f %% " % (temp, humi), end ='')
# S'il fait chaud
if temp > 25 :
# On allume la LED rouge
led_red.on()
# Affichage le ressenti dans le terminal série
print("(Chaud)")
# On éteint les deux autres LED
led_green.off()
led_blue.off()
# Si la température est agréable
elif temp > 16 and temp <= 25 :
led_green.on()
print("(Confortable)")
led_red.off()
led_blue.off()
# S'il fait froid
else:
led_blue.on()
print("(Froid)")
led_red.off()
led_green.off()
Vous pouvez à présent lancer le script avec la combinaison de touches CTRL + D dans le terminal série et observer les données de température et d’humidité mesurées par le capteur, ainsi que le comportement des LED lorsque la température change :