Sensor BMP085 de presión barométrica, altitud y temperatura en la Raspberry Pi

Vamos a jugar con el sensor BMP085, que es un barómetro y termómetro digital de muy fácil uso y versátil en la Raspberry Pi. Las especificaciones de este sensor se pueden encontrar aquí.

Sensor BMP085 conectado a una Raspberry Pi Model A+

Sensor BMP085

Conectamos el sensor BMP085 a la Raspberry Pi según el siguiente esquema:

  • VCC al pin1 (3V3)
  • SDA al pin3 (GPIO 0, SDA)
  • SCL al pin5 (GPIO 1, SCL)
  • GNA al pin6 (por ejemplo) GND
Sensor BMP085 conectado a una Raspberry Pi Model A+

Sensor BMP085 conectado a una Raspberry Pi Model A+

La Raspberry Pi puede acceder al sensor por medio del bus I2C. Para poder usar este bus, debemos antes instalar:

sudo apt-get install python-smbus

(Se instalará automáticamente i2c-tools; si no, ejecutar: sudo apt-get install i2c-tools).
También hay que habilitar el soporte a I2C en el núcleo. Ejecutamos sudo raspi-config:

Captura de pantalla 2015-03-20 a las 19.20.05

Captura de pantalla 2015-03-20 a las 19.21.48

Captura de pantalla 2015-03-20 a las 19.22.50

Captura de pantalla 2015-03-20 a las 19.24.55

Captura de pantalla 2015-03-20 a las 19.25.30

Captura de pantalla 2015-03-20 a las 19.25.47

Ahora debemos editar el fichero:

sudo nano /etc/modules

Y añadir las dos siguientes líneas al final:

i2c-bcm2708 
i2c-dev

Y luego debemos editar el fichero:

sudo nano /etc/modprobe.d/raspi-blacklist.conf

y comentar (añadir una # delante de la línea), las dos siguientes líneas:

#blacklist spi-bcm2708
#blacklist i2c-bcm2708

(En mi caso, la segunda línea ya estaba comentada).

Ahora hay que editar el siguiente fichero:

sudo nano /boot/config.txt

Y añadir las dos siguientes líneas al final:

dtparam=i2c1=on
dtparam=i2c_arm=on

Reiniciamos la Raspberry Pi (sudo reboot).

Si ya tenemos conectado el sensor y ejecutamos el siguiente comando:

sudo i2cdetect -y 1

Deberíamos obtener algo así:

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- 77

Esto ya nos dice que en 0x77 está conectado nuestro dispositivo.
Vamos a acceder al sensor por medio de una librería python, desarrollada por Adafruit. Para ello ejecutamos los siguientes comandos:

sudo apt-get update
sudo apt-get install git build-essential python-dev python-smbus
git clone https://github.com/adafruit/Adafruit_Python_BMP.git
cd Adafruit_Python_BMP
sudo python setup.py install

Con esto ya se ha instalado la librería. Podemos probar el siguiente ejemplo:

cd examples
sudo python simpletest.py

que produce el siguiente resultado:

Temp = 24.90 *C
Pressure = 92647.00 Pa
Altitude = 748.91 m
Sealevel Pressure = 92643.00 Pa

¡Y con esto ya tenemos funcionando el sensor BMP085!

Para usar la librería, será tan sencillo como copiar los ficheros Adafruit_BMP085.py y Adafruit_I2C.py al mismo directorio que tu fichero python, y añadir al comienzo:


from Adafruit_BMP085 import BMP085
bmp = BMP085(0x77)

Y luego, las funciones a emplear son:


temperatura = bmp.readTemperature()
presion = bmp.readPressure()
altitud = bmp.readAltitude()

Referencias

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *