BME680环境传感器(BME680 Environmental Sensor)

1.、产品详情

BME680环境传感器 温度/湿度/气压/气体监测 SPI/I2C接口

本产品为高精度环境传感器,BME680传感器实现温度、湿度、大气压VOC气体的监测,芯片的温度测量范围在-40+85°C, 湿度测量范围在0100 %,气压测量范围在3001100 hPa。采用PH2.0 6PIN连接线将模块与开发板连接,实现环境的检测,板子支持SPI/I2C接口,另外我们提供Arduino、树莓派、树莓派Pico以及ESP32版本示例程序示例程序可实现温度、湿度、大气压和气体的实时监测。

1.1.产品特性

  • 板载BME68X传感器,可测量温度、湿度、大气压和气体
  • I2CSPI接口可随意转换,默认是I2C 
  • 板载RT9193-33线性稳压器,功耗低,开启时间快
  • 板载电平转换电路,兼容3.3V和5V
  • 提供可用于Arduino、树莓派、树莓派Pico以及ESP32平台的开源示例程序

2.1、产品参数

传感器芯片

BME680

BME688

尺寸 

30mm(长) x 20mm(宽)

信号接口 

I2C/SPI

供电电压

3.3V/5V

温度测量范围

-40~+85℃ 

温度测量精度

±1℃(0~65℃)

±0.5℃ (0~65℃)

湿度测量

0~100%RH (分辨率0.008%RH,±3% RH)

气压测量范围

300~1100 hPa

气压测量精度

±0.6hPa (0~65℃)

气体检测

VOC 气体变化检测(如需计算 IAQ 空气质量系数,可结合博世的软件包)

VOC和VSC气体变化检测(如需计算 IAQ 空气质量系数和使用集成 AI 功能,可结合博世的软件包)

 

2.1.1.接口定义

引脚定义

I2C

SPI

VCC

电源正(3.3V/5V)

电源正(3.3V/5V)

GND

电源地

电源地

SCL/SCK

时钟线

串行时钟

SDA/MOSI

数据线

数据主输出/从输入

MISO/ADDR

NC

数据从输出/主输入

CS

NC

片选信号

 

资源简介

 

图1 BME680环境传感接口定义图

① PH2.0 6PIN连接器

② RT9193-33线性稳压器

③ BME68X传感器

 I2C接口焊盘

 用于设置I2C地址的滑动开关

外形尺寸

 

图2 BME680环境传感器尺寸图

2.2、产品使用

板载的I2C地址设置滑动开关默认处于0x77位置,在使用SPI通信方式时也需确保该开关处于0x77位置。

 

注意:所有平台的示例程序中气体检测结果均只是一个电阻值,如果您需要转换成IAQ空气质量指数,须结合官方提供的BSEC软件库(非开源库)使用,Bosch对该软件库使用有相关限制和许可,用户可根据需求自行了解再做集成使用。BSEC软件库链接为:https://www.bosch-sensortec.com/software-tools/software/previous-bsec-software-versions/

 

2.2.1引脚定义

板子的引脚定义如下表2-1所示:

引脚功能

I2C

SPI

VCC

电源正(3.3V/5V)

电源正(3.3V/5V)

GND

电源地

电源地

SCL/SCK

时钟线

串行时钟

SDA/MOSI

数据线

数据主输出/从输入

MISO/ADDR

NC

数据从/输入

CS

NC

片选信号

表2-1 BME680环境传感器引脚定义

 

2.3、树莓派例程使用

树莓派平台的示例代码分为lgpio和wiringpi两个版本,bookworm系统使用的是lgpio库,bullseye系统使用的是wiringpi库。

2.3.1 树莓派平台接口定义

树莓派主板中示例程序lgpio库使用的是BCM的引脚定义,wiringpi库使用的wiringpi编号的引脚定义,搭配树莓派主板接线的定义如下表2-2所示:

 

I2C

SPI

BME68X BCM编号 wiringPi编号 BCM编号

wiringPi编号

VCC 3.3V 3.3V 3.3V

3.3V

GND GND GND GND

GND

SCL/SCK SCL1(D3) SCL1(P9) SCLK(D11)

SCLK(P14)

SDA/MOSI

SDA1(D2) SDA1(P8) MOSI(D10) MOSI(P13)
MISO/ADDR NC NC MISO(D9) MISO(P13)

CS

NC NC D25 P6

表2-2 模块与树莓派接线的引脚定义

2.3.2、wiringpi库安装

sudo apt-get install wiringpi

 

wget https://project-downloads.drogon.net/wiringpi-latest.deb #

树莓派4B版本升级

sudo dpkg -i wiringpi-latest.deb

gpio -v #

如出现2.52版本则说明已经安装成功

#对于Bullseye分支系统则使用如下命令:

git clone https://github.com/WiringPi/WiringPi

cd WiringPi

. /build 

gpio -v #

# 运行gpio -v会出现2.70版本,如果没有出现说明安装出错

如在运行python版本的示例程序时出现“ImportError: No module named 'wiringpi'”的错误提示则运行以下命令:

# Python2.x 版本

pip install wiringpi

# 对Python3.x 版本

pip3 install wiringpi

注:若安装失败,可尝试下面的编译安装:

git clone --recursive https://github.com/WiringPi/WiringPi-Python.git

注:--recursive选项,可以自动拉取子模块,否则就需要手动下载。

进入刚下载的WiringPi-Python文件夹,输入以下命令,编译、安装:

# 对Python2.x 版本

sudo python setup.py install

# 对Python3.x 版本

sudo python3 setup.py install

如出现如下错误:

此时输入命令‘sudo apt install swig安装swig,完成后,然后再实行sudo python3 setup.py install’编译、安装。如出现类似如下信息则表示安装成功。

2.3.3lgpio库安装

对于bookworm系统,示例程序使用的是lgpio库,以下是该库的安装命令:

wget https://github.com/joan2937/lg/archive/master.zip 

unzip master.zip

cd lg-master

make

sudo make install

2.3.4、开启I2C和SPI接口

sudo raspi-config                                                     

启用I2C接口:

Interfacing Options -> I2C -> Yes  

启用SPI接口:

Interfacing Options -> SPI -> Yes  

重启设备

Restart your device

sudo reboot                  

2.3.5、I2C地址检测

在使用I2C通信方式接线时,可先检测传感器的地址,安装i2c-tools工具:

sudo apt-get install i2c-tools        

使用终端命令查看已连接的I2C设备:

i2cdetect-y -a 1                                                

如结果中出现0x76或0x77则表示树莓派成功检测到BME68X的地址I2C_ADDR滑动开关状态默认在0x77位置,此时结果中会出0x77,如下图2-2所示:

图2-2

2.3.6、运行示例程序

C示例程序:

以lgpio库的I2C通信方式为例,进入/demo codes/raspberry_pi/lgpio/c文件路径中,然后执行以下命令:

sudo make clean

sudo make

sudo ./main

就可以在树莓派终端看到实时检测的温度、湿度、大气压和气体阻值信息,如下图2-3所示:

图2-3

python示例程序:

进入/demo codes/raspberry_pi/lgpio/python文件路径中,然后执行以下命令:

sudo python3 read-all.py

运行结果如图2-4下:

 图2-4

 

SPI通信方式:

如果用户需要改用SPI驱动则将BME68X模块按照2-2中的SPI总线接线方式进行接线,并且将“I2C_ADDR”滑动开关设置在0x77的位置,然后在python示例程序中constants.py文件中的“COMMUNICATION = 1”语句改为“COMMUNICATION = 0”,最后重新运行程序;如果是C语言示例程序,则将bme68x_defs.h文件中的“#define USE_IIC  1”语句改为“#define USE_IIC  0”,然后重新编译并运行程序。

2.4 Arduino例程使用

2.4.1、接线说明

BME68XArduino Uno开发板接线如下表2-3所示:

BME68X 

I2C

SPI

VCC

3.3V/5V

3.3V/5V

GND

GND

GND

SCL/SCK

SCL

D13

SDA/MOSI

SDA

D11

MISO/ADDR

NC

D12

CS

NC

D10

表2-3 模块与Arduino Uno开发板接线的引脚定义

BME68XArduino Mega开发板接线如下表2-4所示:

BME68X 

I2C

SPI

VCC

3.3V/5V

3.3V/5V

GND

GND

GND

SCL/SCK

SCL1

D52

SDA/MOSI

SDA1

D51

MISO/ADDR

NC

D50

CS

NC

D53

表2-4 模块与Arduino Mega开发板接线的引脚定义

2.4.2、库的安装

打开目录demo codes\Arduino\bme68X,用Arduino IDE打开bme68X.ino文件, 然后导航至“Sketch > Include Library > Manage Libraries",在库搜索栏中输入BME68x进行搜索,找到BME68x Sensor Library By Bosch库并进行安装。

2.4.3运行程序

示例程序默认是I2C通信方式,并且I2C地址为0x77,同时I2C_ADDR滑动开关默处于0x77位置,验证无误后上传至开发板,点击“Tools > Serial Monitor ",打开串口监视器,将波特率设置为115200,观察传感器数据变化,如图2-5。

  图2-5

如需使用0x76作为传感器地址,请将I2C_ADDR滑动开关设置为0x76位置并且将示例程序中的“#define ADDR_I2C  0x77 // I2C”改为“#define ADDR_I2C  0x76 // I2C”;如果用户需要改用SPI接口驱动则将BME68X模块按照2-3或者表2-4中的SPI接线方式进行线,并且将“I2C_ADDR”滑动开关设置在0x77的位置,然后在示例程序中将#define USE_IIC 1”语句改为“#define USE_IIC 0”。

 

2.5 ESP32例程使用

该示例程序使用的ESP32模块是ESP32-WROOM-32E。

2.5 ESP32 Example Usage
The example program uses the ESP32-WROOM-32E module.

2.5.1、接线说明

板子与ESP32开发板接线如下表所示:

2.5.1 Wiring Instructions
The wiring between the BME680 sensor and the ESP32 development board is shown in Table 2-5:

BME68X 

I2C

SPI

VCC

3.3V

3.3V

GND

GND

GND

SCL/SCK

P22

P18

SDA/MOSI

P21

P23

MISO/ADDR

NC

P19

CS

NC

P27

表2-5 模块与ESP32开发板接线的引脚定义

2.5.2、Arduino IDE环境配置

打开Arduino IDE,点击菜单“File->Preferences->Settings”,然后在“Additional boards manager URLs:”添加开发板管理器网址https://dl.espressif.com/dl/package_esp32_index.json,如图2-6所示:

图2-6

下载packages压缩包,将解压的packages文件夹中的esp32复制到如下路径下C:\Users\Admin\AppData\Local\Arduino15\packages,其中“Admin”需要替换成自己的用户名。

2.5.3、库安装及运行程序

    该步骤可参考2.4.2、2.4.3章节的内容。

2.6 树莓派Pico例程使用

示例程序支持树莓派Pico以及Pico 2,两者具有相同的接线定义,该平台只提供python语言的示例程序。

2.6.1、接线说明

BME68XPico/Pico 2开发板接线如下表2-6所示:

BME68X 

I2C

SPI

VCC

3.3V

3.3V

GND

GND

GND

SCL/SCK

GP7

GP10

SDA/MOSI

GP6

GP11

MISO/ADDR

NC

GP12

CS

NC

GP13

表2-6 模块与Pico/Pico 2开发板接线的引脚定义

2.6.2、使用环境配置

1、uf2库

按住Pico/Pico 2上的BOOTSEL按键,然后将Pico/Pico 2通过USB线缆连接到电脑,此时我的电脑当中会新生成一个磁盘,Pico对应的是“RPI-RP2”,Pico 2对应的是“RP2350”,然后将相应的uf2文件(在demo codes/Pico/路径下)复制到该磁盘当中,Pico使用的是RPI_PICO-20241025-v1.24.0.uf2,Pico 2使用的是RPI_PICO2-20240923-v1.24.0-preview.321.g0ff782975.uf2,该uf2文件可能会有更新,您也可以从以下网站下载更新版本的uf2固件:https://micropython.org/download/。

2、解释器设置

打开Thonny软件,然后点击Tools->Options...->Interpreter来选择设备的解释器的端口,如下图2-7所示, Interpreter选择的是“MicroPython(Raspberry Pi Pico)”,Port选择相应的USB端口。

    图2-7

2.6.3、运行示例程序

点击Thonny的View->Files,然后在软件左边弹出的窗口中的“This computer”,如没弹出,可点击红色的Stop/Restart backend(Ctrl+F2)按钮,然后在窗口中选中示例程序的bme68X文件夹,点击右键选择“Upload to /”,把bme68X上传到Pico当中,同样也把read-all.py上传到Picok当中,然后双击read-all.py,最后点击“Run Current Script(F5)”按钮。此时Shell窗口会输出相应的信息,如图2-8和2-9所示:

  图2-8

 图2-9

示例程序默认是采用I2C通信方式,如果用户需要改用SPI驱动则将BME68X模块按照2-6中的SPI总线接线方式进行接线,并且将“I2C_ADDR”滑动开关设置在0x77的位置,然后在python示例程序中constants.py文件中的“COMMUNICATION_MODE = 1”语句改为“COMMUNICATION_MODE = 0”。

 

 

产品注意事项和维护

注意事项

  • 在通电状态下,不要插拔模块。
  • 遵循产品上提供的所有警告和指南。
  • 保持产品干燥。如不小心溅水或浸入液体,立即断开电源并彻底干燥产品。
  • 确保操作环境有良好的通风和散热,以避免因高温导致组件损坏。
  • 不要在多尘或肮脏的环境中使用或存放产品。
  • 避免在温度频繁变化的环境中使用产品,以防止组件发生冷凝损坏。
  • 轻拿轻放产品,避免跌落、撞击或剧烈震动,以免损坏电路和组件。
  • 不要使用有机溶剂或腐蚀性液体清洁产品。
  • 请勿自行尝试维修或拆解产品。如出现任何故障,请联系我们公司进行维修。未经授权的维修可能会损坏产品,造成的损坏将不在保修范围内。

维护

地址:广西壮族自治区桂林市七星区漓江花园19栋

联系人:售后维修部

 

技术支持

技术支持时间(工作日):香港时间:上午9:30 - 上午11:30,

下午1:30 - 下午5:30电话:0773-7799838 传真:gxshengui@163.com

感谢您选择深桂科技的产品。如果您有创意产品或想法,请随时给我们发送电子邮件,也许我们可以进一步合作。我们的电子邮件地址是:gxshengui@163.com

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

sudo python3 read-all.py

sudo python3 read-all.pysudo python3 read-all.py

sudo python3 read-all.py

sudo python3 read-all.pysudo python3 read-all.py

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

其他信息