💡 划重点

  • 用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充电线可用现有线材,不计入。

接线与结构

核心代码

以下为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和触发次数发送到服务器。

调试步骤

  1. 连接电路,用万用表确认无短路。
  2. 上传代码,打开串口监视器(115200),观察angle数值。平躺时接近0,驼背时增大。
  3. 校准MPU6050:静止时读取零偏,在代码中减去。
  4. 调整阈值:从30度开始,根据个人体型微调。测试震动是否正常触发。
  5. 佩戴背带,模拟驼背,确认震动及时且不误报。
  6. 若使用WiFi,配置热点信息,测试数据上报。
  7. 充电测试:插USB-C,观察XIAO充电指示灯。

设计图

矫正坐姿背带贴片结构flow
1
感知输入
→
2
控制处理
→
3
执行反馈
→
4
数据上报