El sensor BME280 de Bosch Sensortec mide temperatura, humedad y presión atmosférica en un chip de 2,5 x 2,5 mm. Nació como evolución del BMP180, del que hereda la medición de presión y temperatura, y le suma la humedad. AdriRobot lo examinó en detalle, desde el esquemático del módulo hasta una prueba con un ESP32-C3 SuperMini y una pantalla OLED, según recogió Open Electronics.

¿Qué mide el sensor BME280?

El BME280 es un sensor MEMS digital. Integra los elementos que convierten las magnitudes físicas en valores digitales, así que el microcontrolador solo tiene que configurarlo y leer los datos en el bus. Tiene dos interfaces. I²C es la más cómoda con Arduino y ESP32. SPI sirve cuando el bus I²C no está disponible o cuando se necesita más rendimiento.

La presión también se usa para estimar la altitud. El sensor, eso sí, solo mide presión. La altitud la calcula el microcontrolador con una fórmula que usa una presión de referencia, de modo que el resultado depende de esa referencia, y el clima la hace variar.

  • alimentación del módulo, de 1,8 a 5 V;
  • temperatura, de -40 a +85 °C, con resolución de 0,01 °C y precisión de ±1 °C;
  • humedad, de 0 a 100% HR, con resolución de 0,008% y precisión de ±3%;
  • presión, de 300 a 1.100 hPa, con resolución de 0,18 Pa y precisión típica de ±1 hPa;
  • dirección I²C, 0x76 con SDO en bajo y 0x77 con SDO en alto;
  • dimensiones, cerca de 13,3 x 10,6 x 3,5 mm, con un peso de 0,5 g.

BME280, BMP180, BMP280 y BME680

Bosch fabrica toda una familia de sensores barométricos. El BMP180 y el BMP280 miden presión y temperatura. El BME280 agrega la humedad, por eso se usa tanto en estaciones meteorológicas, y a 1 Hz consume cerca de 3,6 µA.

El BME680 llega a cuatro datos. Además de temperatura, presión y humedad, detecta una medición relacionada con los compuestos orgánicos volátiles y se usa para evaluar la calidad del aire.

SensorPresiónTemperaturaHumedadCompuestos orgánicos volátiles
BMP180SíSíNoNo
BMP280SíSíNoNo
BME280SíSíSíNo
BME680SíSíSíSí

El esquemático del módulo

El módulo no trae solo el sensor de Bosch. El esquemático se divide en tres partes, la alimentación, la conversión de nivel lógico del I²C y el circuito del sensor.

Un regulador LDO 662K entrega los 3,3 V del sensor, con tres condensadores de filtro. Dos conversores de nivel con transistores BSS138, integrados en un chip 2N7002DW, adaptan las líneas SDA y SCL. Cada lado tiene sus propias resistencias de pull-up de 10 kΩ.

Gracias a ese circuito, el módulo también se puede conectar a microcontroladores que trabajan con voltajes más altos. El sensor nunca recibe ese voltaje en sus pines.

El pin SDO elige la dirección. A tierra es 0x76 y a 3,3 V es 0x77. En el módulo la elección se hace con tres pads, donde hay que poner una gota de soldadura, y por defecto la conexión va a tierra. Por eso dos BME280 en el mismo bus necesitan direcciones distintas.

Prueba con ESP32-C3 SuperMini y pantalla OLED

El sensor y la pantalla comparten las líneas SDA y SCL (diagrama de AdriRobot)

En la prueba, el BME280 y una pantalla OLED de 0,96 pulgadas SSD1306 comparten el bus I²C del ESP32-C3 SuperMini. Tienen direcciones distintas, así que conviven sin problemas. Las conexiones usan el GPIO 8 como SDA y el GPIO 9 como SCL.

Después hacen falta las bibliotecas Adafruit BME280 (versión 2.3.0 en el proyecto) y Adafruit SSD1306 (versión 2.5.17). El Library Manager instala también las dependencias Adafruit BusIO, Unified Sensor y GFX. En el Arduino IDE se elige la placa ESP32C3 Dev Module. AdriRobot recomienda además activar las opciones USB CDC On Boot y Erase All Flash Before Sketch Upload.

El sketch comprueba que la pantalla y el sensor respondan. Luego, cada dos segundos, lee temperatura, humedad y presión. También calcula la altitud con 1.013,25 hPa como referencia, y muestra todo en la pantalla y en el monitor serie.

El BME280 no necesita calibración, porque el fabricante guarda los coeficientes de calibración en el chip y la biblioteca los usa. Para una altitud más precisa, en cambio, conviene ajustar la presión local a nivel del mar.

El sensor BME280 y la pantalla OLED en el bus I²C del ESP32-C3 SuperMini (foto de AdriRobot)

El módulo está disponible como sensor de presión, humedad y temperatura BME280. Para un proyecto completo con más sensores y un panel web, Open Electronics apunta a su estación meteorológica con ESP32 y panel web en vivo.

El artículo original de AdriRobot trae la comparación completa entre los sensores de Bosch, el esquemático eléctrico y el sketch.