Capteur de qualité de l’air SGP30

Ce tutoriel explique comment mettre en oeuvre module Grove capteur de qualité de l’air SGP30 sur bus I2C en MicroPython. La fiche technique du capteur SGP30 de Sensirion est disponible ici. L’interprétation des informations renvoyées par un capteur de qualité d’air tel que le SGP30 nécessite un peu de recul ; d’après cette source :

(Le SGP30) “…retourne donc deux valeurs. Le TVOC qui est la somme de tous les composés organiques volatils (COV) trouvés dans l’atmosphère et l’eCO2. Le eCO2 est un taux de CO2 calculé mathématiquement par le capteur… Ce n’est donc pas une mesure réelle … c’est un indicateur théorique qu’il faut lire avec précaution. En présence de “polluant(s)”, l’indicateur eCO2 risque de s’envoler sans pour autant représenter la teneur réelle en CO2 dans l’atmosphère. Pour connaître tous les seuils, vous pouvez lire ce document de l’INRS.”

Matériel requis

  1. Une carte d’extension de base Grove
  2. La carte NUCLEO-WB55
  3. Un module Grove - VOC and eCO2 Gas Sensor (SGP30)

Le module Grove capteur de qualité de l’air SGP30 :

Grove sgp30

Crédit image : Seeed Studio

Branchez le module sur l’un des connecteurs I2C du Grove base shield.

Le code MicroPython

Les scripts présentés ci-après sont disponibles dans la zone de téléchargement.

Il faut ajouter le fichier sgp30.py dans le répertoire du périphérique PYBLASH.
Editez maintenant le script main.py et collez-y le code qui suit :

# Exemple adapté de https://github.com/safuya/micropython-sgp30/blob/master/
# Objet du script : Mise en oeuvre du module grove I2C capteur de gas COV et CO2
# basé sur le capteur SGP30

from time import sleep_ms
from machine import I2C, Pin
from sgp30 import SGP30

# 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)

# Liste des adresses I2C des périphériques présents
print("Adresses I2C utilisées : " + str(i2c.scan()))

# Instanciation du capteur
sgp = SGP30(i2c)

while True:

	# Temporisation d'une seconde
	sleep_ms(1000)

	# Lecture des valeurs mesurées
	co2eq, tvoc = sgp.indoor_air_quality

	# Affichage formatté des valeurs mesurées
	print("CO2eq = %d ppm \t TVOC = %d ppb" % (co2eq, tvoc))

Sortie sur le port série de l’USB USER

Appuyez sur CTRL+D dans le terminal PuTTY et observez les valeurs qui défilent :


Grove - TH02 sortie


Les unités utilisées sont :

  • ppm : Parties par million. L’acronyme « ppm » signifie « partie par million ». Il s’agit d’une unité de mesure communément utilisée par les scientifiques, notamment pour calculer le taux de pollution dans l’air et plus globalement dans l’environnement. Comme son nom l’indique, le ppm permet de savoir combien de molécules de “polluant” on trouve parmi un million de molécules d’air.
  • ppb : Parties par milliard (le “b” correspond à “billion” en anglais, soit “milliard” en français). Indique donc combien de molécules de “polluant” on trouve parmi un milliard de molécules d’air.