第一章:体温计项目概述
各位同学好,我是你们的老朋友。今天咱们正式开始体温计嵌入式软件状态机架构设计这门课。
第一节课,我想先聊聊项目背景、功能需求和硬件选型。说白了,就是搞清楚我们要做什么,用什么来做。
1.1 项目背景
体温计这东西,大家都不陌生。疫情期间,红外额温枪几乎成了家庭标配。但说实话,市面上很多产品体验并不好——测量不准、响应慢、功耗高。
我个人习惯是,做任何嵌入式项目之前,先问三个问题:
- 用户真正需要什么?——准确、快速、易用
- 市场痛点在哪?——低成本方案往往精度差,高端方案又太贵
- 我们能做什么?——用状态机架构把软硬件协同做到极致
这个项目的定位,就是做一款医用级精度、消费级成本的电子体温计。目标场景包括家庭日常测温、社区诊所、学校晨检等。
核心指标:
- 测量精度:±0.1℃(医用标准)
- 响应时间:≤3秒
- 待机功耗:≤5μA
- 连续使用:≥1000次(单颗纽扣电池)
1.2 功能需求
嗯,这里要注意。功能需求不能只写「能测体温」,那样太粗糙了。我建议从用户操作流程出发,拆解出完整的功能列表。
我记得有一次做项目,需求文档写得很笼统,结果开发到一半才发现漏了「低电量提示」这个功能,被迫改板子。所以,咱们一开始就把需求列清楚。
1.2.1 核心功能
- 温度测量:支持额头/耳温两种模式,量程32℃~42℃
- 结果显示:LCD屏显示温度值,保留一位小数
- 蜂鸣提示:测量完成时发出短促提示音
- 自动关机:无操作30秒后自动进入休眠
1.2.2 扩展功能
- 记忆存储:保存最近10次测量记录
- 温度单位切换:℃/℉一键切换
- 发烧报警:体温≥37.3℃时,蜂鸣器发出连续报警音
- 低电量检测:电池电压低于2.4V时显示电池图标
避坑指南:我曾经在低电量检测上吃过亏。当时只检测了电池电压,没考虑负载变化。结果电池快没电时,一启动测量电压就掉到2.3V,系统直接复位。后来加了迟滞比较和软件滤波才解决。
1.3 硬件选型
硬件选型是嵌入式项目的基石。选错了,后面软件写得再好也白搭。我个人习惯是「先定传感器,再定MCU,最后定显示屏」。为什么?因为传感器决定了测量精度,这是产品的核心价值。
1.3.1 传感器选型
体温计传感器主要有两种:热电堆红外传感器和热敏电阻。咱们这个项目选的是热电堆红外传感器,型号是MLX90614。
| 参数 | MLX90614 | 传统热敏电阻 |
|---|---|---|
| 测量方式 | 非接触式 | 接触式 |
| 精度 | ±0.1℃(医用级) | ±0.3℃ |
| 响应时间 | ≤1秒 | 5~10秒 |
| 接口 | I2C/SMBus | 模拟量 |
| 工作电压 | 2.6V~3.6V | 无要求 |
为什么选MLX90614?说白了,它内部集成了数字信号处理,直接输出温度值,省去了复杂的标定和校准。你想想看,如果选模拟传感器,光校准就要花掉两周时间,还不一定能保证一致性。
1.3.2 MCU选型
MCU的选择要综合考虑性能、功耗、成本和开发难度。咱们这个项目选的是STM32L051C8T6,属于ST的L0系列超低功耗MCU。
我建议选它的理由有三点:
- 功耗极低:待机模式仅0.3μA,跑起来也才100μA/MHz
- 外设丰富:I2C、SPI、UART、ADC一应俱全
- 开发友好:HAL库和CubeMX工具链成熟,上手快
MCU关键参数:
- 内核:ARM Cortex-M0+,32MHz
- Flash:64KB(够用,代码量预计30KB左右)
- RAM:8KB(状态机+缓冲区绰绰有余)
- 封装:TSSOP20(体积小,适合手持设备)
1.3.3 显示屏选型
显示屏这块,我踩过不少坑。一开始想用OLED,显示效果确实好,但功耗太高——亮着的时候要20mA,电池扛不住。后来换成段式LCD,功耗倒是低了,但只能显示固定图案,不够灵活。
最终我选了1.3寸黑白点阵LCD,型号是NHD-1.3-12864。为什么?
- 功耗适中:背光关闭时仅1mA,开启时5mA
- 显示灵活:128×64像素,可以显示数字、汉字、图标
- 接口简单:SPI接口,只需4根线
注意:选LCD时一定要确认工作温度范围。体温计可能用在冬天户外,普通LCD在0℃以下会响应变慢。我选的这款支持-20℃~70℃,完全够用。
1.4 硬件架构框图
好了,三个核心器件选完了。咱们把它们连起来,看看整体架构:
+-------------------+ +-------------------+
| | | |
| MLX90614 | I2C | STM32L051 |
| (红外传感器) |------>| (主控MCU) |
| | | |
+-------------------+ +-------+-----------+
|
| SPI
v
+-------+-----------+
| |
| NHD-1.3-12864 |
| (点阵LCD) |
| |
+-------------------+
其他外设:
- 蜂鸣器:GPIO驱动,PWM控制
- 按键:两个(电源键、模式键)
- 电池:CR2032纽扣电池,3V
- 电压检测:ADC采样电池电压
这个架构看起来简单,但实际做起来有不少细节。比如I2C总线上拉电阻的取值、SPI时钟极性的配置、电池电压检测的分压电阻计算等等。这些咱们后面章节会逐一展开。
1.5 本章小结
这一章咱们把项目的整体轮廓勾勒出来了:
- 项目背景:做一款医用级精度、消费级成本的电子体温计
- 功能需求:核心功能+扩展功能,共8项
- 硬件选型:MLX90614 + STM32L051 + NHD-1.3-12864
下一章,咱们就要开始设计状态机了。我会带着大家从「状态机思维」入手,把体温计的工作流程抽象成状态和事件。你想想看,一个体温计从开机到关机,中间经历了哪些状态?嗯,这个问题留给大家思考。
咱们下节课见。