Ce module Grove est basé sur le capteur infrarouge MH-Z16B et mesure le niveau de Dioxyde de carbone (CO2) avec une grande sensibilité et une grande résolution. Il communique avec un microcontrôleur via une liaison série (UART).

Caractéristiques :

    • Alimentation 4,5 à 6 Vcc
    • Plage de mesure 0 à 2000 parties par million 
    • Précision 200 ppm
    • Résolution 1 PPM pour 0 à 2000 PPM


    • Temps de réponse < 90s
    • Temps de préchauffage 3 min
    • Température de service 0 à 50°C
    • Humidité de service 0% ~ 90% HR

Le dioxyde de carbone (CO2), naturellement présent dans l’atmosphère, est une molécule produite par l’organisme humain au cours de la respiration. Sa concentration dans l’air intérieur des bâtiments est liée à l’occupation humaine et au renouvellement d’air, et est un indicateur du niveau de confinement de l’air.


La concentration en CO2 dans l’air intérieur est l'un des critères qui fondent la réglementation en matière d'aération des locaux. 

Les valeurs limites réglementaire ou normative actuelles varient usuellement entre 1000 et 1500 ppm. Elles s’appliquent aux bâtiments scolaires, bâtiments résidentiels et bureaux et n’ont pas de signification quant à la qualité sanitaire de l’air intérieur (source: ANSES)


Références :  350~450 ppm :  Environnent extérieur en général, 350~1000 ppm : Air frais et respiration naturelle,  1000~2000 ppm :Air stagnant et endormissement



Télécharger la bibliothèque  : pi_pico_co2_grove.zip 

Ce script est adapté du site https://stm32python.gitlab.io/fr/docs/Micropython/grove/mhz16


Installer la bibliothèque sur la Raspberry Pi Pico  (voir le tutoriel)


Raspberry Pi Pico MicroPython dioxyde de carbone CO2 Grove

Programme qui permet de mesurer le niveau de dioxyde de carbone


from pi_pico_co2_grove import *
from machine import Pin, UART
from time import sleep_ms


# Initialisation liaison série
uart0 = UART(0, baudrate=9600)                                        # Création d'un objet uart0
uart0.init(9600, bits=8, parity=None, stop=1, tx=Pin(0), rx=Pin(1) )  # paramètres de la liaison série

# Correction décalage du thermomètre (dépend du module/capteur)
TEMP_OFFSET = const(5)

# Instance du capteur
sensor = MHZ16(uart0, temp_offset = TEMP_OFFSET)

# Doit-on recalibrer le capteur ?
calibrate = False

# Doit-on préchauffer le capteur ?
preheat = False

# Démarrage de la calibration (dans une pièce aérée ou à l'extérieur)

if preheat:
    print("Préchauffe (5 minutes)")
    sensor.preheat()

if calibrate:
    print("Calibration\n")
    sensor.calibrate()

# Seuil de détection haut du capteur (ppm)
THRESHOLD = const(2000)

while True:
    # Lance une mesure
    (temp_celsius, co2_ppm) = sensor.measure()

    # Si les valeurs remontées sont positives
    if temp_celsius != -1 and co2_ppm != -1:
        # Affiche  la température et la concentration de CO2
        print("Temperature : %d °C" %temp_celsius)

        if co2_ppm < THRESHOLD:
            print("Concentration en CO2 : %d ppm\n" %co2_ppm)
        else:
            print("Concentration en CO2 > %d ppm\n" %THRESHOLD)

    else:
        print("Problème de mesure")

    # Temporisation de cinq secondes
    sleep_ms(5000)



Créé avec HelpNDoc Personal Edition: Générateur de documentation et EPub gratuit