一、任务介绍
本次Make Blocks第三期,我选择的是任务9,在上一期的基础上,进一步集成传感器电路设计,实现温杯体的温度和重量感知和分析。
二、模块介绍
设计框图

本次设计继续采用 ESP32-PICO-V3-02 芯片作为主控,并在前期方案的基础上新增了 DS18B20 温度传感器 与 FSR402 压力传感器。其中,DS18B20 用于采集杯体温度数据,FSR402 用于检测杯体受力状态,从而实现对智能水杯垫项目中温度与压力的同步监测,进一步提升系统的感知维度与应用价值。
选型介绍
温度传感器
DS18B20 是一款数字温度传感器,采用单总线(1-Wire)通信方式,只需一根数据线即可完成供电与数据传输,布线简单,接口灵活。其测温范围宽(-55 °C~+125 °C),典型精度为±0.5 °C,分辨率可在 9~12 位之间配置,能够满足多场景的温度监测需求。传感器内部集成温度转换与存储电路,支持唯一序列号识别,便于多点组网应用。DS18B20 具备防水封装型号,适用于液体、土壤等复杂环境下的温度采集。在本项目中,它可实现对水杯的精准温度检测,为温度监测和智能联动提供可靠数据支撑。
压力传感器
FSR402 是一款柔性薄膜压力传感器,能够在受到外力作用时将接触阻值按压强度成比例地降低,从而实现压力或触控感应。其结构轻薄(直径约 18 mm),灵敏度高,响应速度快,能够检测从几十克到几公斤范围的压力变化。传感器具有柔性材料封装,安装方式灵活,可贴合于各种平面或弯曲表面。与微控制器配合时,FSR402 可通过分压电路将压力信号转换为电压输出,实现简单易用的压力采集。在本项目中,FSR402 可用于检测杯体放置状态。
三、模块设计
原理图
在原理图部分,主要是在前几期的基础上新增了DS18B20温度传感器和FSR402压力传感器,从而实现温度和压力数据的采集与分析。其中在压力传感器部分,我们使用了一个放大器TLV521来隔离前级和后级电路。它是一个发射极跟随器,输出电压为压力传感器和R14的分压值。


PCB
在 PCB 设计中,本次依然沿用了上一期的 圆形结构,直径为 40 mm,以便与后期外壳设计相匹配并保持整体美观。布局方面,核心器件 ESP32-PICO-V3-02 放置在 PCB 中心区域,保证射频性能与走线对称性;CP2102电路靠近 Type-C 接口布置,缩短路径并降低干扰。新增的 DS18B20 温度传感器 与 FSR402 压力传感器 分别位于 PCB 边缘,既便于与杯体直接接触,又减少传感器与主控之间的信号干扰。

实物图

四、软件调试介绍
DS18B20测试
通过 DallasTemperature 库对 DS18B20 温度传感器进行初始化、寻址与数据读取,并在串口打印实时温度值,从而验证传感器能否正常工作。关键代码如下:
1. 传感器连接与 OneWire 总线初始化
#define ONE_WIRE_BUS 20
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DS18B20 使用单总线协议通信,只需一个数据引脚即可完成供电与数据传输。代码中定义数字引脚 20 作为数据口,并通过 OneWire 和 DallasTemperature 对象进行协议封装。
2. 串口与传感器初始化
void setup(void) {
Serial.begin(9600);
sensors.begin();
}
在 setup() 中开启串口通信,并调用 sensors.begin() 完成传感器初始化,确保总线上设备已被正确识别。
3. 温度采样与请求命令
sensors.requestTemperatures(); // 发送采样命令
在主循环中,首先调用 requestTemperatures() 触发 DS18B20 进行一次温度采样。由于 DS18B20 需要一定时间完成转换,因此库函数会自动管理数据等待与更新。
4. 温度数据读取与打印
Serial.print("Temperature for the device 1 (index 0) is: ");
Serial.println(sensors.getTempCByIndex(0));
通过 getTempCByIndex(0) 读取索引 0 设备的温度值(单位:℃),并通过串口输出。若总线上有多个 DS18B20 传感器,可以通过不同索引访问对应数据。
FSR402测试
通过ESP32的ADC引脚读取 FSR402 压力传感器在不同按压力度下的电压变化,并通过串口输出实时数值,从而验证 FSR402 的工作状态与响应特性。关键代码如下:
1. 初始化
const int sensorPin = 32;
void setup() {
Serial.begin(9600); // 初始化串口,波特率9600
}
首先定义我们用到的ADC引脚,并在 setup() 中开启串口通信,用于输出实时压力数值。
2. 模拟值读取
void loop(){
value = analogRead(sensorPin); //Read and save analog value from potentiometer
Serial.println(value); //Print value
delay(100); //Small delay
}
在主循环中,使用 analogRead() 获取 0–1023 范围的 ADC 数值。FSR402 在轻压时输出接近 0,大力按压时接近满量程。
五、功能展示
DS18B20测试

FSR402测试

六、心得体会
感谢得捷电子与硬禾提供的这次学习机会。在本次硬件设计中,我在前几期方案的基础上,顺利集成了 DS18B20 与 FSR402 两种传感器,实现了温度与压力数据的采集和调试,进一步完善了系统的环境感知能力。过程中共打了两次板:第一次采用沉金工艺,但在焊接时发现上锡困难,容易出现虚焊或连锡问题;随后改用喷锡工艺,焊接效果明显改善,最终电路板功能正常,验证了整体设计的可行性与稳定性。