我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 1021|回复: 3

[技术文章] 指纹识别在嵌入式IoT系统中的实现和设计要点

[复制链接]
  • TA的每日心情

    4 天前
  • 签到天数: 60 天

    [LV.6]常住居民II

    1万

    主题

    8185

    回帖

    5万

    积分

    三级逆天

    积分
    53710

    终身成就奖特殊贡献奖原创先锋奖金点子奖优秀斑竹奖宣传大使奖

    发表于 2018-1-5 12:52:40 | 显示全部楼层 |阅读模式


    在系统实现上面,智能手机本身拥有强大的计算能力和丰富的内存资源,实现指纹识别并不困难,但在嵌入式系统中特别是基于MCU的应用场合,其运算能力、内存资源等都受到限制,本文介绍了一种基于单片机系统的指纹识别方案和设计要点。


    随着指纹识别在智能手机上面的普及,指纹识别技术在越来越多的场合中得到应用。除了手机应用之外,在移动支付、门禁系统、智能家庭等嵌入式场景中也逐渐普及开来。在系统实现上面,智能手机本身拥有强大的计算能力和丰富的内存资源,实现指纹识别并不困难,但在嵌入式系统中特别是基于MCU的应用场合,其运算能力、内存资源等都受到限制,本文介绍了一种基于单片机系统的指纹识别方案和设计要点。

    如上图所示,这是一个WiFi指纹识别前端的系统框图,其应用场景是:手指按压指纹识别模块时,指纹数据被采集并传输到单片机,单片机经过识别算法对指纹数据进行处理后,把处理结果通过WiFi模块无线传输到云端参与身份识别的业务。
    在具体实现上面,由于指纹识别算法涉及较多的浮点运算,以及需要暂存指纹点阵的原始数据和中间运算数据,故对于运算能力和存储空间有硬性的要求,在目前主流的单片机架构中Cortex-M4架构集成FPU浮点处理单元,在100MHZ主频下,其浮点数运算能力可以达到要求。指纹识别算法代码编译后占用上百K字节的代码空间,考虑到WiFi网络连接、应用层代码等整体上以1MB左右的Flash代码空间为宜,数据存储的需求以512KB的SRAM空间为宜。系统工作时,在指纹识别过程中需要强大的运算能力,而在没有指纹按压的时候则需要运行在低功耗状态,以适应嵌入式系统对功耗的要求。
    在我们的方案中,选择了具有XIP特性的MCU,把代码存放在外置SPI Flash中并可以在系统执行,从而大大扩展了代码存储空间。外置SPI Flash中的代码在执行中由于需要内部Cache缓存,故执行速度略低。对于识别算法的核心代码,则可以在Boot阶段拷贝到SRAM中运行,从而提升运行速度。XIP + SRAM的代码空间分配方案兼顾了性能和成本,是此设计的一个亮点。
    指纹识别芯片是系统实现的核心部件,当前比较主流的技术指标,要求指纹识别芯片基于电容技术、支持活体检测(Live Finger Detection)、按压式、采用玻璃盖板,可以实现360度任意方向的触摸,能够支持滑动导航。活体检测技术具有防止假指纹破解的特点,集成心率检测功能,方便用户实时查看心率值。传感器集成化方便整机厂商的设计和整机集成,使得其方便应用于嵌入式单片机系统。
    指纹识别芯片和主机的数据接口要求在指纹数据采集的过程中达到5Mbps以上的传输速率,低于5Mbps的数据吞吐量将影响用户体验。UART、 I2C等低速接口在吞吐量上无法达到要求,SPI接口简洁而且传输速率完全可以达到要求,是最合适的通信接口。
    指纹识别芯片周期性检测Pixel传感器区域是否有手指触摸,检测到传感器有手指触摸时,会立刻采集活体检测数据,数据采集完成后会通过中断通知Host读取,MCU读取完活体检测数据后芯片进行指纹扫描,指纹扫描开始后就会通过中断通知Host读取数据。指纹数据的扫描和Host数据的读取同步进行。
    单片机接收到指纹芯片传输来的Pixel原始数据后通过识别算法运算后通过WiFi模块传输到云端。由于MCU本身资源的限制,WiFi模块本身需要集成WiFi驱动、TCP/IP协议栈,并可以做作为一个相对独立的单元运行应用层代码,这样就极大的减轻了MCU host端的负担. WiFi模块通过串口和MCU进行数据交互。推荐基于Qualcomm QCA4004的WiFi IoT模块。

    低功耗和抗干扰也是系统设计的一个要点,指纹识别模块在没有手指按压时仍然周期性的进行传感器扫描,虽然功耗低于数据传输期间,但为适应电池供电的场合,希望在没有按键触摸期间可以关掉指纹识别模块的电源,为此如上图所示增加了触摸按键,检测到有手指靠近的时候打开指纹识别芯片的电源,进行指纹扫描采集数据,当长时间没有手指触摸的时候关闭指纹扫描模块的电源,从而达到降低功耗的目的。另外在数据采集期间为了防止触摸按键对指纹识别传感器的影响,在触摸按键后增加一级模拟开关,在采集开始前MCU输出一个控制信号将触摸按键的模拟信号进行隔离。
    回复

    使用道具 举报

    该用户从未签到

    2

    主题

    2415

    回帖

    11

    积分

    二级逆天

    积分
    11

    社区居民终身成就奖特殊贡献奖原创先锋奖优秀斑竹奖

    QQ
    发表于 2018-1-5 13:07:10 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    14

    主题

    160

    回帖

    0

    积分

    1元学习PADS(2期)

    积分
    0

    终身成就奖

    QQ
    发表于 2018-1-5 16:02:41 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    2316

    回帖

    0

    积分

    二级逆天

    积分
    0

    终身成就奖原创先锋奖优秀斑竹奖

    QQ
    发表于 2018-1-5 20:12:51 | 显示全部楼层
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    论坛开启做任务可以
    额外奖励金币快速赚
    积分升级了


    Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

    本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

    平平安安
    TOP
    快速回复 返回顶部 返回列表