Das elfte Türchen

GY-BME280 Sensor barométrico para temperatura, humedad y presión atmosférica

Detrás del calendario de Adviento de hoy, la puerta número 11 encontrará el sensor BME280 en el Set de 5. Con él se puede medir la temperatura (-40 a +85 ° C), la humedad (0 a 100% HR) y la presión del aire (300 a 1100 hPa). Puede funcionar con 3.3V y 5V. Esta es la versión con interfaz I²C. El componente necesita una dirección para esto. Esto es por defecto 0x76. La dirección se puede abrir usando las tres almohadillas de soldadura debajo de la pequeña caja de metal (que representa el sensor real) 0x77 para ser cambiada:

 

Debe haber una conexión (poco visible) entre la almohadilla izquierda y central. Debe cortarse con una cuchilla fina y afilada. Luego, la almohadilla del medio debe estar conectada a la almohadilla derecha.

Si no está seguro de qué dirección está configurada, use un boceto de escáner I2C en el Arduino IDE. La biblioteca de wire (que es responsable de la interfaz I²C) proporciona dicho esquema. Súbalo a su microcontrolador y conecte el sensor de la siguiente manera:

 


o:


Los sensores se suministran con pines de cabezal, que aún deben soldarse.

Los pines I²C de los microcontroladores individuales son los siguientes:

µC

SDA

SCL

Nano

A4

A5

U.N

A4 o SDA (GPIO19)

A5 o SCL (GPIO18)

Mega

20

21

Leonardo / Micro

2

3

ESP32

GPIO 21

GPIO 22

ESP8266

GPIO 4 (D2)

GPIO 5 (D1)

 

Ya conoce por las puertas anteriores del calendario cómo poner en funcionamiento un Nano, Uno, ESP8266 o ESP32 y ejecutar un boceto.

A continuación, se debe mostrar lo siguiente en el monitor en serie:

 


El sensor fue reconocido con la dirección I²C 0x76. Para que podamos comunicarnos con él.

Para obtener los datos del sensor de temperatura, humedad y presión del aire, utilizamos una de las bibliotecas que se pueden instalar a través del administrador de bibliotecas. Tiene sentido utilizar la biblioteca Adafruit BME280:

 


Nota: También necesita Adafruit Unified Sensor Library, que generalmente se instala al mismo tiempo. Al menos uno debería tener una pista al respecto.

Después de la instalación, encontrará el sketch en File-> Examples-> Adafruit BME280 Library bme280test.

Ajuste la velocidad en baudios del monitor en serie en el set up() a:

Serial.begin (115200);

Es posible que el sensor aún no se reconozca de esta manera:

 


Luego complete la siguiente línea:

status = bme.begin ();

en:

status = bme.begin (0x76, & Wire);

Ingrese la dirección que determinó con el escáner I²C.

Debería obtener el siguiente resultado después de volver a cargar:

 


Ahora se pueden determinar la temperatura, la presión del aire y la humedad. Como puede ver, se emite otro valor. Esta es la altura sobre el nivel del mar (altitud aprox.). En mi ubicación, sin embargo, deberían mostrarse unos 40 m. Para corregir esto, necesita averiguar qué presión de aire hay a su alrededor. Esta información es proporcionada por las estaciones meteorológicas en su área. Para hacer esto, visite por ejemplo el sitio web del Servicio meteorológico y busque su ubicación utilizando el código postal. Luego haga clic en la pestaña "Air pressure". En la tabla encontrará la columna "Air pressure". Copie este valor y péguelo en el código fuente en la siguiente línea (arriba):

#define SEALEVELPRESSURE_HPA (1013.25)

Mis datos meteorológicos actuales muestran una presión de aire de 1017.5 hPa. Añado este valor a la línea:

#define SEALEVELPRESSURE_HPA (1017.5)

¿Tengo la altura correcta donde estoy?

 


Para saber si este valor es correcto, visite por ejemplo este sitio web e ingrese su ubicación allí. Además de las coordenadas, también se le dará la altura sobre el nivel del mar. La presión del aire cambia constantemente. Por tanto, el valor debería actualizarse periódicamente.

Si desea ocuparse más intensamente de la medición de la altitud barométrica, podría, entre otras cosas, Este artículo ser interesante para usted.

Para darle un pequeño impulso a su creatividad, tengo algunas ideas de proyectos más en relación con el sensor BME280. Por supuesto, como termómetro, por ejemplo con una pantalla conectada. Quizás una pantalla de papel electrónico y una frecuencia de actualización lenta. Eso ahorra energía. También puede consultar los valores en línea con un microcontrolador compatible con WLAN. Tal vez sea dueño de un cobertizo de jardín y desee controlar el aire acondicionado desde su casa. También puede realizar experimentos con presión negativa o positiva, por ejemplo en clase de física. Para utilizar la medición de altitud, puede conectar los componentes a un dron o un globo meteorológico. Preste atención a los cálculos de altura correctos. Una vez construí un circuito para un cohete que registra los datos de telemetría en una tarjeta SD durante el vuelo.

Si ahora desea monitorear varios experimentos al mismo tiempo con un solo microcontrolador, se vuelve un poco problemático. Como ya ha leído anteriormente, solo se pueden configurar dos direcciones I²C. Entonces solo podrías usar dos sensores. Es posible utilizar otros pines para la conexión I²C con las bibliotecas Softwire y SoftwareWire. Desafortunadamente, estos no son compatibles con las bibliotecas de BME.

Otra opción es conseguir un Multiplexor I²C usar. Allí se pueden conectar ocho dispositivos. En mi Publicación de blog de Halloween ya lo había presentado.

Nota: recuerde que las longitudes de los cables para la conexión I²C están muy restringidas.

Se incluye un boceto de servidor HTTP en los ejemplos del ESP8266. Para este caso lo modifiqué para que se muestren los datos del BME280. Tomé partes del código fuente del que se muestra arriba bme280test-Sketch insertado allí. Utilizo un ESP8266 D1 Mini como servidor:

 


Puede usar el boceto actualizado aquí para descargar.

Introduzca sus datos WLAN para SSID y CONTRASEÑA allí. También debe actualizar la presión del aire para obtener la lectura de altitud correcta. Cuando haya cargado el boceto, verá la dirección IP en el monitor de serie. Luego puede ingresar esto en un navegador web en un dispositivo que esté en la misma red WiFi. A continuación, se emiten los datos climáticos:

 

La función handleRoot () compuesta de una cadena formateada. Para la salida del símbolo de grado y las diéresis, debe usar la tabla ASCII extendida

Para no excluir a los usuarios de Raspberry Pi, me gustaría mostrar brevemente cómo se puede utilizar el sensor BME280 allí. La Raspi también tiene una interfaz I²C, que, sin embargo, debe activarse en raspi-config:

sudo raspi-config

luego active I2C a través de las opciones de la interfaz y reinicie Raspi.

Conecte el sensor de la siguiente manera:

 

 

Adafruit ofrece una biblioteca de Python para Raspi a la que puede acceder Github encuentra. También hay una descripción de cómo instalarlo:

pip3 instalar adafruit-circuito python-bme280

Python 3 y Pip deben estar instalados para esto.

Luego, puede crear un script de Python y enviar el código de muestra. Comente la siguiente línea para la dirección I²C 0x76 eliminando el hash al principio de la línea:

bme280 = adafruit_bme280.Adafruit_BME280_I2C (i2c, address=0x76)

La otra línea usa la dirección 0x77 y debe comentarse:

# bme280 = adafruit_bme280.Adafruit_BME280_I2C (i2c)

En esta línea se introduce de nuevo la presión de aire actual:

bme280.sea_level_pressure = 1013.25

Guarde el script e.B. como bme280test.py y empiece desde el terminal:

python3 bme280test.py

En el escritorio actual de Raspbian Buster, hay un entorno de desarrollo de Python llamado Thonny Python. En él también se puede escribir y ejecutar scripts muy fácilmente.

Se puede encontrar una solución alternativa para el uso del BME280 en la Raspberry Pi Aquí.

 

Le deseamos una feliz temporada de Adviento.

Andreas Wolter

para AZ-Delivery Blog

Especialidades

Deja un comentario

Todos los comentarios son moderados antes de ser publicados

Artículos de blog

  1. Ahora instalamos el esp32 a través de la administración.
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. Transporte Aéreo - programación de ESP mediante redes locales inalámbricas