El sensor BMP085 es de alta precisión con un rango de medida de entre 300 y 1100 hPa (Hecto Pascal) con un margen de error mínimo de tan sólo 0.03 hPa. Está basado en tecnología piezo-resistiva de alta eficiencia, linearidad y larga duración.
Materiales usados
- Beaglebone Rev. A5 con Ubuntu 12.04
- Fuente de poder 5V @ 1800 mA
- Adaptador WiFi, ver artículo anterior
- Protoboard
- 4 x Cables para conectar
- Sensor BMP085
Conectividad y software
sudo apt-get update sudo apt-get install i2c-tools
root@omap:/sys/bus/i2c/drivers# i2cdetect -r -y 3 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- UU UU UU UU -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- 77
echo bmp085 0x77 > /sys/class/i2c-adapter/i2c-3/new_device
dmesg | grep bmp [280914.380172] i2c i2c-3: new_device: Instantiated device bmp085 at 0x77 [280914.463284] bmp085 3-0077: BMP085 ver. 2.0 found. [280914.463397] bmp085 3-0077: Successfully initialized bmp085! root@omap:
cat /sys/bus/i2c/drivers/bmp085/3-0077/pressure0_input
cat /sys/bus/i2c/drivers/bmp085/3-0077/temp0_input
from time import sleep while(True): f = open("/sys/bus/i2c/drivers/bmp085/3-0077/temp0_input","r") datos = f.read() vect = datos.split('\x00') temp = float(vect[0]) temp1 = temp/10 temp2d = ("%.2f" % temp1) print switch12d f.close sleep(30)
Si guardan el texto anterior en un archivo, por ejemplo temp.py, para ejecutar simplemente usamos el comando
sudo python temp.py
from time import sleep import urllib url = http://www.ejemplo.com/hola.php? while(True): f = open("/sys/bus/i2c/drivers/bmp085/3-0077/temp0_input","r") datos = f.read() vect = datos.split('\x00') temp = float(vect[0]) temp1 = switch/10 temp2d = ("%.2f" % temp1) print temp2d params = urllib.urlencode({'id':'sensor1','temp':temp2d}) new_url = url + params urllib.urlopen(new_url) f.close sleep(5)
Enviando la temperatura por Twitter !
Una forma muy simple de hacer esto es instalar twidge, un conocido cliente twitter para linea de comandos, en el Beaglebone. Esto se indica aquí, paso a paso, veras que es bastante fácil.
Luego desde la línea de comandos puedes ejecutar por ejemplo
ubuntu@omap:/home/pruebas$ cat /sys/bus/i2c/drivers/bmp085/3-0077/temp0_input > temperatura
A continuación
ubuntu@omap:/home/pruebas$ cat temperatura | twidge update