女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Adafruit光學(xué)指紋傳感器的使用教程

454398 ? 來源:網(wǎng)絡(luò)整理 ? 作者:網(wǎng)絡(luò)整理 ? 2019-11-28 10:29 ? 次閱讀

概述

Adafruit光學(xué)指紋傳感器的使用教程

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

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

電源電壓: 3.6-6.0VDC

工作電流:最大120mA

峰值電流:最大150mA

指紋成像時(shí)間: 《1.0秒

窗口區(qū)域: 14mm x 18mm

簽名文件: 256字節(jié)

模板文件: 512字節(jié)

存儲(chǔ)容量: 162個(gè)模板

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

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

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

接口: TTL串行

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

工作溫度等級(jí): -20C至+ 50C

工作濕度:相對(duì)濕度40%-85%

完整尺寸: 56 x 20 x 21.5mm

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

重量: 20克

注冊(cè)與搜索

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

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

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

使用Windows注冊(cè)新用戶

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

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

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

復(fù)制代碼

// 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設(shè)備,請(qǐng)改用Leo_passthru草圖!

控制器,請(qǐng)使用Leo_passthru草圖而不是“空白”草圖。

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

復(fù)制代碼

//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());

}

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

如果傳感器具有所有相同顏色的導(dǎo)線,則從左起的第一根導(dǎo)線接地,然后是兩個(gè)數(shù)據(jù)引腳,然后上電。

RX與白線相同

TX與綠線相同

如果傳感器使用不同的電線,則首先從左起的導(dǎo)線應(yīng)為黑線接地,然后是兩個(gè)數(shù)據(jù)引腳,RX為白線,TX為綠線,然后為紅色電源線。

啟動(dòng)SFGDemo軟件,然后單擊左下角的打開設(shè)備。選擇Arduino使用的 COM端口

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

如果打開設(shè)備時(shí)出現(xiàn)錯(cuò)誤,請(qǐng)檢查接線,并嘗試交換傳感器上的RX和TX線,這是常見的混合現(xiàn)象!

讓我們注冊(cè)一根新手指!點(diǎn)擊預(yù)覽復(fù)選框,然后按其旁邊的 Enroll 按鈕( Con Enroll 表示“連續(xù)”注冊(cè),如果您想要有很多手指可以注冊(cè))。出現(xiàn)對(duì)話框時(shí),輸入您要使用的ID#。您最多可以使用162個(gè)ID號(hào)。

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

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

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

成功,您會(huì)收到通知。

,如果出現(xiàn)打印質(zhì)量差或圖像不好的問題,則必須再次進(jìn)行操作。

使用軟件進(jìn)行搜索

一旦您注冊(cè)了手指,最好進(jìn)行一次快速測試以確??梢栽跀?shù)據(jù)庫中找到它。單擊右側(cè)的搜索按鈕。

系統(tǒng)提示時(shí),將另一根/相同的手指按到傳感器上。

如果是同一根手指,則應(yīng)該與ID#

如果不是數(shù)據(jù)庫中的手指,則會(huì)收到失敗通知。

用于Arduino的接線

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

傳感器正常閃爍LED通電后很快就會(huì)消失,直到您開始向其請(qǐng)求數(shù)據(jù)

如果您的傳感器使用不同的導(dǎo)線,則從左側(cè)開始的第一根導(dǎo)線應(yīng)為黑色導(dǎo)線接地,然后是兩個(gè)數(shù)據(jù)引腳, RX是白線,TX是綠線,然后是紅色電源線。您必須切割,剝皮和焊接導(dǎo)線。

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

RX與白線相同

TX與綠線相同

Arduino UNO和兼容的布線

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

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

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

硬件序列接線

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

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

打開Arduino庫管理器:

鍵入指紋,直到出現(xiàn) Adafruit指紋庫為止!

點(diǎn)擊“安裝”!而已?,F(xiàn)在您應(yīng)該可以選擇文件→示例→Adafruit_Fingerprint→指紋示例草圖。

軟和硬串行

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

下載:文件

復(fù)制代碼

// 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波特打開串行監(jiān)視器,并在出現(xiàn)提示時(shí)將手指放在已經(jīng)注冊(cè)的傳感器上。

您應(yīng)該看到以下內(nèi)容:

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

當(dāng)然,您必須擁有首先注冊(cè)指紋!如果您使用Windows程序執(zhí)行此操作,那就很好了。如果尚未打印,則至少應(yīng)打印Found fingerprint sensor!。您可以繼續(xù)進(jìn)行下一步以注冊(cè)指紋。

如果得到Did not find fingerprint sensor :(檢查接線,則也許要交換RX和TX線,因?yàn)檫@是常見問題。

如果要擁有更詳細(xì)的報(bào)告,請(qǐng)更改 loop()以運(yùn)行 getFingerprintID(),而不是 getFingerprintIDez(),這將為您提供詳細(xì)報(bào)告?zhèn)鞲衅髟谒阉鬟^程中每個(gè)點(diǎn)正要檢測的內(nèi)容。

使用Arduino注冊(cè)

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

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

打開串行監(jiān)視器時(shí),它將要求您輸入要注冊(cè)的ID-在頂部的框中輸入數(shù)字,然后單擊發(fā)送。

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

完成注冊(cè)以確保一切都很好時(shí),別忘了進(jìn)行搜索測試!

Python和CircuitPython

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

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

傳感器接線

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

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

RX與白線相同

TX與綠線相同

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

CircuitPython微控制器接線

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

每個(gè)CircuitPython板都有一個(gè)硬件UART。檢查產(chǎn)品頁面或查找板上寫的 RX 和 TX 。請(qǐng)記住,來自傳感器的RX到達(dá)板上的TX!如果您遇到問題,請(qǐng)嘗試交換它們,這是一個(gè)常見錯(cuò)誤

Python計(jì)算機(jī)接線

由于有數(shù)十種Linux計(jì)算機(jī)/主板可以使用,因此我們將顯示Raspberry的接線皮。對(duì)于其他平臺(tái),請(qǐng)?jiān)L問Linux上的CircuitPython指南,以了解您的平臺(tái)是否受支持。

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

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

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

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

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

以下是使用Pi的內(nèi)置UART的示例:

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

Pi TX 到傳感器RX(白線)

Pi RX 到傳感器TX(綠線)

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

如果要使用內(nèi)置UART,則需要禁用串行控制臺(tái)并啟用 raspi-config 中的串行端口硬件。有關(guān)如何執(zhí)行此操作的詳細(xì)說明,請(qǐng)參見《 Raspberry Pi上CircuitPython指南》的“ UART/串行”部分。

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

CircuitPython指紋庫安裝

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

首先請(qǐng)確保您正在為板運(yùn)行最新版本的Adafruit CircuitPython。

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

將必要的文件從庫捆綁包復(fù)制到《您的 lib 文件夾中strong》 CIRCUITPY 驅(qū)動(dòng)器

adafruit_fingerprint.mpy

在繼續(xù)之前,請(qǐng)確保主板的 lib 文件夾復(fù)制了 adafruit_fingerprint.mpy 文件。

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

指紋庫的Python安裝

您需要安裝 Adafruit_Blinka 庫,該庫在Python中提供了CircuitPython支持。這可能還需要在您的平臺(tái)上啟用硬件UART(請(qǐng)參見上面的紅色說明)并確認(rèn)您正在運(yùn)行Python3。由于每個(gè)平臺(tái)都略有不同,并且Linux經(jīng)常更改,請(qǐng)?jiān)L問Linux上的CircuitPython指南以使您的計(jì)算機(jī)準(zhǔn)備就緒!

完成后,從命令行運(yùn)行以下命令:

sudo pip3 install adafruit-circuitpython-fingerprint

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

CircuitPython和Python的用法

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

CircuitPython微控制器用法

一旦安裝了庫,請(qǐng)運(yùn)行此 code.py 在CircuitPython開發(fā)板上的示例。

使用Python的Linux/Computer/Raspberry Pi

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

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

下載:文件

復(fù)制代碼

python3 fingerprint_simpletest.py python3 fingerprint_simpletest.py

示例代碼

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

復(fù)制代碼

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”)

雖然相當(dāng)長,但是它可以幫助您設(shè)置和測試傳感器!

首次啟動(dòng)時(shí),您應(yīng)該得到以下內(nèi)容:

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

此菜單系統(tǒng)非常簡單,您可以做三件事

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

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

刪除打印-清除模型

注冊(cè)指紋

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

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

如果發(fā)生錯(cuò)誤,傳感器將為您提供一個(gè)錯(cuò)誤,例如,如果兩個(gè)打印件不匹配,或者存儲(chǔ)或生成模型失?。?/p>

查找指紋

一旦您注冊(cè)了指紋,就可以對(duì)其進(jìn)行測試。運(yùn)行 f ind命令,然后嘗試各種手指!識(shí)別出指紋ID后,它會(huì)告訴您位置編號(hào),在這種情況下為#5

刪除指紋

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

下載

github上的Arduino接口庫

用戶手冊(cè)

數(shù)據(jù)表(它并不是一個(gè)很好的數(shù)據(jù)表,

英文版的《用戶手冊(cè)》

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

責(zé)任編輯:wv

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

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

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

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

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

    光學(xué)傳感器的工作原理與應(yīng)用

    在現(xiàn)代科技的廣闊天地中,光學(xué)傳感器如同一雙雙敏銳的“眼睛”,無處不在地捕捉著光線中的信息,將其轉(zhuǎn)化為可供我們理解和分析的數(shù)字信號(hào)。從智能手機(jī)上的指紋解鎖,到自動(dòng)駕駛汽車的精確導(dǎo)航,再到醫(yī)療領(lǐng)域
    的頭像 發(fā)表于 04-15 18:24 ?345次閱讀

    VirtualLab:CMOS傳感器仿真

    CMOS傳感器由于其從每個(gè)像素單獨(dú)提取信息的能力以及其低成本和低功耗,已成為圖像傳感器的主導(dǎo)技術(shù)。后者主要?dú)w因于近年來CMOS像素尺寸的快速縮小。然而,小的特征尺寸也使器件功能逼近極限,因?yàn)榫哂蟹浅?/div>
    發(fā)表于 04-07 11:30

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

    選擇合適的傳感器型號(hào)。 優(yōu)先選擇高分辨率和高靈敏度的傳感器 :高分辨率和高靈敏度的傳感器能夠提供更精確的數(shù)據(jù),從而提高測量精度。 二、采用先進(jìn)技術(shù) 先進(jìn)的激光技術(shù)和光學(xué)系統(tǒng)設(shè)計(jì) :采用
    的頭像 發(fā)表于 02-13 17:04 ?802次閱讀

    夏克-哈特曼波前傳感器

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

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

    電子發(fā)燒友網(wǎng)站提供《EE-325:將Atmel指紋傳感器AT77C104B與Blackfin處理連接.pdf》資料免費(fèi)下載
    發(fā)表于 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>連接

    光電傳感器與其他傳感器的區(qū)別

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

    表皮可穿戴光學(xué)傳感器在汗液監(jiān)測領(lǐng)域的研究進(jìn)展綜述

    可穿戴光學(xué)傳感器是一項(xiàng)前景廣闊的技術(shù),為監(jiān)測人體汗液開辟了一條新途徑。隨著集成光學(xué)器件、光學(xué)材料和結(jié)構(gòu)設(shè)計(jì)的進(jìn)步,目前的光學(xué)皮膚界面主要采用
    的頭像 發(fā)表于 11-18 09:43 ?1226次閱讀
    表皮可穿戴<b class='flag-5'>光學(xué)</b><b class='flag-5'>傳感器</b>在汗液監(jiān)測領(lǐng)域的研究進(jìn)展綜述

    使用MSP430掃描接口和光學(xué)傳感器進(jìn)行旋轉(zhuǎn)和線性運(yùn)動(dòng)檢測

    電子發(fā)燒友網(wǎng)站提供《使用MSP430掃描接口和光學(xué)傳感器進(jìn)行旋轉(zhuǎn)和線性運(yùn)動(dòng)檢測.pdf》資料免費(fèi)下載
    發(fā)表于 10-22 10:03 ?0次下載
    使用MSP430掃描接口和<b class='flag-5'>光學(xué)</b><b class='flag-5'>傳感器</b>進(jìn)行旋轉(zhuǎn)和線性運(yùn)動(dòng)檢測

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

    檢測氣體。它們可以是電阻式的、電容式的、光學(xué)的或基于電化學(xué)的。這些傳感器能夠響應(yīng)特定的氣體分子,產(chǎn)生可測量的信號(hào)變化,如電阻、電流、電壓或光強(qiáng)度的變化。 氣敏傳感器的工作原理 電阻式氣敏傳感器
    的頭像 發(fā)表于 09-19 11:22 ?969次閱讀

    CW32模塊使用 指紋識(shí)別傳感器

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

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

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

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

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

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

    Omron 限定反射型光學(xué)傳感器 B5W-LB 不易受顏色和材質(zhì)影響的限定反射型鏡面、黑色、透明物體也都會(huì)檢測出來。
    的頭像 發(fā)表于 08-01 10:03 ?690次閱讀
    限定反射型<b class='flag-5'>光學(xué)</b><b class='flag-5'>傳感器</b>B5W-LB的線纜可以延長多少?