在Python中使用BMP180 I2C温度和压力传感器

8

BMP180设备是数字大气压传感器。这在一个小模块上可用,该模块可通过I2C接口访问传感器。这使我们能够以最少的布线轻松地将其连接到Raspberry Pi。

我的模块是一个尺寸为15x13mm的小型PCB,带有5针接头。其他模块上的针脚顺序可能会有所不同,因此请注意标签,以便从Pi连接正确的电线。

BMP180压力温度模块

BMP180由Bosch和 官方BMP180数据表 包括所有技术细节。

配置I2C接口

为了使用此模块,您必须在Raspberry Pi上启用I2C接口,因为默认情况下未启用它。这是一个相当简单的过程, 在Raspberry Pi上启用I2C接口 教程。

连接硬件

下表显示了如何将模块连接到Raspberry Pi’s 通用输入输出头(P1)。请参考我的 通用输入输出头指南 为图。

模块PCB描述通用输入输出接头引脚
VCC3.3VP1-01
地线地面P1-06
SCLI2C SCLP1-05
SDAI2C SDAP1-03
3.3V

这是面包板设置图。如果要连接模块’只需将四个针脚直接连接到Pi,您只需要四根母-母线即可。

BMP180模块设置

面包板图使用了我在Fritzing中定义的自定义零件。可用的其他模块具有不同的引脚排列,因此,如果与本教程中显示的引脚不同,请确保将正确的引脚连接到Pi。

连接设备并打开Pi电源“i2cdetect”命令应显示地址为0x77的设备。

示例Python脚本

我的示例脚本可以从传感器读取压力和温度数据,可以使用以下命令直接将其下载到您的Pi:

wget //bitbucket.org/MattHawkinsUK/rpispy-misc/raw/master/python/bmp180.py

或使用 这个连结 在浏览器中。

为了运行它,您可以使用以下命令:

sudo 蟒蛇 bmp180.py

输出看起来像这样:

BMP180示例输出

该模块可从以下位置获得 亚马孙以及其他许多在线电子商店。您也可以找到 .

分享。

8条留言

  1. 很棒的教程!可以解决问题,尽管在传输到网页时,Python的几行已被合并:22和72。
    I’自从发现Bosch BME280以来,它还包括一个湿度传感器(!),并且具有I2C + SPI接口。可以从著名的拍卖网站便宜地获得。

  2. 我的传感器BME280(不是180)怎么了?
    我正在Pi3上尝试。如图所示,SDA和SCL引脚连接到Pi上的相同引脚。但是gound和Vcc是不同的,这不重要。

    当我运行i2cdetect时显示为76

    pi @ raspberrypi:〜/ Desktop $ 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:— — — — — — 76 —
    pi @ raspberrypi:〜/台式机$

    所以我像这样更改了代码的第6行
    DEVICE = 0x77#默认设备I2C地址

    我的输出是这样的

    pi @ raspberrypi:〜/ Desktop $ sudo 蟒蛇 pressureBMP280.py
    芯片编号:88
    版本:0

    温度:82.7 C
    压力:-43958.91 mbar

  3. 马特,感谢您的代码–开箱即用。
    我的问题:如何计算压力:

    我住在班加罗尔,现任官员“air pressure”是1018 mbars,但是python代码的输出为913 mbars,而不是接近1018 mbars的东西。
    //www.worldweatheronline.com/bangalore-weather/karnataka/in.aspx

    高度一’m in is 920 meters.

    有一种叫做“Absolute” pressure and “relative” Pressure.

    我相信绝对压力是913毫巴,相对压力是“1018”大约,我认为您的代码代表着绝对的压力”如果我没有记错的话。
    欣赏是否两者都可以显示。

    但是感谢您准备好的代码。对像我这样的初学者很有帮助。

发表评论

该网站使用Akismet减少垃圾邮件。 了解如何处理您的评论数据.