Sensor de temperatura, presión y altitud BMP180

By Tutoriales Raspberry Pi, With 4 comments

Hola a tod@s!, hace ya algún tiempo que no publicaba tutoriales en el blog porque no he tenido mucho tiempo libre últimamente por trabajo y temas personales, afortunadamente ya vuelvo a tener algo de tiempo y voy a empezar a escribir tutoriales de nuevo.

En esta ocasión os traigo un tutorial para aprender a usar el Sensor de temperatura, presión y altitud BMP180. Para este tutorial no voy a usar el sensor original de SparkFun ni el de AdaFruit sinó una versión clónica y mucho más económica de la marca Bosch que he comprado en Dealextreme. Aquí os dejo una foto para que lo identifiquéis:

Sensor de temperatura, presión y altitud BMP180

El sensor BMP180 es un sensor de presión atmosférica, temperatura y altitud relativa de alta precisión que utiliza la interfaz I2C para comunicarse con la Raspberry Pi. Desde AQUI podeis consultar la hoja de datos del sensor.

El sensor BMP180 lleva 4 pines que no vienen soldados, tienes que soldarlos tu con un poco de estaño. Estos pines van marcados en la placa y son: VIN (voltaje de entrada a 3.3v), GND y los 2 pines de comunicación SCL y SDA. Para la conexión del cableado entre el sensor BMP180 y la Raspberry Pi podemos usar la siguiente imagen:

Sensor BMP180 Raspberry pi

Sensor de presión atmosférica y temperatura BMP180

 

Preparando la Raspberry Pi

Una vez tenemos conectado el sensor a la Raspberry Pi procedemos a realizar los siguientes ajustes para permitir la comunicación entre ambos elementos. En primer lugar vamos a actualizar el software de nuestra Raspberry y los repositorios mediante estos 2 comandos:

A continuación instalamos algunas herramientas que nos harán falta, por ejemplo las librerías para controlar la interfaz I2C, las instalamos mediante el siguiente comando:

Como ya sabréis la interfaz I2C de la Raspberry Pi viene deshabilitada por defecto así que para activarla abriremos el asistente de configuración de Raspbian mediante el comando

Una vez allí seleccionamos la opción Advanced Options y luego la opción I2C, le contestamos que si a todo lo que nos pregunte la aplicación.

learn_raspberry_pi_advancedopt

learn_raspberry_pi_i2c

learn_raspberry_pi_wouldyoukindly

learn_raspberry_pi_i2ckernel

Tras aplicar esta configuración cerramos el asistente y reiniciamos la Raspberry Pi. A continuación comprobamos de forma manual que todos los ajustes se han aplicado correctamente, para ello abrimos el archivo ‘/etc/modules‘ mediante este comando:

Y verificamos que el archivo contiene estas 2 líneas, si no las tiene las agregamos ahora. Estas 2 líneas cargan los módulos de software que permiten a la Raspberry Pi controlar la interfaz I2C:

Ahora abrimos el archivo ‘/etc/modprobe.d/raspi-blacklist.conf‘ con el comando:

Y verificamos que las líneas detalladas a continuación tienen un # delante. Estas 2 líneas son las que inhabilitan al acceso de la Raspberry Pi a la interfaz I2C y SPI, por ello ponemos un # delante, para desactivarlas y permitir que la Raspberry asuma el control de esas 2 interfaces:

Por último abrimos el archivo ‘/boot/config.txt‘ mediante el comando:

Y verificamos que contiene estos 2 parámetros, si no los tiene los agregamos ahora. Puede ser que estén pero que tengan un # delante, quitamos el # para activarlos:

Una vez terminados estos pasos reiniciamos nuestra Raspberry Pi. Una vez reiniciada vamos a comprobar si la Raspberry es capaz de comunicarse con el sensor a traves de la interfaz I2C, para ello tecleamos uno de estos comandos, si uno falla prueba el otro:

o

Si te sale una pantalla como esta, FELICIDADES!!, has conseguido habilitar la interfaz I2C y la Raspberry esta lista para comunicarse con el sensor.
learn_raspberry_pi_i2c-detect

 

Instalando los controladores

Adafruit ha publicado una librería en GitHub que nos facilita muchísimo la tarea de comunicarnos con el sensor si programamos con Python. Para descargar esta librería podemos visitar su página y descargar el paquete de archivos o directamente clonar el GIT en nuestra Raspberry, para ello instalamos GIT mediante el comando:

y luego introducimos este otro comando para clonar los archivos de la librería a nuestra Raspberry:

Ahora nos vamos a la carpeta ‘/home/pi/Adafruit_Python_BMP’ mediante el comando:

Y luego instalamos la librería en la Raspberry con el comando:

 

Ejemplo de código y primera prueba

Una vez tenemos configurada la interfaz I2C e instalada la librería de Adafruit ya podemos hacer llamadas y obtener las lecturas del sensor, aquí os dejo un ejemplo muy sencillo de código Python para obtener la temperatura, la presión atmosférica, la altitud y la presión barométrica a nivel del mar.

Si todo es correcto os deberían aparecer estos valores:

Temp = 20.20 *C
Pressure = 101347.00 Pa
Altitude = 52.27 m
Sealevel Pressure = 101455.00 Pa

Y listo!, otro tutorial sencillo que agregará más funciones a vuestros proyectos. Gracias a tod@s por el apoyo que recibo por Twitter, a través de los comentarios y desde el formulario de contacto.