基于边缘计算与多模态感知的服药依从性系统|X604261

基于边缘计算与多模态感知的服药依从性系统|X604261

STM32F103C8T6 + HX711 + HC-SR501 + ASRPRO + ESP8266 | 硬件原理图 · 实物搭建 · App 界面 · MQTT 数据链路全解析

服药依从性(Medication Adherence)是决定慢性病长期治疗效果的关键变量。本系统以 STM32F103C8T6 为边缘计算节点,融合「称重式药量感知」与「红外人体感知」两类异构模态,在本地完成服药行为的采集、判别与语音干预,再由 ESP8266 经 MQTT 协议将结构化结果同步至移动端,从而构建「计划下发—到点提醒—行为判别—记录回传」的完整闭环。

一、项目基本情况

临床实践表明,慢性病患者的实际服药行为与医嘱之间存在显著偏差,漏服、错服与重复服用往往难以及时发现。传统的服药提醒手段(定时闹钟、药盒标记)只能完成「提醒」这一单向动作,无法回答「患者究竟有没有把药取走」这一核心问题,更无法形成可追溯的服药记录。本项目正是围绕这一空白展开设计。

1.1 设计目标与技术路线

系统面向家庭与社区养老场景,设计目标可归纳为三点:其一,以物理量替代主观确认——用称重传感器测量药品剩余重量的变化,将「是否服药」转化为可量化的重量差分判据,避免依赖用户手动点击确认;其二,以多模态融合提高判别可靠性——将人体红外感知与重量感知组合使用,只有「检测到人员靠近」且「检测到重量下降」两个条件先后成立,才判定为一次有效服药;其三,以边缘计算换取实时性——行为判别在 STM32 本地完成,语音提醒无需等待云端往返,即使网络中断也不影响提醒与判别功能。

技术路线上,系统采用「下位机 + 无线网关 + 服务端 + 移动端」的分布式结构。下位机由 STM32F103C8T6 与 HX711、HC-SR501、ASRPRO 语音模块、按键、LED 组成,通过扩展板与杜邦线连接,使用 Keil 5 开发;无线网关由 ESP8266(ESP-01S)承担,以 MQTT 协议接入消息中间件;服务端基于 JeeSite 平台与 Java SpringBoot 构建,使用 MySQL 持久化业务数据;移动端 App 通过 WebView 控件加载 H5 页面(由 HBuilder 编译生成),实现跨平台复用。

1.2 系统总体架构

系统在纵向上划分为四个层次,自下而上依次为感知执行层、边缘计算层、网络传输层与应用层。感知执行层负责物理世界的信号采集与动作输出;边缘计算层由 STM32F103C8T6 承担,完成时序调度、重量差分判别与依从性状态机运转;网络传输层由 ESP8266 与 MQTT 中间件构成,提供双向异步通信;应用层则由服务端与 App 共同承载服药计划的配置与服药记录的呈现。

▲ 图 1 系统总体架构:感知执行、边缘计算、网络传输与应用四层结构

1.3 系统功能构成

从功能视角看,系统可切分为硬件系统、软件系统与交付服务三个维度。硬件系统围绕「采集—判断—提示」展开,软件系统覆盖用户登录、终端管理、服药计划管理、服药记录查询与个人中心五类功能,交付内容则包含实物、源码、原理图与演示视频。

▲ 图 2 系统功能结构:硬件系统、软件系统与交付服务三个维度

1.4 硬件构成与器件选型

系统的硬件选型遵循「低功耗、低成本、接口简单」的原则。主控选用 STM32F103C8T6,其 Cortex-M3 内核运行于 72 MHz,具备充足的 GPIO 与多路串口资源,可同时挂载称重模块、语音模块与无线模块;药量感知选用 HX711 专用 24 位模数转换芯片配合应变式称重传感器,其分辨率足以识别单粒药片取放所引起的重量变化;人体感知选用 HC-SR501 被动红外模块,输出为数字电平,接口开销极小。各器件的具体接口对应关系如下表所示。

器件型号 / 规格接口方式功能定位
主控 MCUSTM32F103C8T6(Cortex-M3,72 MHz)系统控制核心,Keil 5 开发
称重采集HX711 + 应变式称重传感器串口(SCK→PB10,DT→PB11)药量变化检测与服药判定
人体感知HC-SR501 被动红外模块GPIO(OUT→PA3)人员靠近检测,触发语音提醒
语音交互ASRPRO-2M 语音模块串口(TX→PB5,RX→PB6,9600 bps)服药提醒播报与操作确认
交互按键轻触按键 SW2GPIO(PC14,10 kΩ 上拉)称重数据清零与初始重量校准
状态指示3 mm 红色 LEDGPIO(PB1)监测状态提示
无线通信ESP8266(ESP-01S)串口(TX→PA9,RX→PA10)MQTT 数据上行与指令下行
供电模块YL-00604 电源模块USB 5 V 输入输出 3.3 V / 5 V 双路供电

值得说明的是,HX711 承担的并非简单的「称重」功能,而是把连续变化的模拟重量信号转换为离散的服药事件。系统在初始化阶段由用户按下清零键记录药品初始重量,此后每次取药都会在该基准上产生一次可观测的负向跳变,这正是依从性判定的物理依据。

二、系统架构设计

2.1 硬件系统结构与引脚分配

硬件以 STM32F103C8T6 核心板为中枢,左侧为输入通道,右侧为输出通道,下方为供电单元。输入侧包含 HX711 称重模块、HC-SR501 人体红外模块与清零按键;输出侧包含 LED 状态指示灯、ASRPRO 语音模块与 ESP8266 无线模块。三路串口分别承担称重数据读取、语音指令下发与 MQTT 数据透传,彼此在物理层与逻辑层上相互独立,避免了功能耦合导致的相互阻塞。

▲ 图 3 硬件系统原理框图:主控、输入通道、输出通道与供电单元

2.2 硬件原理图

原理图使用嘉立创 EDA 绘制,按功能划分为 ESP8266 通信单元、人体红外单元、HX711 称重单元、按键单元、LED 指示单元、语音模块单元与 STM32F103C8T6 核心板单元六个功能区块。所有外设均就近去耦,按键通道配置 10 kΩ 上拉电阻以保证电平稳定,LED 支路串入限流电阻以保护 IO 口。原理图同时提供 schdoc、json、pdf 与图片等多种格式,便于直接投板打样或二次修改。

▲ 图 4 硬件原理图(嘉立创 EDA 绘制,含 STM32F103C8T6、HX711、HC-SR501、语音模块、按键、LED、ESP8266)

2.3 硬件实物

实物按原理图在扩展板上搭建完成,采用杜邦线连接各功能模块,便于演示与调试。称重传感器与 HX711 模块共同构成独立的药盒托盘:传感器一端固定于透明托板,另一端悬空承载药品,取药动作引起的形变经 HX711 转换为数字序列送入主控。主控侧自上而下依次布置 STM32 核心板、HC-SR501 人体红外模块、清零按键、ASRPRO 语音模块与 ESP8266 无线模块,底部为电源单元。

▲ 图 5 硬件实物:主控板、传感器与语音/无线模块的整机布局

▲ 图 6 硬件实物俯视接线:称重托盘、HX711 模块与扩展板走线

2.4 语音交互设计

语音模块采用 ASRPRO-2M,通过串口 0 与主控通信,波特率 9600 bps(TX→PB5,RX→PB6),使用天问 Block 图形化平台完成语音逻辑配置。系统的语音策略为「按药品种类分条播报 + 循环提醒」:主控在到达预设服药时刻后向语音模块下发对应指令码,语音模块播报该药品的名称与剂量;若在设定时间内未检测到人员靠近,播报将循环执行,直至检测到来人或完成服药。各指令码的对应关系如下表。

指令码播报内容触发条件
A01服药时间已到,请服用奥美沙坦 2 片到达奥美沙坦计划服药时刻
A02服药时间已到,请服用阿司匹林肠溶片 2 片到达阿司匹林肠溶片计划服药时刻
A03服药时间已到,请服用碳酸钙 2 片到达碳酸钙计划服药时刻
A04用户完成服药HX711 检测到重量下降并判定已服药
A05称已清零按下清零按键,完成初始重量校准

从上表可以看出,语音模块不仅是输出终端,同时也是一个语义化的状态反馈通道。「用户完成服药」与「称已清零」两条提示把主控内部的状态迁移显式地表达给使用者,降低了系统的使用门槛。

▲ 图 7 ASRPRO 语音模块指令配置(天问 Block):上电初始状态与串口指令映射

2.5 软件架构与通信协议

服务端基于 JeeSite 平台构建,采用 Java SpringBoot 提供业务接口,MySQL 完成数据持久化,前端使用 Bootstrap 实现响应式布局。服务端内置 MQTT 客户端,通过订阅与硬件约定的主题实现数据交互;移动端 App 由 HBuilder 编译 H5 页面后,以 WebView 控件加载,使得同一套前端代码可同时运行于 Android 与 iOS 平台。

通信层采用 MQTT 协议,服务端可选用自建 EMQX 节点或公共节点(如 broker-cn.emqx.io),二者接口一致,便于在不同部署条件下切换。上下行主题以前缀 mybs 开头,并以客户端标识作为末级路径,从而实现多台设备的同时接入与相互隔离。

通信方向主题载荷内容
下行(上位机 → 硬件)mybs/bsctr/{clientId}服药计划:药品名称、服药时间、剂量
上行(硬件 → 上位机)mybs/bsdata/{clientId}服药结果:实际服用时间、服药状态

说明:{clientId} 由 ESP8266 芯片标识生成。本项目实测节点的标识为 2462AB65F2F2,因此实际订阅的主题分别为 mybs/bsctr/2462AB65F2F2 与 mybs/bsdata/2462AB65F2F2。调试阶段可借助 MQTT 客户端工具对通信过程进行实时监控。

2.6 边缘判别逻辑与数据交互时序

系统的核心判别逻辑运行于 STM32 一侧,可概括为一个四阶段的有限状态机:计划配置阶段,用户在 App 端录入服药计划,数据经服务端下发至主控,用户将药品放置于称重托盘并按下清零键,主控记录初始重量;提醒触发阶段,系统时间到达预设服药时刻后启动 HC-SR501,检测到人员靠近即通过语音模块播报提醒,未检测到人员则循环播报;状态判别阶段,人员取药后 HX711 采样值相对初始重量出现负向跳变,主控据此判定「用户已服药」,并将包含实际服用时间的结果上报;异常处理阶段,若到达服药时间后既未检测到人员靠近,也未检测到重量变化,系统判定「未按时服药」,将异常状态同步至 App 端并触发提醒。

▲ 图 8 系统数据交互时序:正常服药链路与异常(未按时服药)链路

三、系统界面展示

移动端采用九宫格主页导航结构,功能入口包括终端管理、服药计划管理、服药记录查询与个人中心四类。用户以手机号作为账号登录,登录成功后进入主页,可在同一界面内完成设备绑定、计划录入与历史记录检索等操作。

▲ 图 9 App 登录界面与首页九宫格功能导航

服药计划管理是系统的核心配置界面。每条计划以卡片形式呈现计划名称、药品名称、服用剂量、服药时间、提醒状态与服药状态六项信息,支持按药品名称或计划名称检索,并可通过卡片滑动调出「修改」与「删除」操作。新建计划时需填写基本信息的计划名称、药品名称、服用剂量与计划服药时间(每日),并可附加「事由」字段用于记录用药依据。

▲ 图 10 App 服药计划管理列表与服药计划明细编辑页

服药记录查询界面按时间倒序展示每一次服药行为,记录内容包含计划名称、药品名称、实际服用时间与服药状态四项。与计划界面不同,此处的时间为根据称重信息反推的实际服用时刻,而非计划时刻,因而能够客观反映患者是否存在延迟服药的情况。个人中心提供信息修改、密码修改与退出登录三项功能,并展示当前登录账号与用户名。

▲ 图 11 App 服药记录查询界面与个人中心

四、系统视频展示

为便于完整呈现系统的软硬件联动过程,项目配套录制了功能演示视频。视频以屏幕录制与实机拍摄交替切换的方式,依次演示 App 端服药计划的录入、主控端语音提醒的触发、取药动作引起的重量变化以及服药记录在 App 端的自动更新,并同步展示原理图与实物之间的对应关系。

▲ 图 12 功能演示视频封面

建议的观看顺序为:先观看无字幕的纯演示版本以建立整体印象,再观看带解说的版本理解各环节的技术细节,最后对照原理图与实物图复核硬件连接关系。视频文件与封面图随项目资料一并提供。

五、获取方法

源码与技术资料获取

  1. 在本文评论区留言,或通过 B站 站内私信说明需求;
  2. 说明需要的是「源码 + 原理图 + 硬件实物」的完整套装,还是其中的单项资料;
  3. 收到回复后按指引提供接收方式,资料将由专人整理打包后发送;
  4. 如需环境搭建协助或二次开发支持,可在联系时一并说明具体需求。
交付项内容
硬件实物按原理图搭建完成的整机一套(含称重托盘与各功能模块)
程序源码STM32 下位机工程、服务端工程与 App 端工程
硬件原理图嘉立创 EDA 工程文件及 PDF、图片导出
演示视频功能演示视频(含封面图)
文档资料接线与使用说明、业务流程说明

源码获取与技术支持备查:微信 xswzls;微信公众号:小豆豆物联网。项目的资料整理、硬件调试与技术支持由「小豆豆物联网」提供。

代码下载地址: https://pan.quark.cn/s/48b01f0717eb 本文将详细研究有关rtl8822蓝牙驱动及其适配的相关信息。rtl8822是由Realtek公司设计的一种无线通信芯片,主要应用于提供Wi-Fi和蓝牙功能。该芯片被广泛应用于多种现代电子设备中,例如笔记本电脑、路由器、智能手机以及平板电脑等。 我们首先需要理解“驱动”的定义。驱动程序充当计算机硬件操作系统之间的中介,负责将硬件指令解释为操作系统能够识别的语言。对于rtl8822芯片而言,蓝牙驱动是控制该芯片执行蓝牙通信的核心软件模块,它确保设备能够准确识别并连接其他蓝牙设备。 rtl8822驱动资料通常包括以下几个部分: 1. **Bluetooth Baseband (BB) 驱动**:这一部分负责处理蓝牙的底层通信,包括射频信号的编码解码,以及数据包的发送和接收。 2. **Bluetooth Host Controller Interface (HCI)**:HCI层是蓝牙驱动的重要组成部分,它确立了蓝牙主机(例如CPU)控制器(例如rtl8822芯片)之间的接口协议。借助HCI,应用程序能够蓝牙设备进行互动,如配对、建立连接、传输数据等。 3. **移植文档**:移植文档是将rtl8822蓝牙驱动适配至不同操作系统或平台的关键指南,其中通常包含了详尽的步骤、注意事项以及可能遇到的问题的解决方案。这些文档有助于开发者理解驱动的工作原理,并根据目标系统进行必要的调整。 4. **芯片手册**:Realtek为rtl8822芯片提供的手册是开发和调试驱动的重要参考资料,其中涵盖了芯片的硬件特性、寄存器布局、接口规范、功耗管理等内容。熟悉这些信息能够帮助开发者更深入地...
源码直接下载地址: https://pan.quark.cn/s/95b325c17039 本研究着重研究了运用OpenCV技术对乒乓球竞赛中运动中的乒乓球进行检测跟踪的方法。乒乓球运动具有极高的速度,并且在比赛期间常被运动员的身体部分遮挡,这对图像处理和模式识别技术提出了较高的标准。文中阐述了采用C++语言开发的算法程序,通过即时视频分析乒乓球的运动路径,并对相关技术的应用进行了深入的研究。 OpenCV是一个由Intel公司支持的开源计算机视觉库,在图像处理、模式识别、目标检测跟踪等方面展现出卓越的性能。OpenCV能够兼容多种编程语言,具备跨平台运作和轻量化的特点,因此被选作本研究的核心技术平台。本研究的宗旨在于协助教练员精确评估运动员的击球技术特征和乒乓球的运行表现,并且通过实时追踪乒乓球的运动路径、落点及击球时刻,为乒乓球竞赛的视频转播、技术数据统计等提供自动化服务。 为了达成乒乓球比赛视频录像中乒乓球运行路径的检测跟踪,本研究采用了改良的Surendra算法执行乒乓球体的识别,同时运用CamShift算法对高速运动的乒乓球进行追踪。另外,还引入了Kalman预测算法以提升对乒乓球路径的精确跟踪。 在技术方案中,研究者最初选择了现场拍摄随后进行后期处理的方法,在验证成功后改用实时拍摄实时处理的方法进行乒乓球的识别跟踪。研究视频选取了符合竞赛规范的场地和乒乓球,并且设置了特定的摄像机位置。由于乒乓球容易被运动员的身体遮挡,给识别和跟踪带来了挑战,研究中采用了YUV图像格式的模式识别,并在必要时进行运动目标的判定识别。此外,由于乒乓球运动速度极快且带有弧线旋转,研究中加入了预测算法以保证路径的精确跟踪。 整体的研究计划涵盖了乒乓球运动球体的检测、跟踪以...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新思维软件

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值