nose_electronique.ino

Arduino Nicla Sense ME · Archivo : nose_electronique.ino · Lenguaje : Arduino · Uso : Sentir l’air avec le BME688 (eNose)

El BME688 convierte la placa en nariz electrónica: resistencia del sensor MOX, T/H y sobre todo el IAQ (índice de aire interior) calculado por BSEC en el hub. Un pellizco de nariz digital para vigilar una sala, un sótano o un terrario.

Hardware

Una Arduino Nicla Sense ME (nRF52832, solo BLE) con hub Bosch BHI260AP, BMM150, BMP390, BME688, LED RGB en driver I2C y cargador LiPo. La placa sola. Dejar 10 s de precalentamiento en el primer ciclo (escaneo típico de 10,8 s según el datasheet); ventilar antes de juzgar el IAQ.

Cableado

Sin cableado. No soplar a propósito: el sensor MOX se calibra con el aire ambiente y los vapores de alcohol o disolventes falsean el aprendizaje.

Funcionamiento

BHY2.enable(GAS_IAX) activa el pipeline BSEC del hub; bsec.iaq() da el índice (0-500, menor = más sano), readGasResistance la resistencia bruta del MOX en ohmios.

Ejecución

Programación desde Arduino IDE (core ArduinoCore-mbed); librerías Arduino_BHY2 y Nicla_System; USB por puente serie.

Variantes

Guardar la curva IAQ en CSV para un historial de calidad del aire, disparar ventilación por umbral, o comparar dos salas con dos placas sincronizadas por BLE.

nose_electronique.ino

// BME688 : MOX gaz + T/RH/pression, avec sorties BSEC (IAQ)
// calculées par le hub. Cycle de préchauffe du capteur : ~10 s.

#include "Arduino_BHY2.h"

SensorBSEC bsec(0);   // IAQ / bVOC / CO2-eq calculés par le hub

void setup() {
  Serial.begin(115200);
  BHY2.begin();
  BHY2.enable(BHY2_ENABLE_GAS_IAX);   // index d'air intérieur
  BHY2.enable(BHY2_ENABLE_AMBIENT_TEMPERATURE);
  BHY2.enable(BHY2_ENABLE_RELATIVE_HUMIDITY);
  BHY2.update();
  Serial.println("Préchauffe BME688 (~10 s), puis lecture 1 Hz");
}

void loop() {
  BHY2.update();

  static unsigned long t = 0;
  if (millis() - t > 1000) {
    t = millis();
    Serial.print("IAQ="); Serial.print(bsec.iaq());
    Serial.print("  T="); Serial.print(BHY2.readTemperature());
    Serial.print(" C  RH="); Serial.print(BHY2.readHumidity());
    Serial.print(" %  Rgaz="); Serial.print(BHY2.readGasResistance());
    Serial.println(" ohm");
  }
  delay(5);
}

← Volver a la ficha