查看: 1120|回复: 4
打印 上一主题 下一主题

【banana pi BPI-M3】08 BMP085温度气压传感器读写笔记

[复制链接] qrcode

31

主题

54

帖子

143

积分

注册会员

Rank: 2

积分
143
楼主
跳转到指定楼层
发表于 2016-5-28 07:46 PM | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 独行客 于 2016-5-29 08:26 编辑

【bananapi BPI-M3】08 BMP085温度气压传感器读写笔记
所有资料镜像工具都分享到百度网盘:
http://pan.baidu.com/s/1c1UzF00
没有密码,欢迎下载~~~~~~
QQ:277563381
系统是:【ubuntu-mate-15.10-desktop-armhf-raspberry-pi-2-bpi-m3-sd-emmc-20151203.img】
是之前烧写到eMMC里面的了

要提前安装好 【BPI-WiringPi】哦,这个I2C操作依赖BPI-WiringPi里面的库


1.   上实物图:

你以为模块是这样子的:


可惜现实是这样的,没有做板,自己用万能板反过来连接引出对应IO口。
这个模块是很久以前买的芯片,然后很久以前用洞洞板做的。

























2.   原理图

来自官方规格书,其中只需要   电源(3.3V) 地(GND)  SDA SCL 4条线 接出来即可,XCLR 悬空是不行的,
(后来试验,必须上拉XCLR,否则设备会复位检测不到)相当于片选, ,只有一个芯片时要高电平使能




3.   接线说明
把模块上的 4条线 电源(3.3V 地(GND  SDA SCL 分别接到香蕉派 BPI-M3的扩展口上,如下:

扩展口定义如下








电源(3.3V 接扩展口 1 3.3V
地(GND   接扩展口 9 GND
SDA接扩展口 3TWI2-SDA
SCL接扩展口 5TWI2-SCK

实物是这样子的:





参考别人的接线图






解释下TWI2-SDA
TWI实际就表示I2C总线,是当初atmel公司为了省去给MICROCHIP专利费而改用TWI,实际上协议基本一样的,当然现在atmel公司已经被MICROCHIP收购了。
TWI2后面的 2表示I2C的第二条I2C数据总线 ,香蕉派好像还有另外2 TWI0 TWI1
SDA 表示数据总线
SCL 表示时钟总线



1.   扫描I2C线上的设备
打开SSH终端,登陆后,用root账号操作
  1. bpi@bananapi:~$su
  2. 密碼:
  3. root@bananapi:/home/bpi#
复制代码




利用命令
  1. i2cdetect-y 2
复制代码

来扫描I2C总线上的设备

i2cdetect -y 2  说明
-y  指定总线序号
2即刚才的TWI2

  1. root@bananapi:/home/bpi#i2cdetect -y 2
复制代码






发现 一个设备 77 的设备地址有设备
但是 BMP085的设备地址不是写地址0xEE,怎么是0x77呢?
后来才知道 0x77是设备地址的高7位,用XP自带的计算器的计算器转换后为 1110111
最后一位 读为1 写为0即:
  1. 0xEE = 11101110B

  2. 0xFF= 11101111B
复制代码





读出设备里面的数据看看




5.   写(抄代码)试验模块BMP085
BING了下,github上有开源用于树莓派的BMP085源码
于是下载下来试试
地址在这:https://github.com/mvadai/BMP085
下载命令:
  1. #git clone https://github.com/mvadai/BMP085.git
复制代码


下载后,没有Makefile,不方便编译,于是自己写了一个简单的

编译同时安装命令:
  1. #make
复制代码

运行命令输入:
  1. ./MV_bmp085
  2. root@bananapi:/home/bpi/sourceCodeBPI-M3/BMP085#./MV_bmp085
  3. Temperature: 28.0 *C,Pressure: 100245 Pa
复制代码


安装
  1. #make install
复制代码

然后就可以在终端任意路径调用了,当make时已经自动安装了

另外,我写了个简单脚本,每隔2秒刷新显示气压温度
  1. 脚本名称:dispAll.sh
复制代码

  1. while true;
  2. do
  3.        ./MV_bmp085
  4.        sleep 2
  5. done
复制代码


运行脚本命令
  1. root@bananapi:/home/bpi/sourceCodeBPI-M3/BMP085#sh dispAll.sh
  2. Temperature: 28.0 *C,Pressure: 100241 Pa
复制代码

整个工程我已经修改好,打包上来了

BMP085-源码.zip BMP085.pdf

总结:
后来测试发现总是偶尔读取温度气压不正常,用测试脚本检测:
  1. $ while true; doi2cdetect -y 2; sleep 2; done
复制代码



偶尔可以发现设备,后来查看规格书,发现XCLR脚要拉高,悬空只有2.几伏,受点干扰就会造成模块复位(低电平)
于是强行把XCLR脚接到3.3V,理论上是要接上拉电阻到3.3V的,再测试发现问题解决




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

0

主题

67

帖子

4

积分

新手上路

Rank: 1

积分
4
沙发
发表于 2016-5-28 07:46 PM | 只看该作者
该死的字数限制下面继续

Makefile内容如下:


  1. all:
  2.        make mv
  3.        make ws
  4.        make install
  5.        #make clean
  6. mv:
  7.        gcc -Wall -std=gnu99 MV_bmp085.c -o MV_bmp085 -l wiringPi
  8. ws:
  9.        gcc -Wall -std=gnu99 WS_bmp085.c -o WS_bmp085 -l wiringPi -lm
  10. install:
  11.        sudo cp MV_bmp085 /bin/mv_bmp085
  12.        sudo cp WS_bmp085 /bin/ws_bmp085
  13. uninstall:
  14.        sudo rm  /bin/mv_bmp085
  15.        sudo rm  /bin/ws_bmp085
  16.        sudo rm  /bin/MV_bmp085
  17.        sudo rm  /bin/WS_bmp085

  18. clean:
  19.        sudo rm  MV_bmp085
  20.        sudo rm  WS_bmp085
复制代码




回复 支持 反对

使用道具 举报

145

主题

238

帖子

453

积分

中级会员

Rank: 3Rank: 3

积分
453
板凳
发表于 2016-5-30 09:26 AM | 只看该作者
新作品,赞一个
回复 支持 反对

使用道具 举报

0

主题

70

帖子

8

积分

新手上路

Rank: 1

积分
8
地板
发表于 2016-6-6 10:30 AM | 只看该作者
菜鸟来学习了,谢谢分享。。。
回复 支持 反对

使用道具 举报

2

主题

108

帖子

52

积分

注册会员

Rank: 2

积分
52
5#
发表于 2016-6-10 07:00 AM | 只看该作者
赞一个,这个不错,扩展了功能。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表