基于ESP32S3的智能医药箱语音控制系统-esp32_medical_box
一、立项背景和目标
我国老龄化加剧,慢病患者需长期按时按种服药,但老人常记不住时间、分不清药品,漏服错服直接影响疗效;市面药盒多为被动分格容器,无提醒、无交互。本项目以 ESP32-S3 为主控研制智能语音药盒:用语音代替按键与手机 App,实现"唤醒—问药—确认—开柜"的自然交互;三路电磁锁独立控制三个药柜,必须二次确认才开锁;状态屏同步显示问答与柜号,断网仍可本地语音取药。
二、软件功能、核心功能模块
系统基于 ESP-IDF v5.5.4 的 FreeRTOS 多任务架构:INMP441 采集 16kHz PCM,ESP-SR AFE 完成 AEC/VAD/唤醒("你好小安"),播放 PCM 回灌作 AEC 参考,边播报边可唤醒;voice_session 统一收口会话阶段,logic_dispatcher 单队列串行处理唤醒、ASR、TTS、开盒四类命令;ASR/TTS 走百度 WebSocket,audio_service 用 2MB PSRAM 环形缓冲统一承载采集与播放;dialog_router 保留 6 轮上下文,按"本地指令→固定问答→云端对话"路由;Open_Box 驱动三路继电器脉冲开锁后回到断电状态;状态屏中文分页显示、空闲 60 秒熄屏;断网由本地固定指令兜底。
三、业务流程、功能路径描述
联网:说"你好小安"唤醒,中央队列立即停播并取消在途请求,录音会话独占麦克风采集,PCM 上传百度 ASR 得到文本,再按"本地指令→固定问答→云端对话"路由;回复为纯数字 1~3 时提示药品柜号并确认取药,-1 表示无药,其余交 TTS 播报并在状态屏分页显示。离线:断网转本地识别,说"打开一号柜"后显示柜号并播放提示音,第二轮说"确认开盒"才提交,超时、低置信度或模糊候选都不开柜。开盒路径:确认文本连同会话代次经 logic_send_asr_cmd() 进入中央队列,逻辑任务驱动继电器脉冲开锁,脉冲结束回到断电状态,代次过滤保证旧结果不误触发。
物联网