¿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.
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.
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:
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:
- Módulo de sensores BME280
- ESP32 (leer Las mejores placas de desarrollo ESP32)
- tablero de circuitos
- Cables de puente
Puedes utilizar los enlaces anteriores o ir directamente MakerAdvisor.com/tools ¡Para encontrar todas las piezas para tus proyectos al mejor precio!
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.
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.
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.
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.
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();
}
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.
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
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.
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
- Módulo del sensor BME280
- ESP32
- Protoboard
- 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!
Excelente tutorial, muy bien explicado, ¡gracias por compartirlo!