在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Adafruit光學指紋傳感器的使用教程

454398 ? 來源:網絡整理 ? 作者:網絡整理 ? 2019-11-28 10:29 ? 次閱讀

概述

Adafruit光學指紋傳感器的使用教程

使用生物識別技術保護您的項目-這種多功能的光學指紋傳感器將使添加指紋檢測和驗證超級簡單。這些模塊通常用于保險柜中-有一個高性能的DSP芯片可以進行圖像渲染,計算,特征查找和搜索。使用TTL串行連接到任何微控制器或系統,并發送數據包以拍照,檢測打印,哈希和搜索。您也可以直接注冊新手指-板載閃存中最多可以存儲162個指紋。

我們喜歡這種特殊的傳感器,因為它不僅是易于使用,它還帶有相當簡單的Windows軟件,使模塊的測試變得簡單-您甚至可以使用該軟件進行注冊,并在計算機屏幕上查看指紋圖像。但是,當然,我們不會給您數據表和“好運”! -我們編寫了完整的Arduino庫,因此您可以在10分鐘內開始運行。該圖書館可以注冊和搜索,因此非常適合任何項目。我們還編寫了有關接線和使用的詳細教程。這是迄今為止您可以獲得的最好的指紋傳感器。

電源電壓: 3.6-6.0VDC

工作電流:最大120mA

峰值電流:最大150mA

指紋成像時間: 《1.0秒

窗口區域: 14mm x 18mm

簽名文件: 256字節

模板文件: 512字節

存儲容量: 162個模板

安全等級(1-5低到高安全性)

錯誤接受率: 《0.001%(安全級別3)

錯誤拒絕率: 《1.0%(安全級別3)

接口: TTL串行

波特率::9600、19200、28800、38400、57600(默認為57600)

工作溫度等級: -20C至+ 50C

工作濕度:相對濕度40%-85%

完整尺寸: 56 x 20 x 21.5mm

暴露尺寸(放置在盒子中):21mm x 21mm x 21mm三角形

重量: 20克

注冊與搜索

使用光學指紋傳感器基本上有兩個要求。首先,您需要注冊指紋-這意味著為每個打印件分配ID號,以便以后查詢。登記完所有打印件后,您可以輕松地“搜索”傳感器,要求其識別當前正在拍攝的ID(如果有)。

您可以使用Windows軟件進行登記(最簡單,最簡潔的方法是顯示)

或使用Arduino草圖(適合在沒有Windows機器的情況下使用或在路上報名)。

使用Windows注冊新用戶

注冊新指紋的最簡單方法是使用Windows軟件。不幸的是,該界面/測試軟件僅用于Windows,但 您只需使用一次即可注冊,以獲取要存儲在模塊中的指紋。

首先向上,您將需要通過USB串行轉換器將傳感器連接到計算機。最簡單的方法是將其直接連接到Arduino中的USB/串行轉換器。為此,您需要上傳一個“空白草圖”,該草圖對于“傳統” Arduino(例如Uno和Mega)非常有效:

下載:Project Zip 或 blank.ino | 在Github上查看

復制代碼

// this sketch will allow you to bypass the Atmega chip

// and connect the fingerprint sensor directly to the USB/Serial

// chip converter.

// Red connects to +5V

// Black connects to Ground

// White goes to Digital 0

// Green goes to Digital 1

void setup() {}

void loop() {}

// this sketch will allow you to bypass the Atmega chip

// and connect the fingerprint sensor directly to the USB/Serial

// chip converter.

// Red connects to +5V

// Black connects to Ground

// White goes to Digital 0

// Green goes to Digital 1

void setup() {}

void loop() {}

“空白”草圖不適用于基于Leonard,Micro,Zero等基于“原生USB”的Arduino!如果您使用的是Leonardo,Micro,Yun,Zero或其他基于ATSAMD21或ATmega32U4的原生USB設備,請改用Leo_passthru草圖!

控制器,請使用Leo_passthru草圖而不是“空白”草圖。

下載:Project Zip or Leo_passthru.ino | 在Github上查看

復制代碼

//Leo_passthru

// Allows Leonardo to pass serial data between fingerprint reader and Windows.

//

// Red connects to +5V

// Black connects to Ground

// Green goes to Digital 0

// White goes to Digital 1

void setup() {

// put your setup code here, to run once:

Serial1.begin(57600);

Serial.begin(57600);

}

void loop() {

while (Serial.available())

Serial1.write(Serial.read());

while (Serial1.available())

Serial.write(Serial1.read());

} //Leo_passthru

// Allows Leonardo to pass serial data between fingerprint reader and Windows.

//

// Red connects to +5V

// Black connects to Ground

// Green goes to Digital 0

// White goes to Digital 1

void setup() {

// put your setup code here, to run once:

Serial1.begin(57600);

Serial.begin(57600);

}

void loop() {

while (Serial.available())

Serial1.write(Serial.read());

while (Serial1.available())

Serial.write(Serial1.read());

}

上傳草圖后,按照草圖注釋中的接線圖連接傳感器。由于傳感器的導線太細又短,因此我們將導線剝開一點并熔化一些焊料,以使其接觸更好,但如果接觸不良,則可能需要將導線焊接到插頭或類似的端子上。插入電源時,您可能會看到LED閃爍以指示傳感器正在工作。

如果傳感器具有所有相同顏色的導線,則從左起的第一根導線接地,然后是兩個數據引腳,然后上電。

RX與白線相同

TX與綠線相同

如果傳感器使用不同的電線,則首先從左起的導線應為黑線接地,然后是兩個數據引腳,RX為白線,TX為綠線,然后為紅色電源線。

啟動SFGDemo軟件,然后單擊左下角的打開設備。選擇Arduino使用的 COM端口

,然后按OK。您應該看到以下內容,并在底部角落顯示藍色成功消息和一些設備統計信息。您可以在左下角更改波特率,以及“安全級別”(它的敏感程度),但是我們建議您不要更改這些波特率,直到您一切正常并且想要嘗試。它們應默認為57600波特和安全級別3,因此如果輸入錯誤,請進行設置

如果打開設備時出現錯誤,請檢查接線,并嘗試交換傳感器上的RX和TX線,這是常見的混合現象!

讓我們注冊一根新手指!點擊預覽復選框,然后按其旁邊的 Enroll 按鈕( Con Enroll 表示“連續”注冊,如果您想要有很多手指可以注冊)。出現對話框時,輸入您要使用的ID#。您最多可以使用162個ID號。

軟件將要求您將手指按到傳感器上

然后,您可以查看指紋的預覽(如果選中了預覽復選框)。

然后您將不得不重復該過程,以獲得一個第二次清潔打印。用同一根手指!

成功,您會收到通知。

,如果出現打印質量差或圖像不好的問題,則必須再次進行操作。

使用軟件進行搜索

一旦您注冊了手指,最好進行一次快速測試以確保可以在數據庫中找到它。單擊右側的搜索按鈕。

系統提示時,將另一根/相同的手指按到傳感器上。

如果是同一根手指,則應該與ID#

如果不是數據庫中的手指,則會收到失敗通知。

用于Arduino的接線

測試完傳感器后,現在就可以在草圖中使用它來驗證指紋。我們需要重新連接傳感器。斷開綠線和白線的連接,然后將綠線插入數字 2 ,白線插入數字 3 。 (對于ESP8266,請使用 4 和 5 ,對于具有硬件UART的設備,請使用 0 和 1 )

傳感器正常閃爍LED通電后很快就會消失,直到您開始向其請求數據

如果您的傳感器使用不同的導線,則從左側開始的第一根導線應為黑色導線接地,然后是兩個數據引腳, RX是白線,TX是綠線,然后是紅色電源線。您必須切割,剝皮和焊接導線。

如果傳感器具有所有相同顏色的電線,則從左開始的第一根電線接地,然后是兩個數據引腳,然后通電。

RX與白線相同

TX與綠線相同

Arduino UNO和兼容的布線

此示例草圖使用引腳 2 和 3 進行軟件串行(默認情況下在ATmega328P型板上)-并非所有板都支持軟件所有引腳均為串行,請查閱電路板文檔!例如在ESP8266上,我們使用 4 和 5

您可以通過 3.3V 或 5V為傳感器供電

在下圖中,我們顯示了直接插入電線的電線。 Arduino的。但是,這不能很好地工作,因為電線太細并且它們沒有接觸。您應該將較粗的實芯線焊接到每根導線上,以實現良好的接觸。注意:電纜的兩端都插入指紋傳感器-在切斷任何東西之前,請確保已卸下其正確的一端。您的接線順序應該與上面的圖像匹配,并且指紋傳感器朝上。

硬件序列接線

如果您的設備帶有硬件串行,則應該改用該設備。通常是引腳#0和#1

下一步,您需要安裝Adafruit指紋傳感器庫(也可以從github獲得)。

打開Arduino庫管理器:

鍵入指紋,直到出現 Adafruit指紋庫為止!

點擊“安裝”!而已。現在您應該可以選擇文件→示例→Adafruit_Fingerprint→指紋示例草圖。

軟和硬串行

默認情況下,草圖使用軟件串行(Arduino UNO和兼容版本)。如果您使用的是帶有硬件串行的設備,例如沒有USB串行轉換器芯片,請改用它!通常這些位于針腳0和1

下載:文件

復制代碼

// On Leonardo/Micro or others with hardware serial, use those! #0 is green wire, #1 is white

// uncomment this line:

#define mySerial Serial1

// For UNO and others without hardware serial, we must use software serial.。.

// pin #2 is IN from sensor (GREEN wire)

// pin #3 is OUT from arduino (WHITE wire)

// comment these two lines if using hardware serial

//#include

//SoftwareSerial mySerial(2, 3); // On Leonardo/Micro or others with hardware serial, use those! #0 is green wire, #1 is white

// uncomment this line:

#define mySerial Serial1

// For UNO and others without hardware serial, we must use software serial.。.

// pin #2 is IN from sensor (GREEN wire)

// pin #3 is OUT from arduino (WHITE wire)

// comment these two lines if using hardware serial

//#include

//SoftwareSerial mySerial(2, 3);

如有必要,取消注釋/注釋行以支持硬件串行

上傳

照常將其上傳到Arduino。以9600波特打開串行監視器,并在出現提示時將手指放在已經注冊的傳感器上。

您應該看到以下內容:

“信心”是一個分數(從0到255),表示得分印刷品的匹配度越高,越好。請注意,如果完全匹配,則意味著傳感器非常有信心,因此除非對高安全性應用有意義,否則您不必注意信心數字。

當然,您必須擁有首先注冊指紋!如果您使用Windows程序執行此操作,那就很好了。如果尚未打印,則至少應打印Found fingerprint sensor!。您可以繼續進行下一步以注冊指紋。

如果得到Did not find fingerprint sensor :(檢查接線,則也許要交換RX和TX線,因為這是常見問題。

如果要擁有更詳細的報告,請更改 loop()以運行 getFingerprintID(),而不是 getFingerprintIDez(),這將為您提供詳細報告傳感器在搜索過程中每個點正要檢測的內容。

使用Arduino注冊

我們確實整理了一個簡單的草圖,用于通過Arduino注冊新手指-它不像Windows程序那樣容易使用,但確實可以使用!

運行文件→示例→Adafruit_Fingerprint→注冊草圖并將其上傳到Arduino,使用與上述相同的接線。

打開串行監視器時,它將要求您輸入要注冊的ID-在頂部的框中輸入數字,然后單擊發送。

然后按照指示完成注冊過程。成功注冊手指后,它將打印已存儲!

完成注冊以確保一切都很好時,別忘了進行搜索測試!

Python和CircuitPython

將光學指紋傳感器與Python和CircuitPython以及Adafruit CircuitPython Fingerprint模塊一起使用很容易。此模塊可讓您輕松編寫讀取,注冊或刪除指紋的Python代碼。

由于使用了我們的CircuitPython- Adafruit_Blinka,您可以將此傳感器與任何CircuitPython微控制器板或具有GPIO和Python的計算機一起使用。 for-Python兼容性庫。

傳感器接線

如果您的傳感器有不同的電線,從左開始的第一根電線應該是黑線,然后是兩個數據引腳,RX是白線,TX是綠線,然后是紅色電源線。您必須將較粗的導線切割,剝皮并焊接到當前導線上。

如果傳感器具有所有相同顏色的電線,則從左起的第一根電線接地,然后是兩個數據引腳,然后通電。

RX與白線相同

TX與綠線相同

在下圖中,我們顯示了已插入的電線直接放入小飾品。但是,這不能很好地工作,因為電線太細并且它們沒有接觸。您應該將較粗的實芯線焊接到每根導線上,以實現良好的接觸。注意:電纜的兩端都插入指紋傳感器-在切斷任何東西之前,請確保已卸下其正確的一端。您的接線順序應與上面的圖像匹配,且指紋傳感器朝下。

CircuitPython微控制器接線

首先,按照與Arduino前幾頁完全相同的方式將指紋傳感器連接到板上。這是使用UART將小飾品M0接線到傳感器的示例:

每個CircuitPython板都有一個硬件UART。檢查產品頁面或查找板上寫的 RX 和 TX 。請記住,來自傳感器的RX到達板上的TX!如果您遇到問題,請嘗試交換它們,這是一個常見錯誤

Python計算機接線

由于有數十種Linux計算機/主板可以使用,因此我們將顯示Raspberry的接線皮。對于其他平臺,請訪問Linux上的CircuitPython指南,以了解您的平臺是否受支持。

在這里,您有兩個選擇:外部USB到串行轉換器,或USB上的內置UART。 Pi的TX/RX引腳。下面是連接USB到串行轉換器的示例:

傳感器VCC(紅線)到 USB 5V 或 3V (USB控制臺電纜上的紅線)

傳感器GND(黑線)至 USB接地(黑線)

傳感器RX(白線)到 USB TX (綠色線)

傳感器TX (綠線)到 USB RX (白線)

以下是使用Pi的內置UART的示例:

Pi GND 至傳感器GND(黑色k線)

Pi TX 到傳感器RX(白線)

Pi RX 到傳感器TX(綠線)

Pi 3.3v 到傳感器VCC(紅線)

如果要使用內置UART,則需要禁用串行控制臺并啟用 raspi-config 中的串行端口硬件。有關如何執行此操作的詳細說明,請參見《 Raspberry Pi上CircuitPython指南》的“ UART/串行”部分。

注意Raspberry Pi以外的SBC板在I/O引腳上可能有或沒有可用的硬件UART,或者可能已將它們永久映射到控制臺等。請參考您的板的文檔以查看是否存在是一個硬件UART,其位置,啟用方式以及是否可用于除控制臺以外的串行設備進行編程

CircuitPython指紋庫安裝

要使用指紋傳感器,您需要安裝Adafruit Circuitp板上的CircuitPython指紋庫。

首先請確保您正在為板運行最新版本的Adafruit CircuitPython。

接下來,您需要安裝必要的庫才能使用硬件- -認真遵循他一步步從Adafruit的CircuitPython庫捆綁包中查找和安裝這些庫。我們的簡介指南上有一個很棒的頁面,介紹了如何為快裝板和非快裝板安裝庫捆綁包。

將必要的文件從庫捆綁包復制到《您的 lib 文件夾中strong》 CIRCUITPY 驅動器

adafruit_fingerprint.mpy

在繼續之前,請確保主板的 lib 文件夾復制了 adafruit_fingerprint.mpy 文件。

下一步連接到開發板的串行REPL,因此您在CircuitPython上》》》 提示

指紋庫的Python安裝

您需要安裝 Adafruit_Blinka 庫,該庫在Python中提供了CircuitPython支持。這可能還需要在您的平臺上啟用硬件UART(請參見上面的紅色說明)并確認您正在運行Python3。由于每個平臺都略有不同,并且Linux經常更改,請訪問Linux上的CircuitPython指南以使您的計算機準備就緒!

完成后,從命令行運行以下命令:

sudo pip3 install adafruit-circuitpython-fingerprint

如果您的默認設置Python是版本3,您可能需要運行‘pip’。只要確保您不嘗試在Python 2.x上使用CircuitPython,就不支持它!

CircuitPython和Python的用法

為演示傳感器的用法,我們將使用該庫附帶的示例python腳本。該傳感器非常復雜,因此僅通過REPL很難運行。

CircuitPython微控制器用法

一旦安裝了庫,請運行此 code.py 在CircuitPython開發板上的示例。

使用Python的Linux/Computer/Raspberry Pi

如果您在Raspberry Pi(或任何計算機)上運行Fingerprint_simpletest.py,則必須進行一些更改。

在Raspberry Pi上,注釋掉uart = busio.UART(。..)行,并取消注釋相應的import serial和uart = serial.Serial(。..)行,具體取決于您使用的是USB串行還是硬件UART。現在,您可以使用以下命令運行該程序:

下載:文件

復制代碼

python3 fingerprint_simpletest.py python3 fingerprint_simpletest.py

示例代碼

下載:Project Zip 或 fingerprint_simpletest.py | 在Github上查看

復制代碼

import time

import board

import busio

from digitalio import DigitalInOut, Direction

import adafruit_fingerprint

led = DigitalInOut(board.D13)

led.direction = Direction.OUTPUT

uart = busio.UART(board.TX, board.RX, baudrate=57600)

# If using with a computer such as Linux/RaspberryPi, Mac, Windows with USB/serial converter:

#import serial

#uart = serial.Serial(“/dev/ttyUSB0”, baudrate=57600, timeout=1)

# If using with Linux/Raspberry Pi and hardware UART:

#import serial

#uart = serial.Serial(“/dev/ttyS0”, baudrate=57600, timeout=1)

finger = adafruit_fingerprint.Adafruit_Fingerprint(uart)

##################################################

def get_fingerprint():

“”“Get a finger print image, template it, and see if it matches!”“”

print(“Waiting for image.。.”)

while finger.get_image() != adafruit_fingerprint.OK:

pass

print(“Templating.。.”)

if finger.image_2_tz(1) != adafruit_fingerprint.OK:

return False

print(“Searching.。.”)

if finger.finger_fast_search() != adafruit_fingerprint.OK:

return False

return True

# pylint: disable=too-many-branches

def get_fingerprint_detail():

“”“Get a finger print image, template it, and see if it matches!

This time, print out each error instead of just returning on failure”“”

print(“Getting image.。.”, end=“”, flush=True)

i = finger.get_image()

if i == adafruit_fingerprint.OK:

print(“Image taken”)

else:

if i == adafruit_fingerprint.NOFINGER:

print(“No finger detected”)

elif i == adafruit_fingerprint.IMAGEFAIL:

print(“Imaging error”)

else:

print(“Other error”)

return False

print(“Templating.。.”, end=“”, flush=True)

i = finger.image_2_tz(1)

if i == adafruit_fingerprint.OK:

print(“Templated”)

else:

if i == adafruit_fingerprint.IMAGEMESS:

print(“Image too messy”)

elif i == adafruit_fingerprint.FEATUREFAIL:

print(“Could not identify features”)

elif i == adafruit_fingerprint.INVALIDIMAGE:

print(“Image invalid”)

else:

print(“Other error”)

return False

print(“Searching.。.”, end=“”, flush=True)

i = finger.finger_fast_search()

# pylint: disable=no-else-return

# This block needs to be refactored when it can be tested.

if i == adafruit_fingerprint.OK:

print(“Found fingerprint!”)

return True

else:

if i == adafruit_fingerprint.NOTFOUND:

print(“No match found”)

else:

print(“Other error”)

return False

# pylint: disable=too-many-statements

def enroll_finger(location):

“”“Take a 2 finger images and template it, then store in ‘location’”“”

for fingerimg in range(1, 3):

if fingerimg == 1:

print(“Place finger on sensor.。.”, end=“”, flush=True)

else:

print(“Place same finger again.。.”, end=“”, flush=True)

while True:

i = finger.get_image()

if i == adafruit_fingerprint.OK:

print(“Image taken”)

break

elif i == adafruit_fingerprint.NOFINGER:

print(“。”, end=“”, flush=True)

elif i == adafruit_fingerprint.IMAGEFAIL:

print(“Imaging error”)

return False

else:

print(“Other error”)

return False

print(“Templating.。.”, end=“”, flush=True)

i = finger.image_2_tz(fingerimg)

if i == adafruit_fingerprint.OK:

print(“Templated”)

else:

if i == adafruit_fingerprint.IMAGEMESS:

print(“Image too messy”)

elif i == adafruit_fingerprint.FEATUREFAIL:

print(“Could not identify features”)

elif i == adafruit_fingerprint.INVALIDIMAGE:

print(“Image invalid”)

else:

print(“Other error”)

return False

if fingerimg == 1:

print(“Remove finger”)

time.sleep(1)

while i != adafruit_fingerprint.NOFINGER:

i = finger.get_image()

print(“Creating model.。.”, end=“”, flush=True)

i = finger.create_model()

if i == adafruit_fingerprint.OK:

print(“Created”)

else:

if i == adafruit_fingerprint.ENROLLMISMATCH:

print(“Prints did not match”)

else:

print(“Other error”)

return False

print(“Storing model #%d.。.” % location, end=“”, flush=True)

i = finger.store_model(location)

if i == adafruit_fingerprint.OK:

print(“Stored”)

else:

if i == adafruit_fingerprint.BADLOCATION:

print(“Bad storage location”)

elif i == adafruit_fingerprint.FLASHERR:

print(“Flash storage error”)

else:

print(“Other error”)

return False

return True

##################################################

def get_num():

“”“Use input() to get a valid number from 1 to 127. Retry till success!”“”

i = 0

while (i 》 127) or (i 《 1):

try:

i = int(input(“Enter ID # from 1-127: ”))

except ValueError:

pass

return i

while True:

print(“----------------”)

if finger.read_templates() != adafruit_fingerprint.OK:

raise RuntimeError(‘Failed to read templates’)

print(“Fingerprint templates:”, finger.templates)

print(“e) enroll print”)

print(“f) find print”)

print(“d) delete print”)

print(“----------------”)

c = input(“》 ”)

if c == ‘e’:

enroll_finger(get_num())

if c == ‘f’:

if get_fingerprint():

print(“Detected #”, finger.finger_id, “with confidence”, finger.confidence)

else:

print(“Finger not found”)

if c == ‘d’:

if finger.delete_model(get_num()) == adafruit_fingerprint.OK:

print(“Deleted!”)

else:

print(“Failed to delete”)

import time

import board

import busio

from digitalio import DigitalInOut, Direction

import adafruit_fingerprint

led = DigitalInOut(board.D13)

led.direction = Direction.OUTPUT

uart = busio.UART(board.TX, board.RX, baudrate=57600)

# If using with a computer such as Linux/RaspberryPi, Mac, Windows with USB/serial converter:

#import serial

#uart = serial.Serial(“/dev/ttyUSB0”, baudrate=57600, timeout=1)

# If using with Linux/Raspberry Pi and hardware UART:

#import serial

#uart = serial.Serial(“/dev/ttyS0”, baudrate=57600, timeout=1)

finger = adafruit_fingerprint.Adafruit_Fingerprint(uart)

##################################################

def get_fingerprint():

“”“Get a finger print image, template it, and see if it matches!”“”

print(“Waiting for image.。.”)

while finger.get_image() != adafruit_fingerprint.OK:

pass

print(“Templating.。.”)

if finger.image_2_tz(1) != adafruit_fingerprint.OK:

return False

print(“Searching.。.”)

if finger.finger_fast_search() != adafruit_fingerprint.OK:

return False

return True

# pylint: disable=too-many-branches

def get_fingerprint_detail():

“”“Get a finger print image, template it, and see if it matches!

This time, print out each error instead of just returning on failure”“”

print(“Getting image.。.”, end=“”, flush=True)

i = finger.get_image()

if i == adafruit_fingerprint.OK:

print(“Image taken”)

else:

if i == adafruit_fingerprint.NOFINGER:

print(“No finger detected”)

elif i == adafruit_fingerprint.IMAGEFAIL:

print(“Imaging error”)

else:

print(“Other error”)

return False

print(“Templating.。.”, end=“”, flush=True)

i = finger.image_2_tz(1)

if i == adafruit_fingerprint.OK:

print(“Templated”)

else:

if i == adafruit_fingerprint.IMAGEMESS:

print(“Image too messy”)

elif i == adafruit_fingerprint.FEATUREFAIL:

print(“Could not identify features”)

elif i == adafruit_fingerprint.INVALIDIMAGE:

print(“Image invalid”)

else:

print(“Other error”)

return False

print(“Searching.。.”, end=“”, flush=True)

i = finger.finger_fast_search()

# pylint: disable=no-else-return

# This block needs to be refactored when it can be tested.

if i == adafruit_fingerprint.OK:

print(“Found fingerprint!”)

return True

else:

if i == adafruit_fingerprint.NOTFOUND:

print(“No match found”)

else:

print(“Other error”)

return False

# pylint: disable=too-many-statements

def enroll_finger(location):

“”“Take a 2 finger images and template it, then store in ‘location’”“”

for fingerimg in range(1, 3):

if fingerimg == 1:

print(“Place finger on sensor.。.”, end=“”, flush=True)

else:

print(“Place same finger again.。.”, end=“”, flush=True)

while True:

i = finger.get_image()

if i == adafruit_fingerprint.OK:

print(“Image taken”)

break

elif i == adafruit_fingerprint.NOFINGER:

print(“。”, end=“”, flush=True)

elif i == adafruit_fingerprint.IMAGEFAIL:

print(“Imaging error”)

return False

else:

print(“Other error”)

return False

print(“Templating.。.”, end=“”, flush=True)

i = finger.image_2_tz(fingerimg)

if i == adafruit_fingerprint.OK:

print(“Templated”)

else:

if i == adafruit_fingerprint.IMAGEMESS:

print(“Image too messy”)

elif i == adafruit_fingerprint.FEATUREFAIL:

print(“Could not identify features”)

elif i == adafruit_fingerprint.INVALIDIMAGE:

print(“Image invalid”)

else:

print(“Other error”)

return False

if fingerimg == 1:

print(“Remove finger”)

time.sleep(1)

while i != adafruit_fingerprint.NOFINGER:

i = finger.get_image()

print(“Creating model.。.”, end=“”, flush=True)

i = finger.create_model()

if i == adafruit_fingerprint.OK:

print(“Created”)

else:

if i == adafruit_fingerprint.ENROLLMISMATCH:

print(“Prints did not match”)

else:

print(“Other error”)

return False

print(“Storing model #%d.。.” % location, end=“”, flush=True)

i = finger.store_model(location)

if i == adafruit_fingerprint.OK:

print(“Stored”)

else:

if i == adafruit_fingerprint.BADLOCATION:

print(“Bad storage location”)

elif i == adafruit_fingerprint.FLASHERR:

print(“Flash storage error”)

else:

print(“Other error”)

return False

return True

##################################################

def get_num():

“”“Use input() to get a valid number from 1 to 127. Retry till success!”“”

i = 0

while (i 》 127) or (i 《 1):

try:

i = int(input(“Enter ID # from 1-127: ”))

except ValueError:

pass

return i

while True:

print(“----------------”)

if finger.read_templates() != adafruit_fingerprint.OK:

raise RuntimeError(‘Failed to read templates’)

print(“Fingerprint templates:”, finger.templates)

print(“e) enroll print”)

print(“f) find print”)

print(“d) delete print”)

print(“----------------”)

c = input(“》 ”)

if c == ‘e’:

enroll_finger(get_num())

if c == ‘f’:

if get_fingerprint():

print(“Detected #”, finger.finger_id, “with confidence”, finger.confidence)

else:

print(“Finger not found”)

if c == ‘d’:

if finger.delete_model(get_num()) == adafruit_fingerprint.OK:

print(“Deleted!”)

else:

print(“Failed to delete”)

雖然相當長,但是它可以幫助您設置和測試傳感器!

首次啟動時,您應該得到以下內容:

如果出現類似RuntimeError: Failed to read data from sensor的錯誤,則表明出現了問題-檢查接線和波特率!

此菜單系統非常簡單,您可以做三件事

注冊打印-您將用手指拍攝圖像并將模型“存儲”在傳感器中

查找打印-det確定是否知道并存儲了指紋

刪除打印-清除模型

注冊指紋

注冊指紋很容易。鍵入 e 開始該過程。您需要選擇一個位置。該傳感器最多可以存儲127個打印位置。選擇一個有效的數字,然后手指兩次注冊。

請注意,成功后,指紋模板:[。..] 打印輸出將包括新的模板ID。

如果發生錯誤,傳感器將為您提供一個錯誤,例如,如果兩個打印件不匹配,或者存儲或生成模型失敗:

查找指紋

一旦您注冊了指紋,就可以對其進行測試。運行 f ind命令,然后嘗試各種手指!識別出指紋ID后,它會告訴您位置編號,在這種情況下為#5

刪除指紋

如果輸入有誤,可以從數據庫中刪除指紋模型。例如,以下是刪除#5的方法。請注意指紋模板:[。..] 打印輸出更改!

下載

github上的Arduino接口庫

用戶手冊

數據表(它并不是一個很好的數據表,

英文版的《用戶手冊》

“ SFGDemo”僅用于Windows的測試軟件

責任編輯:wv

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    振動陀螺儀傳感器的工作原理

    陀螺儀傳感器,也稱為角速率傳感器或角速度傳感器,是一種感測角速度的設備。陀螺儀傳感器種類繁多,比較常見的有機械陀螺儀,光學陀螺儀,流體陀螺儀
    的頭像 發表于 06-16 16:29 ?190次閱讀
    振動陀螺儀<b class='flag-5'>傳感器</b>的工作原理

    回收指紋模組收購指紋模組

    回收指紋模組、收購指紋模組、回收指紋連接排、指紋芯片、指紋模組、指紋排線、回收側鍵
    發表于 05-26 13:55

    探秘MEMS光學傳感器:微觀世界里的光影魔法師

    在人類探索微觀世界的征程中,MEMS(微機電系統)技術猶如一把神奇的鑰匙,打開了通往微型化、智能化傳感器的大門。而MEMS光學傳感器,更是這一領域中一顆璀璨的明星,它融合了微機械加工與光學
    的頭像 發表于 05-11 16:22 ?208次閱讀

    光學傳感器的工作原理與應用

    在現代科技的廣闊天地中,光學傳感器如同一雙雙敏銳的“眼睛”,無處不在地捕捉著光線中的信息,將其轉化為可供我們理解和分析的數字信號。從智能手機上的指紋解鎖,到自動駕駛汽車的精確導航,再到醫療領域
    的頭像 發表于 04-15 18:24 ?469次閱讀

    激光位移傳感器精度如何提高

    選擇合適的傳感器型號。 優先選擇高分辨率和高靈敏度的傳感器 :高分辨率和高靈敏度的傳感器能夠提供更精確的數據,從而提高測量精度。 二、采用先進技術 先進的激光技術和光學系統設計 :采用
    的頭像 發表于 02-13 17:04 ?873次閱讀

    夏克-哈特曼波前傳感器

    看到一些物理光學模擬夏克-哈特曼類系統的例子。 夏克-哈特曼傳感器的仿真 用不同數值孔徑的平面波和球面波描述了夏克-哈特曼傳感器的工作原理。傳感器本身由雙凸微透鏡陣列組成。 用于x射
    發表于 01-09 08:50

    EE-325:將Atmel指紋傳感器AT77C104B與Blackfin處理連接

    電子發燒友網站提供《EE-325:將Atmel指紋傳感器AT77C104B與Blackfin處理連接.pdf》資料免費下載
    發表于 01-05 09:42 ?0次下載
    EE-325:將Atmel<b class='flag-5'>指紋</b><b class='flag-5'>傳感器</b>AT77C104B與Blackfin處理<b class='flag-5'>器</b>連接

    光電傳感器與其他傳感器的區別

    。 原理 :光電傳感器首先將被測量的變化轉換成光信號的變化,然后借助光電元件進一步將光信號轉換成電信號。它通常由光源、光學通路和光電元件三部分組成。 其他傳感器 定義 :傳感器是一種更
    的頭像 發表于 12-17 16:48 ?926次閱讀

    表皮可穿戴光學傳感器在汗液監測領域的研究進展綜述

    可穿戴光學傳感器是一項前景廣闊的技術,為監測人體汗液開辟了一條新途徑。隨著集成光學器件、光學材料和結構設計的進步,目前的光學皮膚界面主要采用
    的頭像 發表于 11-18 09:43 ?1312次閱讀
    表皮可穿戴<b class='flag-5'>光學</b><b class='flag-5'>傳感器</b>在汗液監測領域的研究進展綜述

    使用MSP430掃描接口和光學傳感器進行旋轉和線性運動檢測

    電子發燒友網站提供《使用MSP430掃描接口和光學傳感器進行旋轉和線性運動檢測.pdf》資料免費下載
    發表于 10-22 10:03 ?0次下載
    使用MSP430掃描接口和<b class='flag-5'>光學</b><b class='flag-5'>傳感器</b>進行旋轉和線性運動檢測

    氣敏傳感器是用來檢測什么的傳感器

    檢測氣體。它們可以是電阻式的、電容式的、光學的或基于電化學的。這些傳感器能夠響應特定的氣體分子,產生可測量的信號變化,如電阻、電流、電壓或光強度的變化。 氣敏傳感器的工作原理 電阻式氣敏傳感器
    的頭像 發表于 09-19 11:22 ?1030次閱讀

    CW32模塊使用 指紋識別傳感器

    光學指紋識別傳感器采用了國內著名指紋識別芯片公司杭州晟元芯片技術有限公司(Synochip) 的 AS608 指紋識別芯片。芯片內置 DSP 運算單元,集成了
    的頭像 發表于 09-18 15:15 ?696次閱讀
    CW32模塊使用 <b class='flag-5'>指紋識別傳感器</b>

    使用MSP430 MCU簡化溫度、濕度和光學I2C傳感器

    電子發燒友網站提供《使用MSP430 MCU簡化溫度、濕度和光學I2C傳感器.pdf》資料免費下載
    發表于 09-14 11:03 ?0次下載
    使用MSP430 MCU簡化溫度、濕度和<b class='flag-5'>光學</b>I2C<b class='flag-5'>傳感器</b>

    常用遙感傳感器中成像的傳感器是什么

    常用遙感傳感器中成像的傳感器主要包括以下幾類: 一、光學成像傳感器 多波段掃描儀 :多波段掃描儀是一種重要的光學成像
    的頭像 發表于 09-04 14:25 ?1547次閱讀

    限定反射型光學傳感器B5W-LB的線纜可以延長多少?

    Omron 限定反射型光學傳感器 B5W-LB 不易受顏色和材質影響的限定反射型鏡面、黑色、透明物體也都會檢測出來。
    的頭像 發表于 08-01 10:03 ?735次閱讀
    限定反射型<b class='flag-5'>光學</b><b class='flag-5'>傳感器</b>B5W-LB的線纜可以延長多少?
    主站蜘蛛池模板: 久草在线免费资源站 | 女人张开腿让男人桶免费最新 | 欧美夜夜 | 99久久伊人 | 欧美黑粗特黄午夜大片 | 久久永久视频 | 在线观看深夜观看网站免费 | 香蕉视频在线观看国产 | 爱爱动态视频免费视频 | 天堂网在线资源www种子 | 在线免费看高清视频大全 | 综合第一页 | 最新国产在线播放 | 天堂网www| 在线观看jyzzjyzz | 亚色中文 | 欧美一级看片a免费观看 | 日韩精品三级 | 成人小视频在线 | 久久99爱爱 | 婷婷亚洲五月 | 色成人综合 | 国产伦精品一区二区三区四区 | 一级不卡毛片 | 孩交精品xxxx视频视频 | 亚洲一级免费毛片 | 77se77亚洲欧美在线大屁股 | 操操操天天操 | 深夜视频在线免费观看 | 欧美在线视 | 色停停| 欧美又粗又长又湿又黄的视频 | 人人搞人人爱 | 中文字幕一区二区三区四区五区人 | 一级特色黄大片 | 国产天堂网 | 日本免费xxxx色视频 | 奇米狠狠干 | 男人都懂得网址 | 中文字幕视频一区二区 | 狠狠狠色丁香婷婷综合久久88 |