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í.
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
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:
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
Hola que tal amigo! me queda la siguiente duda de esto..
Este sensor va dentro de un poso de agua o similar y listo?
Obtengo niveles y precion?
Gracias…