¿Quieres aprender a utilizar un sensor de presión y temperatura de aire BMP180 con Arduino? En este artículo te enseñaremos todo lo que necesitas saber para integrar este sensor a tu proyecto de manera sencilla y efectiva. ¡No te lo pierdas!
Dale a tu próximo proyecto Arduino la capacidad de sentir el mundo que te rodea con BMP180.
Se trata de un sensor básico diseñado específicamente para medir la presión atmosférica, lo cual resulta realmente útil por dos motivos.
- Cuando viajamos desde el nivel del mar hasta la cima de una montaña, la presión del aire cae. Esto significa que midiendo la presión podemos determinar la altitud. Entonces podemos usar este sensor como Altímetro.
- Dado que la presión del aire cambia con el clima, podemos usarla. Monitorear los cambios climáticos.
Estos sensores son relativamente fáciles de usar, están precalibrados y no requieren componentes adicionales, por lo que puede comenzar a medir la presión del aire, la altitud y la temperatura en poco tiempo.
Descripción general del hardware
El corazón del módulo es el sensor digital de presión y temperatura de próxima generación de Bosch: BMP180.
chip BMP180
El BMP180 puede medir la presión del aire de 300 a 1100 hPa (de 9000 m a -500 m sobre el nivel del mar) y la temperatura de -40 °C a 85 °C con una precisión de ±1,0 °C.
Las mediciones de presión son tan precisas (ruido de baja altitud de 0,25 m) que incluso puedes utilizarlo como altímetro con una precisión de ±1 metro.
Requisitos de energía
El módulo tiene un regulador LM6206 de 3,3 V incorporado, por lo que puede usarlo fácilmente con un microcontrolador lógico de 5 V como Arduino.
El BMP180 consume menos de 1 mA durante las mediciones y solo 5 μA cuando está inactivo. Este bajo consumo de energía permite su implementación en dispositivos que funcionan con baterías.
interfaz I2C
El módulo cuenta con una sencilla interfaz I2C de dos cables que se puede conectar fácilmente a cualquier microcontrolador de su elección.
Este módulo tiene una dirección I2C cableada y está configurado para 0x77MALEFICIO.
Distribución de pines del módulo BMP180
El módulo BMP180 sólo tiene 4 pines que lo conectan con el mundo exterior. Las conexiones son las siguientes:
VCC es la fuente de alimentación del módulo, que puede estar entre 3,3V y 5V.
Tierra debe estar conectado a tierra del Arduino.
SCL es un pin de reloj serie para la interfaz I2C.
ASD es un pin de datos en serie para la interfaz I2C.
Cableado del módulo BMP180 a Arduino
Conectemos el módulo BMP180 al Arduino.
Las conexiones son bastante simples. Primero, conecte el pin VIN a la salida de 5 V del Arduino y conecte GND a tierra.
Ahora sigamos con los pines utilizados para la comunicación I2C. Tenga en cuenta que cada placa Arduino tiene diferentes pines I2C que deben conectarse en consecuencia. En las placas Arduino con diseño R3, SDA (línea de datos) y SCL (línea de reloj) se encuentran en los encabezados cerca del pin AREF. También se les conoce como A5 (SCL) y A4 (SDA).
Si tienes una Mega, ¡los pines son diferentes! Debes utilizar Digital 21 (SCL) y 20 (SDA). Para una comprensión rápida, consulte la siguiente tabla.
SCL | ASD | |
ArduinoUno | A5 | A4 |
Arduino Nano | A5 | A4 |
arduino mega | 21 | 20 |
Leonardo/Micro | 3 | 2 |
El siguiente diagrama le muestra cómo cablear todo.
Instalación de las bibliotecas necesarias
Calcular la altitud y la presión barométrica con el módulo BMP180 requiere mucha matemática. Afortunadamente, la biblioteca Adafruit BMP180 está escrita para ocultar todas las complejidades, permitiéndonos emitir comandos simples para leer los datos de temperatura, presión barométrica y altitud.
Para instalar la biblioteca, navegue hasta Sketch > Incluir biblioteca > Administrar bibliotecas…. Espere a que el administrador de la biblioteca descargue el índice de la biblioteca y actualice la lista de bibliotecas instaladas.
Filtra tu búsqueda ingresando “bmp180”. Debería haber algunas entradas. Busque la biblioteca Adafruit BMP085 de Adafruit. Haga clic en esta entrada y luego seleccione Instalar.
Código Arduino: lectura de temperatura y presión del aire.
El siguiente esquema le brindará una comprensión integral de la lectura de temperatura y presión barométrica del módulo BMP180 y puede servir como base para futuros experimentos y proyectos prácticos.
#include <Wire.h>
#include <Adafruit_BMP085.h>
#define seaLevelPressure_hPa 1013.25
Adafruit_BMP085 bmp;
void setup() {
Serial.begin(9600);
if (!bmp.begin()) {
Serial.println("Could not find a valid BMP085 sensor, check wiring!");
while (1) {}
}
}
void loop() {
Serial.print("Temperature = ");
Serial.print(bmp.readTemperature());
Serial.println(" *C");
Serial.print("Pressure = ");
Serial.print(bmp.readPressure());
Serial.println(" Pa");
Serial.print("Altitude = ");
Serial.print(bmp.readAltitude());
Serial.println(" meters");
Serial.print("Pressure at sealevel (calculated) = ");
Serial.print(bmp.readSealevelPressure());
Serial.println(" Pa");
Serial.print("Real altitude = ");
Serial.print(bmp.readAltitude(seaLevelPressure_hPa * 100));
Serial.println(" meters");
Serial.println();
delay(500);
}
Así es como se ve la salida en el monitor serie.
Cada desviación de 1 hPa con respecto a la presión al nivel del mar genera un error de aproximadamente 8,5 m en los cálculos de elevación. Entonces la altura que encontramos es bastante cercana, pero no exacta.
Puede obtener una medición de altitud más precisa si conoce la presión actual al nivel del mar, que varía según el clima.
Este código supone que la presión actual al nivel del mar es 1013,25 milibares, que son 101325 pascales. Por esta razón seaLevelPressure_hPa
La variable está configurada en 1013,25.
Explicación del código:
El boceto comienza con la inclusión de cuatro bibliotecas, a saber. Wire.h y Adafruit_BMP085.h.
#include <Wire.h>
#include <Adafruit_BMP085.h>
A continuación definimos seaLevelPressure_hPa
Variable necesaria para calcular la altura. Cambie el valor a la presión actual al nivel del mar en su ubicación.
También estamos creando uno. bmp
Objeto para que podamos acceder a funciones relacionadas con él.
#define seaLevelPressure_hPa 1013.25
Adafruit_BMP085 bmp;
En la función de configuración del código inicializamos la comunicación serial con la PC y la llamamos begin()
Función.
El begin()
La función inicializa la interfaz I2C y verifica si la ID del chip es correcta. Luego, el chip se reinicia mediante un reinicio por software y, después de despertarse, espera a que se calibre el sensor.
Serial.begin(9600);
if (!bmp.begin()) {
Serial.println("Could not find a valid BMP085 sensor, check wiring!");
while (1) {}
}
En la función de bucle, utilizamos las siguientes funciones para leer la temperatura, la presión barométrica y la altitud del módulo BMP180.
readTemperature()
La función devuelve la temperatura del sensor.readPressure()
La función devuelve la presión del aire del sensor.readAltitude(seaLevelPressure_hPa * 100)
La función calcula la altitud (en metros) a partir de la presión atmosférica especificada (en hPa).readSealevelPressure()
La función calcula la presión a nivel del mar (en hPa).
Serial.print("Temperature = ");
Serial.print(bmp.readTemperature());
Serial.println(" *C");
Serial.print("Pressure = ");
Serial.print(bmp.readPressure());
Serial.println(" Pa");
Serial.print("Altitude = ");
Serial.print(bmp.readAltitude());
Serial.println(" meters");
Serial.print("Pressure at sealevel (calculated) = ");
Serial.print(bmp.readSealevelPressure());
Serial.println(" Pa");
Serial.print("Real altitude = ");
Serial.print(bmp.readAltitude(seaLevelPressure_hPa * 100));
Serial.println(" meters");
Obtenga la capacidad de sentir el mundo que lo rodea con BMP180
Es un sensor básico diseñado específicamente para medir la presión atmosférica, lo cual es realmente útil para dos cosas.
Al viajar desde el nivel del mar hasta la cima de una montaña, la presión del aire disminuye. Eso significa que al medir la presión podemos determinar la altitud. Por lo tanto, podemos usar este sensor como un altímetro. Debido a que la presión atmosférica cambia con el clima, podemos usarlo para monitorear cambios en el clima.
Estos sensores son bastante simples de usar, vienen precalibrados y no requieren componentes adicionales, por lo que puedes comenzar a medir la presión barométrica, la altitud y la temperatura en poco tiempo.
Descripción de hardware
En el corazón del módulo se encuentra el sensor de presión y temperatura digital de última generación fabricado por Bosch: BMP180.
El chip BMP180 puede medir la presión barométrica desde 300 hasta 1100 hPa (de 9000 m a -500 m sobre el nivel del mar) y la temperatura desde -40 °C hasta 85 °C con una precisión de ±1.0 °C.
Las mediciones de presión son tan precisas (ruido de baja altitud de 0.25 m), que incluso puedes usarlo como un altímetro con una precisión de ±1 metro.
Requerimientos de energía:
El módulo cuenta con un regulador LM6206 de 3.3V a bordo, por lo que puedes usarlo con un microcontrolador lógico de 5V como Arduino sin preocupaciones.
Interfaz I2C
El módulo cuenta con una simple interfaz I2C de dos cables que se puede conectar fácilmente con cualquier microcontrolador de tu elección. Este módulo tiene una dirección I2C con cableado y está configurado en 0x77HEX.
Patillaje del módulo BMP180
El módulo BMP180 tiene solo 4 pines que lo conectan con el mundo exterior. Las conexiones son las siguientes:
- VCC es la fuente de alimentación del módulo que puede estar entre 3.3V y 5V.
- GND debe conectarse a la tierra de Arduino.
- SCL es un pin de reloj serial para interfaz I2C.
- SDA es un pin de datos serial para interfaz I2C.
Conexión del módulo BMP180 a Arduino
Conectemos el módulo BMP180 a Arduino. Las conexiones son bastante simples. Comience conectando el pin VIN a la salida de 5V en Arduino y conecte GND a la tierra.
Ahora solo quedan los pines que se utilizan para la comunicación I2C. Ten en cuenta que cada placa Arduino tiene pines I2C diferentes que deben conectarse en consecuencia. En las placas de Arduino con el diseño R3, SDA (línea de datos) y SCL (línea de reloj) están en los encabezados de pines cerca del pin AREF. También se conocen como A5 (SCL) y A4 (SDA).
Si tienes un Mega, ¡los pines son diferentes! Querrás usar el digital 21 (SCL) y 20 (SDA). Consulta la tabla a continuación para entenderlo rápidamente.
SCL | SDA | |
---|---|---|
Arduino Uno | A5 | A4 |
Arduino Nano | A5 | A4 |
Arduino Mega | 21 | 20 |
Leonardo/Micro | 3 | 2 |
A continuación, se muestra un diagrama que muestra cómo cablear todo.
Instalación de las bibliotecas necesarias
Calcular la altitud y la presión barométrica con el módulo BMP180 requiere mucha matemática. Afortunadamente, la Biblioteca Adafruit BMP180 fue escrita para ocultar todas las complejidades para que podamos emitir comandos simples para leer los datos de temperatura, presión barométrica y altitud.
Para instalar la biblioteca, navega hasta Sketch > Include Library > Manage Libraries… Espera a que el Administrador de bibliotecas descargue el índice de bibliotecas y actualice la lista de bibliotecas instaladas. Filtra tu búsqueda escribiendo ‘bmp180’. Debería haber un par de entradas. Busca la Biblioteca Adafruit BMP085 de Adafruit. Haz clic en esa entrada y luego selecciona Instalar.
Código de Arduino – Lectura de temperatura y presión barométrica
El siguiente boceto te dará una comprensión completa de cómo leer la temperatura y la presión barométrica del módulo BMP180 y puede servir como base para experimentos y proyectos más prácticos.
#include <Wire.h> #include <Adafruit_BMP085.h> #define seaLevelPressure_hPa 1013.25 Adafruit_BMP085 bmp; void setup() { Serial.begin(9600); if (!bmp.begin()) { Serial.println("No se pudo encontrar un sensor BMP085 válido, ¡verifica el cableado!"); while (1) {} } } void loop() { Serial.print("Temperatura = "); Serial.print(bmp.readTemperature()); Serial.println(" *C"); Serial.print("Presión = "); Serial.print(bmp.readPressure()); Serial.println(" Pa"); Serial.print("Altitud = "); Serial.print(bmp.readAltitude()); Serial.println(" metros"); Serial.print("Presión a nivel del mar (calculada) = "); Serial.print(bmp.readSealevelPressure()); Serial.println(" Pa"); Serial.print("Altitud real = "); Serial.print(bmp.readAltitude(seaLevelPressure_hPa * 100)); Serial.println(" metros"); Serial.println(); delay(500); }
Así es como se ve la salida en el monitor serial.
Cada hPa de diferencia en la presión a nivel del mar resulta en aproximadamente 8.5 m de error en los cálculos de altitud. Por lo tanto, la altitud que obtenemos es lo suficientemente cercana pero no precisa.
Puedes obtener una medición de altitud más precisa si conoces la presión a nivel del mar actual, que variará con el clima. Este código asume que la presión a nivel del mar actual es de 1013.25 milibares, que es igual a 101325 pascales. Por eso, la variable seaLevelPressure_hPa está configurada en 1013.25.
Explicación del código:
- El boceto comienza incluyendo cuatro bibliotecas: Wire.h y Adafruit_BMP085.h.
- Luego, definimos la variable seaLevelPressure_hPa necesaria para calcular la altitud. Cámbiala a la presión actual a nivel del mar en tu ubicación.
- También creamos un objeto bmp para que podamos acceder a las funciones relacionadas con él.
¡Espero que este artículo te haya sido útil para comenzar con el sensor de presión y temperatura de aire BMP180 interfazado con Arduino para tus proyectos futuros!
Me encanta aprender sobre nuevas formas de utilizar Arduino, este sensor BMP180 de presión y temperatura de aire suena muy interesante. ¡Definitivamente voy a probarlo en mi próximo proyecto! ¡Gracias por compartir!
¡Este artículo me ha ayudado a entender cómo funciona el sensor BMP180 con Arduino! ¡Gracias por la información! ¡Voy a intentarlo yo también!
¡Increíble descubrir nuevas formas de utilizar Arduino! Definitivamente me animaré a probar este sensor BMP180. ¡Gracias por compartir la información!
¡Me encanta la idea de poder medir la presión y temperatura del aire con Arduino! Definitivamente uno de los proyectos más interesantes que he visto. ¡Gracias por compartir!
Qué interesante, nunca había pensado en usar un sensor de presión y temperatura de aire con Arduino. ¡Definitivamente tengo que probarlo!