Codejie's C++ Space

Using C++

RaspberryPi : Fetch data via BMP085 sensor


    昨天吃了空, 拿出树莓派玩, 想试试用它放个高清碟是啥效果,结果悲剧的是高清碟没放出, 还把系统搞死了. 没法只好重装了系统, 也好, 就随便记录了下从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

posted on 2013-10-15 23:41 codejie 阅读(2106) 评论(0)  编辑 收藏 引用 所属分类: 轮子精神Raspberry-pi


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


公告

Using C++

导航

统计

留言簿(73)

随笔分类(513)

积分与排名

最新评论

阅读排行榜

评论排行榜