💡 划重点
- 用MPU6050检测背部倾角,超过阈值触发震动提醒。
- XIAO ESP32-S3负责计算与联网,支持USB-C充电和锂电池供电。
- 总成本控制在75元内,适合学生和白领日常佩戴。
- 可扩展WiFi日志,统计坐姿不良次数与时长。
需求洞察
目标用户是长时间伏案的学生和白领。他们每天坐姿不正超过数小时,却难以自我察觉,导致颈椎、腰椎劳损。市面坐姿矫正器要么笨重,要么只靠物理束缚,缺少实时反馈。这款背带贴片轻巧贴身,通过震动无声提醒,既不打扰他人,又能逐步养成肌肉记忆。相比动辄数百元的智能坐垫或摄像头方案,75元内的硬件成本让更多人愿意尝试。更重要的是,它把“感知-判断-提醒”闭环放在身体上,比手机App提醒更直接有效。
方案设计
感知层:MPU6050六轴传感器,读取三轴加速度,计算背部俯仰角。当角度大于30度(驼背)持续2秒,判定为不良坐姿。
控制层:XIAO ESP32-S3主控,运行滤波算法(一阶互补或滑动平均),避免误触发。同时管理震动时长和间隔。
执行层:扁平振动马达,通过NPN三极管驱动,由GPIO7控制。震动200ms,停1秒,循环3次,温和提醒。
日志/联网层:ESP32-S3支持WiFi和BLE。可选连接手机热点,将不良坐姿次数、累计时长上报到简易服务器或手机App,帮助用户复盘。离线时数据暂存内存,联网后补传。
物料清单
| 物料 | 数量 | 用途 | 估算单价(元) | 合计(元) |
|---|---|---|---|---|
| XIAO ESP32-S3 | 1 | 主控,WiFi/BLE,充电管理 | 25 | 25 |
| MPU6050模块 | 1 | 姿态检测 | 8 | 8 |
| 扁平振动马达 | 1 | 震动提醒 | 5 | 5 |
| 3.7V 300mAh锂电池 | 1 | 供电 | 15 | 15 |
| S8050三极管 | 1 | 马达驱动 | 0.5 | 0.5 |
| 1kΩ电阻 | 1 | 基极限流 | 0.1 | 0.1 |
| 弹性绑带+外壳+导线 | 1套 | 佩戴与固定 | 10 | 10 |
| 合计 | 63.6 |
总成本63.6元,低于75元目标。USB-C充电线可用现有线材,不计入。
接线与结构
- MPU6050:VCC→3.3V,GND→GND,SDA→D5,SCL→D6(I2C使用GPIO5/6,符合XIAO ESP32-S3默认I2C引脚)。
- 震动马达:正极→3.3V,负极→S8050集电极;S8050基极→1kΩ电阻→D7;发射极→GND。
- 锂电池:接XIAO的BAT+和BAT-,USB-C直接充电。
- 结构:将XIAO、电池、三极管放入小塑料盒,缝在弹性背带中央。MPU6050贴在背部正对脊柱位置,马达贴在肩胛骨附近。背带可调节松紧,确保传感器紧贴背部。
核心代码
以下为Arduino骨架,可编译上传。
#include <Wire.h>
#define MPU_ADDR 0x68
#define VIB_PIN 7
float angle = 0;
unsigned long lastTime = 0;
void setup() {
Serial.begin(115200);
Wire.begin(5, 6); // SDA=5, SCL=6
pinMode(VIB_PIN, OUTPUT);
Wire.write(0x6B); // 唤醒
Wire.write(0);
Wire.endTransmission();
}
void loop() {
int16_t ax, ay, az;
Wire.write(0x3B);
Wire.endTransmission(false);
Wire.requestFrom(MPU_ADDR, 6);
ax = Wire.read() << 8 | Wire.read();
ay = Wire.read() << 8 | Wire.read();
az = Wire.read() << 8 | Wire.read();
float accAngle = atan2(ay, az) * 180.0 / PI; // 俯仰角
angle = 0.9 * angle + 0.1 * accAngle; // 简单滤波
if (angle > 30 && millis() - lastTime > 2000) {
for (int i = 0; i < 3; i++) {
digitalWrite(VIB_PIN, HIGH);
delay(200);
digitalWrite(VIB_PIN, LOW);
delay(1000);
}
lastTime = millis();
}
delay(50);
}
如需联网,可加入WiFiClient和HTTP POST,将angle和触发次数发送到服务器。
调试步骤
- 连接电路,用万用表确认无短路。
- 上传代码,打开串口监视器(115200),观察angle数值。平躺时接近0,驼背时增大。
- 校准MPU6050:静止时读取零偏,在代码中减去。
- 调整阈值:从30度开始,根据个人体型微调。测试震动是否正常触发。
- 佩戴背带,模拟驼背,确认震动及时且不误报。
- 若使用WiFi,配置热点信息,测试数据上报。
- 充电测试:插USB-C,观察XIAO充电指示灯。
设计图
矫正坐姿背带贴片结构flow
1
感知输入
→
2
控制处理
→
3
执行反馈
→
4
数据上报