用树莓派做一个刷脸开锁的保险箱

还在用密码与钥匙就能保护你的贵重物品,你的脸就是开启保险箱的钥匙!这个教程就是教你如何运用Raspberry Pi和Pi Camera打造一个“刷脸开锁的保险箱。

这个教程的软件是开源的OpenCV函式库算法。Raspberry Pi是完美的平台,因为它能够执行OpenCV,而且体积够小,可以放进几乎任何地方。

原文作者: Tony DiCola , David Scheltema

原文链接:http://makezine.com/projects/make-40/face-recognition-treasure-safe/

所需材料

Raspberry Pi B型Ver2.0

Raspberry Pi摄像头模块

玩具保险箱:我们选择Schylling所售的钢质警报保险箱,亚马逊网站有售,尺寸约9英寸×8英寸×6英寸。

标准舵机:注意需要180度舵机

电池盒,4×AAA

按钮开关

电阻,10kΩ,1/4W

万用板(也叫洞洞板)

排针(大约需要11个)

母对母跳线

铁片边角料:大小约2英寸×8英寸。

螺丝和螺母,#6-32英寸×3/4英寸(2)

尼龙柱,内径1/8英寸×1/2英寸:你可以拿不要的钢珠笔来切成适用长度。

扎带

所需工具:

电钻和钻头

烙铁与焊锡

铁片剪

老虎钳

锤子

凿子或高速旋转切割工具,手电钻什么的

中心冲

锉刀

螺丝起子

铆钉枪和铝铆钉,1/8英寸×3/16英寸

Step 1: 把Raspberry Pi固定在门上

在保险箱门内找出适合安装Raspberry Pi的位置,不要离锁太近。

用记号笔在Raspberry Pi的2个孔洞位置作记号,然后小心钻出1/8英寸大小的孔洞。

用螺丝、尼龙柱和螺帽将Raspberry Pi固定在门上。

Step 2: 接上舵机臂

选择适合的舵机臂,并依照图片上的方法切割。

折弯或切掉锁头上突出的部分,使其可以自由转动。

切掉舵机的旋臂,并用热熔胶黏在锁头的中心。

Step 3: 制作舵机支架

这个步骤制作出来的支架应该适用於任何保险箱。

切一片1英寸×8英寸的铁片,在中间量出一个可以装上舵机的长方形大小。

把铁片放在工作台上,用凿具挖出长方形的孔洞,再用锉刀打磨边缘。

测试支架可不可以套上舵机和悬臂。如图所示照着锁的上下缘折弯铁片,让它覆盖保险箱的锁头。用老虎钳固定铁片再开始弯折,如果铁片不容易弯折,可以用小铁锤辅助。

铁片两端钻出1/8英寸的孔洞。

Step 4: 固定舵机

将支架放在保险箱门的内侧,用记号笔在2个孔洞的位置作记号,在门上钻出2个1/8英寸的孔洞。

接着在支架上钻4个1/8英寸的孔洞。

用扎带将舵机固定在支架上。

用铆钉把支架固定在保险箱的门上。

Step 5: 安装摄像头

要凿孔安装摄像头之前,先确认孔洞位置和连接线的距离适中。

在门上钻一个1/4英寸的孔,用方形锉刀打磨孔洞好让摄像头镜头可以放进去。

用双面胶固定摄像头电路板。

Step 6: 安装按钮

钻一个1/2英寸的孔来安装按钮。这个按钮是用来按下快门拍摄照片的。

Step 7: 连接电子元件

参考上面的图片,把排针和10KΩ电阻焊到万用电路板上。

把舵机的信号线连接到Raspberry Pi的GPIO脚位18上,把舵机的电源线和接地线接到电池盒的正负极。

把按钮的一条导线接到GPIO脚位25上,并在连接Raspberry Pi的3.3V电源接脚的路径上串联一个10K电阻。

把另一端连接上Raspberry Pi的接地端

把电池负极接到Raspberry Pi的接地端。

Step 8: 布置USB传输线

保险箱内部有一个电池座给舵机供电,现在还需要另外一个电池座给Raspberry Pi供电。

在保险箱后侧下方角落钻一个孔,大小刚好可让Raspberry Pi的USB传输线穿出。

注意:按钮的红色和黑色电线不用连接,它们是拍照时才需要的。

Step 9: 下载软件

在Github中输入wget指令来下载软件:

view plaincopy to clipboardprint?

wget https://github.com/tdicola/pi-facerec-box/archive/master.zip

解压缩下载好的master.zip:

view plaincopy to clipboardprint?

unzip master.zip

变更工作路径:

view plaincopy to clipboardprint?

cd pi-facerec-box-master

输入安装程序码来安装软件:

view plaincopy to clipboardprint?

sudo ./install_dependencies.sh

注意:这个程序会检查Raspbian是否为Testing(Jessie)版本,并询问是否要升级。安装时间约1小时。

Step 10: 安装Raspberry Pi摄像头模块

输入raspi-config程序码,选择camera module,再按下enable,就能开启摄影模块的功能:

view plaincopy to clipboardprint?

sudo raspi-config

重新启动后,就可以支持摄像头模块了。除非之后想要更改设定,不然之后都不用再设定就可以使用摄像头模块。

Step 11: 调校面部识别功能

在Raspberry Pi的终端机指令列中,进入安装软件目录中,并执行指令来启动调校程序码脚本:

view plaincopy to clipboardprint?

sudo python capture-positives.py

按下保险箱上的钮,让摄像头拍一张照片,指令脚本会试着检测拍摄影像中的一张脸,并以“正确”影像储存于./training/ positive子目录中。

这个过程会花费10分钟左右,让认证系统记住你的脸。

每当影像输入后,会被储存在capture.pgm.资料夹中。你可以用图片编辑软件开启,检查摄像头的拍摄图档,确保你的脸真的可以被成功检测。

接着再按下按钮,拍摄5张不同角度、不同光线的脸部照片。上面的图就是我拍摄的照片。

小窍门:用图片查看软件看CAPTURE.PGM档案,可以看到Raspberry Pi摄像头拍下的照片,再到./TRAINING/NEGATIVE目录中查看无法解锁的照片范例(来自AT&T的面部识别资料库)。

最后,执行指令处理正确和错误的训练影像,训练面部识别演算法,而这部分大概会花费10分钟左右:

view plaincopy to clipboardprint?

python train.py

Step 12: 舵机设定

启动程序码获取舵机上锁和开锁的脉宽数值:

view plaincopy to clipboardprint?

sudo python servo.py

根据屏幕上的指示输入不同的脉宽数值(范围1000到2000)来测试锁头上锁和开锁的位置。

检测到适当的数值之后,编辑config.py并把LOCK_SERVO_UNLOCKED和LOCK_SERVO_LOCKED的数值修改成刚刚测试好的数值。

Step 13: 开始刷脸吧!

执行指令,保险箱将会自动上锁:

view plaincopy to clipboardprint?

sudo python box.py

保险箱会自动上锁,等到有人按下钮,就会开始拍照并进行使用者面部识别。如果辨识结果正确就会解锁,再按一次钮就可以上锁。

Step 14: 故障排除

如果面部识别结果不是很理想,你可以再多训练几次,拍更多正确的照片,或是把config.py档案里的POSITIVE_THRESHOLD值改高,扩大其辨识的误差范围。

如果你需要强迫解锁,只要执行servo.py输入解锁舵机旋臂的位置即可。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容