Accueil > NodeMCU > Utilisation du capteur de température et d’humidité SHT21 en MicroPython

Utilisation du capteur de température et d’humidité SHT21 en MicroPython

Je viens d’écrire une librairie MicroPython pour la gestion du capteur de température et d’humidité SHT21. Celle-ci est accessible en téléchargement à l’adresse https://github.com/itechnofrance/micropython/tree/master/librairies/sht21

La librairie permet d’effectuer les actions suivantes :
– Test de présence du capteur SHT21 sur le bus I2C.
– Possibilité de redémmarrer le capteur.
– Récupère le numéro de série du capteur.
– Lecture de la température.
– Lecture de l’humidité relative.
– Vérification de la tension d’alimentation du capteur.
– Récupération de la résolution des mesures de température et d’humidité.
– Configuration des résolutions des mesures de température et d’humidité.
– Calcul du CRC (checksum) pour les mesures de température et d’humidité.
Bref un gros travail à lire les différents Datasheet du capteur Sensirion SHT21.
Voici un programme d’exemple d’utilisation de la librairie avec l’utilisation de la plateforme de test NodeMCU et écran OLED SSD1306 :
#
# Tester sur NodeMCU Lolin
# Utilisation capteur de temperature SHT21 avec affichage sur OLED SSD1306
#
# Auteur : iTechnoFrance
#
import machine, time, ssd1306
import sht21 # librairie capteur SHT21
# Declaration I2C
# // D1 -> GPIO05 –> SDA
# // D2 -> GPIO04 –> SCL
i2c = machine.I2C(scl = machine.Pin(4), sda = machine.Pin(5), freq=400000)
# Declaration OLED SSD1306
oled = ssd1306.SSD1306_I2C(128, 64, i2c, 0x3c) # 128 x 64 pixels
if (sht21.SHT21_DETECT(i2c)):
    sht21.SHT21_RESET(i2c)
    serial_number_sht21 = sht21.SHT21_SERIAL(i2c)
    temperature = sht21.SHT21_TEMPERATURE(i2c)
    humidite = sht21.SHT21_HUMIDITE(i2c)
    # Resolutions possibles pour les mesures
    # 0 : Humidite=12 bits Temperature=14 bits (par defaut)
    # 1 : Humidite=8 bits  Temperature=12 bits
    # 2 : Humidite=10 bits Temperature=13 bits
    # 3 : Humidite=11 bits Temperature=11 bits
    resolution = 0
    sht21.SHT21_SET_RESOLUTION(i2c, resolution)
    if (temperature == -1) or (humidite == -1):
        oled.fill(0) # efface l’ecran
        oled.text(« Erreur bus i2c », 0, 0)
        oled.show()
    else:
        Str_temperature = « %2.1f » % temperature +  » C »
        Str_humidite = « %2.1f » % humidite +  » % »
        oled.fill(0) # efface l’ecran
        oled.text(serial_number_sht21, 0, 0)
        oled.text(Str_temperature, 0, 10)
        oled.text(Str_humidite, 0, 20)
        if (sht21.SHT21_ALIMENTATION(i2c)):
            oled.text(« Alimentation OK », 0, 30)
        else:
            oled.text(« Alimentation NOK », O, 30)
        oled.text(sht21.SHT21_GET_RESOLUTION(i2c), 0, 40)
        oled.show()
else:
   oled.fill(0) # efface l’ecran
   oled.text(« SHT21 not detected », 0, 0)
   oled.show()
Une petite photo pour montrer le résultat :
 
Ma platine de test a évolué pour l’ajout de ce capteur :
J’ai ajouté 2 résistances de 4.7Ko connectées sur le bus I2C et reliées au 3.3v car maintenant il y a plusieurs périphériques I2C sur le bus.
Catégories :NodeMCU Étiquettes : , ,
  1. Aucun commentaire pour l’instant.
  1. No trackbacks yet.

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

%d blogueurs aiment cette page :