🚗 右转弯智能教练 V3

未开始 未连接
--
角速度 °/s
--
转角 °
--
水平加速度 g
流程 1/6
🛑
减速入弯
轻踩刹车, 把车速降下来
通过标准: --
--
水平加速度 g (刹车减速)
🟢 行驶中
0
听到的嗒声 (3 声即完成)
头部角度: --
🚶
停车 + 左右扫视, 确认安全
⬜ 未停车 ⬜ 未左扫视 ⬜ 未右扫视
--
角速度 °/s
--
累计转角 °
🟢 直线行驶
🛠 调试面板 (LED / 蜂鸣器 / 日志)
📖 技术文档
右转弯智能教练 · 汽车转向刹车预警学习系统
说人话:在方向盘上绑一个传感器盒,手机打开网页就能当教练:学员转弯时,系统用陀螺仪和加速度计判断你有没有减速、停车,用手机麦克风听你打没打转向灯(继电器"嗒嗒声"),用前置摄像头看你有没有扭头看后视镜、回头扫盲区,按 6 步标准动作打分(S~D 级)并语音提醒。不用改车、不用装车机,零侵入。

1. 整体流程

STM32 传感器盒 MPU6500 采集 固件 10Hz JSON 帧 串口/蓝牙 9600 网页四路检测器 6 步流程引导 五维评分 S~D

2. 硬件构成

核心是一块 STM32 最小系统板(Blue Pill)加六轴惯性传感器,全部搭在面包板上,总成本约 30 元。盒子绑在方向盘转轴上,任意安装角度都行。

STM32 主控
STM32F103C8T6 主控
(Blue Pill)
六轴传感器
MPU6500 六轴传感器
(陀螺仪+加速度计)
USB转TTL
CH340 USB转TTL
(串口通信)
STLINK
STLINK 调试器
(固件烧录)
面包板
面包板
(免焊接搭电路)
面包板跳线
面包板跳线
(板内接线)
面包板飞线
面包板飞线
(模块间连线)
杜邦线
杜邦线
(接口扩展)
部件型号作用
主控STM32F103C8T6 (Blue Pill)采集传感器、组帧发送、接收网页指令
六轴传感器MPU6500 (GY-6500 模块)陀螺仪测角速度、加速度计测三轴加速度
蓝牙HC-05无线连接手机(9600 串口透传)
OLED0.96" 四脚 I2C盒体显示当前状态 / 指令回显
指示灯 + 蜂鸣器LED×3 + 有源蜂鸣器绿/黄/红三档提示 + 蜂鸣声反馈
调试口CH340 USB转TTL电脑串口连接 / 固件调试(USART1)
烧录器STLINKKeil 编译固件烧录

3. 固件与通信协议

3.1 传感器采集(硬件 SPI)

MPU6500 走硬件 SPI1(PA5=SCK / PA6=MISO / PA7=MOSI / PA4=CS,Mode3,562.5kHz)。陀螺仪量程 ±250°/s,加速度计 ±2g(16384 LSB/g)。上电静止 1 秒做零偏校准(100 次平均),运行中用死区 ±3°/s + 死区内 1/16 慢速跟踪抑制零偏漂移。

3.2 数据帧(10Hz JSON 行帧)

TIM2 1ms 时基,每 100ms 组一帧,9600 波特通过 USART1(CH340)或 USART2(HC-05)发送:

{"angle_vel":-18.2, "angle":-95.3, "ax":0.02, "ay":0.98, "az":0.15}
# angle_vel: 角速度 °/s (右转为负)   angle: 陀螺仪积分转角 °
# ax/ay/az: 三轴加速度 g — 网页端用水平分量判减速/停车

3.3 下行指令(USART1 中断接收)

指令含义
LED:0 / LED:1 / LED:2绿灯 / 黄灯 / 红灯亮
BUZZ:1 / BUZZ:2蜂鸣短响 / 长响
OLED:xxxOLED 显示指定文字

4. 网页端四路检测算法

数据到网页后由四个独立检测器并行判定,各管一个动作,全部在浏览器本地完成,不上传任何画面:

检测器数据源判定逻辑负责步骤
加速度计行为判定固件 ax/ay/az重力方向 EMA 校准后取水平分量:>0.08g 持续 0.8s = 减速;<0.5g 持续 1.5s = 停车① 减速入弯
⑤ 停车瞭望
转向灯嗒声检测手机麦克风时域 RMS 包络:尖峰 >4×基线+0.02 且间隔 >250ms = 一声嗒(继电器声),3 声 = 转向灯已打;教练语音播报时暂停检测② 打右转向灯
头部姿态检测前置摄像头 + MediaPipe FaceMesh鼻尖与左右颊距离比 ×100 得 yaw 角,EMA 平滑去抖:13°~40° 持续约 1s = 看后视镜;>40° 持续 0.6s = 回头盲区;±25° = 左右扫视③ 看后视镜
④ 回头盲区
⑤ 左右扫视
转弯状态机固件 angle_vel / angle|角速度|>8°/s 持续 0.8s 进入转弯,<4°/s 持续 0.8s 结束;积分转角 40°~150° 为有效右转弯,记录峰值角速度与用时⑥ 平稳入弯
// 转弯状态机三段式: IDLE → TURNING → RESULT
IDLE:    连续 8 帧 |av| > 8°/s   → TURNING   (同时判反方向并提示)
TURNING: 连续 8 帧 |av| < 4°/s   → RESULT
RESULT:  angle 差 40°~150° → ✅ 有效右转弯, 否则提示转角不足/过大

MediaPipe 模型全部本地自托管(face_mesh.js + wasm + 模型权重共 8 文件),不依赖外网 CDN,离线也能跑;另带非 SIMD wasm 兜底老手机。

5. 六步流程与五维评分

流程按标准驾驶动作顺序编排,每步有中文语音引导、通过标准提示和「跳过」按钮,做完自动打勾进入下一步,顶部进度点一目了然。

步骤动作通过标准
① 减速入弯轻踩刹车降速水平加速度 >0.08g 持续 0.8s
② 打右转向灯提前 3 秒打灯听到转向灯继电器嗒嗒声 3 声
③ 看右后视镜头向右转 15°~40°持续约 1.2s
④ 回头扫盲区回头超过 40°持续约 0.6s
⑤ 停车瞭望停车 + 左右扫视停车 1.5s + 左/右各扫视一次
⑥ 平稳入弯低速均匀打方向持续右转 1s 以上, 总转角 40°~150°

评分规则

转弯有效时按完成的动作数评级(共 5 个动作:转向灯 / 后视镜 / 盲区 / 停车 / 减速);转弯无效最高 B 级:

动作完成数转弯有效转弯无效
5 / 5S
4 / 5AB
3 / 5BC
2 / 5CD
≤1 / 5DD

6. 工程上的讲究

细节做法为什么
重力方向校准前 25 帧平均锁定重力方向,水平分量小时才微调,刹车/转弯时冻结盒子任意摆放姿势都能用,不受安装角度影响
语音锁检测播报步骤提示期间检测器锁定,播完才解锁;按字数估时兜底强制解锁防止「卡片还没看清就被语音秒过」
步骤缓冲进入步骤后 max(进入时刻, 播报结束)+1.5s 内不判定给演示者看卡片的时间
进步重置检测器每步进入时清零该步所有计数上一步残留状态不能秒过下一步
yaw 滞回角度回落 3° 才清零帧计数头部轻微晃动不误判「看完后视镜」
转弯结果不丢RESULT 阶段每帧重试直到语音锁解锁一次性判定事件不能因语音播报错过
串口流解析按行缓冲拼接,兼容 \r,半行不丢蓝牙/USB 丢字节时命令依然完整
模型自托管MediaPipe 全套 8 文件本地部署 + 非 SIMD wasm 兜底不依赖外网 CDN,老手机也能跑

7. 已知局限(诚实交代)

问题原因现状
iPhone 无法连接设备iOS 全系浏览器不支持 Web Serial / Web Bluetooth需安卓 Chrome 或电脑 Chrome/Edge
HC-05 是经典蓝牙无 GATT 服务,Web Bluetooth 连不上已适配:安卓 Chrome Web Serial 直连系统已配对设备
减速/停车是行为判定加速度计积分漂移,测不了绝对速度用水平加速度阈值判定行为,演示场景够用
转角依赖陀螺仪积分零偏漂移导致积分误差累积死区+归零+慢速跟踪缓解,长时间使用仍有误差
头部检测条件受限需前置摄像头正对脸部弱光、遮挡时帧数下降
转向灯靠听声识别麦克风识别继电器嗒嗒声车内其他类似声响可能误判(阈值已加宽)

8. 部署信息

项目详情
服务器Ubuntu 22.04 (124.221.224.40)
访问地址https://cdqtech.online/rightturn/
服务方式纯静态页面 + nginx (alias /opt/rightturn/),无需后端
固件工程STM32F103C8T6 + MPU6500,Keil5 编译,STLINK 烧录
通信协议9600 波特 · 10Hz JSON 行帧 · 指令 LED:/BUZZ:/OLED:
浏览器要求Chrome / Edge(需支持 Web Serial + 摄像头 + 麦克风)

cdqtech.online · 右转弯智能教练技术文档

--

右转弯智能教练

跟着流程走, 学会标准右转弯
先连接传感器盒
未连接
① 手机系统蓝牙配对 HC-05 (码 1234)
② 退出占用蓝牙的 App (HC蓝牙助手等)
③ 点「🔌 连接设备」→ 选 HC-05
④ 授权摄像头/麦克风 → 点「开始训练」
S
✅ 有效右转弯
标准动作完成 5/5 · 峰值 18.0°/s · 用时 4.2s