1. 项目概述:当传统药盒遇上STM32
这个智能药盒项目源于我照顾家中老人时的真实痛点。老人经常忘记按时吃药,或者搞混不同药品的服用时间。市面上的智能药盒要么功能单一,要么价格昂贵,于是我决定用STM32开发一款高性价比的解决方案。
核心功能包括:
- 温湿度环境监测(防止药品变质)
- 药品余量检测(避免断药)
- 蓝牙远程提醒(解决遗忘问题)
- 多时段服药提醒(复杂用药方案)
选择STM32F103C8T6作为主控,不仅因为其性价比(零售价仅10元左右),更看重其丰富的外设资源:3个USART、2个SPI、2个I2C接口,完美适配本项目的外设需求。实测运行FreeRTOS实时系统后,CPU占用率仍能控制在60%以下。
2. 硬件架构设计解析
2.1 核心模块选型对比
| 模块类型 | 候选方案 | 最终选择 | 选择理由 |
|---|---|---|---|
| 主控芯片 | STM32F103/ESP32 | STM32F103C8T6 | 外设丰富,成本可控 |
| 温湿度传感器 | DHT11/SHT30 | SHT30 | ±2%RH精度,I2C接口 |
| 称重传感器 | HX711+应变片 | 薄膜压力传感器 | 免校准,线性度好 |
| 蓝牙模块 | HC-05/CC2541 | CC2541 | 低功耗,支持BLE4.0 |
| 显示模块 | OLED/段码LCD | 0.96寸OLED | 可视角度大,功耗低 |
2.2 关键电路设计要点
电源管理部分采用TP4056充电IC+AMS1117-3.3V的组合,实测待机电流仅2.8mA。特别要注意的是:
- SHT30传感器必须远离发热元件(如LDO稳压器)
- 称重传感器信号线需加磁珠滤波
- 蓝牙天线区域要净空(参考CC2541设计指南)
PCB布局时,将数字电路(STM32)、模拟电路(传感器)、射频电路(蓝牙)分区布置,地平面用0Ω电阻单点连接。这个设计让系统噪声降低了40%。
3. 软件系统实现细节
3.1 实时任务调度设计
c复制void vApplicationIdleHook(void) {
static uint32_t lastWakeTim
