昨天吃了空, 拿出树莓派玩, 想试试用它放个高清碟是啥效果,结果悲剧的是高清碟没放出, 还把系统搞死了. 没法只好重装了系统, 也好, 就随便记录了下从BMP085上读取数据的整个过程.
因为咱对硬件不熟悉, 也就不罗嗦树莓派系统怎么启动, 传感器怎么连接等等问题了, 反正这些问题我全是google来的. 这里我从树莓派启动完成, BMP085连接完成开始说了.
1. 激活I2C总线
BMP085传感器使用的是I2C总线, 要想访问连接在上面的BMP085, 就必须先激活I2C总线, 因为默认情况下, 树莓派是关闭I2C总线的.
a. 修改系统'模块黑名单'配置
如下命令, 将i2c总线从系统默认的黑名单中剔除
pi@raspberrypi:~/Adafruit-Raspberry-Pi-Python-Code-master/Adafruit_BMP085$ vi /etc/modprobe.d/raspi-blacklist.conf
# blacklist spi and i2c by default (many users don't need them)
blacklist spi-bcm2708
blacklist i2c-bcm2708
注释掉i2c模块配置
#blacklist i2c-bcm2708
b. 激活i2c总线
pi@raspberrypi:~$ sudo modprobe i2c-dev
重启后, 通过下列命令可以看到i2c总线已经激活,可以使用了.
pi@raspberrypi:~$ ls /dev/i2c*
/dev/i2c-0 /dev/i2c-1
或者,
pi@raspberrypi:~$ sudo i2cdetect -l
i2c-0 i2c bcm2708_i2c.0 I2C adapter
i2c-1 i2c bcm2708_i2c.1 I2C adapter
或者,
pi@raspberrypi:~$ sudo i2cdetect -y 1
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, 就是我们的BMP085了.(BMP085在I2C设备中的编号是0x77)
到此BMP085配置完成, 可以使用了. 但记得每次树莓派重启后, 都需要重新激活I2C总线, 要想偷懒, 那就在系统启动模块配置中添加I2C模块, 如下命令:
pi@raspberrypi:~$ sudo vi /etc/modules
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
# Parameters can be specified after the module name.
snd-bcm2835
i2c-bcm2708
i2c-dev
当然, 你也可以将I2C激活命令添加到类似init.d或者rc.local中去.
2. 安装I2C运行开发库
因为树莓派直接支持Python, 所以这里选择使用Python来读取BMP085数据.
a. 安装i2c-tools工具
sudo apt-get install i2c-tools
b.安装python smbus库
sudo apt-get install python-smbus
(这两步似乎可以不做. 最早我是安装了的, 但后来卸载了这两个可以, 依然可以读取的数据)
c. 下载/解压Adafruit库
wget http://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code/archive/master.zip
unzip master.zip
Adafruit库是一个使用Python实现I2C操作的库, 其中包括了多个I2C设备的代码, BMP085只是其支持的一个传感器.
到此, 就可以读取BMP085的数据了.
pi@raspberrypi:~/Adafruit-Raspberry-Pi-Python-Code-master/Adafruit_BMP085$ sudo ./Adafruit_BMP085_example.py
Temperature: 25.50 C
Pressure: 1018.63 hPa
Altitude: -45.28