1. 项目背景与核心需求
校园共享单车作为短途代步工具,在实际运营中面临三大痛点:机械锁易被破坏、车辆位置无法追踪、人工运维成本高。传统方案要么依赖高成本的4G通信模块,要么采用离线密码锁存在安全漏洞。我们设计的这套系统,正是为了解决这些实际问题。
ESP32作为主控芯片的选择绝非偶然。这款国产芯片兼具Wi-Fi和蓝牙双模通信能力,且价格仅为同类产品的1/3。更重要的是,其240MHz双核处理器能轻松处理多任务需求——既要实时处理定位数据,又要维持蓝牙连接,还要控制锁具状态。我在实际测试中发现,即便同时运行这些任务,CPU占用率也始终低于60%。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 系统架构设计
2.1 硬件模块拓扑
整个系统采用模块化设计,核心是ESP32-WROOM-32模组,外围连接四大功能模块:
- 定位模块:选用ATGM336H,支持GPS/北斗双系统定位,冷启动时间<35秒
- 通信模块:采用移远BC95-G NB-IoT模组,PSM模式下电流仅5μA
- 执行机构:定制12V电磁锁,工作电流1.2A,附带霍尔传感器检测锁舌状态
- 电源管理:3.7V锂电+TPS63020升降压方案,静态功耗<10μA
关键设计要点:NB-IoT模块通过硬件串口与ESP32连接,必须注意115200bps波特率下要加22Ω阻抗匹配电阻,否则会出现数据丢包。
2.2 软件状态机设计
系统运行逻辑通过有限状态机实现,包含5个主要状态:
c复制enum SystemState {
BOOT_INIT, // 系统初始化
POSITIONING, // 获取定位
STANDBY, // 待机状态
UNLOCKING, // 开锁过程
LOCKING // 关锁过程
};
状态转换触发条件:
- 从STANDBY到UNLOCKING:收到蓝牙GATT特征值写入0x01
- 从UNLOCKING到LOCKING:三轴加速度计检测到静止状态持续30秒
3. 关键硬件实现细节
3.1 电磁锁驱动电路
普通GPIO无法直接驱动大电流电磁锁,我们设计了两级驱动电路:
- 第一级采用SI2302
