单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 724|回复: 0
打印 上一主题 下一主题
收起左侧

简单易懂的R307指纹模块开发说明和教程-四川成都电路板控制器工控仪器开发定制

[复制链接]
跳转到指定楼层
楼主
yonko 发表于 2018-10-27 21:02 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yonko 于 2018-10-28 20:49 编辑

文-沙鸥 2018-10-27
什么是“读书百遍,其义自见”,就是读一遍官方手册,不明觉厉,读第二遍手册,有一点点懂,第三遍第四遍即以后,慢慢地,一点一点地,终于懂了。
这让我终于承认了我不是一目十行、过目不忘、超强理解的天才,几经周折最终把这个指纹模块调试成功通过验证,当然除了我自己,也要感谢厂家的技术支持。本文我将用更加通俗和便于理解的方式把这个模块的大部分知识点讲述一遍,我想,你只需要一遍就能轻松搞定R307了。
1,        R307的概述和总体实现流程
不少单位考勤或者门禁是用了指纹的,手指摁一下,嘟的一声,显示工号、姓名和上班的时间,你完成了考勤,手指摁一下,啪的一声,门打开了,你可以顺利进入,这就是指纹技术,指纹的应用已经很常见了,其中R307就是其中很常见的指纹模块。
R307是光学指纹模块,同时带有触摸感应输出信号接口。
R307可以使用串口或者USB进行操作控制,本文主要讲串口的实现方式。
●R307的接口是怎样的




如图 1图 2就是R307的主要引脚的接线说明和定义,一般用的时候需要把R307模块接上位机,上位机可以是电脑,也可以是微处理器(MCU)控制板,也可以是PLC等。假如是MCU,可以如图 3那样子接线,PLC也类似,假如是接电脑可以用USB转TTL串口线,注意串口线与R307模块需要共地。
注意:R307的串口是TTL电平,不要搞成RS232去了,会损坏模块。


R307的5#引脚是触摸感应的接口,要使用的话先要把6#引脚接到电源正极VCC,那么当有手指触摸到指纹模块的时候5#引脚会输出一个电平,没有手指触摸的时候5#引脚输出另一种电平,MCU检测这个电平信号变化就能判断是否有手指触摸。这个功能是根据需要选择使用的。
●R307的一些重要的内部系统资源
>>图像缓冲区ImageBuffer: 模块内设有一个 72K 字节的图像缓冲区, 图像缓冲区 ImageBuffer 用于存放图像数据和模块内部图像处理使用。 使用上传和下载图像指令时,图像为 256 ╳ 288 像素 BMP 格式。 通过 UART 口上传或下载图像时为了加快速度,只用到像素字节的高 4 位,即将两个像素合成一个字节传送。通过 USB 口则是整 8 位像素。
>>特征文件缓冲区CharBuffer1 和 CharBuffer2: 二个 512bytes(256 字) 大小的特征文件缓冲区,用户可以通过指令读写任意一个缓冲区。CharBuffer1 或 CharBuffer2 既可以用于存放普通特征文件也可以用于存放模板特征文件。
图像缓冲区和两个特征文件缓冲区中的内容在模块断电后丢失。
>>指纹库: 不同模块的指纹库容量不同。每个指纹模块的指纹模板都是按照序号存放。序号pageID定义为: 0、 1、 2、 3......(N-1)(N 为模块指纹库容量)。用户只能根据相应序号访问指纹库的相应模板内容;相应的存储和搜索功能都是针对指纹序号进行操作。R307可以存储1000个指纹模板。


以上的R307内部资源在接下来的文章中会有应用,不理解也没什么关系,本文会告诉你怎么使用。
●本文主要讲讲怎么实现以下两个功能
①        功能1:把手指摁在指纹模块上,实现注册,与一个唯一的编号建立联系
当手指摁在指纹模块上的时候,上位机检测到有触摸,上位机给这个指纹指定一个编号,有了这个编号就能与什么照片,什么工号,什么姓名一一对应了,这就是指纹的注册。这个功能用于管理员给新成员注册指纹的时候使用。
★一般注册功能需要采集两次指纹,生成指纹特征文件,合成模板,保存指纹模板到指定的指纹库ID号存储空间,这个指纹库ID号和具体人员的编号对应即可。具体实现流程是这样的:
->手指摁在指纹模块上;
->上位机发送读取指纹图像到ImageBuffer的指令(GR_Getimage),指纹模块接收到指令后执行,并反馈是否成功的信息,如不成功,上位机可以选择再发送一次指令;
->上位机发送根据指纹图像生成指纹特征文件、存特征文件到CharBuffer1的指令(GR_genchar),指纹模块接收到指令后执行,反馈是否成功的信息,如不成功,上位机可以选择再次发送一次指令;
说到特征文件,特征文件的大小为256字节,然后其实我也不是很理解什么是特征文件,我想可以理解为一连串的数字,这个数字串就是你的指纹的唯一代表。根据这个数字串就能辨别不同的指纹。
->上位机发指令再一次读取指纹图像(GR_Getimage),生成指纹特征文件,不过这次存特征文件到CharBuffer2(GR_genchar)。
-> 上位机发指令将CharBuffer1 和CharBuffer2中的指纹特征文件合成并注册指纹模板(GR_RegModel),指纹模板文件会保存在CharBuffer1 和CharBuffer2中,然后等待下位机的反馈信息。我也不清楚指纹模板是什么意思,就暂且理解为指纹模板类似于指纹特征吧。
->上位机发送指令将CharBuffer1 或CharBuffer2中的指纹模板保存在指纹库中指定的ID号代表的存储空间里面(GR_StoreChar),等待下位机反馈。
OK,以上就完成了指纹注册,并与唯一的ID号建立联系。
②        功能2:把手指摁在指纹模块上,自动搜索这个指纹代表的编号
当手指摁在指纹模块上的时候,模块在指纹库自动搜索对应的编号,并把编号传输给上位机,然后就能在上位机上显示什么照片、工号、姓名了,需要的话还可以记录上下班时间、执行开门关门等功能。
★这个的流程就是,先采集指纹图像到ImageBuffer,根据指纹图像生成指纹特征存储到CharBuffer1 或CharBuffer2中(GR_genchar),再以CharBuffer1 或CharBuffer2中的指纹特征查找指纹库,一般就能获取匹配的指纹在指纹库中的ID号。
补充说明一下,虽然指纹特征文件是一连串的数字,但是你要做指纹匹配还是只能在指纹模块上进行对比,将CharBuffer1 或CharBuffer2中的特征文件与指纹库中文件对比,因为就算是一个手指,两次采集的指纹特征文件数据看起来也是很不一样的,传到其他设备或者平台是无法对比的。
2,        一点一点详解R307的操作
上一章说了我们使用指纹模块,需要上位机给模块发指令,模块执行后再反馈信息。那么通信协议怎样的呢?指令和反馈信息的格式又是怎样的呢?
●通信协议


●指令和反馈信息的格式
R307模块的指令很多,这里仅仅对GR_GetImage指令和应答反馈信息介绍一下,更多的信息去看官方说明书吧。


【包头】是固定的0XEF01。
【模块地址】默认是0xffffffff,用户可以自己去用指令修改,这个就是模块的身份证,在多个模块使用的时候应该用得着。
【包标识】是根据包的类型变化的,用于区别指令包、应答包、结束包等的类型,具体表示什么意思去查官方手册吧。
【包长度】这个指令包中包长度屁股后面到结尾所有数据的字节个数,也就是包含了多少个字节的数据。
【指令码】是根据指令变化的,比如录入图像是01,生成特征的指令是02,然后其他的去查官方说明书吧。
【校验和】就是包标识到校验和前的所有数据的相加的数值。



反馈信息的格式和信息含义与指令的类似,可以做类比思考。
●举个的例子
这里举个具体的例子来练一练,看看怎么使用这个模块的。
->接线。接好线,上电。
->通信协议设置
假如上位机是电脑,用串口助手调试的话,就如图 9这样设置串口通信协议吧。


->发送指令和应答



3,        小结
写了这么多,已经将五十多页的官方说明书精简为这么几页了,要再精简的话,只需要关注文中带★标注的那几句话即可。更多精彩,欢迎关注微信公众号“永珂在线”,电路板工控自动化控制器仪器软件APP定制开发,业务QQ 2531263726。
不过R307并不适合于联网云端使用,例如一个模块将指纹特征数据提交到服务器,其他模块共用服务器这个指纹特征数据,这种情况R307不适合,因为光学指纹模块每个模块的光路可能有细微的差异,同一根手指在这个模块和另一个模块生成的指纹特征可能会不一致,可能无法识别。如需要联网使用,大面积电容式指纹模块是较好的选择。



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

QQ|手机版|小黑屋|单片机论坛 |51hei电子论坛2群 联系QQ:125739409;技术交流QQ群219535678

Powered by 单片机教程网

快速回复 返回顶部 返回列表