![261b289648466220872a3d04706f22c5.png](https://i-blog.csdnimg.cn/blog_migrate/093ed5da01722016404aecfa925495b3.jpeg)
前言
建立这个专栏已经很久了, 一直也没有做点什么。以前的时候非常喜欢电子DIY,大学的时候也做过很多东西。后来学业逐渐繁重,也就把这种DIY留在心里,全心做科研。然而, 最近愈发觉得,这样的兴趣不应该被抛弃,在繁杂的生活工作之中给自己找点额外的乐趣,对生活和工作也都会有积极的作用。何乐不为呢?
这次DIY的动机是,每天都要锁屏解锁电脑很多次,用的是windows系统,快捷键锁屏(win+L)以及输入密码解锁,虽然已经很方便了,但是作为一个有DIY头脑以及能省则省的懒癌患者,自然地就会想如何简化这样繁琐的程序。于是,就开始了此次的DIY。
基本思想
这样个装置最重要的就是实现电脑解锁的简化,每次都要输入一长串密码确实很繁琐,尤其是很多时候输入错误,又要重新输入。最开始的想法是通过程序解锁,但是windows并没有提供可以解锁的API,当然这是可以理解的,这是为了系统用户的安全。作为喜欢电子的DIYer来说,很自然的就想到了通过单片机模拟USB键盘,模拟手动解锁的步骤给电脑解锁。电脑锁屏的实现相对简单,可以通过按键输入win+L,也可以通过程序给系统发送锁屏信号,但是为了与解锁统一,此处也就选用单片机模拟键盘进行锁屏。
硬件方案
对于解锁,需要保证安全性,即只能我自己才能解锁,否则锁屏没有什么意义。我能想到的方案有三个:
1、指纹解锁
![62e695f7174959f92cb1b467e40b024e.png](https://i-blog.csdnimg.cn/blog_migrate/7447fe542b1c5ba2ee76a3d6c2677eda.jpeg)
指纹模块非常符合,但是价格较贵。
2、 人脸识别,通过摄像头读取人脸数据,放在台式机上运行相关程序。这种首先摄像头价格不便宜,其次,虽然人脸识别都有开源程序,但是还是较为复杂。另外,对于照片并不能很好的做区别。
3、NFC近场通信模块,就类似于我们用的公交卡
![1233af840f326569aaa6ed33ea7f7cca.png](https://i-blog.csdnimg.cn/blog_migrate/297d4b39ee0ce80a214bb7b84254abe0.jpeg)
NFC模块价格便宜,通信也不复杂,只是每次都需要手动刷卡。
综合上面几种方法,最终还是决定选用NFC模块,其实是因为我手头恰好还有一个NFC模块(hahahaha...)
控制中心当然是用单片机,对于单片机选取方案也是有三种
1、51单片机
51单片机是经典单片机了,价格便宜,电路简单,网上的资料可以说是非常丰富了,是一个非常好的备选。
2、STM32单片机。
这些年火起来的,价格便宜,关键是性能强劲,种类型号非常多,可以适用不同的场景,相关的资料也是不少。
3、Arduino
最近几年逐渐流行起来,把底层的硬件全部屏蔽,以堆积木的方式进行硬件搭建和编写程序,在GitHub上也有很多包。不过相对来说,Arduino的价格也是最贵的。
前两个我都有学习过,但是Arduino并没有真正的接触过。综合考虑后,我还是选择了Arduino,可以作为一个学习的机会。另外,Arduino也有很多型号,根据我们的要求,需要选择能进行键盘模拟的,经过考虑,最终选择了Arduino Micro,这个板子上的单片机硬件支持USB模拟,因此在编程方面较为简单。
![7fb6544a81c5613581c6a90367ae8b25.png](https://i-blog.csdnimg.cn/blog_migrate/3e186cd5cca6dcbd81c707865e2ef21f.jpeg)
————————
另外,还需要
一个人体红外探测器,用于检测是否有人在电脑前;
一个按钮,用于锁屏(虽然还是需要按钮,但是比win+L简化了);
LED+三极管+220电阻+10k电阻,组成LED电路,用于指示系统工作状态。
关于NFC卡以及模块做一个简单的说明:NFC卡里面有一个芯片,每一块芯片都有一个可读的唯一编号,以及一些加密了的信息。编号是可以直接读取的,所以对于安全性要求不是很高的情况下,可以通过读取卡的编号来判断卡的主人。此次DIY就是用的这样的原理,首先把读取卡的编号并存储在Arduino中,然后每次刷卡的时候读取编号,二者比对,若相同,则解锁,若不相同,则不产生动作。
![118c3b7fe5b6153b663b3436893e2bdc.png](https://i-blog.csdnimg.cn/blog_migrate/b659402d8b7b566f6c0e04b26ae46526.jpeg)
关于用Arduino控制NFC模块,我用的NFC模块是比较常见的RC522,在GitHub上早就有了开源的库,
![367d2c88545fffa5637502f6ae2ff488.png](https://i-blog.csdnimg.cn/blog_migrate/4154dfb7602eb82affa879ab4779a21f.jpeg)
链接
miguelbalboa/rfidgithub.com![b865e7fc8fb243cbffa8c58f316222d3.png](https://i-blog.csdnimg.cn/blog_migrate/737fdcdf157d0f09a67caf8e7c4d0552.jpeg)
所以最关键的刷卡部分的程序实际上很简单。
制作成品
虽然是成品,但是也就是简易的DIY,外形并不美观,但是好在实现了功能。电路图就不放了,下面直接放做好了的电路。电路是在洞洞板上做的,
![0416802a82151e874680d70257510d19.png](https://i-blog.csdnimg.cn/blog_migrate/722edd40b7b23196641468b16980d892.jpeg)
![47adf5e725e44125897aed96387f5f39.png](https://i-blog.csdnimg.cn/blog_migrate/921c686e8e72d5d9233543d3d5eb8405.jpeg)
把Arduino通过USB连接到电脑上就可以正常运行了。
锁屏:按一下锁屏按钮
解锁:进入到人体红外探头可探测范围,一般在几米之内,此时LED指示灯亮起,表示进入读卡准备状态,此时在面板的刷卡区刷一下卡,就可以解锁了。
下面是演示视频
![950c3f98f3e3ac5f44733964f5dd75ce.png](https://i-blog.csdnimg.cn/blog_migrate/edcca364b913e37c9639ef1a18f30882.jpeg)
总结
关于NFC卡,现在有不少手机,比如说小米手机极其手环,都有门禁卡模拟功能,因此可以用手机或者手环去解锁电脑,这样就显得更加高端了!(本来想录制一段手机解锁的视频,但是我就一个手机,所以很遗憾没法录制了。之后录了再补上!)
这次制作总体来说比较简单,关键的NFC部分也有现成的包,Arduino本身编程也很简单,因此制作还是比较容易的。这次制作主要是拾起来曾经的爱好,也算是小成就一件!
子乾 · DIY, FUN WITH DIY!