1. 项目背景与核心需求
电瓶车作为城市短途出行的重要工具,其安全问题一直困扰着广大用户。传统机械锁具在专业盗窃工具面前形同虚设,而市面上多数电子防盗设备又存在误报率高、功能单一的问题。这个项目正是要解决这些痛点,设计一套基于单片机的智能监测系统。
我在实际维修工作中发现,电瓶车被盗主要集中在三个场景:整车被搬走、电池被盗取、以及暴力破坏锁具。因此,一个完善的防盗系统需要同时具备位移监测、电池状态检测和异常震动识别能力。通过单片机实现的智能系统,可以比传统防盗器更精准地判断真实盗情。
2. 系统架构设计
2.1 硬件组成框图
整个系统采用模块化设计,核心部件包括:
- STM32F103C8T6最小系统板(成本低且性能足够)
- MPU6050六轴传感器(用于姿态和震动检测)
- SIM800L GSM模块(远程报警)
- 霍尔传感器(电池仓状态监测)
- 蜂鸣器+LED报警单元
- 备用锂电池(主电断开时维持系统工作)
2.2 传感器选型考量
震动检测选用MPU6050而非普通震动开关,主要考虑两点:一是可以通过算法过滤掉风吹、路人碰撞等轻微干扰;二是能记录车辆倾斜角度,防止整车被抬走。实测中,设置加速度变化率阈值在0.5g/s以上才触发报警,误报率降低70%以上。
电池监测采用AH49E线性霍尔传感器,安装在电池仓侧壁。当电池被取出时,磁铁与传感器的距离变化会产生连续模拟信号,比简单的干簧管开关更能识别"半开"状态。
3. 核心功能实现
3.1 多级报警策略
系统采用三级响应机制:
- 轻微震动(如触碰):LED闪烁警示
- 持续震动或角度倾斜:本地蜂鸣器报警
- 电池断开或剧烈震动:发送短信+拨打电话
报警逻辑通过状态机实现,关键代码如下:
c复制void Alarm_Handler(void) {
static uint8_t alarm_level = 0;
if(MPU6050_GetShockLevel() > 1.5f) {
alarm_level = 2;
} else if(HALL_GetStatus() == 0) {
alarm_level = 3;
}
switch(alarm_level) {
case 1: LED_Blink(200); break;
case 2: Buzzer_On(1000); break;
case 3: GSM_SendAlert(); break;
}
}
3.2 低功耗优化
为延长备用电源续航:
- 主控芯片平时工作在STOP模式(功耗约20μA)
- MPU6050设置为运动唤醒模式
- GSM模块仅在报警时上电
- 每30秒唤醒一次检查电池状态
实测表明,2000mAh的备用锂电池可维持系统待机超过30天。这里有个细节:GSM模块初始化需要约15秒,因此报警响应会有延迟,需要在软件中做超时重试机制。
4. 关键问题解决实录
4.1 误报问题排查
初期测试中,系统在雷雨天气频繁误报。通过逻辑分析仪抓取数据发现,MPU6050在雷电干扰下会产生数据毛刺。解决方案有三:
- 在传感器电源端增加TVS二极管
- 软件上采用滑动窗口滤波算法
- 设置连续3次超过阈值才判定为有效触发
4.2 GSM信号处理
在地下停车场等弱信号区域,发现短信发送失败率高达40%。改进措施包括:
- 添加发送状态确认机制
- 失败后自动切换2G/3G模式重试
- 重要报警信息本地缓存,信号恢复后补发
5. 安装与调试要点
5.1 硬件安装规范
- 主控盒应隐藏安装,建议置于座桶内侧
- 霍尔传感器与磁铁的间距控制在3-5mm
- 天线需远离电机等干扰源
- 所有线束用波纹管保护
5.2 参数校准流程
系统首次使用时需要校准:
- 水平放置车辆,执行MPU6050零偏校准
- 装入电池,长按设置键记录霍尔基准值
- 测试报警功能时,建议先调低灵敏度
6. 实测效果与改进方向
经过三个月实地测试,在50辆安装该系统的电瓶车中:
- 成功阻止3次盗窃行为
- 误报率控制在每周0-1次
- 平均响应时间8秒(从触发到收到短信)
下一步计划加入蓝牙Mesh组网功能,让相邻车辆能互相预警。同时正在测试将报警信息推送至微信小程序,比短信更及时可靠。
