Sensor BMP180 de temperatura y presión barométrica para Arduino
El sensor BMP180 es un dispositivo versátil que mide la temperatura y la presión barométrica, lo que lo hace ideal para diversas aplicaciones, como el monitoreo del clima y la medición de la altitud. En este tutorial, conectaremos el sensor BMP180 a un Arduino, leeremos los datos de temperatura y presión y mostraremos los resultados. Al final de este proyecto, podrás obtener lecturas precisas de temperatura en grados Celsius y Fahrenheit, así como valores de presión en milibares y pulgadas de mercurio.

Para aclarar los conceptos y los pasos de codificación, le animo a ver el video asociado para explicaciones detalladas (en el video a las 00:00).
Hardware explicado
El BMP180 es un sensor digital que se comunica a través de I2C, lo que le permite conectarse fácilmente con microcontroladores como Arduino. Tiene cuatro pines:Vn(fuente de alimentación),GND(suelo),SDA(línea de datos), ySCL(línea de reloj). El sensor funciona dentro de un rango de voltaje de 1.8 a 3.6 voltios, pero puede alimentarse con una fuente regulada de 5 V utilizando un regulador de voltaje.
La capacidad de este sensor para medir la presión atmosférica lo hace adecuado para aplicaciones que requieren estimación de altitud y monitorización meteorológica. El BMP180 también incluye un sensor de temperatura integrado, que es esencial para obtener lecturas de presión precisas. Al medir primero la temperatura, el sensor puede compensar las variaciones térmicas que afectan las lecturas de presión.
Detalles de la hoja de datos
| Fabricante | Bosch |
|---|---|
| Número de pieza | BMP180 |
| Voltaje lógico/E/S | 1.8 - 3.6 V |
| Tensión de alimentación | 1.8 - 5.0 V |
| Corriente de salida (típ.) | 5 μA |
| Corriente de pico (máx.) | 1 mA |
| Orientación sobre la frecuencia PWM | N/D |
| Umbrales lógicos de entrada | No aplica |
| Caída de tensión / RDS(on)/ saturación | No aplica |
| Límites térmicos | -40 a 85 °C |
| Paquete | 3,6 x 3,8 mm |
| Notas / variantes | Bajo consumo de energía |
- Asegúrese de que los niveles de voltaje sean adecuados para evitar dañar el sensor.
- Utilice resistencias pull-up en las líneas I2C si es necesario.
- Mantenga el sensor en un entorno de temperatura estable para obtener lecturas precisas.
- Calibre la altitud según su ubicación específica para obtener resultados precisos.
- Supervise la fuente de alimentación para garantizar que se mantenga dentro de los límites especificados.
Instrucciones de cableado

Para cablear el sensor BMP180 a tu Arduino, comienza conectando elVnpin del BMP180 al pin de 5V en el Arduino. A continuación, conecte elGNDconecta el pin a la masa del Arduino. Para la comunicación I2C, conecta elSDApin al pin analógico A4 del Arduino y elSCLConecta el pin al A5. Asegúrate de que tus conexiones estén bien aseguradas para evitar cualquier problema de comunicación.
Si estás usando un modelo de Arduino diferente, ten en cuenta que los pines I2C pueden variar. Por ejemplo, en un Mega2560, elSDAySCLLos pines son 20 y 21, respectivamente. Compruebe siempre la asignación de pines de su placa específica para garantizar el funcionamiento adecuado.
Ejemplos de código y guía paso a paso
#include
#include
SFE_BMP180 pressure;
#define ALTITUDE 90.0 // Altitude of Robojax Headquarter
En el código, comenzamos incluyendo las bibliotecas necesarias:SFE_BMP180.hpara el sensor yWire.hpara la comunicación I2C. Creamos una instancia del objeto BMP180 llamadapressurey definir la altitud a la que se tomarán nuestras lecturas utilizando elALTITUDEconstante.
void setup() {
Serial.begin(9600);
if (pressure.begin()) Serial.println("BMP180 init success");
else { Serial.println("BMP180 init fail\n\n"); while(1); }
}
ElsetupLa función inicializa la comunicación serie a 9600 baudios e intenta iniciar el sensor BMP180. Si la inicialización falla, el programa entra en un bucle infinito para detener la ejecución adicional, indicando un problema de conexión.
void loop() {
char status;
double T, P, p0, a;
status = pressure.startTemperature();
if (status != 0) {
delay(status);
status = pressure.getTemperature(T);
if (status != 0) {
Serial.print("temperature: "); Serial.print(T,2);
}
}
}
En elloopEn la función, primero iniciamos una lectura de temperatura llamando astartTemperature(). Si tiene éxito, esperamos a que se complete la medición y recuperamos la temperatura congetTemperature(T), dondeTAlmacena el valor de la temperatura. A continuación, la temperatura se imprime en el monitor serial.
Demostración / Qué esperar
Cuando esté alimentado y conectado correctamente, el BMP180 leerá y mostrará continuamente los datos de temperatura y presión cada cinco segundos. Debería ver los valores de temperatura tanto en Celsius como en Fahrenheit, así como los valores de presión absoluta y relativa. Si el sensor funciona correctamente, recibirá lecturas sin errores. Tenga en cuenta posibles problemas como niveles de voltaje incorrectos o conexiones sueltas, que pueden provocar la imposibilidad de obtener datos.
Recursos y referencias
-
ExternoBiblioteca BMP180 de SparkFungithub.com
-
ExternoDetalles del producto del fabricantebosch-sensortec.com
Archivos📁
Bibliotecas de Arduino (zip)
-
Relé remoto de 4 canales a 33 MHz: con mando clásico.
robojax-BMP180-Library.zip0.02 MB
Hoja de datos (pdf)
-
Relé remoto de 4 canales a 33 MHz: Con mando a distancia de llavero.
https://ae-bst.resource.bosch.com/media/_tech/media/datasheets/BST-BMP180-DS000.pdf0.64 MB