Yesterday I have got a letter containing BMP085 pressure sensor which I bought on ebay on November 20th 2012 (yes the post made a history with +50 days delivery from China).
To connect BMP085 to RPI first one has to install (in case both packages are not installed yet):
pi@raspberrystar ~ $ sudo apt-get install i2c-tools pi@raspberrystar ~ $ sudo apt-get install python-smbus
Now one has to enable i2c in raspbian. First one has to add the user pi to the group i2c:
pi@raspberrystar ~ $ sudo adduser pi i2c
Next one has to check the contents of
/etc/modprobe.d/raspi-blacklist.conf
and /etc/modules
:
pi@raspberrystar ~ $ less /etc/modprobe.d/raspi-blacklist.conf # blacklist spi and i2c by default (many users don't need them) blacklist spi-bcm2708 blacklist i2c-bcm2708 pi@raspberrystar ~ $ less /etc/modules ... i2c-dev i2c-bcm2708
Some users advocate to remove i2c-bcm2708 from blacklisted modules but this seems unneccessary as:
pi@raspberrystar ~ $ lsmod | grep i2c i2c_bcm2708 3542 0 i2c_dev 5587 0
so I have i2c_bcm270
w/o modifying
/etc/modprobe.d/raspi-blacklist.conf
Reboot now to activate the new settings
The board my sensor came on has eight pins. There are boards
with 6 pins as well which seems to be more popular.
Only four out of 8 pins are used and the connections
are as follows (see pictures):
GND goes to Ground on the Pi (P1-05)
3.3 goes to 3V3 on the Pi (P1-01)
SDA goes to SDA on the Pi (P1-02)
SCL goes to SCL on the Pi (P1-03)
In Reading data from a Bosch BMP085 with a Raspberry Pi 6-ping sensor is used and the pins connections are different. I have tried but it does not work for my sensor.
I connect sensor to RPI using wires with female jumpers on both ends.
To check if the sensor (or other i2c device) is connected correctly,
one can run i2cdetect
:
pi@raspberrystar ~ $ i2cdetect -y 0 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
77 in the last row indicates that sensor is connected properly (otherwise the output will consists of rows of '--' only).
To get data from the sensor one has to install Adafruit-Raspberry-Pi-Python-Code or compile small C program available here:
## Download john.geek's C application: wget http://www.john.geek.nz/wp-content/uploads/2012/08/testBMP085.c wget http://www.john.geek.nz/wp-content/uploads/2012/12/smbus.c wget http://www.john.geek.nz/wp-content/uploads/2012/12/smbus.h ## Compile & run it gcc -Wall -o testBMP085 ./smbus.c ./testBMP085.c ./testBMP085 ## Download >Adafruit's one: git clone https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code.git cd Adafruit-Raspberry-Pi-Python-Code cd Adafruit_BMP085 ## Run python Adafruit_BMP085_example.py
Note: testBMP085
works with sensor connected to RPi as described in this post
(not as described by
john geek).
BTW: the pressure is identical as reported by my WH 2080 weather station. Perhaphs WH 2080 use exactly the same sensor!