欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

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

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

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

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

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

概述

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

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

我們喜歡這種特殊的傳感器,因?yàn)樗粌H是易于使用,它還帶有相當(dāng)簡(jiǎn)單的Windows軟件,使模塊的測(cè)試變得簡(jiǎn)單-您甚至可以使用該軟件進(jìn)行注冊(cè),并在計(jì)算機(jī)屏幕上查看指紋圖像。但是,當(dāng)然,我們不會(huì)給您數(shù)據(jù)表和“好運(yùn)”! -我們編寫(xiě)了完整的Arduino庫(kù),因此您可以在10分鐘內(nèi)開(kāi)始運(yùn)行。該圖書(shū)館可以注冊(cè)和搜索,因此非常適合任何項(xiàng)目。我們還編寫(xiě)了有關(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),以便以后查詢(xún)。登記完所有打印件后,您可以輕松地“搜索”傳感器,要求其識(shí)別當(dāng)前正在拍攝的ID(如果有)。

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

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

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

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

首先向上,您將需要通過(guò)USB串行轉(zhuǎn)換器將傳感器連接到計(jì)算機(jī)。最簡(jiǎn)單的方法是將其直接連接到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)線剝開(kāi)一點(diǎn)并熔化一些焊料,以使其接觸更好,但如果接觸不良,則可能需要將導(dǎo)線焊接到插頭或類(lèi)似的端子上。插入電源時(shí),您可能會(huì)看到LED閃爍以指示傳感器正在工作。

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

RX與白線相同

TX與綠線相同

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

啟動(dòng)SFGDemo軟件,然后單擊左下角的打開(kāi)設(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è)置

如果打開(kāi)設(shè)備時(shí)出現(xiàn)錯(cuò)誤,請(qǐng)檢查接線,并嘗試交換傳感器上的RX和TX線,這是常見(jiàn)的混合現(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ù)該過(guò)程,以獲得一個(gè)第二次清潔打印。用同一根手指!

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

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

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

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

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

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

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

用于Arduino的接線

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

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

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

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

RX與白線相同

TX與綠線相同

Arduino UNO和兼容的布線

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

您可以通過(guò) 3.3V 或 5V為傳感器供電

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

硬件序列接線

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

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

打開(kāi)Arduino庫(kù)管理器:

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

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

軟和硬串行

默認(rèn)情況下,草圖使用軟件串行(Arduino UNO和兼容版本)。如果您使用的是帶有硬件串行的設(shè)備,例如沒(méi)有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波特打開(kāi)串行監(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)檫@是常見(jiàn)問(wèn)題。

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

使用Arduino注冊(cè)

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

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

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

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

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

Python和CircuitPython

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

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

傳感器接線

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

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

RX與白線相同

TX與綠線相同

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

CircuitPython微控制器接線

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

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

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

由于有數(shù)十種Linux計(jì)算機(jī)/主板可以使用,因此我們將顯示Raspberry的接線皮。對(duì)于其他平臺(tái),請(qǐng)?jiān)L問(wèn)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ì)說(shuō)明,請(qǐng)參見(jiàn)《 Raspberry Pi上CircuitPython指南》的“ UART/串行”部分。

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

CircuitPython指紋庫(kù)安裝

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

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

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

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

adafruit_fingerprint.mpy

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

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

指紋庫(kù)的Python安裝

您需要安裝 Adafruit_Blinka 庫(kù),該庫(kù)在Python中提供了CircuitPython支持。這可能還需要在您的平臺(tái)上啟用硬件UART(請(qǐng)參見(jiàn)上面的紅色說(shuō)明)并確認(rèn)您正在運(yùn)行Python3。由于每個(gè)平臺(tái)都略有不同,并且Linux經(jīng)常更改,請(qǐng)?jiān)L問(wèn)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的用法

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

CircuitPython微控制器用法

一旦安裝了庫(kù),請(qǐng)運(yùn)行此 code.py 在CircuitPython開(kāi)發(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?,F(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)長(zhǎng),但是它可以幫助您設(shè)置和測(cè)試傳感器!

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

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

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

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

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

刪除打印-清除模型

注冊(cè)指紋

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

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

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

查找指紋

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

刪除指紋

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

下載

github上的Arduino接口庫(kù)

用戶(hù)手冊(cè)

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

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

“ SFGDemo”僅用于Windows的測(cè)試軟件

責(zé)任編輯:wv

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

    評(píng)論

    相關(guān)推薦

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

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

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

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

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

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

    光學(xué)雨量計(jì)雨量傳感器的原理與工作機(jī)制

    光學(xué)雨量計(jì)雨量傳感器的原理與工作機(jī)制 光學(xué)雨量計(jì)是一種常用的雨量傳感器,它通過(guò)光學(xué)原理來(lái)測(cè)量雨量。光學(xué)
    的頭像 發(fā)表于 04-26 13:55 ?847次閱讀
    <b class='flag-5'>光學(xué)</b>雨量計(jì)雨量<b class='flag-5'>傳感器</b>的原理與工作機(jī)制

    光學(xué)雨量計(jì)雨量傳感器在氣象監(jiān)測(cè)中的重要作用

    光學(xué)雨量計(jì)雨量傳感器在氣象監(jiān)測(cè)中的重要作用 光學(xué)雨量計(jì)是一種使用光學(xué)原理測(cè)量降水量的雨量傳感器,它在氣象監(jiān)測(cè)中起到了重要的作用。本文將從原理
    的頭像 發(fā)表于 04-22 15:18 ?473次閱讀
    <b class='flag-5'>光學(xué)</b>雨量計(jì)雨量<b class='flag-5'>傳感器</b>在氣象監(jiān)測(cè)中的重要作用

    多感科技攜自研的光學(xué)傳感器芯片及產(chǎn)品亮相深圳傳感器展覽會(huì)

    4月14日-16日,多感科技攜自主研發(fā)的光學(xué)傳感器芯片及應(yīng)用產(chǎn)品展示套件參展深圳傳感器展覽會(huì),此次參展不僅是對(duì)多感科技光學(xué)傳感器芯片技術(shù)實(shí)力
    的頭像 發(fā)表于 04-19 09:10 ?722次閱讀

    光學(xué)雨量計(jì)雨量傳感器的工作原理與實(shí)時(shí)數(shù)據(jù)采集

    光學(xué)雨量計(jì)雨量傳感器的工作原理與實(shí)時(shí)數(shù)據(jù)采集 光學(xué)雨量計(jì)是一種常用的雨量傳感器,它通過(guò)光學(xué)原理實(shí)現(xiàn)對(duì)降水量的測(cè)量。其工作原理主要包括兩個(gè)方面
    的頭像 發(fā)表于 04-17 10:55 ?793次閱讀
    <b class='flag-5'>光學(xué)</b>雨量計(jì)雨量<b class='flag-5'>傳感器</b>的工作原理與實(shí)時(shí)數(shù)據(jù)采集

    光學(xué)雨量計(jì)紅外雨量傳感器應(yīng)用于集水測(cè)量

    光學(xué)雨量計(jì)紅外雨量傳感器應(yīng)用于集水測(cè)量 光學(xué)雨量計(jì)是一種通過(guò)光學(xué)原理來(lái)測(cè)量降水量的傳感器。它采用紅外輻射技術(shù),通過(guò)分析雨滴對(duì)紅外光的散射和吸
    的頭像 發(fā)表于 04-16 14:00 ?392次閱讀
    <b class='flag-5'>光學(xué)</b>雨量計(jì)紅外雨量<b class='flag-5'>傳感器</b>應(yīng)用于集水測(cè)量

    光學(xué)雨量計(jì)紅外雨量傳感器應(yīng)用雨季雨量灌溉監(jiān)測(cè)

    光學(xué)雨量計(jì)紅外雨量傳感器應(yīng)用雨季雨量灌溉監(jiān)測(cè) 河北穩(wěn)控科技光學(xué)雨量計(jì)是一種通過(guò)紅外技術(shù)進(jìn)行雨量檢測(cè)的裝置,它基于紅外傳感器的原理,利用紅外線的反射來(lái)監(jiān)測(cè)和記錄降雨量。在雨季雨量灌溉監(jiān)測(cè)
    的頭像 發(fā)表于 04-14 17:16 ?623次閱讀
    <b class='flag-5'>光學(xué)</b>雨量計(jì)紅外雨量<b class='flag-5'>傳感器</b>應(yīng)用雨季雨量灌溉監(jiān)測(cè)

    光學(xué)雨量計(jì)紅外雨量傳感器在降水監(jiān)測(cè)上的優(yōu)勢(shì)與特點(diǎn)

    光學(xué)雨量計(jì)紅外雨量傳感器在降水監(jiān)測(cè)上的優(yōu)勢(shì)與特點(diǎn) 光學(xué)雨量計(jì)紅外雨量傳感器是一種通過(guò)紅外輻射技術(shù)來(lái)實(shí)時(shí)監(jiān)測(cè)降水量的傳感器。它與傳統(tǒng)的雨量計(jì)相
    的頭像 發(fā)表于 04-12 13:39 ?430次閱讀
    <b class='flag-5'>光學(xué)</b>雨量計(jì)紅外雨量<b class='flag-5'>傳感器</b>在降水監(jiān)測(cè)上的優(yōu)勢(shì)與特點(diǎn)

    光學(xué)雨量計(jì)紅外雨量傳感器應(yīng)用于小型氣象站

    光學(xué)雨量計(jì)紅外雨量傳感器應(yīng)用于小型氣象站 隨著氣候變化對(duì)人類(lèi)生活和農(nóng)業(yè)生產(chǎn)的影響越來(lái)越大,氣象觀測(cè)設(shè)備的需求也逐漸增加。其中一種常見(jiàn)的氣象觀測(cè)設(shè)備是雨量計(jì),用于監(jiān)測(cè)降水量。在小型氣象站中,光學(xué)雨量計(jì)
    的頭像 發(fā)表于 04-11 11:23 ?479次閱讀
    <b class='flag-5'>光學(xué)</b>雨量計(jì)紅外雨量<b class='flag-5'>傳感器</b>應(yīng)用于小型氣象站

    大氣監(jiān)測(cè)應(yīng)用中的傳感器

    根據(jù)檢測(cè)方法的不同, 傳感器可分為光學(xué)傳感器、 電化學(xué)傳感器等;根據(jù)反應(yīng)原理的不同, 傳感器可分為酶生物
    發(fā)表于 03-25 13:55 ?492次閱讀

    如何利用反射傳感器的優(yōu)勢(shì),以簡(jiǎn)化并改進(jìn)微型光學(xué)傳感器的設(shè)計(jì)。

    反射傳感器是設(shè)計(jì)微型光電開(kāi)關(guān)的得力助手。它們精巧直觀,可用來(lái)簡(jiǎn)化人機(jī)交互。這些傳感器通常隱藏在紅外 ( IR ) 透鏡蓋后面,當(dāng)手指或其他物體接觸鏡蓋表面時(shí),傳感器會(huì)迅速做出響應(yīng)。 光學(xué)
    的頭像 發(fā)表于 03-13 16:09 ?521次閱讀
    如何利用反射<b class='flag-5'>傳感器</b>的優(yōu)勢(shì),以簡(jiǎn)化并改進(jìn)微型<b class='flag-5'>光學(xué)</b><b class='flag-5'>傳感器</b>的設(shè)計(jì)。

    指紋掛鎖方案——采用ACH512或ACM32FP4指紋芯片和88*112傳感器,指紋識(shí)別速度快,BOM成本低

    方案概述指紋掛鎖方案采用ACH512或ACM32FP4指紋芯片和88*112傳感器,指紋識(shí)別速度快,BOM成本低,非常適合掛鎖、內(nèi)門(mén)鎖、箱包鎖、箱柜鎖等場(chǎng)景。方案特點(diǎn)? 主控+算法單芯
    發(fā)表于 03-12 11:46

    指紋傳感器的定義 指紋傳感器的應(yīng)用

    指紋傳感器的定義 指紋傳感器的應(yīng)用? 指紋傳感器是一種生物識(shí)別技術(shù),通過(guò)檢測(cè)和分析人體
    的頭像 發(fā)表于 03-05 17:35 ?3371次閱讀