BME688 Environmental Sensor
| |||||||||||||||||||||
|
说明
产品概述
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 |
接口定义
I2C接口 | SPI接口 | ||
功能引脚 | 描述 | 功能引脚 | 描述 |
VCC | 电源正 | VCC | 电源正 |
GND | 电源地 | GND | 电源地 |
SDA | 数据线 | MOSI | SPI数据输入 |
SCL | I2C时钟线 | SCK | SPI时钟输入 |
ADDR | 地址片选(默认为高电平): 为高电平时,地址为:0x77 为低电平时,地址为:0x76 |
MISO | SPI数据输出 |
CS | NC | CS | SPI片选,低电平有效 |
用于树莓派
硬件连接
上图以连接到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
- 将会有如下的打印信息:
- 如果显示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
- 将会有如下打印信息:
- 若显示77则表示BME68x模块成功连接至树莓派成功。
- 若将ADDR连接至GND则打印出76:
注意:以上测试确保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驱动。
- 同时检查main.c中的I2C器件地址,确保和当前BME68x模块器件地址一致(默认I2C器件地址为0x77(BME68X_I2C_ADDR_HIGH),若将ADDR接地则其器件地址为0x76(BME68X_I2C_ADDR_HIGH)):
- 如果采用SPI驱动:则将BME68x模块按照接口说明中的SPI总线接线方式进行接线,并将main.c文件中的USEIIC宏定义改为0。
- 保存并退出编辑,然后重新编译:
sudo make clean sudo make
- 运行:
sudo ./bme68x
- 将显示如下数据:
- 从左至右分别显示了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)。若未成功显示数据,或数据显示不正常请检查连线,通信方式,以及器件地址是否有误。
用于Arduino
安装库
在Arduino IDE的库管理中,可以下载到BME68x传感器的函数库,下载方法为:
- 打开Arduino IDE 2.0
- 在左侧工具栏打开“库管理”选项,搜索BME68x
硬件连接
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)。
- 若未成功显示数据,或数据显示不正常请检查连线,通信方式,以及器件地址是否有误。
I2C
- 若需要修改通讯方式为I2C首先按照I2C方式修改硬件连线;
- 参考下图,修改原有主程序;
- 编译上传程序,打开串口监视器,其中从左至右分别显示了BME68x传感器测得的温度(摄氏度),大气压(百帕斯卡),相对湿度(%RH),海拔(m),气体阻值(ohms)。
用于Raspberry Pi Pico
环境搭建
本教程使用Thonny进行代码测试,点击下载相关IDE并安装后打开Thonny
- 请参考官方文档搭建python环境,在Thonny的Tools->Options->Interprete选择Raspberry Pi Pico设备,如下图所示
程序下载
1. 点击下载[ 示例程序]
2. 解压示例程序;
3. 打开Thonny,先确认已经连接到了pico,之后在左上角打开解压后的程序路径,右键pico文件夹,选择上传,如图所示
硬件连接
I2C接口 | |
功能引脚 | Pico引脚 |
VCC | 3.3V /5V |
GND | GND |
SDA | GP6 |
SCL | GP7 |
ADDR | NC/GND |
CS | NC |
演示
1. 打开Thonny IDE,选择pico目录,双击打开read-all.py文件然后运行例程,如图所示
用于ESP32
在Arduino IDE中安装ESP32插件
-
打开Arduino IDE,点击左上角的文件,选择首选项
-
在附加开发板管理器网址中添加如下链接,然后点击OK
https://dl.espressif.com/dl/package_esp32_index.json
注意:如果您已经有 ESP8266 板 URL,您可以使用逗号分隔 URL,如下所示:https://dl.espressif.com/dl/package_esp32_index.json,http://arduino.esp8266.com/stable/package_esp8266com_index.json
-
下载packages压缩包,将解压的packages文件复制到如下路径下
C:\Users\xutong\AppData\Local\Arduino15
安装库
在Arduino IDE的库管理中,可以下载到BME68x传感器的函数库,下载方法为:
- 打开Arduino IDE 2.0
- 在左侧工具栏打开“库管理”选项,搜索BME68x
硬件连接
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)。
- 若未成功显示数据,或数据显示不正常请检查连线,通信方式,以及器件地址是否有误。
I2C
- 若需要修改通讯方式为I2C首先按照I2C方式修改硬件连线;
- 参考下图,修改原有主程序;
- 编译上传程序,打开串口监视器,其中从左至右分别显示了BME68x传感器测得的温度(摄氏度),大气压(百帕斯卡),相对湿度(%RH),海拔(m),气体阻值(ohms)。
FAQ
气压传感器计算得到的高度一般用在短周期内的相对值。比如坐垂直电梯,电梯启动前记录一个高度,电梯上升到3层,记录一个高度,两个高度的高度差是准确的。
如果需要用在绝对场合,可以输入当前位置的高度作为计算的初始值,然后运动观察高度变化就是准确的。不过如果时间长了,也会容易出现高度漂移的问题。
如果项目要求长时间获取准确高度值且频率要求高,就需要融合其他传感器进行处理,比如GPS。