讓我們在樹莓派單板計算機上解鎖生物識別控制功能吧!生物識別技術利用每個人獨有的、不易復制的生理或行為特征進行身份驗證。地球上每個人的指紋都是獨一無二的,讓我們一起來探索指紋的奇妙用途吧!本文將介紹如何以最快的方式將指紋掃描儀直接安裝到樹莓派單板計算機上,并進行編程和使用。本指南將幫助您快速在任何項目中添加指紋檢測、采集和驗證功能。
下圖是今天我們將使用的指紋掃描儀,它連接到了樹莓派4 Model B上,右側則是掃描儀在3D打印壁掛式外殼中搜索指紋的情景。我們今天要探索的這款特定掃描儀是Adafruit光學指紋傳感器,它配備了插座頭電纜和電子元件。
其中一個組件是DSP(數(shù)字信號處理器)芯片,它負責該模塊的所有渲染、計算、指紋特征查找和搜索工作。這款DSP芯片能夠在板載閃存中存儲300個獨特指紋。這意味著,即使系統(tǒng)斷電,硬件仍會記住所有已注冊的指紋。

任何連接的微控制器(如Arduino Uno)或微處理器(如樹莓派4 Model B)都可以通過TTL(UART)串行通信與其進行交互。發(fā)送的數(shù)據(jù)可以啟動新指紋的注冊過程、創(chuàng)建所采集指紋的數(shù)字圖像或報告檢測到的指紋。這意味著您可以使用指紋來控制與GPIO連接的硬件。GPIO(通用輸入輸出)引腳可用于控制幾乎無限數(shù)量的傳感器和機制,如用于解鎖門的電磁閥、照亮您一天的LED燈或項目所需的任何組件。以下是我的《用樹莓派單板計算機控制12V電磁閥》的指南,該電磁閥可輕松由Adafruit指紋掃描儀觸發(fā)。
本指南將演示如何注冊新指紋以及如何使用指紋控制GPIO連接的硬件。此外,還將展示如何拍攝指紋的數(shù)字圖像。本指南的內容如下:
所需材料
硬件組裝
軟件設置
運行主指紋腳本
使用已知指紋腳本激活GPIO
后續(xù)步驟(創(chuàng)建掃描指紋的數(shù)字圖像)
下載資源
此處創(chuàng)建的系統(tǒng)是一種生物識別認證形式。指紋認證會自動將用戶的指紋與存儲的指紋模板進行比較,以驗證用戶身份。目前主要有三種指紋識別器:光學、超聲波和電容式。光學指紋傳感器是傳統(tǒng)方法,也是本指南中使用的方法。它依靠類似攝像頭的設備拍攝放置在固定距離玻璃層上的指紋圖像。為了增強安全性,一些光學傳感器還配備了額外組件或運行簡單的人工智能算法,以確認放置在讀取器上的是活體手指。電容式指紋傳感器常見于手機解鎖。電容式傳感器有兩種類型:被動掃描,指紋上的凸起脊線構成電容器的另一極板;或主動掃描,傳感器具有兩個極板,指紋脊線會改變預期的電容。這些傳感器需要特殊構造,以確保高壓靜電不會損壞傳感電子元件。超聲波指紋傳感器是最新的指紋識別方法,僅在少數(shù)高端應用中出現(xiàn)。它們使用超聲波來感知指紋的更深真皮層。這意味著,臟污或劃傷的手指不會影響正確的指紋識別。
考驗你英語聽力的時候到了,你可以直接觀看視頻!
所需材料
以下是設置樹莓派以使用光學指紋掃描儀所需的所有材料:
樹莓派掌上計算機(我使用的是樹莓派4 Model B 2GB,但使用較低配置的樹莓派,如樹莓派Zero 2,也能完美完成)
Adafruit指紋掃描儀
刷有樹莓派操作系統(tǒng)的Micro-SD卡
用于將系統(tǒng)連接到顯示器的Micro-HDMI轉HDMI線
鼠標和鍵盤
硬件組裝
第一步是小心地將提供的電線與掃描儀上的8針1毫米間距連接器對齊并連接,如下圖所示。請注意,不要接反。另外請注意,母連接器側與板子不完全平行,且較為脆弱。為防止損壞,請僅握住連接器部分,輕輕而穩(wěn)固地將這兩部分推在一起。連接后,電線不易脫落。
然后,我們將把從掃描儀引出的四根電線連接到樹莓派單板計算機上,連接方式與下圖完全相同。如果需要,請右鍵點擊圖片并在新標簽頁中打開,以便輕松放大圖片。有四根電線從指紋掃描儀中引出,它們將不與任何東西連接。紅線為3.3V電源,應連接到樹莓派的3.3V電源引腳上。白線連接到樹莓派的TX GPIO 14引腳。黃線連接到樹莓派的RX GPIO 15引腳。黑線為接地線,應連接到樹莓派的接地引腳上。如果將此指紋掃描儀連接到5V電源,它將會損壞,因此在啟動系統(tǒng)前,請務必再次檢查是否已將電源連接到3.3V引腳上。
完成上述步驟后,插入刷有樹莓派操作系統(tǒng)的Micro-SD卡,并將其作為臺式計算機使用。添加鼠標、鍵盤和HDMI顯示器。然后,通過插入USB-C電源來啟動樹莓派系統(tǒng)。一旦啟動,指紋掃描儀將立即亮起。請參見下圖,其中展示了所有這些部件以及鼠標和鍵盤的連接情況。
至此,硬件組裝完成!
軟件設置
在全新的樹莓派操作系統(tǒng)版本上,需要安裝一些軟件包并更改設置。這將使指紋掃描儀與樹莓派之間能夠進行正確通信。將電源接入系統(tǒng)并完成(新的)首次啟動向導后,您將看到樹莓派桌面。如果您在此階段需要額外幫助,請點擊此處查看相關指南。
第一步是開啟串口連接功能,這將使樹莓派單板計算機能夠通過TTL UART串行通信與指紋掃描儀進行通信。默認情況下,在樹莓派操作系統(tǒng)上,此通信方法是關閉的。要開啟此功能,請打開樹莓派配置菜單(通過左上角菜單并滾動到首選項找到),然后在接口選項卡下啟用串口連接。在此處,請確保串行控制臺已關閉。請參見下圖中的操作。
現(xiàn)在,系統(tǒng)已重新啟動并連接到互聯(lián)網,請通過點擊屏幕左上角的黑色按鈕打開一個新的終端窗口。這將打開一個終端窗口。請參見下圖中的操作以及指向已點擊的終端按鈕的大紅箭頭。
這個終端窗口將使我們能夠從互聯(lián)網上下載所需的軟件包?,F(xiàn)在,在終端中輸入以下命令并按回車鍵,以獲取所需的所有軟件包。如果提示繼續(xù)/確認安裝,請輸入Y并按回車鍵。請參見下文中的一個命令下載并請求確認的圖像。
sudo pip3 install adafruit-circuitpython-fingerprint pyfingerprintgitclonehttps://github.com/adafruit/Adafruit_CircuitPython_Fingerprint.gitgitclonehttps://github.com/bastianraschke/pyfingerprint.git
完成后,我們就已完全設置好樹莓派單板計算機,以使其與指紋掃描儀配合使用。
運行主指紋腳本
如果您已按照上述軟件部分的操作進行,那么我們要運行的Python腳本應該已經在系統(tǒng)上了。我們要運行的特定腳本名為fingerprint_simpletest_rpi.py。請參見下圖中的腳本目錄位置/home/pi/Adafruit_CircuitPython_Fingerprint/examples,以及該文件被右鍵點擊并在Thonny IDE中打開的情況。請按照相同步驟操作,以便在Thonny IDE中打開此腳本。
現(xiàn)在,我們需要對fingerprint_simpletest_rpi.py Python腳本進行輕微調整,以便其能夠與我們的設置配合使用。通過在行首添加#符號來注釋掉第14行。通過刪除#符號來取消注釋第17行。確保在完成此操作后保存腳本。請參見下圖中的操作。
完成上述步驟后,我們現(xiàn)在可以點擊大大的綠色運行按鈕了!這將向shell輸出一些信息,并提供幾個選項。讓我們將手指注冊到系統(tǒng)中。為此,請輸入e并按回車鍵。然后,輸入1并按回車鍵,以將此指紋索引為第一個。每個指紋都將有一個與之關聯(lián)的索引號,您可以擁有300個索引指紋。請參見下文中的操作。
按下回車鍵后,它將引導您完成一個基于文本的向導,以添加新手指。當掃描儀亮起時,您需要將手指按在掃描儀上兩次。按照文本提示操作,您的第一個指紋將在10秒內注冊完成。
然后,我們可以通過測試系統(tǒng)來檢查它是否已正確注冊。在此階段,請輸入f并按回車鍵。然后,將同一根手指放在掃描儀上。確認shell輸出的信息與我的相似,如下圖所示。如果是這樣,您就已成功注冊了手指,并成功識別了您的指紋!太棒了!它甚至提供了一個0到255的置信度值。在我的情況下,我得到了183的置信度分數(shù)。僅當您的項目需要更高安全性時,才應將置信度分數(shù)納入考慮。如果掃描儀確認檢測到指紋,您可以對此充滿信心。
使用已知指紋腳本激活GPIO
現(xiàn)在,讓我們使用指紋來控制一些GPIO。我使用面包板將一個LED和電阻串聯(lián)連接到樹莓派單板計算機的GPIO21和接地引腳上。這里的目標是根據(jù)我們正確識別的指紋來點亮LED。GPIO是連接外部世界的門戶,這個LED只是代表您想要連接的任何硬件的占位符。
腳本名為LED-Fingerprint-Control.py。您可以從下面復制并粘貼它,或者從頁面底部的zip文件中下載本指南中提到的所有腳本。以前面的相同方式在Thonny IDE中打開它。
#!/usr/bin/env python# -*- coding: utf-8 -*-"""PyFingerprintOriginally a Bastian Raschke ExampleModified by Tim for GPIO LED Control"""importhashlibfrompyfingerprint.pyfingerprintimportPyFingerprintfrompyfingerprint.pyfingerprintimportFINGERPRINT_CHARBUFFER1#LED is attached to the GPIO numbered belowPin =21#Import Time, and set up the GPIO, stop warnings, and activate the LED GPIO as an output (defaults to LOW Voltage)importtimeimportRPi.GPIOasGPIOGPIO.setmode(GPIO.BCM)GPIO.setwarnings(False)GPIO.setup(Pin, GPIO.OUT)## Search for a finger#### Tries to initialize the sensortry: f = PyFingerprint('/dev/ttyS0',57600,0xFFFFFFFF,0x00000000) if( f.verifyPassword() ==False): raiseValueError('The given fingerprint sensor password is wrong!')exceptExceptionase: print('The fingerprint sensor could not be initialized!') print('Exception message: '+str(e)) exit(1)## Gets some sensor informationprint('Currently used templates: '+str(f.getTemplateCount()) +'/'+str(f.getStorageCapacity()))## Tries to search the finger and calculate hashtry: print('Waiting for finger...') ## Wait that finger is read while( f.readImage() ==False): pass ## Converts read image to characteristics and stores it in charbuffer 1 f.convertImage(FINGERPRINT_CHARBUFFER1) ## Searchs template result = f.searchTemplate() positionNumber = result[0] accuracyScore = result[1] if( positionNumber == -1): print('No match found!') exit(0) #This Else statement is only reached when an Index Finger is Detected else: print('Found template at position #'+str(positionNumber)) print('The accuracy score is: '+str(accuracyScore))#Because we have reached this else statement we had detected an enrolled finger#This means we can now toggle the LED. This is done with the three lines below. GPIO.output(Pin, GPIO.HIGH) time.sleep(1) GPIO.output(Pin, GPIO.LOW) ## OPTIONAL stuff ## ## Loads the found template to charbuffer 1 f.loadTemplate(positionNumber, FINGERPRINT_CHARBUFFER1) ## Downloads the characteristics of template loaded in charbuffer 1 characterics =str(f.downloadCharacteristics(FINGERPRINT_CHARBUFFER1)).encode('utf-8') ## Hashes characteristics of template print('SHA-2 hash of template: '+ hashlib.sha256(characterics).hexdigest())exceptExceptionase: print('Operation failed!') print('Exception message: '+str(e)) exit(1)
在Thonny IDE中打開腳本后,您應該就可以開始操作了。如果遇到錯誤,請仔細檢查腳本中任何出現(xiàn)/dev的地方是否都類似于/dev/ttyS0。這將定位到正確的通信串口。指紋掃描儀的燈將亮起,現(xiàn)在您可以將手指放在指紋掃描儀上了。一旦您這樣做,它將嘗試識別您的指紋,如果識別出已索引的指紋,它將點亮LED一秒。請參見下圖中的操作。
現(xiàn)在,這不僅僅是一個LED,它可以很容易地變成一個用于解鎖門或大門的電磁閥,一旦接收到正確的指紋,電磁閥就會打開。這只是兩個想法,您可以將這個概念帶到任何您想象的地方!以您的生物識別技術為控制杠桿。
后續(xù)步驟(創(chuàng)建掃描指紋的數(shù)字圖像)
我真的很想看看通過指紋掃描儀看到的我的指紋圖像是什么樣的。腳本example_downloadimage.py可以在本文底部的可下載zip文件中找到,或者在下圖下方完整寫出。每當您運行此腳本(使用Thonny IDE,與以前相同)并將手指按在掃描儀上時,它將導出一個BMP格式的指紋圖像。這大約需要10秒鐘的時間。請參見下面(為安全起見已修改)的我的指紋圖像!
#!/usr/bin/env python# -*- coding: utf-8 -*-#PyFingerprint##Copyright (C) 2015 Bastian Raschke#All rights reserved.importtempfilefrompyfingerprint.pyfingerprintimportPyFingerprint## Reads image and download it#### Tries to initialize the sensortry: f = PyFingerprint('/dev/ttyS0',57600,0xFFFFFFFF,0x00000000) if( f.verifyPassword() ==False): raiseValueError('The given fingerprint sensor password is wrong!')exceptExceptionase: print('The fingerprint sensor could not be initialized!') print('Exception message: '+str(e)) exit(1)## Gets some sensor informationprint('Currently used templates: '+str(f.getTemplateCount()) +'/'+str(f.getStorageCapacity()))## Tries to read image and download ittry: print('Waiting for finger...') ## Wait that finger is read while( f.readImage() ==False): pass print('Downloading image (this take a while)...') imageDestination = tempfile.gettempdir() +'/fingerprint.bmp' f.downloadImage(imageDestination) print('The image was saved to "'+ imageDestination +'".')exceptExceptionase: print('Operation failed!') print('Exception message: '+str(e)) exit(1)
非常感謝Bastian Raschke提供此腳本,要查看他的更多作品,請點擊此處查看他的GitHub頁面。
https://github.com/bastianraschke
掌握了這項技術,您很快就能收集到所有朋友的指紋了。因此,如果您有一天醒來,感覺每個人都被一個長得一模一樣的雙胞胎替換了,您可以使用指紋數(shù)據(jù)來證實或反駁這一假設。畢竟,同卵雙胞胎的指紋并不匹配。
原文地址:
https://core-electronics.com.au/guides/raspberry-pi/fingerprint-scanner-raspberry-pi/
-
傳感器
+關注
關注
2573文章
53845瀏覽量
779546 -
指紋識別
+關注
關注
43文章
1751瀏覽量
103965 -
樹莓派
+關注
關注
122文章
2067瀏覽量
108916
發(fā)布評論請先 登錄
求助??!指紋識別。。。FPS200傳感器
關于汽車指紋識別的方案
初學者怎么做指紋識別
新唐指紋識別
【7寸HDMI顯示屏申請】基于指紋識別的的智能門禁系統(tǒng)
【TG401_EVB開發(fā)板申請】基于arm的指紋識別算法實現(xiàn)
指紋識別技術原理及發(fā)展
求一種使用掛鎖的指紋識別模塊方案
手機指紋識別有什么用?
如何700元用樹莓派自己做一個相機?

評論