🛠 Lire température et gaz avec le BME688

Arduino Nicla Sense ME · debutant · Schéma : IMG-nicla-sense-me-debutant-3-niclasense-lecture-bme688.svg — Nicla Sense ME en gros plan avec les puces BME688 et BHI260AP mises en évidence et flèches vers un petit graphique température/gaz affiché sur l'ordinateur en série

Objectifs

Lire les capteurs d'environnement du Nicla Sense ME via la bibliothèque Arduino_BHY2. Point important, source de nombreuses erreurs sur les forums et les fiches tierces : cette carte n'embarque pas de BME680 mais un BME688 (U6), un capteur Bosch de nouvelle génération à gaz sensible (eNose) qui mesure aussi température, humidité et pression ; il n'est pas lu directement en I²C bit-bang comme sur un shield classique, mais servi par le hub de capteurs BHI260AP qui tient rôle de maître de bus. On passe donc par des capteurs virtuels identifiés par SENSOR_ID_TEMP (ID 128) et SENSOR_ID_GAS (ID 131), et par la pompe à messages BHY2.update qu'il faut appeler en continu.

Matériel

Code complet

#include "Arduino.h"
#include "Arduino_BHY2.h"

Sensor temp(SENSOR_ID_TEMP);   // ID 128 : temperature du BME688
Sensor gas(SENSOR_ID_GAS);     // ID 131 : résistance gaz du BME688

void setup {
  Serial.begin(115200);
  while (!Serial);
  BHY2.begin;    // démarre l'interface avec le hub BHI260AP
  temp.begin;
  gas.begin;
}

void loop {
  static auto printTime = millis;
  BHY2.update;   // OBLIGATOIRE : pompe les données du hub
  if (millis - printTime >= 1000) {
    printTime = millis;
    if (temp.dataAvailable) {
      Serial.println(String("Temperature : ") + String(temp.value, 2) + " C");
      temp.clearDataAvailFlag;
    }
    if (gas.dataAvailable) {
      Serial.println(String("Gaz : ") + String(gas.value, 0) + " ohms");
      gas.clearDataAvailFlag;
    }
  }
}

Vérification attendue

Une ligne de température et une ligne de résistance de gaz s'affichent chaque seconde. Soufflez sur la carte ou approchez-la d'une source de chaleur : la température bouge en quelques secondes. La résistance du gaz met plusieurs minutes à se stabiliser à la mise en route (rodage de la couche oxyde métallique, cycle de mesure typique 10,8 s) ; des valeurs très élevées au début sont normales.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels