Acerca del proyecto
En este proyecto aprenderás a obtener la temperatura sensor bmp180 con la placa arduino, aunque el sensor esta diseñado principalmente para obtener la presión atmosférica, cuenta con esta funcionalidad que nos podrá ser de gran utilidad en algún proyecto en el que se requiera medir esta condición física.
Conocimiento previo
Para realizar este proyecto se requiere conocimiento previo de los siguientes temas, si aun no has trabajado con lo que se menciona en la siguiente tabla, allí están los links a los post para que puedas dar un repaso adicional o puedas recordar el conocimiento necesario para poder realizar este proyecto.
Proyecto | Descripción |
---|---|
i2c | En este post explicamos el concepto de i2c, ya que la librería para el bmp180 y el mismo sensor usa este tipo de comunicación y es esencial saber como funciona este tipo de comunicación. |
BMP180 | En este post explicamos los conceptos básicos sobre el sensor bmp180 |
Librería BMP180 para arduino | Esta es la librería con la que vamos a trabajar, en este post explico a detalle cada una de sus funciones. |
Sensor BMP180
El BMP180 es el sucesor compatible con funciones del BMP085, una nueva generación de sensores de presión digitales de alta precisión para aplicaciones de consumo.
La electrónica de bajo voltaje y potencia ultra baja del BMP180 está optimizada para su uso en teléfonos móviles, PDA, dispositivos de navegación GPS y equipos para exteriores. Con un ruido de baja altitud de solo 0,25 m en un tiempo de conversión rápido, el BMP180 ofrece un rendimiento superior. La interfaz I2C permite una fácil integración del sistema con un microcontrolador.
Sus características principales son:
- Sensor: BMP180
- Voltaje de alimentación : 1,8 V a 3,6 V
- Corriente: 0.5uA
- Interfaz I2C
- Resolución: hasta 0.02hPa ( 17cm )
- Amplia gama de presión barométrica
- Incluye sensor de temperatura
- Peso: 1,18 g
- Tamaño : 21mm x 18mm
Materiales
Estas son los principales materiales que vamos a utilizar para este proyecto
Material | Cantidad | Descripción |
---|---|---|
Arduino | 1 | Usamos la placa uno, pero puede ser cualquiera |
BMP180 | 1 | Aunque es un sensor de presión barométrica, también la temperatura |
Cables de conexión | 4 | Cables macho a macho |
Circuito
El sensor bmp180 tiene la facilidad de conectarse a cualquier microcontrolador ya que cuenta con un puerto de comunicación i2c, esto permite solamente utilizar dos cables de conexión desde el módulo. Para la alimentación de este circuito lo recomendable es utilizar 3.3 aunque en la hoja de datos nos indica que también soporta 5 voltios. A continuación tenemos el plano de la conexión para que se puedan guiar cómo se realiza:
Código
El código es el ejemplo que se toma de la misma librería, lo he modificado un poco para que solo muestre los valores de temperatura. Ademas lo explico paso a paso para que lo podamos entender:
// Paso 1
#include <SFE_BMP180.h>
#include <Wire.h>
// Paso 2
SFE_BMP180 bmp180;
// Paso 3
void setup() {
Serial.begin(9600);
// Paso 4
if (bmp180.begin()) {
Serial.println("BMP180 iniciado");
} else {
Serial.println("Error al iniciar BMP180");
while(1);
}
}
void loop() {
// Paso 5
char status;
double temperatura;
// Paso 6
//Inicio de lectura de temperatura
status = bmp180.startTemperature();
// Paso 7
if (status != 0) {
//Pausa para que finalice la lectura
delay(status);
// Paso 8
//Obtener la temperatura
status = bmp180.getTemperature(temperatura);
if (status != 0) {
// Paso 9
Serial.print("Temperatura: ");
Serial.print(temperatura,2);
Serial.println(" *C");
}
}
delay(1000);
}
- Cargamos la librería del bmp180, ademas de la librería i2c wire para que la comunicación de dos hilos pueda funcionar.
- Cargamos la librería como objeto en el entorno para poder acceder a su configuración y funciones.
- Creamos el setup donde inicilizamos el puerto serial con el fin de poder crear los logs para ver el valor de la temperatura.
- Inicializamos la librería y verificamos si esta se cargo correctamente, de haberse presentado un error mostramos un mensaje en la consola.
- Creamos las variables que nos servirán para guardar los datos que vamos a obtener.
- Con
startTemperature
iniciamos el proceso de obtener la temperatura, este valor lo guardamos en la variable de estado. - La variable estado permite saber si ya se ha logrado obtener los datos, ya que el sensor demora entre 2 segundos en devolver este valor.
- Ahora con la función
getTemperature
podemos asignarle la temperatura a la variable correspondiente y obtenemos de nuevo el estado para saber si el sensor ha dado un respuesta. - Una vez que tengamos los datos los mostramos por la terminal serial.
Prueba funcionamiento
Por ultimo realizamos la compilación de código y lo cargamos al arduino, abrimos la terminal serial y podremos observar que se muestra el log con la temperatura que esta obteniendo el sensor.