BME688 Environmental Sensor

来自Waveshare Wiki
跳转至: 导航搜索


{{{name2}}}
{{{name3}}}
功能简介
特性 BME68x环境传感器
' 无特性,不解释
' 无特性,不解释
' 无特性,不解释
' 无特性,不解释
接口 I2C SPI

说明

产品概述

BME688是一款四合一的环境传感器,可测量温度、湿度、大气压和空气质量,体积小巧,低功耗,可适用于智能家居,移动应用环境监测和可穿戴设备等。

特点

  • 板载Bosch BME688传感器,可测量温度、湿度、大气压和空气质量
  • 支持I2C接口通信,可设置I2C地址,支持I2C总线级联
  • 支持SPI接口通信,默认为I2C接口,可通过CS片选使能SPI
  • 板载电平转换电路,可兼容3.3V/5V的工作电平
  • 提供完善的配套资料手册(RaspberryPi/Pi Pico/Arduino/ESP32示例程序和用户手册等)

产品参数

型号 BME280 BME680 BME688
功能概述 可检测:大气压力、环境温度、相对湿度 可检测:大气压力、环境温度、相对湿度、气体(结合BSEC软件包,可输出 IAQ 空气质量) 与BME680相同,
+ 适用于各种附加气体的检测(比如:VSC、一氧化碳、氢气等)
+ 多种气体区分
+ 人工智能(需要自行二次开发)
通信接口 I2C 和 SPI
温度测量范围 -40~85°C
温度测量精度 ±1.0℃ (0~65℃) ±0.5℃ (0~65℃)
湿度测量范围 0~100% r.H.
湿度测量精度 ±3% r.H.
气压测量范围 300~1100 hPa
气压测量精度 ±1.0hPa (0~65℃) ±0.6hPa (0~65℃)
IAQ测量范围 不支持 0~500 IAQ
(传感器输出的是VOC气体变化阻值,须用Bosch BSEC库才能输出IAQ)
产品尺寸 27mm × 20mm
注意:BME680和BME688传感器,包含一个小型 MOX 传感器。加热的金属氧化物会根据空气中的挥发性有机化合物 (VOC) 改变电阻,因此可用于检测气体和酒精,例如乙醇、酒精和一氧化碳,并进行空气质量测量。注意它会给你一个电阻值(即上图中的Gas resistance),总的VOC含量,它不能区分气体或酒精。若您希望转换成IAQ空气质量指数,须结合官方提供的BSEC软件库(非开源库)使用,Bosch对该软件库使用有相关限制和许可,用户须可根据需求自行了解使用细项再做集成使用。

接口定义

BME688-hw.png

I2C接口 SPI接口
功能引脚 描述 功能引脚 描述
VCC 电源正 VCC 电源正
GND 电源地 GND 电源地
SDA 数据线 MOSI SPI数据输入
SCL I2C时钟线 SCK SPI时钟输入
ADDR 地址片选(默认为高电平):
为高电平时,地址为:0x77
为低电平时,地址为:0x76
MISO SPI数据输出
CS NC CS SPI片选,低电平有效


用于树莓派

硬件连接

BME68x-pi-pin-connected.jpg
上图以连接到I2C接口为例作为演示,其中ADDR引脚可用于设置传感器的I2C地址,默认不接I2C地址为0x77,若把ADDR接到GND,则I2C地址为0x76。
如果您希望通过SPI接口连接树莓派进行通信,请参考下表连接。

I2C接口 SPI接口
功能引脚 Raspberry引脚 功能引脚 Raspberry引脚
VCC 3.3V /5V VCC 3.3V /5V
GND GND GND GND
SDA SDA.1 MOSI MOSI
SCL SCL.1 SCK SCLK
ADDR NC/GND MISO MISO
CS NC CS 27(wiringPi)

软件配置

开启I2C/SPI接口

  • 执行如下命令进行树莓派配置:
sudo raspi-config
  • 选择Interfacing Options -> I2C -> yes 启动I2C内核驱动
  • 选择Interfacing Options -> SPI -> yes启动SPI内核驱动
  • 保存退出后,重启树莓派:
sudo reboot
  • 重启后,运行命令查看,I2C,SPI模块是否已启动:
lsmod
  • 将会有如下的打印信息:

BME280-Environmental-Sensor-user-manual-3.png

  • 如果显示i2c_bcm2835和spi_bcm2835则表示I2C,SPI模块已启动。
  • 将BME68x模块按照前述I2C总线接口说明连接至树莓派。
  • BME68x模块的默认I2C器件地址是0x77,若将ADDR接地则器件地址更变为0x76。
  • 安装i2c-tools工具进行确认:
sudo apt-get install i2c-tools
  • 查询已连接的I2C设备
i2cdetect -y 1
  • 将会有如下打印信息:

BME68X I2C add0x77.png

  • 若显示77则表示BME68x模块成功连接至树莓派成功。
  • 若将ADDR连接至GND则打印出76:

BME68X I2C add0x76.png
注意:以上测试确保I2C总线上没有其它地址和该器件地址重合的设备。如果以上测试成功则I2C模块加载成功,同时BME68x模块成功连接至树莓派。 同时,BME68x模块支持SPI驱动,可参考SPI接口说明部分将BME68x连接至树莓派。

下载示例程序

cd ~
wget https://www.waveshare.net/w/upload/4/49/BME68X_Environmental_Sensor_code.zip
unzip BME68X_Environmental_Sensor_code.zip
sudo chmod -R 777 BME68X_Environmental_Sensor_code

C

演示

  • 按上图连接好硬件,并做好软件配置后。
  • 如果采用I2C驱动:则先确定I2C器件地址,BME68x模块默认I2C器件地址为0X77,若将ADDR引脚接地(或将PCB板上标注 ADDR 丝印的焊盘短接),则其I2C器件地址变更为0X76。
  • 进入到 BME68X_Environmental_Sensor_code/RaspberryPi/C 路径下:
cd BME68X_Environmental_Sensor_code/RaspberryPi/C
  • 打开main.c文件:
nano main.c 
  • 确保main.c中的USEIIC的宏定义为1,以采用I2C驱动。

BME68X Raspberry I2C.png

  • 同时检查main.c中的I2C器件地址,确保和当前BME68x模块器件地址一致(默认I2C器件地址为0x77(BME68X_I2C_ADDR_HIGH),若将ADDR接地则其器件地址为0x76(BME68X_I2C_ADDR_HIGH)):

BME68X Raspberry I2C add.png

  • 如果采用SPI驱动:则将BME68x模块按照接口说明中的SPI总线接线方式进行接线,并将main.c文件中的USEIIC宏定义改为0。

BME68X Raspberry SPI.png

  • 保存并退出编辑,然后重新编译:
sudo make clean
sudo make
  • 运行:
sudo ./bme68x
  • 将显示如下数据:

BME68X Raspberry Data.png

  • 从左至右分别显示了BME68x测得的温度(摄氏度),大气压(百帕斯卡),相对湿度(%RH),气体阻值(ohms)。若未成功显示数据,或数据显示不正常请检查连线,通信方式,以及器件地址是否有误。

python

  • python例程仅有I2C模式

安装函数库

sudo pip3 install bme680

演示

  • 进入示例程序文件夹
cd BME68X_Environmental_Sensor_code/RaspberryPi/Python/examples
  • 运行程序
sudo python3 read-all.py
  • 程序会先打印一系列模块信息,最后从左至右分别显示了BME68x测得的温度(摄氏度),大气压(百帕斯卡),相对湿度(%RH),气体阻值(ohms)。若未成功显示数据,或数据显示不正常请检查连线,通信方式,以及器件地址是否有误。

BME68X Raspberry python.png

用于Arduino

安装库

在Arduino IDE的库管理中,可以下载到BME68x传感器的函数库,下载方法为:

  • 打开Arduino IDE 2.0
  • 在左侧工具栏打开“库管理”选项,搜索BME68x

BME68X Arduino Download.png

硬件连接

I2C接口 SPI接口
功能引脚 Arduino引脚 功能引脚 Arduino引脚
VCC 3.3V /5V VCC 3.3V /5V
GND GND GND GND
SDA SDA MOSI D11
SCL SCL SCK D13
ADDR NC/GND MISO D12
CS NC CS D10

演示

SPI

  • 该程序默认通讯方式为SPI,参考上方表格将模块连接至开发板(本演示使用Arduino uno)
  • 依次点击:文件->示例->BME68x Sensor library->forced_mode,打开示例程序;
  • 将开发板连接到电脑(本演示使用Arduino uno),点击:工具->开发板,选择对应开发板,点击:工具->端口选择对应端口;
  • 点击上传按钮将程序编译上传至看开发板,等待上传成功;
  • 点击:工具->串口监视器,其中从左至右分别显示了BME68x传感器测得的温度(摄氏度),大气压(百帕斯卡),相对湿度(%RH),海拔(m),气体阻值(ohms)。

BME68X Arduino Data.png

  • 若未成功显示数据,或数据显示不正常请检查连线,通信方式,以及器件地址是否有误。

I2C

  • 若需要修改通讯方式为I2C首先按照I2C方式修改硬件连线;
  • 参考下图,修改原有主程序;
  • 编译上传程序,打开串口监视器,其中从左至右分别显示了BME68x传感器测得的温度(摄氏度),大气压(百帕斯卡),相对湿度(%RH),海拔(m),气体阻值(ohms)。

BME68X Arduino I2C.png

用于Raspberry Pi Pico

环境搭建

本教程使用Thonny进行代码测试,点击下载相关IDE并安装后打开Thonny

  • 请参考官方文档搭建python环境,在Thonny的Tools->Options->Interprete选择Raspberry Pi Pico设备,如下图所示

Pico-10DOF-IMU013.jpg

程序下载

1. 点击下载[ 示例程序]
2. 解压示例程序; 3. 打开Thonny,先确认已经连接到了pico,之后在左上角打开解压后的程序路径,右键pico文件夹,选择上传,如图所示
BME68X Pico Upload.png

硬件连接

I2C接口
功能引脚 Pico引脚
VCC 3.3V /5V
GND GND
SDA GP6
SCL GP7
ADDR NC/GND
CS NC

演示

1. 打开Thonny IDE,选择pico目录,双击打开read-all.py文件然后运行例程,如图所示
BME68X Pico Data.png

用于ESP32

在Arduino IDE中安装ESP32插件

  1. 打开Arduino IDE,点击左上角的文件,选择首选项
    L76K ESP321.png
  2. 在附加开发板管理器网址中添加如下链接,然后点击OK
    https://dl.espressif.com/dl/package_esp32_index.json

    L76K ESP322.png
    注意:如果您已经有 ESP8266 板 URL,您可以使用逗号分隔 URL,如下所示:

    https://dl.espressif.com/dl/package_esp32_index.json,http://arduino.esp8266.com/stable/package_esp8266com_index.json
  3. 下载packages压缩包,将解压的packages文件复制到如下路径下
    C:\Users\xutong\AppData\Local\Arduino15

    ESP32平台安装包水印.jpg
    注意:将里面用户名:xutong替换成自己的用户名

安装库

在Arduino IDE的库管理中,可以下载到BME68x传感器的函数库,下载方法为:

  • 打开Arduino IDE 2.0
  • 在左侧工具栏打开“库管理”选项,搜索BME68x

BME68X Arduino Download.png

硬件连接

I2C接口 SPI接口
功能引脚 ESP32引脚 功能引脚 ESP32引脚
VCC 3.3V /5V VCC 3.3V /5V
GND GND GND GND
SDA P21 MOSI P23
SCL P22 SCK P18
ADDR NC/GND MISO P19
CS NC CS P15

演示

SPI

  • 该程序默认通讯方式为SPI,参考上方表格将模块连接至开发板
  • 依次点击:文件->示例->BME68x Sensor library->forced_mode,打开示例程序;
  • 将开发板连接到电脑,点击:工具->开发板,选择对应开发板,点击:工具->端口选择对应端口;
  • 点击上传按钮将程序编译上传至看开发板,等待上传成功;
  • 点击:工具->串口监视器,其中从左至右分别显示了BME68x传感器测得的温度(摄氏度),大气压(百帕斯卡),相对湿度(%RH),海拔(m),气体阻值(ohms)。

BME68X ESP32 SPI.png

  • 若未成功显示数据,或数据显示不正常请检查连线,通信方式,以及器件地址是否有误。

I2C

  • 若需要修改通讯方式为I2C首先按照I2C方式修改硬件连线;
  • 参考下图,修改原有主程序;
  • 编译上传程序,打开串口监视器,其中从左至右分别显示了BME68x传感器测得的温度(摄氏度),大气压(百帕斯卡),相对湿度(%RH),海拔(m),气体阻值(ohms)。

BME68X ESP32 I2C.png


FAQ


气压传感器计算得到的高度一般用在短周期内的相对值。比如坐垂直电梯,电梯启动前记录一个高度,电梯上升到3层,记录一个高度,两个高度的高度差是准确的。

如果需要用在绝对场合,可以输入当前位置的高度作为计算的初始值,然后运动观察高度变化就是准确的。不过如果时间长了,也会容易出现高度漂移的问题。

如果项目要求长时间获取准确高度值且频率要求高,就需要融合其他传感器进行处理,比如GPS。


售后


联系人:黄工
EMAIL:3005423122@qq.com
电话:0755-83040712
QQ:3005763927
微信:扫下方二维码添加
Hkx-wx.jpg

说明:进行售后服务前,请准备好客户信息(定货单位、定货人等),以供验证