還在用密碼與鑰匙就能保護你的貴重物品,你的臉就是開啟保險箱的鑰匙!這個教程就是教你如何運用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輸入解鎖舵機旋臂的位置即可。