任务介绍
本次选择的任务是做一款温度采集板,设计一款传感器采集板,能采集温度(或其他环境参数)并将数据通过数字接口输出,为后续控制系统提供数据源。基本要求:
- 至少包含一种温度传感器(数字或模拟)
- 提供数字通信接口(I2C/SPI/1-Wire/ADC,至少一种)供MCU读取数据
- 板载信号调理电路(如ADC参考电压、滤波电容等) - 使用数字传感器(如DS18B20、BME280)方案时可省略此项
- 支持3.3V或5V供电
- 提供标准接口,方便与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的数字接口,硬件框图如下:
原理图和PCB模块介绍

原理图
PCB
本次的设计采用的是插针连接的方式,基本上把引脚和状态引脚引出来了,模块比较小巧,我们参考了一些经典设计,留有4个定位孔用于安装固定,同时支持Qwiic接口。
3D效果图
实物图
软件调试
我们本次为了实现快速验证硬件的目标,使用了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);
}
}
效果展示
测试硬件连接如下:
串口接收如下:
心得体会
本次参与项目的开发实际上有很多优秀的参考设计可以参考,也希望可以学习这个优秀设计的内容,进而锻炼自己的硬件设计能力和PCB的绘制能力,通过不断的模块化的设计可以尽可能多的接触更多的新器件,在了解其基本特性的前提下,学习使用他们,这是一次非常不错的机会,同时再软件驱动的时候要考虑器件的特性进行,当一切准备就绪,他们就可以正常工作了。