ESP32 con sensor BME280 usando Arduino IDE (Presión, Temperatura, Humedad)

¿Alguna vez has querido medir la presión, temperatura y humedad de un entorno de forma sencilla y precisa? En este artículo te enseñaremos cómo utilizar el ESP32 junto con el sensor BME280 utilizando el Arduino IDE. Con esta combinación, podrás obtener lecturas precisas de estos parámetros ambientales de manera fácil y rápida. ¡Sigue leyendo para descubrir cómo hacerlo!

Esta guía muestra cómo usar el módulo de sensor BME280 con el ESP32 para leer la presión, temperatura, humedad y estimar la altitud usando el IDE de Arduino. El sensor BME280 utiliza el protocolo de comunicación I2C o SPI para intercambiar datos con un microcontrolador.

ESP32 con sensor BME280 usando Arduino IDE (Presión, Temperatura, Humedad)

Le mostraremos cómo conectar el sensor al ESP32, instalar las bibliotecas necesarias y escribir un boceto simple que muestre los valores del sensor.

Recomendaciones de literatura: Servidor web ESP32 con BME280 – estación meteorológica

Antes de continuar con este tutorial, debes tener el complemento ESP32 instalado en tu IDE de Arduino. Siga el siguiente tutorial para instalar ESP32 en el IDE de Arduino si aún no lo ha hecho.

  • Instalación de la Placa ESP32 en el IDE Arduino (Instrucciones para Windows, Mac OS X y Linux)

Quizás también quieras leer otras guías de BME280:

  • Servidor web ESP32 con BME280 – estación meteorológica
  • ESP8266 con BME280 usando Arduino IDE
  • ESP32/ESP8266 con BME280 usando MicroPython
  • Placa Arduino con BME280

Introducción del módulo de sensor BME280

El Sensor BME280 El módulo mide la presión del aire, la temperatura y la humedad. Dado que la presión cambia con la altitud, también se puede estimar la altitud. Hay varias versiones de este módulo de sensor. Usamos el módulo que se muestra en la imagen a continuación.

ESP32 con sensor BME280 usando Arduino IDE (Presión, Temperatura, Humedad)

Este sensor se comunica mediante el protocolo de comunicación I2C, por lo que el cableado es muy sencillo. Puede utilizar los pines estándar ESP32 I2C como se muestra en la siguiente tabla:

BME280 ESP32
vino 3,3 V
Dimensiones Dimensiones
SCL GPIO22
ASD GPIO21

Existen otras versiones de este sensor que pueden usar protocolos de comunicación SPI o I2C, como el módulo que se muestra en la siguiente figura:

ESP32 con sensor BME280 usando Arduino IDE (Presión, Temperatura, Humedad)

Si usa uno de estos sensores, use los siguientes pines para usar el protocolo de comunicación I2C:

BME280 ESP32
SCK (pasador SCL) GPIO22
SDI (pin SDA) GPIO21

Si utiliza el protocolo de comunicación SPI, deberá utilizar los siguientes pines:

BME280 ESP32
SCK (reloj SPI) GPIO 18
SDO (MISO) GPIO 19
IDE (MOSI) GPIO23
CS (selección de chips) GPIO5

Piezas requeridas

Para completar este tutorial necesitarás las siguientes partes:

Puedes utilizar los enlaces anteriores o ir directamente MakerAdvisor.com/tools ¡Para encontrar todas las piezas para tus proyectos al mejor precio!

ESP32 con sensor BME280 usando Arduino IDE (Presión, Temperatura, Humedad)

Esquema: ESP32 con BME280 usando I2C

Usaremos comunicación I2C con el módulo de sensor BME280. Para hacer esto, conectamos el sensor al ESP32. ASD Y SCL Pines como se muestra en el siguiente esquema.

ESP32 con sensor BME280 usando Arduino IDE (Presión, Temperatura, Humedad)

Recomendaciones de literatura: Guía de referencia de asignación de pines ESP32

Instalación de la biblioteca BME280

Para obtener lecturas del módulo sensor BME280, utilice el Biblioteca Adafruit_BME280Siga los siguientes pasos para instalar la biblioteca en su IDE de Arduino:

Abra su IDE de Arduino y vaya a Bosquejo > incluir biblioteca > Administrar bibliotecas. El administrador de la biblioteca debería abrirse.

Buscar «Adafruit BME280 ”en el campo de búsqueda e instale la biblioteca.

ESP32 con sensor BME280 usando Arduino IDE (Presión, Temperatura, Humedad)

Instalación de la biblioteca Adafruit_Sensor

Además, para utilizar la biblioteca BME280, debe tener la Biblioteca Adafruit_SensorSiga los siguientes pasos para instalar la biblioteca en su IDE de Arduino:

Ir a Bosquejo > incluir biblioteca > Administrar bibliotecas y escribe “Sensor unificado de Adafruit”en el campo de búsqueda. Desplácese hacia abajo para buscar e instalar la biblioteca.

ESP32 con sensor BME280 usando Arduino IDE (Presión, Temperatura, Humedad)

Después de instalar las bibliotecas, reinicie su IDE de Arduino.

Lectura de presión, temperatura y humedad.

Para leer la presión, la temperatura y la humedad, utilizamos un ejemplo de boceto de la biblioteca.

ESP32 con sensor BME280 usando Arduino IDE (Presión, Temperatura, Humedad)

Después de instalar la biblioteca BME280 y la biblioteca Adafruit_Sensor, abra el IDE de Arduino y vaya a archivo > Ejemplos > Biblioteca Adafruit BME280 > bme280 revisión.

/*********
  Complete project details at https://randomnerdtutorials.com  
*********/

#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>

/*#include <SPI.h>
#define BME_SCK 18
#define BME_MISO 19
#define BME_MOSI 23
#define BME_CS 5*/

#define SEALEVELPRESSURE_HPA (1013.25)

Adafruit_BME280 bme; // I2C
//Adafruit_BME280 bme(BME_CS); // hardware SPI
//Adafruit_BME280 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK); // software SPI

unsigned long delayTime;

void setup() {
  Serial.begin(9600);
  Serial.println(F("BME280 test"));

  bool status;

  // default settings
  // (you can also pass in a Wire library object like &Wire2)
  status = bme.begin(0x76);  
  if (!status) {
    Serial.println("Could not find a valid BME280 sensor, check wiring!");
    while (1);
  }

  Serial.println("-- Default Test --");
  delayTime = 1000;

  Serial.println();
}


void loop() { 
  printValues();
  delay(delayTime);
}

void printValues() {
  Serial.print("Temperature = ");
  Serial.print(bme.readTemperature());
  Serial.println(" *C");
  
  // Convert temperature to Fahrenheit
  /*Serial.print("Temperature = ");
  Serial.print(1.8 * bme.readTemperature() + 32);
  Serial.println(" *F");*/
  
  Serial.print("Pressure = ");
  Serial.print(bme.readPressure() / 100.0F);
  Serial.println(" hPa");

  Serial.print("Approx. Altitude = ");
  Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
  Serial.println(" m");

  Serial.print("Humidity = ");
  Serial.print(bme.readHumidity());
  Serial.println(" %");

  Serial.println();
}

Ver código sin formato

Hicimos algunos cambios en el boceto para que sea totalmente compatible con el ESP32.

Cómo funciona el código

Continúe leyendo esta sección para aprender cómo funciona el código o pase a la sección de demostración.

Bibliotecas

El código comienza con la integración de las bibliotecas requeridas: cable Biblioteca para usar I2C y el Adafruit_Sensor Y Adafruit_BME280 Bibliotecas para interactuar con el sensor BME280.

#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>

comunicación SPI

Dado que estamos utilizando comunicación I2C, se comentan las siguientes líneas que definen los pines SPI:

/*#include <SPI.h>
#define BME_SCK 18
#define BME_MISO 19
#define BME_MOSI 23
#define BME_CS 5*/

Nota: Si usa comunicación SPI, use los pines SPI del ESP32. Para la comunicación SPI en ESP32, puede usar los pines HSPI o VSPI como se muestra en la siguiente tabla.

SPI MOSI MISO CLK ÉL
HSPI GPIO 13 GPIO 12 GPIO 14 GPIO 15
VSPI GPIO23 GPIO 19 GPIO 18 GPIO5

presión al nivel del mar

una variable llamada SEALEVELPRESSURE_HPA creado.

#define SEALEVELPRESSURE_HPA (1013.25)

Esta variable almacena la presión al nivel del mar en hectopascales (equivalente a milibares). Esta variable se utiliza para estimar la altitud para una presión determinada comparándola con la presión al nivel del mar. Este ejemplo utiliza el valor predeterminado. Sin embargo, para obtener resultados más precisos, reemplace el valor con la presión actual al nivel del mar en su ubicación.

I2C

Este ejemplo utiliza el protocolo de comunicación I2C de forma predeterminada. Como puedes ver, sólo necesitas uno. Adafruit_BME280 Objeto nombrado bme.

Adafruit_BME280 bme; // I2C

Para usar SPI, debe comentar esta línea anterior y descomentar una de las siguientes líneas dependiendo de si está usando hardware o software SPI (el hardware SPI usa los pines HSPI estándar de ESP32; el software SPI usa los pines definidos por el código im).

//Adafruit_BME280 bme(BME_CS); // hardware SPI
//Adafruit_BME280 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK); // software SPI

configuración()

En el configuración()iniciar la comunicación en serie:

Serial.begin(9600);

E inicializa el sensor:

status = bme.begin(0x76); 
if (!status) {
  Serial.println("Could not find a valid BME280 sensor, check wiring!");
  while (1);
}

Inicializamos el sensor con el Versión: 0x76 DIRECCIÓN. Si no obtiene lecturas del sensor, verifique la dirección I2C de su sensor. Con el sensor BME280 conectado a su ESP32, realice este boceto del escáner I2C para verificar la dirección de su sensor. Luego cambie la dirección si es necesario.

Imprimir valores

En el Cinta()El imprimirValores() La función lee los valores del BME280 e imprime los resultados en el monitor serie.

void loop() { 
  printValues();
  delay(delayTime);
}

Leer la temperatura, la humedad, la presión y la altitud es fácil utilizando los siguientes métodos en el bme Objeto:

  • bme.readTemperatura() – lee la temperatura en grados Celsius;
  • bme.readHumedad() – lee la humedad absoluta;
  • bme.readPresión() – muestra la presión en hPa (HectoPascal = milibares);
  • bme.readAltitude(SEALEVELPRESSURE_HPA) – estima la altitud en metros basándose en la presión al nivel del mar.

demostración

Cargue el código en su ESP32 y abra el monitor serie con una velocidad de baudios de 9600. Presione el botón RST integrado para ejecutar el código. Deberías ver las lecturas en el monitor serie.

ESP32 con sensor BME280 usando Arduino IDE (Presión, Temperatura, Humedad)

Estación meteorológica de servidor web ESP32 con sensor BME280

El sensor BME280 mide temperatura, humedad y presión. De esta manera puedes construir fácilmente una estación meteorológica compacta y monitorear las mediciones usando un servidor web creado con tu ESP32.

Para eso puedes seguir este tutorial: Servidor web ESP32 con estación meteorológica BME280

ESP32 con sensor BME280 usando Arduino IDE (Presión, Temperatura, Humedad)

Envolver

Este artículo fue una guía rápida para obtener valores de presión, temperatura y humedad de un sensor BME280 con el ESP32 usando el IDE de Arduino.

Ahora puede llevar este proyecto más allá y mostrar las lecturas de sus sensores en una pantalla OLED, crear un registrador de datos o configurar un servidor web para mostrar las últimas lecturas de los sensores. Aquí hay una lista de proyectos que podrían ayudar con estas ideas:

  • ESP32 publica valores de sensores en Google Sheets
  • Pantalla OLED ESP32 con Arduino IDE
  • Servidor web ESP32 con BME280 – estación meteorológica
  • Registrador de datos de estación meteorológica de bajo consumo (MicroPython)
  • Inserte datos ESP32/ESP8266 en la base de datos MySQL usando PHP y Arduino IDE

Si desea obtener más información sobre el ESP32, asegúrese de inscribirse en nuestro curso: “Aprenda ESP32 con Arduino IDE“.

Gracias por leer.

Error 403 The request cannot be completed because you have exceeded your quota. : quotaExceeded







Guía para usar el sensor BME280 con ESP32 usando Arduino IDE

Introducción

Esta guía detalla cómo utilizar el módulo del sensor BME280 con el ESP32 para leer presión, temperatura, humedad y estimar la altitud utilizando Arduino IDE. El sensor BME280 utiliza el protocolo de comunicación I2C o SPI para intercambiar datos con un microcontrolador.

¿Cómo funciona el sensor BME280?

El módulo del sensor BME280 lee la presión barométrica, temperatura y humedad. Dado que la presión cambia con la altitud, también se puede estimar la altitud. Hay varias versiones de este módulo de sensor.

Configuración del sensor

Para configurar el sensor, sigue las instrucciones para realizar la conexión según el protocolo de comunicación que estés utilizando: I2C o SPI. Asegúrate de tener instalada la placa ESP32 en tu Arduino IDE antes de continuar con este tutorial.

Partes requeridas

  1. Módulo del sensor BME280
  2. ESP32
  3. Protoboard
  4. Cables jumper

Instalación de librerías

Para obtener lecturas del sensor BME280, necesitas utilizar la librería Adafruit_BME280. Sigue los pasos para instalar la librería en tu Arduino IDE.

Lectura de datos

Para leer la presión, temperatura y humedad, utilizamos un ejemplo de código que se encuentra en la librería. Después de instalar las librerías necesarias, podrás visualizar los resultados en el Monitor Serie de Arduino IDE.

Demostración

Sube el código a tu ESP32 y abre el Monitor Serie. Presiona el botón de reinicio en la placa y verás las lecturas mostradas en el Monitor Serie.

Proyecto adicional

Si deseas expandir este proyecto, puedes crear una estación meteorológica compacta y monitorear las mediciones utilizando un servidor web construido con tu ESP32. Puedes seguir el tutorial ESP32 Web Server with BME280 Weather Station para lograrlo.

Conclusión

Esta guía proporciona los pasos básicos para obtener lecturas de presión, temperatura y humedad de un sensor BME280 con ESP32 utilizando Arduino IDE. Ahora puedes continuar explorando con proyectos adicionales para mostrar las lecturas del sensor en una pantalla OLED, crear un datalogger o desarrollar un servidor web para visualizar las últimas lecturas del sensor.

¡Gracias por leer!


1 comentario en «ESP32 con sensor BME280 usando Arduino IDE (Presión, Temperatura, Humedad)»

Deja un comentario