
项目编号X512241| 主控 STM32F103C8T6 ESP8266 | 感知 4×4 矩阵薄膜压力传感器串口采集 | 链路 MQTT 双向主题 mybs/2512241摘要本文介绍一套基于压力矩阵的坐姿与专注度分析系统。系统以一块 4×4 矩阵薄膜压力传感器M0404-1kg铺成坐垫16 个压力点经串口采集模块送入 STM32F103C8T6USART2 接收由 ESP8266 通过 MQTT 协议broker-cn.emqx.io:1883上报主题 mybs/2512241/data、下发主题 mybs/2512241/ctr与服务器交互。服务端基于 JeeSite 平台与 Spring Boot 构建结合 MySQL 存储压力数据与坐姿记录通过 MQTT 客户端收发消息并按压力分布判定「正位 / 前倾 / 左斜 / 右斜 / 未就坐」五种状态当某段时间内累计异常坐姿时长超过用户设定阈值时坐垫上的有源蜂鸣器鸣响、APP 同步弹出提醒。移动端 APP 经 HBuilder 编译、以 web-view 调用 H5 页面提供登录注册、实时数据16 点压力值 1 秒刷新、历史数据、告警记录与个人中心等功能。文末附技术栈速览、坐姿判定与告警规则实测、实测数据切片与部署核对清单。0.1 技术栈速览组成技术 / 参数说明主控STM32F103C8T6Keil 5轮询采集、打包上报、驱动外设压力传感4×4 矩阵薄膜压力传感器 M0404-1kg16 个压力点电阻式输出采集模块压力传感器采集器串口版TXD→PA3 / RXD←PA2阵列信号转串口数据帧无线模块ESP8266 ESP-01SRXD←PA9 / TXD→PA10MQTT 透传接入 8266wifi提示器件有源蜂鸣器 PB1LED 经 220Ω 接 PB0就地声音与状态提示Brokerbroker-cn.emqx.io : 1883EMQX 中国区公共服务器主题上报 mybs/2512241/data下发 mybs/2512241/ctr双向各一硬件只订阅控制主题服务端JeeSite Java / SpringBoot / MySQL / Bootstrap坐姿判定、告警计时与落库移动端web-view 承载 H5HBuilder 编译实时 / 历史 / 告警 / 个人中心0.2 配网参数速查SSID : 8266wifi SSID 密码 : 123456789 服务器地址 : broker-cn.emqx.io 服务器端口 : 1883 ClientID : uuidxxxx 数据指令主题 : mybs/2512241/data 控制指令主题 : mybs/2512241/ctr 主题原则 : 硬件到服务器一个服务器到硬件一个暂不支持多主题一、项目基本情况1.1 系统定位与技术架构坐姿问题往往不是「有没有坐直」这么简单长时间前倾、持续单侧倾斜、久坐不动都会在不知不觉中累积成颈肩与腰椎的负担。可穿戴方案要用户主动佩戴摄像头方案又涉及隐私本项目选择第三条路 —— 用一块 4×4 的矩阵薄膜压力传感器做成坐垫让压力分布自己说话。16 个压力点的数据经串口送入 STM32F103C8T6打包后由 ESP8266 以 MQTT 协议上报服务端服务端按压力分布判定「正位 / 前倾 / 左斜 / 右斜 / 未就坐」将累计异常坐姿时长与用户设定的阈值比对超限时同时触发两条提示坐垫上的蜂鸣器滴滴作响APP 弹出「坐姿长时间不规范请及时纠正」。APP 侧实时显示 16 点压力值与坐姿持续时长历史记录与告警记录均可查询阈值本身也做成可配置项 —— 提醒的松紧由使用者自己定。系统自上而下分为四层应用层是手机 APP通过 web-view 控件承载 H5 页面、由 HBuilder 编译打包提供实时数据、历史数据、告警查询与个人中心四类入口软件服务层基于 JeeSite 平台与 Spring Boot 构建内置 MQTT 客户端订阅上报主题、下发控制指令负责坐姿判定、告警计时与数据落库传输层依托电脑热点 8266wifi 与 EMQX 公共 Brokerbroker-cn.emqx.io1883 端口以两个方向相反的主题承载上报与下发感知执行层以 STM32F103C8T6 为主控通过串口采集 4×4 矩阵薄膜压力传感器的 16 点数据并在本地驱动蜂鸣器与 LED 给出提示。层次组成职责应用层手机 APPweb-view 承载 H5实时数据、历史数据、告警查询、个人中心软件服务层JeeSite Spring Boot MySQL坐姿判定、告警计时、数据落库与接口调度传输层8266wifi 热点 EMQX 公共 BrokerMQTT 双主题上报与下发感知执行层STM32F103C8T6 4×4 压力矩阵 蜂鸣器 LED压力采集、打包上报、就地提示▲ 图 1 系统总体架构图应用层 / 软件服务层 / 传输层 / 感知执行层判定的位置决定了这套系统的可维护性压力数据只要传得回来坐姿规则与告警阈值就与硬件算力无关改规则不必重新烧录固件。1.2 硬件构成与引脚连接硬件按「扩展板 杜邦线」方式组装核心板通过排座插装在扩展板上传感器阵列与各模块分别接线。主要器件与作用如下表所示。器件型号 / 规格作用主控STM32F103C8T6 核心板轮询读取压力数据、打包上报、驱动蜂鸣器与 LED压力传感4×4 矩阵薄膜压力传感器M0404-1kg16 个压力点按阵列分布输出电阻式压力信号采集模块压力传感器采集器串口版把阵列的电阻变化转换为串口数据帧无线模块ESP8266ESP-01SMQTT 透传接入 8266wifi 热点与 Broker 收发数据声音提示有源蜂鸣器安装于坐垫异常坐姿时滴滴提示状态指示LED 指示灯经 220Ω 限流提示运行与告警状态引脚分配逐项取自项目原理图的文字层两条串口链路各占一路资源压力采集模块的 TXD 接 PA3、RXD 接 PA2USART2ESP-01S 的 RXD 接 PA9、TXD 接 PA10USART1有源蜂鸣器由 PB1 驱动LED 阳极经 220Ω 限流电阻接 PB0。整套电路由 Micro-USB 提供 5 V 输入采集模块 5 V 供电主控与传感器阵列 3.3 V 供电。▲ 图 2 硬件系统原理框图STM32F103C8T6 与各外设的引脚连接注意硬件口径说明① 《项目介绍》把矩阵压力传感器描述为「连接 STM32 的 ADC 接口」但原理图与方案导图显示实际走的是串口采集模块USART2传感器阵列本身引脚定义为 VCC / GND / RX / TX不存在模拟量直连主控的通路故本文采信原理图与方案导图② 《项目介绍》的器件构成未列出 LED而方案导图与原理图均有 LED 且明确接 PB0本文按原理图表述③ 设备与终端编号沿用工程实测值 ZDBH01。1.3 软件与运行环境硬件端使用 Keil 5 开发软件端基于 JeeSite 平台、采用 Java / SpringBoot / MySQL / Bootstrap 技术栈移动端为 web-view 承载的 H5 页面经 HBuilder 编译打包成 APP。服务端内置 MQTT 客户端与硬件订阅相应主题实现数据交互采集到的数据写入数据库后供各页面查询。环节技术 / 参数说明硬件开发Keil 5编写主控采集、打包与驱动逻辑传感采集串口透传USART2采集模块按固定帧格式输出 16 点压力值数据传输MQTTEMQX 公共 Brokerbroker-cn.emqx.io1883 端口服务端JeeSite Java / SpringBoot / MySQL / Bootstrap业务服务、数据落库与接口移动端web-view 承载 H5 HBuilder编译为 APP 供安卓手机安装坐姿判定按压力分布识别正位 / 前倾 / 左斜 / 右斜 / 未就坐告警规则累计异常坐姿时长与阈值比对阈值可在 APP 内修改并保存坐姿判定的输入是 16 个压力点的分布形态人离开坐垫时全部压力点归零判定为「未就坐」压力集中在阵列前部时判定为「前倾」集中在左侧或右侧时分别判定为「左斜」「右斜」压力分布接近均布且各点均处于有效区间时判定为「正位」。系统进一步记录每种状态的持续时长把「在设定时间内累计的异常坐姿时长是否超过阈值」作为是否提醒的依据 —— 这既是提醒策略也是本系统对「专注度」的可量化表达。二、系统架构设计2.1 系统功能结构系统功能横向分为硬件系统、软件系统与交付服务三块。硬件系统负责压力采集、数据上报与就地提示软件系统承担坐姿判定、告警计时与数据管理交付服务覆盖实物、源码、原理图、演示视频与远程协助。▲ 图 3 系统功能结构图硬件系统 / 软件系统 / 交付服务2.2 硬件原理图与实物原理图由立创 EDA 绘制并导出四个功能模块分区布置左上为 ESP8266 无线模块ESP-01S左下为矩阵薄膜压力传感器与串口采集模块右上为有源蜂鸣器与 LED 指示灯右下为 STM32F103C8T6 核心板。图中各模块的引脚标注与 1.2 节的引脚表一一对应。▲ 图 4 硬件原理图立创 EDA 导出含 ESP8266、压力采集、蜂鸣器、LED 与主控实物部分由演示视频画面截取坐垫上是 4×4 的透明薄膜传感器阵列16 个方形压力敏感单元按 4 行 4 列均匀分布经白色排线接入串口采集模块再与主控扩展板相连扩展板上插装 STM32F103C8T6 核心板ESP-01S 无线模块与彩色排线分别接入。▲ 图 5 系统实物整机4×4 压力矩阵坐垫 STM32 核心板 扩展板 串口采集模块▲ 图 6 硬件接线实拍主控扩展板、彩色排线、无线与采集模块注意上两幅实物图取自项目演示视频的画面窗口受拍摄设备与窗口分辨率限制成图由原画面放大得到画面中另含演示视频自身的水印。2.3 通信链路与配网参数无线模块承担硬件与服务器之间的双向链路配网参数在配网程序中一次性写入接入热点为 8266wifiBroker 地址为 broker-cn.emqx.io、端口 1883数据指令主题为 mybs/2512241/data控制指令主题为 mybs/2512241/ctrClientID 由 uuid 生成。主题设计遵循「硬件到服务器一个、服务器到硬件一个」的原则暂不支持多主题硬件只订阅属于自己的控制主题因此上行与下行互不干扰。▲ 图 7 ESP8266 MQTT 配网程序真实 Broker 地址、端口与双向主题接入热点 : SSID 8266wifi 密码 123456789 Broker : broker-cn.emqx.io 端口 1883 ClientID : uuidxxxx由客户端生成 数据指令主题 : mybs/2512241/data 硬件 → 服务器16 点压力值 控制指令主题 : mybs/2512241/ctr 服务器 → 硬件提示与阈值指令 主题原则 : 硬件到服务器一个服务器到硬件一个注意本文涉及的服务器地址与主题均按原始文案书写不含任何协议前缀与外链完整的配网字段以图 7 的截图为依据。2.4 数据交互时序一次完整的采集与提醒闭环依次经过硬件节点、EMQX Broker、服务端与 APP硬件上电后接入热点并连接 Broker订阅下发主题随后按固定周期把 16 点压力值打包上报到数据主题服务端的 MQTT 客户端订阅并解析报文判定坐姿并写入数据库当累计异常坐姿时长超过阈值时服务端经控制主题下发提示指令蜂鸣器滴滴作响、LED 状态随之变化同时 APP 拉取实时数据并弹出告警提示。▲ 图 8 系统数据交互时序图APP · 服务端 · EMQX Broker · 硬件节点坐姿状态与判定依据汇总如下表其中「正位」为唯一正常状态其余状态在累计时长超过阈值后触发提醒。坐姿状态判定依据是否计入异常时长正位压力分布接近均布各点均在有效区间否前倾压力集中在阵列前部前两行压力值显著偏高是左斜压力集中在阵列左侧左两列压力值显著偏高是右斜压力集中在阵列右侧右两列压力值显著偏高是未就坐全部压力点归零人离开坐垫否单独统计离座时长三、系统界面展示3.1 登录与注册APP 以「坐姿与专注度分析系统」为登录页标题采用手机号加密码的方式登录未注册用户可直接跳转注册页注册页要求填写姓名、手机号与两次密码注册完成后详细用户信息可在个人中心继续完善。▲ 图 9 APP 登录与注册页演示账号信息已脱敏3.2 首页与个人中心首页为四宫格布局四个入口分别是实时数据、历史数据、告警查询与个人中心个人中心展示头像、姓名与手机号下方提供信息修改、密码修改与退出三项操作。▲ 图 10 APP 首页四宫格入口与个人中心姓名、手机号已脱敏3.3 实时数据实时数据页是系统的核心页面1 秒刷新一次。页面上半部分给出文字结论终端名称「坐姿检测装置」、占用状态、当前坐姿与已持续时间、以及告警信息栏与最近更新时间下半部分是 16 个压力点的实时数值数值偏大的压力点以红色标出可以直观看到压力分布形态。页面中部还有一行「告警时长阈值」显示硬件侧的时长阈值并提供输入框与保存按钮阈值下发给硬件后立即生效。实测中出现的典型状态包括正位持续 16 秒、前倾持续 19 秒、左斜持续 69 秒、右斜持续 49 秒以及人离开坐垫后判定为「未就坐」并持续 8 秒。下图左侧为「正位」状态各压力点分布均衡右侧为「前倾」状态前部两行出现 292、214 等明显偏高的读数。▲ 图 11 APP 实时数据页正位 / 前倾两种状态下方为 16 点压力值3.4 告警提示与告警记录当累计异常坐姿时长超过阈值时APP 会在实时数据页弹出告警提示「坐姿长时间不规范请及时纠正」同一时刻坐垫上的蜂鸣器也开始滴滴提示两条通道互为补充 —— 离开手机也能被提醒到。所有触发过的提醒都会进入告警数据查询页按时间倒序排列每条记录包含编号、名称、时间与告警内容告警内容形如「坐姿占用已持续 24 秒请及时纠正」可读性很高无需再对照表格换算。▲ 图 12 APP 告警弹窗与告警数据查询页3.5 历史数据与账号信息历史数据查询页以卡片形式逐条罗列坐姿记录每条包含设备编号、坐姿状态、持续时长以及精确到秒的开始与结束时间顶部提供关键字搜索框可按坐姿状态筛选。从实测记录可以看到一次完整的坐姿切换过程「未就坐」持续 1675 秒后转为「右斜」1 秒随后「左斜」36 秒、「右斜」6 秒最后进入「前倾」状态并持续 24 至 25 秒。用户信息修改页用于维护姓名与手机号。▲ 图 13 APP 历史数据查询与用户信息修改页姓名、手机号已脱敏账号与密码修改页用于修改登录密码与退出登录密码修改需要依次填写账号、原密码、新密码与确认密码。▲ 图 14 APP 账号密码修改与退出登录页3.6 实测数据汇总下表汇总了系统联调期间采集到的实测数据时间集中在 2026 年 2 月 9 日 22:57 至 23:26 这一段连续测试窗口内。项目实测值说明终端编号ZDBH01终端名称「坐姿检测装置」压力点数量16 个4×4 阵列每点独立输出压力值单点实测峰值479左斜状态下左上角压力点的读数告警时长阈值30 秒 / 60 秒两档实测值可在 APP 内修改并保存实时状态示例正位 16 秒 / 前倾 19 秒同一次测试中的两种状态异常状态示例左斜 69 秒 / 右斜 49 秒计入异常时长的两种状态离座时长示例未就坐 1675 秒单独统计不计入异常时长告警记录示例坐姿占用已持续 24 秒与阈值比对后生成的告警文案四、系统视频展示演示视频按「硬件外观 — 配网与连接 — 实时数据 — 告警触发 — 历史与告警查询」的顺序组织全程为屏幕录制与实机拍摄双画面对照左侧为原理图与方案导图右侧同步播放硬件的实拍画面与 APP 的操作过程可以直接看到压力值随手掌按压位置变化、坐姿状态随之切换的过程。演示环节硬件上电查看坐垫传感器阵列、主控扩展板与无线模块的接线状态配网与连接在配网程序中写入热点、Broker、端口与双向主题确认设备在线实时数据手掌按压坐垫不同位置观察 16 点压力值与坐姿状态同步变化告警触发保持异常坐姿至超过阈值观察 APP 弹窗与坐垫蜂鸣器提示数据查询在历史数据页与告警查询页核对本次测试产生的记录。▲ 图 15 演示视频封面左侧原理图区 右侧硬件实拍画面注意素材包中 01视频演示 目录含 B站版本、无水印版与水印版三个版本均可正常播放正文不内嵌视频文件视频建议作为独立稿件发布。本节的封面图为视频封面截取。五、获取方法本项目交付内容包括硬件实物、软硬件程序源码、硬件原理图与演示视频并提供远程协助完成环境搭建、程序调试与小规模修改答疑。需要哪一项、希望怎么改说明项目编号 X512241 与具体需求即可。交付内容包含形式硬件实物已联调的坐垫装置核心板 扩展板 传感器阵列 模块实体寄送程序源码硬件端Keil 5与软件端JeeSite SpringBoot完整源码压缩包硬件原理图立创 EDA 源文件及 PDF / PNG / SVG 等导出件压缩包演示视频坐姿采集与告警全流程演示视频文件技术协助环境搭建、程序调试与小规模修改答疑远程协助部署步骤硬件接线按图 2 的引脚表连接主控、采集模块、无线模块、蜂鸣器与 LED固件烧录用 Keil 5 打开硬件端工程编译并烧录到 STM32F103C8T6热点与配网电脑开热点 8266wifi密码 123456789在配网程序中写入 Broker 与主题服务端部署部署 JeeSite 与 SpringBoot 工程初始化 MySQL 库表确认 MQTT 客户端连上 BrokerAPP 安装安装 HBuilder 编译的 APP注册账号后进入实时数据页核对压力值与坐姿状态。坐姿检测场景书桌、办公位的久坐提醒与坐姿纠正训练健康管理场景与用眼、饮水提醒等习惯类功能并列形成久坐行为记录教学实训场景适合作为「传感器阵列 串口采集 MQTT 上云」的完整教学案例二次开发场景判定规则与阈值都在服务端便于按课题组需求替换算法。附录 A 坐姿判定与告警规则实测环节实测现象说明正位判定16 点压力分布接近均布累计时长不计入异常前倾判定前部压力点出现 292 / 214 等偏高读数状态表显示「前倾N 秒」左斜 / 右斜单侧压力点显著偏高峰值 479状态表分别显示左斜 / 右斜未就坐全部压力点归零单独统计离座时长实测 1675 秒阈值触发30 秒 / 60 秒两档实测实时页可修改并保存下发硬件生效告警文案「坐姿长时间不规范请及时纠正」APP 实时页弹窗文案告警记录「坐姿占用已持续 24 秒请及时纠正」告警数据查询页记录文案附录 B 实测数据切片实时数据页2026-02-09 23:25:42 终端 : 坐姿检测装置ZDBH01 状态 : 占用 坐姿 : 前倾2 秒 告警信息 : --- 压力值 : 0 / 292 / 0 / 0 0 / 0 / 214 / 49 0 / 0 / 0 / 152 0 / 0 / 0 / 0 历史数据查询节选 设备编号 ZDBH01 状态 前倾 持续时长 25 秒 23:25:39 → 23:26:05 设备编号 ZDBH01 状态 未就坐 持续时长 1675 秒 22:57:44 → 23:25:39 设备编号 ZDBH01 状态 左斜 持续时长 36 秒 22:57:07 → 22:57:44 告警数据查询节选 23:26 坐姿占用已持续 24 秒请及时纠正 23:25 坐姿占用已持续 19 秒请及时纠正 22:57 坐姿占用已持续 52 秒请及时纠正附录 C 部署核对清单1. 硬件接线 按引脚表核对PA3/PA2采集、PA9/PA10无线、PB1、PB0 2. 固件烧录 Keil 5 编译后烧录 STM32F103C8T6 3. 热点配网 电脑开热点 8266wifi / 123456789写入 Broker 与双向主题 4. 服务端 JeeSite 工程部署 MySQL 初始化 MQTT 客户端连接确认 5. APP 端 安装应用、注册账号、进入实时数据页核对压力值与坐姿状态 6. 闭环验证 施加异常坐姿至超过阈值确认 APP 弹窗与蜂鸣器同步提示项目编号 X512241。本文所述系统已完成实测验证相关技术问题可在评论区交流。