i2csensoren
Deutsch   English   Français   

12. CAPTEURS I2C


 

TU APPRENDRAS ICI...

 

comment connecter des capteurs de haute précision au micro:bit via une interface I2C et mesurer la qualité de l'air, la température et l'humidité.

 

 

CAPTEUR DE QUALITÉ DE L'AIR SGP30

 

Le capteur de CO2 SGP30 mesure la concentration de CO2 dans l'air. Lorsque la concentration de CO2 augmente, l'air d'une pièce devient moins frais, ce qui peut entraîner de la fatigue et un risque accru de transmission de virus.

 


Le SGP30 peut être commandé, par exemple, sur brack.ch ou mouser.ch . Le câble de connexion est fourni avec le capteur.

 
 


Avec peu de matériel, tu peux réaliser une station de mesure simple pour surveiller la concentration de CO2 dans ta salle de classe.

 

.

 


Le capteur est connecté au micro:bit à l'aide du câble I2C fourni, par exemple via un mbHub. Le mbHub peut être commandé auprès de TJGroup pour CHF 6.–. Les frais d'expédition sont de CHF 1.– pour la Suisse et de CHF 3.– pour les autres pays. Le mbHub dispose de plusieurs interfaces I2C et peut également être utilisé pour connecter d'autres capteurs et composants électroniques.

La commande s'effectue par e-mail.

 

 

EXAMPLES

 


EXAMPLE 1: Mesurer et afficher la concentration de CO2

Dans ton programme, tu dois d'abord définis comment les valeurs mesurées par le SGP30 sont lues via l'interface I2C (spécifications du capteur).
La fonction getValues() renvoie deux valeurs :
  • La concentration de CO2 en ppm*
  • Les TVOC (composés organiques volatils totaux)*

Les deux valeurs sont affichées dans la fenêtre de sortie avec print(). L'instruction sleep(500) définit l'intervalle entre deux mesures.

 

Programme:

from microbit import *

# sgp---------------------
raw = [0, 0]
buf = [0,0,0,0,0,0]
i2c.write(0x58, bytearray([0x20,0x03]))
sleep(1500) 

def getValues(a=0x58):
    i2c.write(0x58, bytearray([0x20,0x08]))
    sleep(600)
    block = i2c.read(0x58, 6)
    buf = [0,0,0,0,0,0]
    for i in range(0,6):
            buf[i]=block[i]
    for i in range(0,2):
            raw[i]= buf[i*3]
            raw[i]<<=8
            raw[i]|=buf[i*3+1]
    return (raw[0], raw[1])
#------------------------------

while True:
    co2, voc = getValues()
    print ("CO2 = ", co2, "  TVOC = ", voc)   
    sleep(500)
► Copy to clipboard

Après le démarrage du programme, le capteur effectue d'abord son initialisation et renvoie la valeur de CO2 de 400 pendant les 10 premières secondes. Ensuite, les valeurs de CO2 mesurées sont affichées correctement.

  • La teneur en CO2 dans l'air est exprimée en parts per million, abrégé ppm (parties par million). Le capteur SGP30 fournit des valeurs comprises entre 400 et 60 000 ppm. Lorsque la valeur dépasse 1000 ppm, l'air n'est plus considéré comme frais.

  • À l'intérieur des bâtiments, de nombreuses sources émettent des substances polluantes (TVOC), par exemple les lampes, les revêtements de sol et les produits de nettoyage. Le capteur fournit des valeurs TVOC comprises entre 0 et 60 000.


 


Example 2: Capteur de température et d'humidité Sensirion SHT85

 

Sensirion, dont le siège se trouve à Stäfa, en Suisse, est l'un des principaux fabricants de microcapteurs numériques. Le SHT85 mesure la température dans une plage de -40 °C à +105 °C et l'humidité relative dans une plage de 0 à 100 %, les deux valeurs étant fournies avec quatre décimales.

Pour connecter le capteur au micro:bit, tu peux utiliser le kit SHT. Celui-ci comprend :

  • mbHub
  • SensorLink
  • SHT85
  • Câble de connexion
 

Le kit peut être commandé auprès de TJGroup pour CHF 20.–. Les frais d'expédition sont de CHF 1.– pour la Suisse et de CHF 3.– pour les autres pays. Avec ce kit, tu peux également connecter d'autres capteurs et composants électroniques au micro:bit.

La commande s'effectue par e-mail.


Dans ton programme, tu définis comment les données du capteur sont lues via l'interface I2C. La fonctiongetValues()returns two values:
  • La température en °C
  • L'humidité relative en %

Les deux valeurs sont affichées dans la fenêtre de sortie avec print(). L'instruction sleep(500) définit l'intervalle entre deux mesures.

 

Programme:

from microbit import *

# sht-------------------------
def getValues(a = 0x44):
    i2c.write(a, b'\x2c\x06')
    raw = i2c.read(a, 6)
    t, h = (raw[0] << 8) + raw[1], (raw[3] << 8) + raw[4]
    return -45 + (175 * (t / 65535)), 100 * (h / 65535)
#-----------------------------

while True:
   temp, humi = getValues()
   print(temp, humi)
   sleep(500)
► Copy to clipboard

 

 

À RETENIR...

 

Le capteur SGP30 mesure la teneur en CO2 en ppm (parts per million) et fournit des valeurs comprises entre 400 et 60 000. Pour des valeurs inférieures à 1000 ppm, l'air est de bonne qualité. Pour des valeurs supérieures à 1400 ppm, il est recommandé d'apporter de l'air frais dans la pièce. Une concentration élevée de CO2 dans une pièce augmente le risque de transmission de virus.

Le capteur SHT85 mesure la température en °C et l'humidité relative en %. Comme ces capteurs externes ne sont pas pris en charge directement par le module microbit, tu dois insérer dans chaque application le bloc de programme #sgp-------- ou #sht------- correspondant.

Les capteurs sont connectés au micro:bit via un hub. Le mbHub et le SensorLink sont conçus de manière à pouvoir également connecter d'autres capteurs I2C et composants électroniques.

 

 

EXERCICES À RÉSOUDRE

 

 


1.


Réalise un appareil de mesure de la concentration de CO2 dans ta salle de classe. Les valeurs limites suivantes s'appliquent :

  • Moins de 1000 ppm : l'air est frais.
  • De 1000 à 1400 ppm : il faudra bientôt aérer.
  • Plus de 1400 ppm : ouvrir les fenêtres.

Avec les LED de ton micro:bit, tu peux afficher différents symboles correspondant à ces plages de mesure.

Le programme reste enregistré dans le micro:bit. Tu peux donc le débrancher de l'ordinateur et le connecter à une autre source d'alimentation, par exemple une batterie externe (PowerBank).

 
 
2.

Réalise un système de mesure de la température qui émet un signal sonore lorsque la température a augmenté de plus de 2 °C.

 

3.

Mesure simultanément la température avec le capteur de température intégré au micro:bit et avec le capteur SHT85. Compare les résultats.