0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

用树莓派做一个指纹识别方案,难不难?

上海晶珩电子科技有限公司 ? 2025-08-09 13:14 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

让我们在树莓派单板计算机上解锁生物识别控制功能吧!生物识别技术利用每个人独有的、不易复制的生理或行为特征进行身份验证。地球上每个人的指纹都是独一无二的,让我们一起来探索指纹的奇妙用途吧!本文将介绍如何以最快的方式将指纹扫描仪直接安装到树莓派单板计算机上,并进行编程和使用。本指南将帮助您快速在任何项目中添加指纹检测、采集和验证功能。

下图是今天我们将使用的指纹扫描仪,它连接到了树莓派4 Model B上,右侧则是扫描仪在3D打印壁挂式外壳中搜索指纹的情景。我们今天要探索的这款特定扫描仪是Adafruit光学指纹传感器,它配备了插座头电缆和电子元件。

其中一个组件是DSP数字信号处理器)芯片,它负责该模块的所有渲染、计算、指纹特征查找和搜索工作。这款DSP芯片能够在板载闪存中存储300个独特指纹。这意味着,即使系统断电,硬件仍会记住所有已注册的指纹。

acf7ffc4-74df-11f0-9080-92fbcf53809c.png

任何连接的微控制器(如Arduino Uno)或微处理器(如树莓派4 Model B)都可以通过TTL(UART)串行通信与其进行交互。发送的数据可以启动新指纹的注册过程、创建所采集指纹的数字图像或报告检测到的指纹。这意味着您可以使用指纹来控制与GPIO连接的硬件。GPIO(通用输入输出)引脚可用于控制几乎无限数量的传感器和机制,如用于解锁门的电磁阀、照亮您一天的LED灯或项目所需的任何组件。以下是我的《用树莓派单板计算机控制12V电磁阀》的指南,该电磁阀可轻松由Adafruit指纹扫描仪触发。

本指南将演示如何注册新指纹以及如何使用指纹控制GPIO连接的硬件。此外,还将展示如何拍摄指纹的数字图像。本指南的内容如下:

所需材料

硬件组装

软件设置

运行主指纹脚本

使用已知指纹脚本激活GPIO

后续步骤(创建扫描指纹的数字图像)

下载资源

此处创建的系统是一种生物识别认证形式。指纹认证会自动将用户的指纹与存储的指纹模板进行比较,以验证用户身份。目前主要有三种指纹识别器:光学、超声波和电容式。光学指纹传感器是传统方法,也是本指南中使用的方法。它依靠类似摄像头的设备拍摄放置在固定距离玻璃层上的指纹图像。为了增强安全性,一些光学传感器还配备了额外组件或运行简单的人工智能算法,以确认放置在读取器上的是活体手指。电容式指纹传感器常见于手机解锁。电容式传感器有两种类型:被动扫描,指纹上的凸起脊线构成电容器的另一极板;或主动扫描,传感器具有两个极板,指纹脊线会改变预期的电容。这些传感器需要特殊构造,以确保高压静电不会损坏传感电子元件。超声波指纹传感器是最新的指纹识别方法,仅在少数高端应用中出现。它们使用超声波来感知指纹的更深真皮层。这意味着,脏污或划伤的手指不会影响正确的指纹识别。

考验你英语听力的时候到了,你可以直接观看视频


所需材料

以下是设置树莓派以使用光学指纹扫描仪所需的所有材料:

树莓派掌上计算机(我使用的是树莓派4 Model B 2GB,但使用较低配置的树莓派,如树莓派Zero 2,也能完美完成)

Adafruit指纹扫描仪

刷有树莓派操作系统的Micro-SD

用于将系统连接到显示器的Micro-HDMI转HDMI线

电源

鼠标和键盘


硬件组装

第一步是小心地将提供的电线与扫描仪上的8针1毫米间距连接器对齐并连接,如下图所示。请注意,不要接反。另外请注意,母连接器侧与板子不完全平行,且较为脆弱。为防止损坏,请仅握住连接器部分,轻轻而稳固地将这两部分推在一起。连接后,电线不易脱落。

ad2141ea-74df-11f0-9080-92fbcf53809c.png

然后,我们将把从扫描仪引出的四根电线连接到树莓派单板计算机上,连接方式与下图完全相同。如果需要,请右键点击图片并在新标签页中打开,以便轻松放大图片。有四根电线从指纹扫描仪中引出,它们将不与任何东西连接。红线为3.3V电源,应连接到树莓派的3.3V电源引脚上。白线连接到树莓派的TX GPIO 14引脚。黄线连接到树莓派的RX GPIO 15引脚。黑线为接地线,应连接到树莓派的接地引脚上。如果将此指纹扫描仪连接到5V电源,它将会损坏,因此在启动系统前,请务必再次检查是否已将电源连接到3.3V引脚上。

ad45d118-74df-11f0-9080-92fbcf53809c.jpg

完成上述步骤后,插入刷有树莓派操作系统的Micro-SD卡,并将其作为台式计算机使用。添加鼠标、键盘和HDMI显示器。然后,通过插入USB-C电源来启动树莓派系统。一旦启动,指纹扫描仪将立即亮起。请参见下图,其中展示了所有这些部件以及鼠标和键盘的连接情况。

ad55d374-74df-11f0-9080-92fbcf53809c.jpg

至此,硬件组装完成!


软件设置

在全新的树莓派操作系统版本上,需要安装一些软件包并更改设置。这将使指纹扫描仪与树莓派之间能够进行正确通信。将电源接入系统并完成(新的)首次启动向导后,您将看到树莓派桌面。如果您在此阶段需要额外帮助,请点击此处查看相关指南。

第一步是开启串口连接功能,这将使树莓派单板计算机能够通过TTL UART串行通信与指纹扫描仪进行通信。默认情况下,在树莓派操作系统上,此通信方法是关闭的。要开启此功能,请打开树莓派配置菜单(通过左上角菜单并滚动到首选项找到),然后在接口选项卡下启用串口连接。在此处,请确保串行控制台已关闭。请参见下图中的操作。

ad649b98-74df-11f0-9080-92fbcf53809c.jpg

现在,系统已重新启动并连接到互联网,请通过点击屏幕左上角的黑色按钮打开一个新的终端窗口。这将打开一个终端窗口。请参见下图中的操作以及指向已点击的终端按钮的大红箭头。

ad704aa6-74df-11f0-9080-92fbcf53809c.png

这个终端窗口将使我们能够从互联网上下载所需的软件包。现在,在终端中输入以下命令并按回车键,以获取所需的所有软件包。如果提示继续/确认安装,请输入Y并按回车键。请参见下文中的一个命令下载并请求确认的图像。

sudo pip3 install adafruit-circuitpython-fingerprint pyfingerprintgitclonehttps://github.com/adafruit/Adafruit_CircuitPython_Fingerprint.gitgitclonehttps://github.com/bastianraschke/pyfingerprint.git

ad829378-74df-11f0-9080-92fbcf53809c.png

完成后,我们就已完全设置好树莓派单板计算机,以使其与指纹扫描仪配合使用。


运行主指纹脚本

如果您已按照上述软件部分的操作进行,那么我们要运行的Python脚本应该已经在系统上了。我们要运行的特定脚本名为fingerprint_simpletest_rpi.py。请参见下图中的脚本目录位置/home/pi/Adafruit_CircuitPython_Fingerprint/examples,以及该文件被右键点击并在Thonny IDE中打开的情况。请按照相同步骤操作,以便在Thonny IDE中打开此脚本。

ad9a43b0-74df-11f0-9080-92fbcf53809c.png

现在,我们需要对fingerprint_simpletest_rpi.py Python脚本进行轻微调整,以便其能够与我们的设置配合使用。通过在行首添加#符号来注释掉第14行。通过删除#符号来取消注释第17行。确保在完成此操作后保存脚本。请参见下图中的操作。

ada93118-74df-11f0-9080-92fbcf53809c.png

完成上述步骤后,我们现在可以点击大大的绿色运行按钮了!这将向shell输出一些信息,并提供几个选项。让我们将手指注册到系统中。为此,请输入e并按回车键。然后,输入1并按回车键,以将此指纹索引为第一个。每个指纹都将有一个与之关联的索引号,您可以拥有300个索引指纹。请参见下文中的操作。

adba795a-74df-11f0-9080-92fbcf53809c.png

按下回车键后,它将引导您完成一个基于文本的向导,以添加新手指。当扫描仪亮起时,您需要将手指按在扫描仪上两次。按照文本提示操作,您的第一个指纹将在10秒内注册完成。

adc5d642-74df-11f0-9080-92fbcf53809c.jpg

然后,我们可以通过测试系统来检查它是否已正确注册。在此阶段,请输入f并按回车键。然后,将同一根手指放在扫描仪上。确认shell输出的信息与我的相似,如下图所示。如果是这样,您就已成功注册了手指,并成功识别了您的指纹!太棒了!它甚至提供了一个0到255的置信度值。在我的情况下,我得到了183的置信度分数。仅当您的项目需要更高安全性时,才应将置信度分数纳入考虑。如果扫描仪确认检测到指纹,您可以对此充满信心。

add1ed60-74df-11f0-9080-92fbcf53809c.jpg


使用已知指纹脚本激活GPIO

现在,让我们使用指纹来控制一些GPIO。我使用面包板将一个LED和电阻串联连接到树莓派单板计算机的GPIO21和接地引脚上。这里的目标是根据我们正确识别的指纹来点亮LED。GPIO是连接外部世界的门户,这个LED只是代表您想要连接的任何硬件的占位符。

addc840a-74df-11f0-9080-92fbcf53809c.png

脚本名为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中打开脚本后,您应该就可以开始操作了。如果遇到错误,请仔细检查脚本中任何出现/dev的地方是否都类似于/dev/ttyS0。这将定位到正确的通信串口。指纹扫描仪的灯将亮起,现在您可以将手指放在指纹扫描仪上了。一旦您这样做,它将尝试识别您的指纹,如果识别出已索引的指纹,它将点亮LED一秒。请参见下图中的操作。

adf65114-74df-11f0-9080-92fbcf53809c.jpg

现在,这不仅仅是一个LED,它可以很容易地变成一个用于解锁门或大门的电磁阀,一旦接收到正确的指纹,电磁阀就会打开。这只是两个想法,您可以将这个概念带到任何您想象的地方!以您的生物识别技术为控制杠杆。


后续步骤(创建扫描指纹的数字图像)

我真的很想看看通过指纹扫描仪看到的我的指纹图像是什么样的。脚本example_downloadimage.py可以在本文底部的可下载zip文件中找到,或者在下图下方完整写出。每当您运行此脚本(使用Thonny IDE,与以前相同)并将手指按在扫描仪上时,它将导出一个BMP格式的指纹图像。这大约需要10秒钟的时间。请参见下面(为安全起见已修改)的我的指纹图像!

ae05ea52-74df-11f0-9080-92fbcf53809c.png

#!/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

掌握了这项技术,您很快就能收集到所有朋友的指纹了。因此,如果您有一天醒来,感觉每个人都被一个长得一模一样的双胞胎替换了,您可以使用指纹数据来证实或反驳这一假设。毕竟,同卵双胞胎的指纹并不匹配。


原文地址:

https://core-electronics.com.au/guides/raspberry-pi/fingerprint-scanner-raspberry-pi/

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2567

    文章

    53278

    浏览量

    770020
  • 指纹识别
    +关注

    关注

    43

    文章

    1749

    浏览量

    103502
  • 树莓派
    +关注

    关注

    122

    文章

    2054

    浏览量

    107830
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    求助!!指纹识别。。。FPS200传感器

    最近在做毕业设计、基于52的指纹识别指纹识别模块FPS200、但是这个传感器在哪里买呢?到处都没找到。用过这个传感器的大神们、可以给地址吗?因为之前没学过C++、现在做界面也遇到
    发表于 12-26 16:44

    关于汽车指纹识别方案

    我想做一个汽车指纹识别方案,请大家帮忙想想,什么器件和哪种方案比较好?要求很简单,能存储指纹
    发表于 04-08 22:29

    初学者怎么做指纹识别

    我是大的,在专业的实验室要做一个指纹识别系统,只知道要用32单片机做,这个指纹识别要包括哪几部分,初次接触,希望各位大哥给点帮助。
    发表于 03-01 15:43

    新唐指纹识别

    层板到4层板的电路板,更可以很容易让客户通过EMI和EMC的认证。N329系列基本上是将指纹识别的功能全部集成在IC中,不但可以节省成本更可以比较小的PCB来完成产品。基于上述特
    发表于 01-27 15:06

    【7寸HDMI显示屏申请】基于指纹识别的的智能门禁系统

    安全解锁的作用。项目描述:本项目基于树莓,网络传输模块,指纹识别技术等进行工作,利用指纹识别技术对输入者指纹进行
    发表于 05-17 09:33

    指纹识别算法

    ,实现指纹识别,两者相比较时需要设立临界值,匹配时大于这个阈值,则指纹匹配;当匹配时小于阈值,则指纹不匹配。特征匹配是
    发表于 08-23 11:29

    【TG401_EVB开发板申请】基于arm的指纹识别算法实现

    项目名称:基于arm的指纹识别算法实现试用计划:本人是西安电子科技大学在读研究生。目前在做一个指纹识别算法的arm实现。已经STM32F4系列完成。匹配时间在300ms左右。看到这个
    发表于 12-28 09:52

    指纹识别技术原理及发展

    种情况下,手指表面的干净程度,直接影响到识别的效果。如果,用户手指上粘了较多的灰尘,可能就会出现识别出错的情况。并且,如果人们按照手指,做一个指纹手模,也可能通过
    发表于 11-12 15:36

    什么是屏下光学指纹识别

    屏下指纹解锁技术主要有光学指纹识别技术、超声波指纹识别技术等。目前,光学指纹解锁技术是屏下指纹解锁解决
    发表于 07-30 07:44

    瑞萨MCU指纹识别解决方案

    ST,赛普拉斯已经有了单芯片指纹方案——锁的控制程序和指纹识别程序融合于MCU中,但是目前市场上的主流
    发表于 09-02 13:57

    指纹识别方案

    指纹识别技术是众多生物特征识别技术中的种,指纹识别是将识别对象的指纹进行分类比对从而进行判别。
    发表于 07-21 09:08

    种使用挂锁的指纹识别模块方案

    STC15W201S系列单片机文档下载原理分析本装置直接使用挂锁的指纹识别模块方案,该指纹识别模块添加和删除指纹都通过模块独立完成,不需要外接单片机,使得制作难度大幅降低。该
    发表于 01-10 08:07

    手机指纹识别有什么?

     自从苹果iPhone 5s让指纹识别进入平常百姓家后,搭配指纹识别的手机就越来越多,无论高端、中端或者低端手机,都有搭配指纹识别的机型可选,不过般来说,搭配
    发表于 10-27 11:21 ?7624次阅读

    指纹识别会是新的风口吗

    指纹识别是生物识别技术的种,生物识别是通过系列的技术方案实现人体身份的
    发表于 03-29 22:52 ?884次阅读

    如何700元树莓自己做一个相机?

    手机拍照不够爽,带个单反又太重? 试试做个树莓复古相机,还能自己编写处理算法的那种—— 成本不到700元。 没错,颜值很高,拍出来的照片也能打。 你也可以快速上手做一个。 如何制作
    的头像 发表于 05-20 11:44 ?3430次阅读
    如何700元<b class='flag-5'>用</b><b class='flag-5'>树莓</b><b class='flag-5'>派</b>自己<b class='flag-5'>做一个</b>相机?