2026 Make Blocks #2阶段2 - 基于BME690的温度采集模块
该项目使用了BME690,实现了温度采集模块的设计,它的主要功能为:多环境参数采集。
标签
温度采集
Make Blocks
BME690
永不止步
更新2026-06-01
57

任务介绍

本次任务属于Make Blocks第二期的任务,有很多的分任务进行选择,我们本次选择的是传感器采集板的设计,要求设计一款传感器采集板,能采集温度(或其他环境参数)并将数据通过数字接口输出,为后续控制系统提供数据源。

基本要求:

  1. 至少包含一种温度传感器(数字或模拟)
  2. 提供数字通信接口(I2C/SPI/1-Wire/ADC,至少一种)供MCU读取数据
  3. 板载信号调理电路(如ADC参考电压、滤波电容等) - 使用数字传感器(如DS18B20、BME280)方案时可省略此项
  4. 支持3.3V或5V供电
  5. 提供标准接口,方便与MCU开发板连接

要求里面实际上就已经提供了可选择的温度传感器,我们直奔目标传感器BME280,不过没货了,只能换成BME690了。本次设计的主要思路是参考以前的设计,采用Grove的适配的接口。

设计思路

目前的要求是设计一款采集温度(或其他环境参数)并将数据通过数字接口输出的模块,主要接口使用Grove接口。

设计框图如下:
0

功能介绍

本次设计的是一个环境模块,主要实现的是环境参数采集,支持温度、气体、湿度、气压等参数采集。

模块介绍

我们本次设计的是温度采集模块,主要接口参考Grove的适配的接口。BME690是博世推出的高精度四合一环境传感器,在温度测量方面表现尤为突出。其温度传感器采用先进的MEMS技术,测量范围覆盖-40℃至+85℃,可满足从极寒户外到高温工业环境的广泛需求。温度检测精度高达±0.5℃,分辨率达0.01℃,能精准捕捉细微温度变化,适用于对温控要求严苛的场景。传感器内置24位高分辨率ADC,配合博世专利的数字补偿算法,可有效消除环境干扰,确保温度数据长期稳定性。其快速响应特性(典型响应时间<1秒)使其能实时跟踪温度波动,在可穿戴设备中可精准监测人体体表温度变化,在智能家居中可实现室内温度的即时调控。此外,BME690温度传感器与气体、湿度、气压传感器共用数字接口,支持I2C/SPI双模式通信,在-40℃至+85℃全温范围内仍能保持低功耗运行(典型功耗仅3.6μA),是工业控制、医疗电子及消费电子领域温度监测的理想选择。

原理图和PCB模块介绍
0

原理图
0

PCB
0

3D效果图
0

实物图

测试效果

我们通过arduino开发板进行开速验证,使用arduinoIDE进行相关程序的编辑,注意我们本次使用接口默认的IC地址是0x76,需要配置一下,测试系统连接如下:
0

测试代码如下:

#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include "Adafruit_BME690.h"

#define BME_SCK 13
#define BME_MISO 12
#define BME_MOSI 11
#define BME_CS 10

#define SEALEVELPRESSURE_HPA (1013.25)

Adafruit_BME690 bme; // I2C
//Adafruit_BME690 bme(BME_CS); // hardware SPI
//Adafruit_BME690 bme(BME_CS, BME_MOSI, BME_MISO, BME_CS); // software SPI

void setup() {
Serial.begin(115200);
while (!Serial);
Serial.println(F("BME690 test"));

if (!bme.begin()) {
Serial.println("Could not find a valid BME690 sensor, check wiring!");
while (1);
}

// Set up oversampling and filter initialization
bme.setTemperatureOversampling(BME690_OS_8X);
bme.setHumidityOversampling(BME690_OS_2X);
bme.setPressureOversampling(BME690_OS_4X);
bme.setIIRFilterSize(BME690_FILTER_SIZE_3);
bme.setGasHeater(320, 150); // 320*C for 150 ms
}

void loop() {
if (! bme.performReading()) {
Serial.println("Failed to perform reading :(");
return;
}
Serial.print("Temperature = ");
Serial.print(bme.temperature);
Serial.println(" *C");

Serial.print("Pressure = ");
Serial.print(bme.pressure / 100.0);
Serial.println(" hPa");

Serial.print("Humidity = ");
Serial.print(bme.humidity);
Serial.println(" %");

Serial.print("Gas = ");
Serial.print(bme.gas_resistance / 1000.0);
Serial.println(" KOhms");

Serial.print("Approx. Altitude = ");
Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
Serial.println(" m");

Serial.println();
delay(2000);
}

测试效果(串口输出)如下:
0

心得体会

本次模块设计相对基础,十分适宜新手作为入门级实践项目。通过搭建比较合理的测试系统对模块继续测试,可以比较直观看到效果。趁着这次活动可以体验一下没接触的芯片,这个传感器是比较新的传感器,不过接口方面都是兼容的。

附件下载
bme690test.zip
TEME-BME690.zip
团队介绍
评论
0 / 100
查看更多
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号