🛠 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

Objetivos

Leer los sensores de entorno del Nicla Sense ME mediante la biblioteca Arduino_BHY2. Punto importante, fuente de numerosos errores en los foros y en fichas de terceros: esta tarjeta no incorpora un BME680, sino un BME688 (U6), un sensor Bosch de nueva generación sensible a gases (eNose) que también mide temperatura, humedad y presión; no se lee directamente mediante I²C bit-bang como en un shield clásico, sino que es gestionado por el hub de sensores BHI260AP, que actúa como maestro del bus. Por lo tanto, se accede a través de sensores virtuales identificados por SENSOR_ID_TEMP (ID 128) y SENSOR_ID_GAS (ID 131), y mediante la cola de mensajes BHY2.update, que debe llamarse continuamente.

Material

Código completo

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

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

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

void loop {
  static auto printTime = millis;
  BHY2.update;   // OBLIGATOIRE : pompe les donnees 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;
    }
  }
}

Verificación esperada

Se muestra una línea de temperatura y una línea de resistencia de gas cada segundo. Sople sobre la tarjeta o acérquela a una fuente de calor: la temperatura cambia en pocos segundos. La resistencia del gas tarda varios minutos en estabilizarse al encenderse (rodaje de la capa de óxido metálico, ciclo de medición típico de 10,8 s); los valores muy elevados al principio son normales.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales