Kigurumi头壳电磁锁控制板
本项目是为Kigurumi头壳设计的基于 STM32C011F6P6 的双路电磁锁控制板,支持双触摸解锁、超级电容储能脉冲驱动、USB/电池双电源自动切换、三级低功耗管理。
固件开源仓库:https://github.com/quarkInQuantum/kigurumi_EMlock_control_board
1. 项目简介
本项目是一款用于kigurumi头壳的双路电磁锁控制模块。由于现在的锂电池不方便带上飞机,同时也有锂电池爆燃的风险,我自己不是很想往头壳里塞锂电池。因此使用超级电容方案解决电磁锁开锁瞬时大电流(5V 4A)的问题。通过两个 TTP223 触摸传感器实现双触摸解锁(防误触),支持 9V 碱性电池和由充电宝等设备提供的USB 5V外部电源的双电源输入。
主要特性
| 特性 | 说明 |
|---|
| 双触摸解锁 | 两路 TTP223 触摸传感器必须同时触发并保持 1 秒 |
| 超级电容储能 | 5.5V/5F 超级电容通过 BQ25173 充电,可提供锁驱动大电流脉冲 |
| 双电源输入 | USB 5V + 9V 电池盒,TPS2116 自动切换,优先 USB 供电 |
| 三级低功耗 | RUN → STOP0 浅睡(1 秒空闲) → STOP0 深睡(8 小时空闲) |
| 蜂鸣反馈 | 不同蜂鸣模式区分操作状态 |
| 串口通信 | 115200bps UART 二进制协议,支持 OTA 固件升级 |
| 电池监测 | ADC 监测 9V 电池电压,低电量蜂鸣警告 |
2. 电路架构
flowchart LR
subgraph 输入电源
USB[USB 5V]
BAT[9V 电池]
end
BAT --- MP2322[MP2322 Buck<br />9V→5V_BAT]
MP2322 --- 5VBAT[5V_BAT]
USB --- TPS2116[TPS2116<br />双电源切换<br />优先 USB]
5VBAT --- TPS2116
TPS2116 --- 5VCHG[5V_CHG]
5VCHG --- TMI3101D[TMI3101D LDO<br />5V→3.3V]
5VCHG --- BQ25173[BQ25173<br />超级电容充电]
TMI3101D --- V33[3V3]
BQ25173 --- SC[5.5V/5F<br />超级电容]
SC --- MOS[MOSFET 锁驱动<br />AONR21357 + TPNTA4153]
V33 --- MCU[STM32C011<br />主控 MCU]
MCU ---|PA0/PA1 EXTI| TOUCH[TTP223 ×2<br />触摸传感器]
MCU ---|PA5 OUT_CTRL| MOS
MCU ---|PA7/PA8 GPIO| LOCK[电磁锁 ×2<br />XG4031B]
MCU ---|PA4 TIM14 PWM| BUZZ[蜂鸣器<br />FUET-4020]
MCU ---|PA11/PA12 USART1| UART[UART 串口<br />115200 8N1]
LOCK ---|SW 反馈| MCU
MOS ---|VCAP 脉冲| LOCK
3. 核心芯片选型
| 位号 | 芯片 | 封装 | 功能 |
|---|
| U1 | STM32C011F6P6 | TSSOP-20 | 主控 MCU,Cortex-M0+ 48MHz,32KB Flash,6KB RAM |
| U2 | TPS2116DRLR | SOT5X3-8 | 双电源自动切换器,VIN1=USB_5V, VIN2=5V_BAT,优先 VIN1 |
| U3 | BQ25173DSGR | WSON-8 | 超级电容充电 IC,最大 800mA 充电电流,STAT 开漏输出 |
| U4 | TMI3101D | WSON-6 | 3.3V LDO,输入 5V_CHG,最大 300mA |
| U5 | MP2322GQH | QFN-8 | 同步降压转换器,9V 电池 → 5V,最大 1A |
| Q1 | AONR21357 | DFN-3×3 | P-ch MOSFET,-30V/-12A,锁驱动输出开关 |
| Q2 | TPNTA4153NT1G | SOT-523 | N-ch MOSFET,20V/800mA,电平转换驱动 Q1 栅极 |
| D1,D2,D3 | BAT60B | SOD-323 | 肖特基二极管,3 颗:蜂鸣续流 + 锁续流 ×2 |
4. 外设与接口
4.1 接线端子(全部采用 ZH1.5 系列)
| 位号 | 型号 | 引脚 | 连接对象 |
|---|
| P1 | ZH1.5-4P 卧贴 | 5V_IN, GND, PA10(RX), PA9(TX) | USB-TTL 串口模块 |
| P2 | ZH1.5-4P 卧贴 | 3V3, GND, SWCLK, SWDIO | SWD 调试/烧录器 |
| P3 | ZH1.5-2P 卧贴 | VBAT(9V), GND | 9V 电池盒 |
| P4 | ZH1.5-3P 卧贴 | 3V3, GND, TOUCH1 | TTP223 触摸模块 #1 |
| P5 | ZH1.5-3P 卧贴 | 3V3, GND, TOUCH2 | TTP223 触摸模块 #2 |
| P6 | ZH1.5-4P 卧贴 | LOCK+, GND, GND, SW1 | 电磁锁 #1(XG4031B) |
| P7 | ZH1.5-4P 卧贴 | LOCK+, GND, GND, SW2 | 电磁锁 #2(XG4031B) |
> 注意:电磁锁端子线请选用 26AWG 的 ZH1.5 成品端子线,确保可承载脉冲大电流。
4.2 外购模块与配件
| 物料 | 链接 | 备注 |
|---|
| TTP223 触摸模块 ×2 | 淘宝链接 | 3.3V 供电,焊盘间距适配 ZH1.5-3P |
| XG4031B 电磁锁 ×2 | 淘宝链接 | 5V 脉冲驱动,带常闭触点(SW 反馈) |
| 9V 电池盒 | 淘宝链接 | 带 DC 插头(剪头接 ZH1.5-2P) |
| 南孚 6LR61 碱性电池 | 市售 | 测试用 9V 电池,不可充电 |
5. 储能与电源设计
5.1 超级电容储能
- 规格:5.5V / 5F 超级电容(1 颗,CHP5R5L505R-TW,引脚间距 15.5mm)
- 焊接时请提前弯折引脚
- 充电管理:BQ25173DSGR 线性充电 IC
- 最大充电电流由 R9 (3KΩ) 设定 ≈ 100mA
- 充电终止电压由 R8 (604K) + R11 (115K) 分压设定 ≈ 5.0V
- STAT 开漏输出(外接 10K 上拉至 3V3):HIGH = 充电中,LOW = 充电完成
- 放电控制:通过 Q1 (AONR21357) P-MOS 开关,栅极由 Q2 (TPNTA4153NT1G) 驱动
- 瞬态支撑:关闭充电器 → 使能锁输出 → 300ms 脉冲 → 关闭锁输出 → 恢复充电
5.2 双电源切换(TPS2116)
| 模式 | 说明 |
|---|
| 外部 5V 插入 | 自动选择 VIN1 (USB),VOUT=5V_CHG ≈ 5V |
| 外部 5V 断开 | 自动切换 VIN2 (9V 电池经 MP2322 → 5V_BAT) |
| 切换阈值 | PR1 引脚分压:R6 (39K) + R7 (10K) → 输入电压高于4.9V自动切换为VIN1 |
5.3 9V 电池降压(MP2322)
- MP2322GQH 将 9V 电池降压到 5V_BAT
- 输出电压由 R18 (1.72M) + R21 (220K) 分压设定 ≈ 5.3V
5.4 3.3V 开关电源(TMI3101D)
- 输入:5V_CHG
- 输出:3V3(供给 MCU、触摸模块、蜂鸣器逻辑)
5.5 电池电压监测
- VBAT (9V) → R1 (1M) → VBAT_ADC (PA2) → R2 (100K) → GND
- 分压比:100K / (1M + 100K) = 1/11
- 12 位 ADC (VREF=3.3V):ADC 读数 < 800 对应电池电压 < 约 6.0V → 低电量警告
- 注意此处由于低功耗考虑总阻值较大,为了保证SAR ADC正常工作并联了1uF电容,会导致实际ADC数值非线性。请参考配套代码中的非线性修正。
6. 外设详细说明
6.1 触摸传感器
- 两个 TTP223 模块分别接到 P4 (TOUCH1/PA0) 和 P5 (TOUCH2/PA1)
- MCU 通过 EXTI 上升沿/下降沿中断检测触摸状态
- 固件中 GPIO 电平重同步防止中断丢失(消抖)
- 双触摸解锁逻辑:两个触摸必须同时保持 1 秒 → 确认 → 检测超级电容是否充电完成 → 300ms 脉冲开锁
6.2 电磁锁驱动
- 驱动电路:P-ch MOSFET (AONR21357) 由 N-ch (TPNTA4153NT1G) 电平转换
- PA5 (OUT_CTRL) HIGH → Q2 导通 → Q1 栅极拉低 → Q1 导通 → 超级电容 VCAP → LOCK+
- 续流保护:每个锁通道 1 颗 BAT60B 肖特基二极管(共 2 颗)
- 锁状态反馈:XG4031B 内置常闭触点 → SW1 (PA7) / SW2 (PA8)
- 锁关闭(柱塞伸出)→ SW 低电平
- 锁打开(柱塞缩回)→ SW 高电平(通过 100K 上拉至 3V3)
6.3 蜂鸣器
- 型号:FUET-4020(MLT-4020H-SMD 封装)
- 驱动:S8050 NPN 三极管
- PWM 信号:TIM14_CH1 (PA4),1kHz,50% 占空比
- D1 (BAT60B) 蜂鸣器线圈续流保护
6.4 SWD 调试接口
- P2 (ZH1.5-4P):3V3, GND, SWCLK (PA14), SWDIO (PA13)
- SWCLK 外部 10K 下拉 (R4),同时作为BOOT0下拉电阻
6.5 串口通信
- P1 (ZH1.5-4P):5V_IN, GND, PA10(RX), PA9(TX)
- 使用 PA11/PA12 引脚重映射实现 USART1_TX/RX
- 波特率 115200,8N1,DMA + IDLE 中断接收
- 二进制协议:XOR 校验,支持读状态、写标志、复位跳转 Bootloader
7. PCB 设计
| 项目 | 参数 |
|---|
| 尺寸 | 40mm × 23mm |
| 层数 | 2 层 (Top + Bottom) |
| 板厚 | 0.8mm |
| 铜厚 | 1oz |
| 最小线宽/间距 | 6mil / 6mil |
| 过孔 | 0.3mm 孔径 / 0.5mm 外径 |
8. 软件资源
8.1 固件
- 仓库:本项目关联固件工程
- 开发环境:STM32CubeMX + GCC (arm-none-eabi)
- 协议文档:docs/uart_protocol.md(串口通信协议详细说明)
- 低功耗:支持 STOP0 模式,深睡功耗 < 5μA
8.2 固件更新
- 通过 UART 命令设置 RESET_EN → 发送 RESET 命令 → MCU 写 BKP 魔法字后复位 → 跳转 System Memory Bootloader → 主机通过 STM32 系统 Bootloader 协议烧录固件
9. 连接指南
9.1 接线图
┌──────────────────────────────────────────────────┐
│ 电磁锁控制板 V2 │
│ │
│ P1 [USB-UART] ──── USB-TTL 模块 │
│ P2 [SWD] ──── ST-Link / J-Link │
│ P3 [BAT] ──── 9V 电池盒 │
│ P4 [TOUCH1] ──── TTP223 模块 #1 │
│ P5 [TOUCH2] ──── TTP223 模块 #2 │
│ P6 [LOCK1] ──── XG4031B 电磁锁 #1 │
│ P7 [LOCK2] ──── XG4031B 电磁锁 #2 │
│ │
└──────────────────────────────────────────────────┘
9.2 端子线选型
| 接口 | ZH1.5 规格 | 线径建议 | 成品端子线 |
|---|
| P1 (UART) | ZH1.5-4P 公头 | 28AWG | 市售成品 |
| P2 (SWD) | ZH1.5-4P 公头 | 28AWG | 市售成品 |
| P3 (电池) | ZH1.5-2P 公头 | 28AWG | 可剪 9V 电池盒 DC 头焊接 |
| P4/P5 (触摸) | ZH1.5-3P 公头 | 28AWG | 市售成品 |
| P6/P7 (电磁锁) | ZH1.5-4P 公头 | 26AWG | 注意找 26AWG 成品线 |
9.3 首次上电
- 焊接完成后检查电源对地短路
- 接上电池 → 测 5V_BAT
- 等待超级电容充满电,可使用万用表测量
- 通过 SWD 烧录固件
- 连接 TTP223 模块和电磁锁
- 双触摸测试解锁
10. 许可证
本项目采用 MIT License许可证。
11. 相关链接