2026 Make Blocks #2阶段2 - 基于STS40的温度采集模块设计
该项目使用了STS40,实现了温度采集模块的设计,它的主要功能为:温度采集。
标签
温度采集
STS40
Make Blocks
金玉其中
更新2026-06-01
36

任务介绍

本次选择的任务是做一款温度采集板,设计一款传感器采集板,能采集温度(或其他环境参数)并将数据通过数字接口输出,为后续控制系统提供数据源。基本要求:

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

我们本次选择的芯片是STS40,该款芯片是专用的温度传感器,完全满足本次任务的要求。

硬件介绍

本次设计的模块主要基于STS40进行设计,STS4L-AD1B-R3是Sensirion公司推出的一款超低功耗、高精度数字温度传感器,采用I²C接口,通信速度高达1MHz,默认I²C地址为0x2A(7位地址)。该传感器测量范围为-40°C至+125°C,在5°C至60°C范围内典型精度为±0.2°C,整体精度达±0.4°C,温度分辨率为16位。其单次测量典型电流仅0.4µA(1次测量/秒),待机电流3.4µA,工作电压范围1.08V至3.6V,非常适合电池供电的低功耗应用。传感器采用4引脚DFN-4-EP封装(1.5mm×1.5mm×0.5mm),支持表面贴装技术(SMT),具备CRC校验功能确保通信可靠性,并可设置温度阈值实现报警功能。其小尺寸、高精度和低功耗特性使其广泛应用于可穿戴设备、智能家居、工业控制及医疗电子等领域。

硬件介绍

本次我们采用了两种接口进行设计,可以支持多种连接方式,STS40的外设相对还是比较简单的,主要是I2C的数字接口,硬件框图如下:
0

原理图和PCB模块介绍
0

原理图
0

PCB

本次的设计采用的是插针连接的方式,基本上把引脚和状态引脚引出来了,模块比较小巧,我们参考了一些经典设计,留有4个定位孔用于安装固定,同时支持Qwiic接口。
0

3D效果图
0

实物图

软件调试

我们本次为了实现快速验证硬件的目标,使用了arduino的开发板(R4 WiFi),使用arduinoIDE进行开发,盛思锐提供了官方驱动代码,注意由于不同的版本的I2C地址是不同的,我们需要更换成自己需要的配置,测试代码如下:

#include <Arduino.h>
#include <SensirionI2CSts4x.h>
#include <Wire.h>

SensirionI2CSts4x sts4x;

void setup() {

Serial.begin(115200);
while (!Serial) {
delay(100);
}

Wire1.begin();

uint16_t error;
char errorMessage[256];

sts4x.begin(Wire1);

/*
* to initialize sts4 with alternate address
*
* STS40-CD1B: ADDR_STS4X (I2C address: 0x46)
* STS40-AD1B: ADDR_STS4X_ALT (I2C address: 0x44)
* STS40-BD1B: ADDR_STS4X_ALT2 (I2C address: 0x45)
*/
sts4x.begin(Wire1, ADDR_STS4X_ALT);

uint32_t serialNumber;
error = sts4x.serialNumber(serialNumber);
if (error) {
Serial.print("Error trying to execute serialNumber(): ");
errorToString(error, errorMessage, 256);
Serial.println(errorMessage);
} else {
Serial.print("Serial Number: ");
Serial.println(serialNumber);
}
}

void loop() {
uint16_t error;
char errorMessage[256];

delay(1000);

float temperature;
error = sts4x.measureHighPrecision(temperature);
if (error) {
Serial.print("Error trying to execute measureHighPrecision(): ");
errorToString(error, errorMessage, 256);
Serial.println(errorMessage);
} else {
Serial.print("Temperature:");
Serial.println(temperature);
}
}

效果展示

测试硬件连接如下:
0

串口接收如下:
0

心得体会

本次参与项目的开发实际上有很多优秀的参考设计可以参考,也希望可以学习这个优秀设计的内容,进而锻炼自己的硬件设计能力和PCB的绘制能力,通过不断的模块化的设计可以尽可能多的接触更多的新器件,在了解其基本特性的前提下,学习使用他们,这是一次非常不错的机会,同时再软件驱动的时候要考虑器件的特性进行,当一切准备就绪,他们就可以正常工作了。

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