一个简单的闭门传感系统建设规划
概述
门开关传感器之前做过几版,实际上之前称不上传感器,之前只是个手动做的带开关和非门的报警器罢了。最接近现在的一版中采用的ne555有较大的静态功耗,现在使用单片机,希望它的低功耗能带来较长时间的续航。
主要功能
发送开/关门事件、ir汇报开关错误率、ir汇报电池状况、蜂鸣器摩斯电码发送超时报警、调试按键按下通过摩斯电码或ir信息包发送2~4信息
前期分析
前言
家里有两层门,一个是外门,一个是里面一个装饰用的门,有时存在忘记关外侧门的问题(以后装修记得只装一个门就好)。由此产生了对门开关状态检测的要求,对于一个DIY爱好者,当然喜欢自己做,经过几次迭代升级,我现在写出第三版计划的预期目标书。
前版本分析
第一版
第一版只采用一节CR2032钮扣电池,门传感器采用易拉罐皮作弹片,曲别针作触点的开关(闭门时断开)。
优点:
- 断电时零功耗
- 小
缺点: - 没有特殊功能如:蜂鸣器
- 开关外观不美观且大
第二版
第二版经过几次迭代,一开始使用ne555为灯增加闪烁功能,更易引起注意,后来添加一个ne555驱动一个无内部震荡电路的蜂鸣器。
优点:
- 容易吸引注意
- 使用一个上拉的开关(闭门时拉低),减小了开关复杂水平
缺点: - 开门即响,不够智能
- ne555即使通过复位脚停止震荡也有同样的功耗
- 为实现闭门断电使用了一个mos管,但奇怪的是有时有较大的发热、压降,导致有时2s锂电在mos管后对芯片供电电压不足4v,从而工作异常。(mos使用坏显卡拆机,ne555购自淘宝。
第三版(理论)
第三版有如下几个预期功能:
- 休眠功耗达到uA级
- 有向中心设备传递时间的功能
- 成本尽量低
- 使用PCB
且现在经简易选型决定使用立创商城里最便宜且有货的NY8A051H,向中心设备传递数据使用红外发射管,但这个芯片采用1k*14bit的EPROM,不能多次编程且容量较小,可能不够为蜂鸣器存储音乐。但我希望专门优化红外线传输功能,只要能传递能够计算出开关门事件发生时间就够了。播放音乐可以交给中央采集设备,最好再优化下蜂鸣器,当出现没有回传事件的故障时也能有开门超时报警功能。
真正的第三版(25年10月16日总结)
使用STC8G1K08A采用SOP8封装,1M电阻被干簧管下拉唤醒(好像是下拉,得看中断原理),醒来后计时2分钟开始驱动蜂鸣器。待机功耗很低,电池从之前充不进去电的小音箱利旧,充电模块好像是TP4056。好像23年做好就放着了,很长时间没充电。
还利用了大学给崔老师写的STC8G1K08A加74HC595D做的串转并模块的一个串口修改参数的交互,做了一些debug的功能,比如修改频率、等待时间、直接开始响之类的。
焊接时用了买的贴片的三极管焊上细线驱动蜂鸣器,之前还有供电线皮融化和蜂鸣器虚搭导致不响的硬件BUG。最后成品还是很漂亮的,我自己可以翻翻23年7月4日拍的视频,并且同年6月9日修好了之前串转并的BUG(D型号有个缓存功能,某引脚不下拉不更新)
原工程在蛟龙16K的备份里了,很久没看,回头要把keil下下来维护一下。
工程分析
实际做起来才发现有许多实际问题,我想先考虑清楚一个框架再开始写会有许多帮助。以下内容虽然是普通的文字,但可能经过了综合考量和推敲,但考量的过程没有保留。请注意!
- 延时函数:延时函数使用中断优先较低的定时器解决,中断前设置延时标志位即一个volatile变量,检测到接下来的内容可能中断就执行些不怕打断的工作。
程序框图
1 | |