二、系统总体方案设计
好,咱们进入正题。系统总体方案设计,说白了就是回答三个问题:这东西要干什么?用什么干?怎么连起来?我做了这么多年硬件,发现很多项目翻车,都是因为这一步没想清楚就急着画板子去了。
2.1 功能需求定义
先别急着选芯片,咱们得把需求掰扯清楚。门控儿童锁,核心就一句话:防止儿童误开门,同时保证紧急情况下能快速逃生。
我个人习惯把功能需求分成三类:
- 基础功能:电子锁控制、门状态检测、开锁/闭锁切换
- 安全功能:防误触机制、紧急解锁、低电量报警
- 交互功能:状态指示、声音提示、手动/自动模式切换
这里有个坑,我必须要说。我在项目中遇到过客户只提了「能锁门」三个字,结果做出来发现人家要的是指纹+密码+远程控制。你想想看,需求不明确,后面全是返工。
核心功能清单(我建议至少包含这些):
- 门锁状态实时检测(开/关/半开)
- 儿童锁启用/禁用切换(物理按键+电子控制)
- 紧急情况下内部一键开锁(机械+电子双重保障)
- 低电量预警(蜂鸣器+LED闪烁)
- 防误触延时(比如按住2秒才生效)
2.2 技术选型
技术选型这块,我踩过的坑比走过的路还多。咱们一个一个说。
2.2.1 MCU选型
MCU是整个系统的大脑。选型时我主要看三点:功耗、IO口数量、成本。
对于门控儿童锁这种电池供电的设备,我强烈推荐STM8L系列或者EFM8系列。为什么?
- 待机功耗能做到微安级别,一节CR2032电池能用半年以上
- IO口够用,一般8-16个就足够了
- 价格便宜,批量采购不到2块钱
如果你非要上32位机,比如STM32F0,也不是不行。但说实话,有点大材小用。我记得有一次项目,客户非要上STM32F4,结果大部分外设都闲置着,白白增加了成本和功耗。
我的选型建议:
别追求高性能。够用就好。门控儿童锁不需要跑算法,不需要处理视频流,一个8位MCU绰绰有余。省下来的钱,用在传感器和机械结构上,用户体验会好很多。
2.2.2 传感器选型
传感器这块,主要就两个:门状态检测和人体接近检测。
| 传感器类型 | 推荐型号 | 作用 | 注意事项 |
|---|---|---|---|
| 门磁开关 | 干簧管MC-14 | 检测门开/关状态 | 安装位置要对准,偏差超过2mm就失灵 |
| 霍尔传感器 | AH3503 | 检测锁舌位置 | 注意磁铁极性,装反了没信号 |
| 红外接近传感器 | HC-SR501 | 检测儿童靠近 | 灵敏度别调太高,否则猫走过去都触发 |
嗯,这里要特别说一下干簧管。我在项目中遇到过一个问题:干簧管装上去没几天就坏了。后来一查,是安装时用力过猛,把玻璃管压裂了。所以安装时一定要轻拿轻放,最好用热缩管包一下。
2.2.3 执行器选型
执行器就是负责「动手」的部件。门控儿童锁的执行器主要是电磁锁和微型电机。
- 电磁锁:响应快,断电即开(符合消防要求)。但功耗大,不适合长时间通电。
- 微型电机+齿轮箱:功耗低,可以保持锁定状态。但响应慢,大概需要0.5-1秒。
我个人更倾向于电磁锁+机械弹簧复位的方案。为什么?因为安全。一旦断电,锁自动弹开,儿童可以推门出去。你想想看,如果用的是电机锁,断电后锁死在里面,那可就出大事了。
重要提醒:
执行器的驱动电路一定要加续流二极管!我曾经因为省了这个二极管,烧掉了三个MCU的IO口。别问我怎么知道的...嗯,都是泪。
2.3 系统架构框图
好了,需求明确了,器件选好了,接下来就是画架构图。我习惯用分层架构,这样后期调试和维护都方便。
系统架构大致分为四层:
- 感知层:门磁传感器、霍尔传感器、红外传感器
- 控制层:MCU(STM8L)+ 电源管理
- 执行层:电磁锁驱动、蜂鸣器、LED指示灯
- 交互层:物理按键、状态指示灯
这里我贴一段伪代码,展示一下控制逻辑:
// 主循环伪代码
while(1) {
// 1. 读取传感器状态
door_status = read_door_sensor(); // 门是否关闭
child_lock_btn = read_button(); // 儿童锁按键
// 2. 判断逻辑
if (child_lock_btn == PRESSED && hold_time > 2s) {
// 防误触:必须按住2秒以上才生效
child_lock_enable = !child_lock_enable;
beep(1); // 蜂鸣器提示
}
// 3. 执行控制
if (child_lock_enable == TRUE && door_status == CLOSED) {
lock_engage(); // 上锁
} else {
lock_release(); // 开锁
}
// 4. 状态指示
update_led(child_lock_enable);
delay(100); // 100ms循环一次,省电
}
这段代码看着简单,但实际项目中要考虑的东西可多了。比如按键消抖、低功耗休眠、异常状态处理等等。我建议你在原型阶段先跑通这个逻辑,再慢慢加细节。
架构设计要点总结:
- 感知层和控制层之间加光耦隔离,防止干扰
- 执行层单独供电,别和MCU共用电源
- 交互层用独立IO口,方便调试
- 预留一个串口,用于产测和固件升级
好了,系统总体方案就聊到这儿。下一章咱们会深入硬件电路设计,包括电源管理、驱动电路、保护电路这些实战内容。到时候我会分享一些我踩过的坑,保证让你少走弯路。