驱动博世BME280温度、湿度、压力传感器超过I2C的库

RPi.bme280的Python项目详细描述


https://travis-ci.org/rm-hull/bme280.svg?branch=masterhttps://coveralls.io/repos/github/rm-hull/bme280/badge.svg?branch=masterhttps://img.shields.io/pypi/pyversions/rpi-bme280.svghttps://img.shields.io/pypi/v/rpi-bme280.svghttps://img.shields.io/maintenance/yes/2018.svg?maxAge=2592000

连接Bosch BME280数字传感器模块(能够感应 温度、湿度和压力)在Python2或3中,对覆盆子使用I2C 圆周率。我买的那套工具可以从eBay那里花几英镑买到。进一步的技术细节 BME280传感器可以在datasheet中找到 [pdf]。

mounted

GPIO引脚输出

BME280是一个I2C设备,因此连接到RPI非常简单:

P1标题

对于原型制作,P1头销应按如下方式连接:

Board PinNameRemarksRPi PinRPi Function
1VIN+3.3V PowerP01-13V3
2GNDGroundP01-6GND
3SCLClockP01-5GPIO 3 (SCL)
4SDADataP01-3GPIO 2 (SDA)

先决条件

确保i2c内核驱动程序已启用:

$ dmesg | grep i2c
[    4.925554] bcm2708_i2c 20804000.i2c: BSC1 Controller at 0x20804000 (irq 79) (baudrate 100000)
[    4.929325] i2c /dev entries driver

或:

$ lsmod | grep i2c
i2c_dev                 5769  0
i2c_bcm2708             4943  0
regmap_i2c              1661  3 snd_soc_pcm512x,snd_soc_wm8804,snd_soc_core

如果没有列出内核模块,并且没有使用dmesg显示任何内容,则这意味着 内核I2C驱动程序未加载。按如下方式启用I2C:

  1. 运行sudo raspi-config
  2. 使用向下箭头选择9 Advanced Options
  3. 向下箭头到A7 I2C
  4. 当要求您启用I2C时,选择yes
  5. 当询问是否自动加载内核模块时,也选择yes
  6. 使用右箭头选择<;finish>;按钮
  7. 当要求重新启动时,选择yes

重新启动后,重新检查dmesg | grep i2c命令是否显示 在继续之前加载I2C驱动程序。

或者,为了提高性能,从默认值增加I2C波特率 通过将/boot/config.txt更改为包含:

dtparam=i2c_arm=on,i2c_baudrate=400000

然后重新启动。

然后将您的用户添加到I2C组:

$ sudo adduser pi i2c

安装一些软件包:

$ sudo apt-get install i2c-tools python-pip

接下来检查设备是否正常通信(如果使用rev.1板, 总线使用0而不是1):

$ 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 --

安装python包

对于python2,在bash提示下,输入:

$ sudo python setup.py install

这将在^{tt7}中安装python文件$ 使它们可以在其他程序中使用。

对于python3,也可以键入:

$ sudo python3 setup.py install

cheeseshop安装

或者,可以使用pypi上的版本,只需执行以下操作:

$ sudo pip install RPi.bme280

软件驱动程序-示例用法

安装后,请确认i2c地址(请参阅先决条件,它将是 可能是0x76或0x77)和端口。

然后在python脚本或repl中:

importsmbus2importbme280port=1address=0x76bus=smbus2.SMBus(port)calibration_params=bme280.load_calibration_params(bus,address)# the sample method will take a single reading and return a# compensated_reading objectdata=bme280.sample(bus,address,calibration_params)# the compensated_reading class has the following attributesprint(data.id)print(data.timestamp)print(data.temperature)print(data.pressure)print(data.humidity)# there is a handy string representation tooprint(data)

然后应该打印如下内容:

ee50df9c-3aa3-4772-8767-73b6bb74f30f
2016-11-18 17:33:28.937863
20.563
980.91
48.41
compensated_reading(id=ee50df9c-3aa3-4772-8767-73b6bb74f30f,
    timestamp=2016-11-18 17:33:28.937863, temp=20.563 °C,
    pressure=980.91 hPa, humidity=48.41 % rH)

对于类似于数据记录器的应用程序,定期调用bme2.sample(bus, address, calibration_params)到 获取基于时间的读数。

参见weatherstation project了解 更完整的示例用法。

参考文献

>;待办事项

许可证

麻省理工学院许可证(MIT)

版权所有(c)2016 Richard Hull

兹免费准许任何人取得副本 本软件和相关文档文件(“软件”)的 在软件中不受限制,包括但不限于 使用、复制、修改、合并、发布、分发、再授权和/或出售 软件的副本,并允许软件的用户 在满足以下条件的情况下,可以这样做:

上述版权公告及本许可公告须包括在 软件的拷贝或大部分。

本软件按“原样”提供,无任何形式的保证,明示或 默示的,包括但不限于适销性保证, 适合特定目的和不侵权。在任何情况下 作者或版权所有者应对任何索赔、损害或其他 责任,无论是在合同诉讼、侵权诉讼或其他诉讼中, 不属于或与本软件有关,或使用或与本软件的其他交易有关。 软件。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java FloatingAction按钮与RecyclerView中的CardView重叠   java如何计算CardLayout中的卡数   从远程系统上传MySQL数据库并访问Java应用程序   java调用堆栈如何处理带或不带返回类型的递归?   Springboot中的java组计数聚集   java如何在javafx textarea中使用richtextfx   获取与Mockito相关的错误时出现Java问题   java如何将JaxRS响应转换为Wiremock响应   Hadoop集群java。net ConnectionException:连接被拒绝错误   java如何加载文件私有文件类型是pem   java在元空间中的提升和加载的类   如何将系统属性传递给从HTML启动的Java小程序   java如何从网页中获取值并在主类中使用它?安卓应用   java在春天,advisor和aspect之间有什么区别?   java如何检测文件是否已重命名?   java消息驱动Bean何时使用