1. 项目概述
这个智能宠物项圈项目是我去年为一个宠物用品公司开发的完整解决方案。当时客户的需求很明确:要一款能够实时监测宠物状态、具备防丢失功能,同时价格控制在200元以内的硬件产品。经过多方对比,最终选择了STM32F103C8T6作为主控芯片,这款芯片在成本、性能和开发资源之间取得了完美平衡。
市面上同类产品要么功能单一(比如只有GPS定位),要么价格昂贵(带4G模块的项圈动辄五六百元)。我们的设计在保证基础功能的前提下,通过精心选型和算法优化,把BOM成本控制在了150元左右。整个开发周期约3个月,从硬件设计到嵌入式开发,再到配套的APP开发,形成了一个完整的物联网解决方案。
2. 硬件设计解析
2.1 核心器件选型
主控芯片选用STM32F103C8T6主要基于三点考虑:
- 72MHz主频足够处理传感器数据
- 内置的硬件I2C和SPI接口简化了外围电路设计
- 丰富的开发资源和成熟的生态
GPS模块选择了ATGM336H,这款模块有以下几个优势:
- 冷启动时间仅需35秒
- 定位精度2.5米CEP
- 功耗仅25mA@3.3V
- 支持北斗/GPS双模
运动传感器用的是MPU6050,虽然现在有更新的型号,但它性价比极高,而且通过DMP可以直接输出姿态数据,大大减轻了MCU的运算负担。
2.2 电源管理设计
电源部分是最容易出问题的地方,我们采用了双电源方案:
- 主电源:3.7V/500mAh锂电池
- 备用电源:超级电容(用于突发断电时保存数据)
充电管理使用TP4056芯片,支持最大1A充电电流。实际测试发现,如果直接用TP4056给电池充电,在GPS工作时会出现电压跌落。最终解决方案是在充电输入端增加一个1000μF的电容。
重要提示:千万不要为了省成本而省略TVS二极管!我们在第一批样品中就因为省掉了这个0.5元的器件,导致有10%的产品在雷雨天气出现GPS模块损坏。
3. 嵌入式软件开发
3.1 系统架构设计
整个嵌入式软件采用分层架构:
- 硬件驱动层:直接操作寄存器
- 中间件层:FreeRTOS实时系统
- 应用层:业务逻辑处理
使用FreeRTOS主要考虑到:
- 需要同时处理GPS数据解析、运动状态监测、蓝牙通信等多个任务
- 方便后期功能扩展
- 内存占用仅6KB左右
3.2 关键算法实现
3.2.1 运动状态识别
通过MPU6050的加速度计数据,我们实现了以下状态识别:
- 静止:所有轴加速度值接近0g
- 行走:周期性变化,频率1-2Hz
- 奔跑:周期性变化,频率3-5Hz
- 异常:突然的大幅度变化
算法实现要点:
c复制#define WALK_THRESHOLD 0.3
#define RUN_THRESHOLD 0.7
void detect_motion(float accel[3]) {
static float last_accel[3] = {0};
float delta = 0;
for(int i=0; i<3; i++){
delta += fabs(accel[i] - last_accel[i]);
last_accel[i] = accel[i];
}
if(delta > RUN_THRESHOLD){
current_state = RUNNING;
} else if(delta > WALK_THRESHOLD){
current_state = WALKING;
} else {
current_state = IDLE;
}
}
3.2.2 低功耗优化
通过以下措施将待机功耗从15mA降到了2mA:
- 动态调整GPS采样频率(静止时1次/分钟,运动时1次/10秒)
- 使用STM32的Stop模式
- 关闭未使用的外设时钟
实测结果表明,500mAh电池在典型使用场景下可以坚持7天左右。
4. 配套APP开发
4.1 蓝牙通信协议
我们自定义了一套简单的通信协议:
code复制[HEADER(1B)] [LENGTH(1B)] [CMD(1B)] [DATA(NB)] [CRC(1B)]
其中:
- HEADER固定为0xAA
- LENGTH是DATA的长度
- CMD定义操作类型
- CRC是简单的异或校验
这种设计既保证了可靠性,又避免了蓝牙标准协议栈的复杂性。
4.2 电子围栏实现
APP端实现的电子围栏功能有几个关键参数:
- 基础半径:50米(可调)
- 超出提醒延迟:30秒(避免误报)
- 历史轨迹存储:7天
实际使用中发现,单纯依赖GPS定位在城区容易出现漂移。我们的解决方案是结合RSSI(信号强度)进行辅助判断,当蓝牙信号强度低于-80dBm时触发预警。
5. 生产测试方案
5.1 测试工装设计
为了确保量产质量,我们开发了一个专用的测试工装,可以同时测试:
- GPS定位功能
- 蓝牙通信
- 运动检测
- 充电功能
测试流程全自动化,每台设备测试时间控制在3分钟以内。
5.2 常见故障排查
根据量产经验,整理了以下常见问题:
| 故障现象 | 可能原因 | 解决方案 |
|---|---|---|
| GPS不定位 | 天线接触不良 | 检查天线焊点 |
| 蓝牙连接不稳定 | 射频干扰 | 更换2.4G信道 |
| 电池续航短 | 软件未进入低功耗 | 检查Stop模式配置 |
| 运动检测不准确 | 传感器安装角度偏差 | 重新校准 |
6. 项目优化方向
经过实际使用反馈,下一步计划改进:
- 增加环境温度监测(使用DS18B20)
- 实现多宠物社交功能(通过蓝牙Mesh)
- 开发Web管理后台
- 支持OTA固件升级
在硬件上,正在评估改用STM32L4系列的可能性,虽然芯片成本高20%,但待机功耗可以降低到0.5mA,理论上续航能延长到1个月。
这个项目给我的最大启示是:物联网产品开发必须从一开始就考虑量产可行性。比如我们最初选的某款GPS模块虽然性能更好,但因为供货周期长,最终不得不更换。现在我做硬件选型时,一定会先确认芯片的供货情况和交期。