X-NODE / XN21 – BME690 Sensor Ambiental con IA

El X-NODE Environmental AI (BME690) es un módulo que integra el sensor de gas con inteligencia artificial BME690 de Bosch®, capaz de medir compuestos orgánicos volátiles (VOCs), compuestos volátiles de azufre (VSCs), presión barométrica, humedad relativa y temperatura ambiental con un consumo de corriente de hasta 50 µA en modo ultra bajo. Es ideal para integración en dispositivos móviles portátiles o el monitoreo de calidad del aire en interiores y exteriores, sistemas automáticos de intercambio, sistemas de ventilación inteligente y similares.
TABLA DE CONTENIDO
I. ¿Cómo funciona?
El módulo X-NODE Environmental AI (BME690) posee un controlador en hardware integrado con el cual es posible obtener la lectura de diversas variables que proporciona el sensor sin tener conocimientos avanzados de hardware, ya que solo es necesario enviar una serie de comandos en formato ASCII por medio del protocolo de comunicación serial UART, el protocolo I2C o el protocolo SPI, esto permite que el X-NODE sea compatible con cualquier sistema basado en un microcontrolador, microprocesador o equipos industriales. El sensor es capaz de medir presión barométrica, humedad relativa, temperatura ambiental y resistencia del gas, esta información puede utilizarse* medir la calidad del aire interior (IAQ) y para detectar compuestos orgánicos volátiles (VOCs), compuestos volátiles de azufre (VSCs) y gases como monóxido de carbono e hidrogeno.
El X-NODE Environmental AI (BME690) es compatible con el estándar mikroBUS™ de Mikroe® para un uso fácil con un gran ecosistema de kits para desarrollo de hardware, también posee conectores JST compatibles con el estándar Qwiic® de SparkFun® para una comunicación entre diversos módulos y tarjetas de desarrollo por medio del protocolo I2C de manera rápida y sencilla.
*NOTA: Las funciones de IAQ, VOC, VSC y detección de gases requiere el uso de la librería BSEC (Bosch Sensortec Environmental Cluster). Consulte la página del fabricante para obtener más información.
II. Descripción del hardware

Conectores JST compatibles con Qwiic®
Controlador en hardware
Puertos de comunicación UART <> I2C <> SPI*.
Modelo de X-NODE
Tipo de X-NODE
Jumper de selección para la dirección I2C (Cuando está abierto el Address es 0x77 y cuando está cerrado es 0x76)
Jumpers de selección entre protocolo I2C y SPI (Al usar SPI no será posible utilizar el controlador en hardware)
Jumper de habilitación para el pin SPI Chip Select (CS1 <> CS2)
Conectores estándar mikroBUS™
Jumper habilitador para programación del microcontrolador por UPDI
Versión de hardware: R1
Componente principal en el X-NODE
*NOTA: El controlador en hardware utiliza el protocolo I2C, modificar los jumpers soldables para utilizar el protocolo SPI resultará en inhabilitar el protocolo UART.
III. Especificaciones
Tipo
Sensor de gas, medio ambiente, calidad de aire
Aplicaciones
Monitoreo de calidad del aire en interiores y exteriores, sistemas automáticos de intercambio, sistemas de ventilación inteligente, integración en dispositivos móviles portátiles alimentados por baterías, así como proyectos de Internet de las Cosas (IoT), Industria 4.0 y casas inteligentes (Smart Home).
Módulo
Fabricante
Características
Medición de compuestos orgánicos volátiles (VOCs), compuestos volátiles de azufre (VSCs), presión barométrica de 300 - 1100 hPa, humedad relativa de 0 - 100%, temperatura ambiental de -40 a 85 °C y modo de consumo ultra bajo de 50 µA.
Interfaz
UART, I2C
Tamaño
41 x 25.4 x 20.5 mm
Voltaje
3.3 V
IV. Pinout
La siguiente tabla muestra el pinout del X-NODE Environmental AI (BME690) con respecto al estándar mikroBUS™ (este último se encuentra en las dos columnas del centro).

V. Modo de uso
Para un uso fácil y rápido del X-NODE se puede hacer a través de los comandos en formato ASCII que proporciona el controlador en hardware integrado mediante una comunicación serial UART, o de forma nativa a través de protocolo I2C y SPI.
Al usar el protocolo SPI se deshabilita el controlador en hardware por lo que no funcionará con comandos ASCII a través de comunicación UART.
Protocolo UART
Configuración
Velocidad de comunicación: 115,200 bps
Paridad: Ninguna
Bits de datos: 8
Bits de paro: 1
Sintaxis
El protocolo UART permite enviar instrucciones en texto plano ASCII. Cada instrucción se compone del identificador del X-NODE, un comando y un final de línea.
Identificador
El identificador ID, se conforma por el modelo del X-NODE, que puede localizar en el punto 6 del apartado Descripción de hardware y se complementa con un índice, que puede ser una letra del abecedario, por defecto es la letra A, siendo posible configurarlo hasta la letra Z.
El protocolo UART utiliza la interfaz I2C del sensor, por lo que no puede conectar más de un X-NODE Environmental AI (BME690) en el mismo bus, también deberá evitar conectar dispositivos que utilicen la misma dirección (0x77 o 0x76), recuerde que puede modificar la dirección del dispositivo con el jumper ADD.
Si desea utilizar más de un mismo nodo X-NODE Environmental AI (BME690) con el protocolo UART deberá aislar los pines SDA y SCL entre los nodos y asignar un índice único a cada nodo.
También puede hacer uso de la interfaz SPI del sensor, lo que deshabilitará el protocolo UART, utilizando los pines CS1 o CS2 para seleccionar el dispositivo en uso. Para hacer uso de este protocolo deberá portar el API del sensor (disponible en GitHub) al lenguaje de programación que utilice su sistema.

Nota: A partir de este punto se usará el índice predeterminado del X-NODE Environmental AI (BME690) para el resto del manual: XN21A.
Lista de comandos
XN21A?
Verifica si se estableció una comunicación con éxito.
Respuesta: OK
XN21A+V
Obtiene la versión del firmware actual que integra el X-NODE.
Respuesta: XN21A=Versión_FW.Revision_HW
Ejemplo: XN21A=0.1.0.R01
XN21A+ID=(A-Z)
Cambia el index del ID por una letra diferente del abecedario de la A a la Z, la nueva letra debe ser en mayúscula. Una vez modificado, para volver a cambiarlo es necesario colocar el ID con el nuevo index.
Respuesta: OK
Ejemplo de envío: XN21C+ID=H
XN21A+GT
Obtiene el valor de Temperatura del sensor. Retorna con el valor final en °C con dos decimales.
Respuesta: XN21A=VAL
Ejemplo: XN21A=24.36
XN21A+GH
Obtiene el valor de Humedad del sensor. Retorna con un valor relativo (%) de humedad.
Respuesta: XN21A=VAL
Ejemplo: XN21A=68.14
XN21A+GP
Obtiene el valor de Presión barométrica del sensor. Retorna con el valor final en hPa con dos decimales.
Respuesta: XN21A=VAL
Ejemplo: XN21A=778.40
XN21A+GR
Obtiene el valor de la resistencia asociada al gas (H2S) del sensor*. Retorna con el valor de la resistencia ambiental en kOhms.
Respuesta: XN21A=VAL
Ejemplo: XN21A=38.72
*Nota: Las mediciones de resistencia asociada al gas (H2S) utilizan una placa calefactora embebida en el dispositivo. Después de encendido el dispositivo el usuario deberá realizar la lectura de al menos una variable en un intervalo de 1 a 2 segundos hasta que se estabilice el valor de resistencia del gas para obtener mediciones precisas.
Comandos avanzados
XN21A+SLP
Habilita el modo de descanso profundo del dispositivo para reducir el consumo de energía y deshabilitar el driver UART. Si el jumper UPDI está habilitado puede salir del modo de descanso profundo escriba un lógico bajo (0) al pin CS1.
Respuesta: OK
Ejemplo de envío: XN21A+SLP
XN21A+RST
Reinicia el dispositivo, el sensor se reconfigurará bajo los siguientes parámetros:
Oversampling THP = 16X
Calefactor (°C/ms) = 350 / 150
Respuesta: OK Ejemplo de envío: XN21A+RST
Ejemplo UART Arduino Framework
#include "Arduino.h"
float getVariable( const char * command ){
// Limpiamos el buffer
if (Serial2.available()) {
Serial2.read();
}
// Envía el comando
Serial2.print(command);
Serial2.println();
// Espera hasta recibir una respuesta
String variable_value = Serial2.readStringUntil('\n');
// Si la respuesta comienza por el ID
// entonces la comunicación fue exitosa
if (!variable_value.startsWith("XN21A=")) {
Serial.println("Error");
return NAN;
}
// Convierte el valor en ASCII a un valor decimal
return variable_value.substring(variable_value.indexOf('=') + 1).toFloat();
}
void setup() {
// Inicializa el monitor serial
Serial.begin(115200);
// Inicializa la comunicación UART en el puerto MikroBUS
Serial2.begin(115200, SERIAL_8N1, 9, 10);
}
void loop() {
// Obtiene los valores de variables ambientales
// Envía el comando para obtener la temperatura
// Los caracteres \r\n representan los caracteres
// <CR+LF> en el lenguaje de programación C/C++
float temp = getVariable("XN21A+GT\r\n");
// Envía el comando para obtener la humedad
float hum = getVariable("XN21A+GH\r\n");
// Envía el comando para obtener la presión
float press = getVariable("XN21A+GP\r\n");
// Envía el comando para obtener la resistencia
float res = getVariable("XN21A+GR\r\n");
Serial.print("Temp: ");
Serial.print(temp);
Serial.println(" °C");
Serial.print("Hum: ");
Serial.print(hum);
Serial.println(" %");
Serial.print("Press: ");
Serial.print(press);
Serial.println(" hPa");
Serial.print("Gas: ");
Serial.print(res);
Serial.println(" kOhm");
delay(1000);
}Protocolo I2C & SPI
Para poder establecer comunicación con el X-NODE Environmental AI (BME690) es necesario hacerlo de forma nativa con el sensor integrado y con apoyo de la documentación técnica del fabricante, podrás localizar el número de parte al reverso del X-NODE (Punto 13 del apartado “Descripción de Hardware”) además de jumpers para cambiar el address I2C, el pin Chip Select para SPI y seleccionar entre el protocolo I2C y SPI.
VI. Descargas
Última actualización
¿Te fue útil?