2025 Make Blocks第三期阶段2-温度与压力传感器设计
该项目使用了DS18B20、FSR402,实现了温度与压力传感器的设计,它的主要功能为:测量杯体的温度和重量。
标签
温度传感器
DS18B20
压力传感器
Make Blocks
zxfeng02
更新2025-10-15
61

一、任务介绍

本次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 作为数据口,并通过 OneWireDallasTemperature 对象进行协议封装。

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测试

六、心得体会

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

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