描述
<h1>1、项目功能介绍</h1>
<pre><code> 本设计为一款应用于寝室的低功耗指纹锁,让普通宿舍门带有指纹解锁功能,也可以应用于自家的房门,免去我们在日常生活中忘记带钥匙,进不去寝室的烦恼。安全性还欠缺保障,但是并不会因为外部电路的短接之类的开门。
采用18650电池供电,低功耗设计,安装简单,板载充电接口,设备待机电流22uA,一节锂电池可以使用3-6个月,实测从2021年7月8日正式装上,电池充满电(2000Mah,冲至4.2V),每天开门至少10次以上(寝室6个人),到2021年9月5日止,当前电压为3.86V,使用40%左右电量,实际测试,低功耗达到了要求。
</code></pre>
<p><img src="//image.lceda.cn/pullimage/QwE01erqKN7UKFQA8p9KecwvAQgoIy96zBDWO6CC.jpeg" alt="QQ图片20210712114903.jpg"></p>
<h2><strong>使用方法:</strong></h2>
<p><strong>一、添加指纹</strong></p>
<ol>
<li>按最右边按键唤醒设备,点亮显示屏;</li>
<li>手指放在指纹传感器上,再按下最左边的按键,添加指纹。一个手指可添加多次(四周与中心共5个,可以增加识别正确率);</li>
<li>按下中间的按键会提示是否删除所有指纹;</li>
<li>长时间无操作会进入休眠状态。</li>
</ol>
<p><strong>二、设置舵机行程</strong></p>
<ol>
<li>先在休眠模式实现开门功能一次。完成后,这时舵机的转子就在关门的状态,还要确定一下确定舵机转动方向,;</li>
<li>指纹舵机转动角度一定,但是安装舵机臂时的起始角度可以改变,调整舵机臂起始角度,主要不要让舵机堵转,容易损坏舵机;</li>
<li>将设备用双面泡沫胶,找好合适位置粘在门上(放手指在指纹传感器上时使用方便,排线距离足够,舵机有合适的位置安装);</li>
<li>用绳子将舵机臂最远端的小孔与门把手相连,舵机转动就会带动门把手转动。调整好舵机的起始角度,让舵机转动到终止角度时正好可以开门(注意舵机臂的受力问题,否则会很容易就损坏舵机)。</li>
</ol>
<h1><strong>2、制作难点</strong></h1>
<h2><strong>1)、主要设备功耗控制</strong></h2>
<pre><code> 低功耗设计不仅仅是体现在主控芯片,也包括了锂电池充电电路,舵机驱动电路,以及OLED显示屏和指纹模块等。
由于不涉及到大功率的外围设备,而且单片机IO直接驱动更方便,所以采用了PMOS管进行设备供电的管理,在不用到这些设备时能够切断它们的电源,这样就可以有效控制功耗。设备是通过指纹模块的触摸感应进行唤醒,指纹模块的触摸电路工作电流为5uA。
</code></pre>
<h2><strong>2)、电压采集功耗处理</strong></h2>
<pre><code> 一般电压采集需要用到两个电阻进行分压,然后再计算实际电压,但是电阻是会产生功率消耗的,假设电源电压3.7V,采用两个10K的电阻分压,根据欧姆定律,电流就有惊人的1.85mA,一节2000Mah的锂电池,从4.2V放电到3.7V,按照80%电量计算只能待机1600/24/1.85=36天,还不包括开门时舵机损耗的电量,所以就需要换一种采集电压的方法。
</code></pre>
<h3>最初方案:</h3>
<pre><code> 因为STC15W408AS单片机可以通过测量内部的BandGap基准电压值(1.27V)左右,大致计算出输入的电源电压,从而得出电池电压,节省了一个IO口,还进一步节省了功耗。
用户实现自己的低压检测功能的实现方法:首先用户需要在VCC很精准的情况下(比如5.0V),测量出内部BandGap参考电压的ADC转换值(比如为BGV5),并将这个值保存到EEPROM中,然后在低压检测的代码中,在实际VCC变化后,测量出的内部BandGap参考电压的ADC转换值(比如为BGVx),最后通过计算公式: 实际VCC = 5.0V * BGV5 / BGVx,即可计算出实际的VCC电压值。
</code></pre>
<p>但是这个方案有缺陷,每个STC15单片机的BandGap电压不一样,每个单片机下载进去都需要自己修改代码进行适配,非常麻烦。所以更新了方案2</p>
<h3>更新方案:</h3>
<pre><code> 使用STC15单片机自带的AD口测量3.3V稳压芯片输出的电压,读取AD值为V33,我们知道。STC15单片机AD口的最大测量电压就是电源电压,且最大AD值为256,则电源电压与V33就有如下关系:
VCC/256=3.3/V33
推导出:VCC=256*3.3/V33,从而就可以较准确得到电池电压。误差与LDO输出的3.3V稳压值有关。
</code></pre>
<h2>3)代码压缩</h2>
<pre><code> 代码包括OLED显示、AS608指纹通讯驱动、按键扫描、电压测量、蜂鸣器、eeprom掉电保存、舵机驱动,软件延时等;
STC15W408AS的程序存储空间只有8K;
最初整个代码写下来已经超过8K了;后面各种压缩代码,终于达到现在的6、7K;
最主要的就是不要进行浮点运算,超级占用内存。比如之前计算电池电压,正常步骤:VCC=256*3.3/V33,这样就会有浮点计算的代码;
而且我们根本用不到精确到小数后6位的电压值,只需要后2位就行。所以我们可以先把要计算的数放大100倍,最后计算结果取整就行比如:VCC=256*330/V33。
</code></pre>
<p><br>
<br></p>
<h1>3、项目属性</h1>
<p>首次公开,19年制作了一款指纹锁(不带低功耗设计,体积大),上过微薄的热搜,未获奖,没参加过学校答辩</p>
<h1>4、开源协议</h1>
<p>源代码,原理图,PCB等均开源。
GPL 3.0协议</p>
<h1>5、硬件部分</h1>
<ul>
<li>指纹模块和OLED模块的供电电压为3.3V,设备的工作需要指纹的触摸来唤醒,因而指纹的触摸感应需要一直供电,所以需要一个较低的静态电流线性稳压源,以降低功耗;</li>
<li>整体待机功耗实测22uA左右,主要是指纹触摸感应和线性LDO的静态电流,STC15单片机的掉电模式可以将电流控制在0.1uA以下;</li>
<li>锂电池充电用的TP4057;</li>
<li>舵机,OLED,指纹主供电等都是通过mos管控制,实现超低功耗待机;</li>
<li>蜂鸣器主要是用来实现低压报警,开门提示等功能。</li>
</ul>
<h1><strong>6、软件部分</strong></h1>
<ol>
<li>代码里面的波特率115200,不同的指纹模块的波特率不同,可以参考STC-ISP软件的程序例程自行修改;</li>
<li>指纹模块的通用协议是通用的晟元AS608协议,keil5编写的C语言代码;</li>
<li>用STC-ISP下载程序时,冷启动不仅要断开电源,还要断开TXD,RXD引脚,因为单片机处在低功耗模式,仅仅是TXD,RXD中的漏电流就可以让单片机不断电,达不到冷启动的要求,可能造成下载代码失败。</li>
<li>推荐使用官方软件:stc-isp-v6.88F
具体设置设置界面如下: <img src="//image.lceda.cn/pullimage/9EELUor9L9eO2zFSKEzi13QvjZpGvVCVdA3XuGGf.png" alt="图片.png"></li>
<li>本设计工程结构分成很多个源文件,不同的功能分开写,并且每个函数前面都有注释,标明函数的功能。 <img src="//image.lceda.cn/pullimage/M1MKZSFQC8HaSyt3sAnqZJQaRlm3nLivWRypEmBw.png" alt="图片.png"></li>
</ol>
<h1>7、BOM清单</h1>
<p>详细的见工程;
大部分元器件都可以在立创商城可以买到;
指纹模块AS608协议通用,当前支持FPC0.5和sh1.0,都是卧贴。</p>
<h1>8、大赛LOGO验证</h1>
<p><img src="//image.lceda.cn/pullimage/8C3Ughp4YtHd98YBFrafdgKUb2oN7dI2oAYsIgl4.jpeg" alt="23FB746CBC8E0E3693925E9D1032865B.jpg"></p>
<h3>演示视频</h3>
<p>使用演示视频:<a href="https://b23.tv/FoQWJQ" target="_blank">https://b23.tv/FoQWJQ</a>
详细介绍视频:<a href="https://b23.tv/dYXHFc" target="_blank">https://b23.tv/dYXHFc</a></p>
评论(33)