背景:话说自从我厂的商务部门搬到旁边的商务楼之后,工程师发现漂亮的前台MM也搬走了,某区只留下冷冷清清的鱼缸。然后,工程师们发现开门成了个问题。鉴于进门需要刷卡,所以没有带卡的工程师就不得不摁下门铃,等待其他人从座位上起身为自己开门。经历过多次不得不让别人来开门以及不得不为别人开门之后,终于有工程师不能忍受了(我就是其中一个),于是,决定自己动手解决问题。要知道,地球上没有能难住工程师的问题! 研究与选择方案:我厂的电子门锁的开门设备是通过一个带弹簧的开关(门内,类似墙面上开灯的开关)控制的,按下开关就能打开门,按下开关的时候能够听到明显的继电器闭合的声音,因此,趁着没人的时候我把开关拆开看了一下,证实的确是通过触电控制的一个继电器。按下开关时,两个金属触电接触,继电器动作,门打开。继电器在动作后延时4秒左右恢复。这样看来,硬件层面的开门实现就非常简单了:跨接一个数字继电器,要开门时,通过电平信号控制继电器闭合并保持2秒即可。 但要实现远程控制,必须设置一台可以通过TCP或是HTTP协议接受用户命令,并能控制开门硬件(继电器)的设备。最初考虑过Arduino,作为一个开源的硬件平台,Arduino的电平输出非常易于控制和操作。而且Arduino也有RJ45或是无线的接口模块。不过在查看了Arduino的无线模块的操作方式之后,我发现要让Arduino接入一个WPA加密的无线网络并实现一个web server并不容易。所以最终还是选择了树莓派(Raspberry PI),虽然RPI的硬件成本更高一点。 RPI与Arduino的设计目标不同,它主要是一个超小的PC主机。幸好RPI本身提供了若干个GPIO的输出口(3.3V),用来操作数字继电器倒是没有问题。
请特别注意:由于GPIO的引脚是没有保护电路的,不当的硬件连接很可能会导致整块RPI板子烧掉,连接和操作时务必慎重。在确定方案时,我个人使用了面包板,电阻和二极管等电子元件搭建实验电路,并反复用万用表验证过输出电压和电流(主要是对RPI的每个脚的输出不确定)。 操作步骤在RPI上安装操作系统拿到RPI后,首先要在RPI上安装操作系统。这里有份文档:http://log.liminastudio.com/writing/tutorials/getting-started-with-the-raspberry-pi,安装完操作系统后,确保重新启动成功(RPI的视频输出口是HDMI接口,可以直接连接在支持HDMI的显示器或是电视上,或者可以通过HDMI转VGA/DVI的连接线连接到支持VGA/DVI的显示器上。注意:无源的HDMI转VGA的线可能会损坏RPI板)。 配置网络RPI本身的网络支持已经比较完善,通过有线方式接入的话,只要直接插入网线就可。考虑到无线方式部署比较方便,我采用的是无线连接的方式。 RPI仅对部分网卡支持较好,利用RPI的官网上的无线网卡兼容信息,最终选择了一款相对便宜且能得到较好支持的网卡:TP-LINK TL-WN823N,该网卡可以从amazon.cn购买,购买地址见本文最后的列表。 插入网卡后,修改网卡的配置信息:
修改其中与wlan0相关的部分:
这里我选择了使用静态地址,原因是我们不希望开门的服务器地址老是变来边去。设置好网络并确认能够正常工作后,就可以着手进行下一个步骤了。 连接硬件下图是具体的连接方式,注意连在RPI上的三条线,白色(电源)、黑色(GND)、灰色(信号)分别连接在RPI GPIO的2号、6号与7号针脚上。 |