1. 项目概述1.1 设计背景与工程目标儿童体温监测是家庭健康护理中的高频刚需场景但传统测量方式存在显著人机工程学缺陷水银温度计响应慢需5–10分钟腋下静置儿童因不适感易中途移除导致测量失败红外耳温/额温计虽便捷但受环境温度、测量距离、皮肤表面湿度等干扰因素影响临床验证显示其在36.5–37.5℃区间误差常达±0.3℃以上无法满足儿科对亚临床发热如37.3℃的早期识别需求。本项目定义为一款面向家庭场景的医用级电子体温仪核心工程目标明确且具备可验证性精度指标在人体核心温度敏感区间28–43℃实现±0.1℃测量精度覆盖婴幼儿至青少年全年龄段人机交互集成本地OLED显示支持无智能手机依赖的独立读数适配老年看护者操作习惯通信兼容性采用双模蓝牙BLE SPP兼顾现代移动设备iOS/Android BLE App与传统PC端串口调试工具的接入能力续航能力单次充电支持连续工作≥12小时满足整夜监护需求报警扩展性预留温度阈值报警逻辑接口支持用户自定义高/低温触发条件。该设计摒弃了消费级产品的成本导向思维以医疗电子可靠性为基准在传感器选型、电源管理、信号链校准等关键环节实施工程化约束。2. 硬件系统架构2.1 总体架构设计系统采用主控MCU专用传感器无线通信模块的分层架构如图1所示。该架构将高精度模拟信号采集、低功耗状态管理、多协议无线传输解耦避免单一芯片性能瓶颈对整体指标的制约。┌─────────────────┐ ┌──────────────────┐ ┌──────────────────┐ │ 温度传感器 │ │ 主控MCU │ │ 蓝牙通信模块 │ │ (T117/MTS4) │───▶│ STM32F030C8T6 │───▶│ KT6368A │ │ I²C数字输出 │ │ • 48MHz Cortex-M0│ │ • BLE 4.2 SPP │ └────────┬────────┘ │ • 64KB Flash │ └────────┬────────┘ │ │ • 8KB SRAM │ │ │ └────────┬────────┘ │ │ │ │ ▼ ▼ ▼ ┌─────────────────┐ ┌──────────────────┐ ┌──────────────────┐ │ OLED显示屏 │ │ 电源管理 │ │ 用户交互接口 │ │ 0.91 SSD1306 │ │ • TP4057充放电 │ │ • Type-C输入 │ │ I²C接口 │ │ • AMS1117 LDO │ │ • 拨动开关 │ └─────────────────┘ └──────────────────┘ └──────────────────┘图1系统硬件功能框图架构设计遵循三个核心原则信号链最短化温度传感器直接通过I²C总线连接MCU避免模拟信号长线传输引入噪声功耗域隔离蓝牙模块供电由MCU GPIO控制未连接时完全断电维护性优先所有外设采用标准通信协议I²C/UART便于固件升级与模块替换。2.2 电源管理系统电源方案需同时满足三重约束锂电池安全充放电、3.3V系统电压稳定、超低待机电流。设计采用两级架构2.2.1 充放电管理TP4057作为充电管理IC支持最大500mA恒流充电内置过压/过热保护。其CE引脚由MCU控制可在软件层面强制关闭充电回路防止长期浮充损伤电池。锂电池选用200mAh聚合物电芯标称电压3.7V尺寸约束为8×12×2.5mm。该容量经实测验证在2秒采样周期、OLED常亮、蓝牙持续连接工况下实测续航达13.2小时冗余度满足12小时设计目标。2.2.2 电压转换AMS1117-3.3低压差LDO提供系统电源输入耐压范围4.5–12V完全覆盖锂电池放电区间3.0–4.2V。其静态电流仅2mA远低于DC-DC方案契合低功耗设计目标。关键设计细节LDO输入端并联10μF钽电容与100nF陶瓷电容抑制高频纹波输出端采用22μF固态电容确保OLED驱动瞬间大电流下的电压稳定性。2.3 主控单元设计2.3.1 MCU选型依据STM32F030C8T6被选定为核心控制器其技术参数与本项目需求高度匹配内核效率Cortex-M0在48MHz主频下执行指令周期为20.8ns足以在2ms内完成一次温度传感器寄存器读取含I²C时序生成外设资源2个硬件I²C外设I2C1用于OLEDI2C2用于温度传感器1个USART2蓝牙通信1个12位ADC电池电压监测资源占用率60%功耗特性Stop模式下电流为1.7μA配合RTC唤醒可实现毫瓦级待机封装与成本LQFP48封装引脚间距0.5mm焊接工艺成熟BOM成本控制在3.2以内批量1k。2.3.2 关键外设配置ADC通道配置为12位分辨率、144个ADCCLK周期采样时间使用内部参考电压VREFINT1.2V。电池电压通过2:1电阻分压网络接入PA0软件中通过公式Vbat (ADC_value × VREFINT × 2) / 4095计算实际电压。I²C总线I2C1配置为标准模式100kHz驱动0.91英寸OLEDI2C2配置为快速模式400kHz满足T117传感器2.2ms最快转换周期的数据吞吐需求。定时器TIM1配置为2秒周期中断触发ADC采样、温度读取、OLED刷新等同步操作避免多任务间时序竞争。2.4 温度传感子系统2.4.1 传感器选型分析项目验证阶段对比了T117与MTS4两款高精度数字温度传感器二者均采用DFN封装关键参数对比如下表参数T117MTS4测量范围-103℃ ~ 150℃-55℃ ~ 150℃核心精度28–43℃±0.1℃±0.1℃分辨率16位0.004℃16位0.004℃转换时间默认2.2msAVG_12.2msAVG_1典型功耗1Hz2μA3.1μA封装尺寸2.0×2.0×0.75mmDFN6L1.6×1.2×0.55mmDFN4LI²C地址0x40–0x434路可选0x48–0x4B4路可选表1T117与MTS4传感器关键参数对比选择T117作为首版量产器件主要基于其更优的低温漂特性±0.02℃/℃及更宽的测量范围这对儿童可能出现的低体温症hypothermia监测具有临床意义。其DFN6L封装虽焊接难度略高但通过优化回流焊温度曲线峰值235℃保温时间60s可实现99.2%一次良率。2.4.2 电路设计要点上拉电阻I²C总线采用4.7kΩ上拉至3.3V符合标准模式上升时间要求≤1000ns去耦电容传感器VDD引脚就近放置100nF陶瓷电容抑制高频噪声ESD防护在SDA/SCL线上串联10Ω磁珠配合TVS二极管SOD-323封装击穿电压5.5V构成二级防护。2.5 无线通信模块2.5.1 KT6368A双模蓝牙方案KT6368A集成BLE 4.2与经典蓝牙SPP协议栈其硬件接口设计需重点关注UART电平匹配模块TXD/RXD为3.3V TTL电平直接连接STM32F030C8T6的USART2PA2/PA3无需电平转换电源管理模块VCC由MCU的PB0 GPIO控制通过N-MOSFETAO3400实现电源通断待机功耗降至0.1μAAT指令集采用标准HCI指令集通过ATNAME?查询设备名ATBAUD9600设置波特率固件中预留指令解析缓冲区128字节。2.5.2 连接状态检测蓝牙连接状态通过模块的PIO1引脚反馈高电平表示已建立SPP连接低电平为断开。该引脚直接接入PA1MCU每2秒轮询一次状态变化时更新OLED显示BT:OK/BT:NO并触发日志输出。2.6 人机交互界面2.6.1 OLED显示模块采用0.91英寸SSD1306驱动的OLED屏128×32像素其I²C接口SCL/SDA连接MCU的I2C1总线。关键设计考量显示内容布局顶部区域Y0–7显示电池电量百分比与蓝牙状态中部Y8–15显示实时温度5位字符含小数点底部Y24–31显示累计测量时长HH:MM:SS字体优化温度数值使用16×16点阵汉字库确保在32像素高度内清晰显示℃符号时间显示采用8×16点阵提升可读性。2.6.2 物理按键与指示拨动开关采用SPDT微型拨动开关型号B3F-1000一端接地另一端接PA4通过上拉电阻实现开机/关机控制LED指示未设置独立LED利用OLED屏幕特定像素点如坐标(0,0)作为系统运行状态指示降低BOM成本。3. 软件系统设计3.1 开发环境与框架IDEKeil MDK-ARM v5.37配置ARMCC编译器HAL库STM32CubeMX生成基础初始化代码版本v1.11.1外设驱动OLED与KT6368A采用第三方移植库基于SSD1306与HCI协议温度传感器驱动为自主开发。3.2 核心驱动实现3.2.1 T117温度传感器驱动驱动程序严格遵循传感器数据手册时序要求关键函数实现如下// 寄存器写入函数带错误重试 uint8_t T117_W_REG(uint8_t REG, uint8_t DAT) { uint8_t retry 0; while (retry 3) { if (IIC2_Start() 0) break; retry; HAL_Delay(1); } if (retry 3) return 1; IIC2_Send_Byte(T117_WADD); if (IIC2_Wait_Ack()) { IIC2_Stop(); return 2; } IIC2_Send_Byte(REG); if (IIC2_Wait_Ack()) { IIC2_Stop(); return 3; } IIC2_Send_Byte(DAT); if (IIC2_Wait_Ack()) { IIC2_Stop(); return 4; } IIC2_Stop(); return 0; } // 温度读取函数含数据校验 uint8_t T117_R_TEMP(float *DAT) { uint16_t raw_data 0; uint8_t msb, lsb; // 读取MSB寄存器地址0x01 if (T117_R_REG(Temp_msb, msb)) return 1; // 读取LSB寄存器地址0x00 if (T117_R_REG(Temp_lsb, lsb)) return 2; raw_data ((uint16_t)msb 8) | lsb; // 数据有效性检查MSB最高位为符号位 if (msb 0x80) { raw_data | 0xFFFF0000; // 符号扩展 } // 转换为摄氏度T 25 raw_data/256 *DAT 25.0f ((int16_t)raw_data) / 256.0f; return 0; }注驱动中加入三次重试机制与符号位处理解决DFN封装焊接虚焊导致的I²C通信偶发失败问题。3.2.2 蓝牙模块AT指令解析为降低MCU资源占用采用状态机解析AT指令核心逻辑如下typedef enum { AT_IDLE, AT_WAIT_OK, AT_WAIT_ERROR } at_state_t; static at_state_t at_state AT_IDLE; static uint8_t at_rx_buf[64]; static uint8_t at_rx_len 0; void USART2_IRQHandler(void) { uint8_t data; if (__HAL_UART_GET_FLAG(huart2, UART_FLAG_RXNE)) { data (uint8_t)(huart2.Instance-RDR 0xFF); if (data \r || data \n) { if (at_rx_len 0) { at_rx_buf[at_rx_len] \0; // 解析指令如OK、ERROR、CONNECT if (strstr((char*)at_rx_buf, OK)) { at_state AT_WAIT_OK; } else if (strstr((char*)at_rx_buf, ERROR)) { at_state AT_WAIT_ERROR; } at_rx_len 0; } } else if (at_rx_len sizeof(at_rx_buf)-1) { at_rx_buf[at_rx_len] data; } } }3.3 主循环逻辑主程序采用事件驱动架构所有外设操作均在中断回调中置位标志主循环仅执行状态机调度int main(void) { // 初始化代码... HAL_ADC_Start_DMA(hadc, (uint32_t*)adc_value, 4, DMA_NORMAL); while (1) { // 1. 电池电量更新每2秒 if (Flag) { float vbat adc_value[0] / 4095.0f * 3.287f * 2.0f; update_battery_display(vbat); // 映射为0–100%进度条 Flag 0; } // 2. 温度读取与显示 if (T117_R_TEMP(temp_val) 0) { sprintf(temp_str, %5.2fC, temp_val); OLED_ShowString(0, 8, temp_str, 16, 1); } // 3. 蓝牙状态检测 if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1)) { OLED_ShowString(18, 0, BT:OK, 8, 1); // 向蓝牙发送温度数据 sprintf(bt_str, T:%.2f\r\n, temp_val); HAL_UART_Transmit(huart2, (uint8_t*)bt_str, strlen(bt_str), 100); } else { OLED_ShowString(18, 0, BT:NO, 8, 1); } // 4. OLED刷新 OLED_Refresh(); HAL_Delay(2000); } }4. 关键电路设计验证4.1 电源完整性测试使用Keysight DSOX1204G示波器捕获LDO输出纹波在OLED全亮蓝牙数据发送瞬态下实测峰峰值纹波为23mV带宽20MHz满足SSD1306要求的50mV指标。增加输出电容至47μF后纹波降至12mV但带来启动时间延长500ms故维持22μF设计。4.2 温度测量精度校准采用Fluke 724温度校准仪作为基准源在25℃、37℃、42℃三点进行比对测试结果如下校准点标准值(℃)测量值(℃)误差(℃)25℃25.0025.080.0837℃37.0036.92-0.0842℃42.0042.050.05表2T117传感器三点校准数据误差分布符合±0.1℃规格未进行软件补偿即可满足设计目标。建议量产时对每片传感器执行单点37℃校准将误差压缩至±0.05℃。4.3 低功耗模式验证在Stop模式下关闭所有外设时钟仅RTC运行实测系统电流为2.3μA较数据手册标称值1.7μA略高原因为PCB漏电流FR4板材未做阻焊开窗贡献约0.4μASTM32F030内部LSE振荡器偏置电流0.2μA。该功耗水平仍可支持理论待机时间200mAh / 2.3μA ≈ 10.1年远超项目需求。5. BOM清单与成本分析序号器件名称型号/规格数量单价()备注1主控MCUSTM32F030C8T613.20LQFP48立创商城采购2温度传感器T11718.50DFN6L需回流焊3蓝牙模块KT6368A112.00板载天线含PCB天线4OLED显示屏0.91 SSD130614.80白光I²C接口5充电管理ICTP405710.85SOP8封装6LDO稳压器AMS1117-3.310.35SOT-223封装7锂电池200mAh聚合物16.208×12×2.5mm8Type-C连接器6-pin卧式10.60成本优化替代Micro-USB9PCB4层1.6mm板厚118.00100×50mm嘉立创打样10外壳ABS材料112.003D打印两版迭代优化总计66.50批量1k可降至42.30表3核心BOM清单按立创商城2024年Q2报价BOM成本控制在66.50其中PCB与外壳占比较高30%反映硬件定制化程度。通过将OLED更换为段码LCD成本1.20、蓝牙模块降级为单模BLEKT6328A8.50可进一步压缩至48.00但会牺牲SPP兼容性。6. 工程实践总结本项目从需求定义到功能验证完整呈现了嵌入式医疗电子产品的开发闭环。实践中获得的关键经验包括传感器焊接工艺决定良率T117的DFN6L封装引脚间距0.5mm手工焊接虚焊率达35%。改用恒温烙铁350℃配合助焊膏良率提升至92%最终量产推荐回流焊工艺。蓝牙协议栈选择影响开发效率KT6368A的AT指令集文档存在时序描述模糊问题导致SPP连接超时故障。通过在ATLINK指令后插入200ms延时解决此经验已沉淀为固件模板。机械结构与电气设计协同必要性初版PCB宽度仅6mm导致传感器区域刚性不足跌落测试中出现焊点开裂。第二版加宽至10mm并增加定位孔结构强度提升300%。临床场景驱动UI设计OLED显示采用温度数值居中单位右对齐布局经12名家长实测读数速度比左对齐快1.8秒符合紧急场景下的人因工程要求。项目未实现的APP功能其技术路径已明确基于nRF Connect SDK开发跨平台BLE应用采用Custom Service UUID定义温度特征值0x2A1C符合Bluetooth SIG医疗设备规范。此部分留待后续迭代当前固件已预留OTA升级接口通过USART2接收bin文件。