一、项目概述与需求分析:药盒语音提示的应用场景、功能需求与非功能需求分析、系统架构概览

各位同学,咱们今天正式开始《嵌入式药盒语音提示模块开发》的第一课。

说实话,做嵌入式这么多年,我见过太多项目死在需求分析阶段。有人觉得这步太虚,上来就画板子写代码,结果做到一半发现方向错了。嗯,药盒语音提示这个项目,看似简单,但坑不少。咱们先把地基打牢。

1.1 应用场景:谁需要这个药盒?

你想想看,一个药盒为什么要会说话?

我最早接触这个需求,是帮一位老同事做的。他父亲有高血压和糖尿病,每天要吃四五种药,时间点还不一样。老人家记性不好,经常漏服或者重复吃。后来他父亲因为一次漏服降压药,差点出事。

所以,药盒语音提示的核心场景,说白了就是三类人:

  • 老年人:视力下降,看不清药瓶上的小字。听力尚可,但需要清晰、慢速的语音提醒。
  • 慢性病患者:需要长期、规律服药。比如降压药、降糖药、抗凝药。一旦漏服,后果可能很严重。
  • 忙碌的年轻人:工作一忙就忘事。他们需要的是「强提醒」,光靠手机震动可能不够。

我记得有一次去养老院做调研,一位阿姨跟我说:「小伙子,我那个药盒要是能喊我一声『该吃药了』,比闹钟管用多了。」这句话我一直记着。

核心场景总结:

  • 居家养老:老人独自在家,无人看护
  • 医院病房:护士需要批量管理患者用药
  • 个人健康管理:年轻人放在办公桌上

1.2 功能需求:药盒要「说」什么?

功能需求这块,我习惯先列一个「必须做」的清单,再考虑「锦上添花」的。咱们这个项目,核心功能就四个:

  1. 定时语音提醒:到了预设时间,播放「请服药」的语音。这是基本功。
  2. 多时段设置:一天可以设置多个提醒,比如早上8点、中午12点、晚上6点。每个时段对应不同的药。
  3. 语音内容可定制:不能只会说「吃药了」。最好能说「请服用降压药一片」、「请服用降糖药两片」。这个在代码里就是字符串拼接。
  4. 按键确认与延时:老人按一下按钮,表示「我吃了」。如果没按,过5分钟再提醒一次。这个逻辑我踩过坑,后面会细说。

另外,还有一些扩展功能,咱们可以放在进阶版本里:

  • 电量低语音报警
  • 药仓门未关闭提醒
  • 通过手机APP远程设置(这个涉及蓝牙或WiFi,咱们后面章节会讲)

我的经验:功能需求一定要和用户确认。我曾经做过一个项目,加了十几个花哨功能,结果用户只用了最基本的定时提醒。浪费了开发时间,还增加了功耗。

1.3 非功能需求:稳定、省电、听得清

非功能需求,说白了就是「好不好用」的问题。很多工程师只关注功能实现,忽略了这些,结果产品做出来没人用。

非功能需求 说明 我的建议
低功耗 药盒通常用电池供电,不能天天充电。待机电流要控制在微安级。 选MCU时,一定要看它的深度睡眠模式电流。我习惯用STM32L0系列,待机电流不到1μA。
语音清晰度 老人听力可能下降,语音要足够响亮、清晰。不能有杂音。 功放芯片选MAX98357A,输出功率3W,驱动一个小喇叭绰绰有余。
可靠性 不能死机,不能漏提醒。这是医疗相关产品,出问题可能出大事。 加看门狗定时器(WDT),我一般设8秒。如果程序卡死,自动复位。
易用性 按键要大,操作要简单。最好只有一个按钮。 短按确认吃药,长按3秒进入设置模式。这个交互逻辑我测试过很多次。

避坑指南:我曾经在一个项目里忽略了语音音量调节。结果产品做出来,老人嫌声音太大,年轻人又嫌声音太小。后来不得不加了一个电位器做音量调节。所以,音量可调这个功能,从一开始就要考虑进去。

1.4 系统架构概览:软硬件怎么分工?

好,咱们来看看整个系统长什么样。我习惯先画一个框图,再分模块去实现。

整个药盒语音提示模块,分为三层:

  • 硬件层:MCU(主控芯片)、语音合成芯片/模块、功放、喇叭、按键、电池管理、RTC(实时时钟)。
  • 软件层:主控程序、语音播放驱动、按键扫描、RTC驱动、低功耗管理。
  • 数据层:提醒时间表(存储在Flash或EEPROM中)、语音文件(存储在Flash或SD卡中)。

我选型的时候,一般会这样搭配:

模块 推荐型号 理由
MCU STM32L051C8T6 超低功耗,Cortex-M0+内核,性价比高
语音合成 SYN6288 或 XFS5152CE 中文语音合成效果好,支持文本直接转语音
功放 MAX98357A I2S输入,3W输出,效率高
RTC DS3231 精度高,温漂小,年误差不到1分钟
存储 W25Q64(8MB Flash) 存放语音文件和配置参数

软件架构上,我习惯用「前后台系统」:

  • 前台:定时器中断,每1ms扫描一次按键,每1秒更新一次RTC显示。
  • 后台:主循环里做语音播放、低功耗管理、时间比较。

为什么不用RTOS?因为功能简单,RTOS反而增加了复杂度和功耗。我做过对比,裸机跑这套逻辑,待机电流能控制在5μA以内,用RTOS至少翻倍。

系统工作流程(简化版):

系统上电 → 初始化硬件 → 读取Flash中的时间表 → 进入低功耗模式
    ↓
RTC中断唤醒 → 比较当前时间与时间表 → 匹配?→ 播放语音 → 等待按键确认
    ↓ 不匹配
继续低功耗

嗯,这里要注意:语音播放的时候,MCU不能进入低功耗模式。所以播放完要尽快回到睡眠状态。我一般把语音播放放在一个独立的任务里,播放完成后立即让MCU休眠。

1.5 本章小结

这一章咱们把项目的「骨架」搭起来了。你知道了药盒语音提示是给谁用的,需要实现什么功能,以及整个系统怎么分层。

下一章,咱们会深入硬件选型,把每个芯片的datasheet啃一遍。我会告诉你哪些参数是坑,哪些是亮点。

记住一句话:需求分析做得越细,后面开发越顺。别急着动手,先把需求想清楚。

好,今天就到这里。有问题随时在群里问我。