指纹识别模块指导
- 格式:doc
- 大小:503.00 KB
- 文档页数:10
通元微指纹识别模组TFP625R用户手册厦门通元微智能科技有限公司目录1.产品规格 (1)2.Pin map (3)3. 概念解释 (3)1)资源开销 (3)2)模组参数 (4)3)指纹库 (4)4.通讯协议 (5)1)数据包格式 (5)2)命令码 (6)3)反馈码 (7)5. 命令 (8)GetImg (8)Img2Tz (9)Match (10)Search (10)RegModel (11)StoreModel (11)LoadChar (12)UpChar (13)DownChar (14)UpImage (15)DeleteChar (16)Empty (17)SetSysPara (17)ReadSysPara (18)SetPwd (19)VfyPwd (19)SetAddr (20)ReadINFPage (21)WriteNotePad (22)ReadNotePad (22)TemplateNum (23)ReadConList (23)Cancel (24)GetMinEmptyID (25)AutoEnroll (26)AutoIdentify (28)6.使用流程 (30)7.休眠与唤醒 (31)8.测试环境 (33)9.技术支持 (34)欢迎使用通元微指纹识别模组TFP625R 。
本文将为客户使用本模组进行指纹识别开发提供必要的说明信息。
本模组为单机指纹识别模组。
模组可以进行指纹注册、指纹识别、指纹验证等功能。
本模组支持UART通讯方式。
1.产品规格TFP625R具有模组自学习功能。
该功能会提升指纹识别的准确率。
匹配同一指纹,在匹配若干次后,匹配分数有所提升。
2.P in map连接器类型:FPC-0.5-6P: 6Pin 条形连接器,间距0.5mm。
3. 概念解释1)资源开销2)模组参数3) 指纹库图3-3, 模板与特征在Flash 中的对应成员0 成员1特征2N-1。
BiometricInterface BoardUser Guideelectronic stepsContents1 What You Need to Get Started2 Setting Up the System3 Enroll a Fingerprint4 How to Identify a Fingerprint5 Delete a Fingerprint6 Board Schematic electronic stepsOverviewelectronic stepsThe Biometric Interface Board is a demonstration board for evaluating SFM3050 ngerprint module. Its an expansion board compatible with Microchip Explorer 16 development board.Fingerprint modules are designed to provide biometric security solution to developersand manufacturers for integration with several application, as access control, time attendance,mobile device, safes and so on. FeaturesHigh-end standalone ngerprint module equipped with RS232 interface.EER < 0.1%Enrollment time 700 msec 1:1 Veri cation time 700 msec1:1000 Identi cation time * 830 msecTemplate size 384 Bytes (reducible to 256 bytes)Template standard ISO19794-2, ANSI-378Getting StartedTo get started, an Explorer 16 Development Board is required. The Biometric Interface Board can be attached to the Explorer 16 Development Board through the K1 connector and it was speci callydesigned to be used with PIC24FJ256GB110 PIM.Pag 1Electronicsteps Presenting...1 What You Need to Get StartedAfter power up the board, wait until the presentation ends, or wait 30 seconds for the system to initialize before pressing S4.STEP1STEP2Press S4 to switch from the apresentation to the menu.STEP3If its your rst time to run the aplication, then you have to start to Enroll a nger rst.Please go to the chapter “Enroll a Fingerprint”. If you have already done the enrollment you can start to identify the same nger, by pressing S6.We provide a simple rmware to demonstrate how to Enroll, Verify and Delete a ngerprint into the SFM 3050 module.After you program the demo rmware to PIC24F256GB110 PIM, and atached the Explorer 16 board to the Biometric Interface Board, power up the Explorer 16, and you will see a quick presentation running on the LCD. Please wait until the presentation ends because the module is also initializing during this time.2 Setting Up the system- Biometric Interface Board- Microchip Explorer 16 Development Board - PIC24FJ256GB110 PIM - Demo rmware- PIC Programer to burn the demo rmware into the PIC24F256GB110 PIMelectronic stepsS3 -> Enroll S5 -> DeleteElectronicsteps Presenting...Press S6 toIdentify FingerPag 2S3 -> Enroll S5 -> DeletePlease insert FingerEnroll Fail ErrorFinger Enrolled Success3 Enroll a FingerprintPress S4 until the LCD shows a menu with S3 and S5 options.STEP1STEP2Press S3 to Enroll a ngerprint.STEP3Insert your ngerprint by pressing the sensor module with your nger .STEP4If the LCD shows the message“Finger Enrolled Success” your ngerprint was correctly enrolled in the module.T roubleshootingIf the LCD shows a Error Message, it can be due to a timeout or to a error reading the ngerprint. Go to Step 1 and try again.electronic stepsPag 3Please insert Finger4 How to Identify a FingerprintPress S4 until the LCD shows a menu with S6 option.STEP1STEP2Press S6 to Identify nger .STEP3Insert your ngerprint by pressing the sensor module with your nger .STEP4If the LCD shows the message“Finger Match Success” your ngerprint was correctly identi ed by the module.T roubleshootingIn case you received a “No match” message,it can be due to a timeout , error reading the ngerprint or the nger is diferent from the one you previously Enrolled.Go to Step 1 and try again, or if the nger is diferent you must Enroll rst.Press S6 toIdentify FingerFinger Match SuccessNo match, finger not identifiedelectronic stepsPag 45 Delete a FingerprintPress S4 until the LCD shows a menu withS5 option.STEP1STEP2Press S5 to Delete ngerprint.STEP3If the LCD shows the message “Done Deleting” your ngerprint was correctly deleted by the module.Done Deleting Successelectronic steps S3 -> EnrollS5 -> DeletePag 56 Board Schematicelectronic steps31A 0N BIO201201Pag 6DEVELOPMENT BOARDS - INTERFACE BOARDS - ELECTRONIC KITS - STARTER KITSAll rights reserved. Name and logos are trademarks of STEPTRONIC Lda. All othertrademarks and services marks are the property of theirs owners.electronic steps。
(1)打开“003 指纹识别模块用户手册.pdf”先看第2页,参数介绍。
模块工作在3.6V-6V,他的波特率出厂设定在9600 bps。
RXD、TXD兼容CMOS和TTL电平,也就是3.3V和5V都兼容。
(2)接着第3页模块接线介绍。
(3)再仔细查看第4、5页的内容。
“命令包格式”这个是主机(上位机)发送给模块的,“数据包格式”和“结束包格式”(这两个命令可以是上位机发,也可以是模块发),要注意的包的格式。
“指令应答”(指纹模块应答包格式)。
需要注意的是校验位的计算方法:“校验和是从包标识至校验和之间所有字节之和,超出2 字节的进位忽略。
”第6、7、8、9页也需要查看一下。
(4)下面我们来讲一个具体的例子---- 验证口令PS_VfyPwd这个命令,通过此命令,我们可以知道模块是不是连接正常。
这个命令在第21页从前面了解到芯片地址是FF FF FF FF 共四个字节(4bytes),默认口令为00 00 00 00共四个字节(4bytes)。
发送的命令是:EF 01 FF FF FF FF 01 00 07 13 00 00 00 00 00 1B其中命令分分别讲解如下:EF 01(两个字节的包头)FF FF FF FF(四个字节芯片地址)01(包标识)00 07 (两个字节长度,不足的用0补齐,不能不写)13 (一个字节指令码)00 00 00 00 (四个字节口令)00 1B(两个字节校验和)校验和计算方法:在第4、5页上面,这里计算就是:01(包标识开始)+00+07+13+00+00+00+00=1B,由于是两个字节校验和,所以前面补00,最好的校验和为:00 1B。
这就是发送一个命令介绍,其它的类似,请用户自己参考说明书。
请注意,用户最好不要随意更改地址和口令,除非需要,否则不要更改,以免您记不住,或者更改错误,就需要返厂维修了(重新下载程序)。
指纹识别模块实验注:此说明书适用于EL-EMCU-I实验箱、EXP-89S51/52/53CPU板。
一、实验目的掌握指纹模块的开发协议;掌握16C550芯片的编程方法;二、实验设备计算机,KEIL UVISION2环境,EL-EMCU-I实验箱,直连串口电缆、交叉串口电缆(针对针),导线,短接块。
三、基本原理指纹识别模块采用MCU和PC两种控制方法,供用户灵活选用。
其指纹模块采用深圳十指科技的TF-MD-M12开发模块,MCU端的外围电路由通过芯片16C550芯片进行并口到串口的转换,PC端的外围电路用MAX3232控制,模块的电源由实验箱上的接口插座提供。
下面将具体介绍一下各部分的组成及其原理。
TF-MD-M12开发模块的功能特点:◇先进的指纹识别算法(商业);◇高速算法,500人指纹只要0.43 秒;◇1:N,1:1 比对(两种可选);◇用户可分多级权限管理(1、2、3);◇多级的安全级别自主设置,可更多应用于不同场所;◇采用高精密的光学成像元件,识别准确;◇体积小,电路只有:40*58mm,易于集成;◇功能高度集成,存于DSP中,不用再加电路板;◇标准接口协议,开发简单;◇采用面光源,成像速度快;◇内部采用高级数字处理器DSP,处理速度快;◇识别率高,最高可达:0.00001% ;◇稳定性好,四年不断升级和优化;◇具低电压报警功能;◇微功耗设计适于电池供电;◇主板低频设计抗外部电磁干扰;◇主要供外销厂家和集成商,开发和集成产品;◇设计精巧适于嵌入指纹锁/小指纹门禁机/手持指纹识别设备;TF-MD-M12开发模块的主要性能指标:◇电路板尺寸(mm)58×40◇采集头分辨率500DPI◇指纹容量80 枚◇比对时间<1 秒◇认假率0.0001%◇拒真率0.01%◇动态电流<140mA◇待机电流<18µA◇工作电压5-7.5V其开发协议请用户参见随程序附带的TF-MD-M1开发协议PDF文档。
准备实验需要的设备。
硬件: 试验箱、电源线、串口线、网线、指纹扫描模块、PC机一台。
一.软件: 虚拟机、超级终端、FTP软件。
二.连线方式将指纹识别模块安装在经典2410DVP试验箱的168扩展槽中。
三.实验原理指纹模块是面向广阔的锁具市场、保险箱(柜)、安防及工控市场, 推出的。
她是由32位高性能可编程处理器、活体指纹采集芯片和指纹识别核心固件等构成的一个独立的嵌入式指纹识别系统。
本指纹模块具有200枚以上指纹存储能力, 可扩展到上千枚, 具备1秒以内的指纹比对性能, 支持1: 1和1: N两种比对模式, 能够任意兼容各类指纹传感芯片, 允许客户内置应用程序, 减化应用方案, 节省开发成本。
本模块可提供全面的ODM定制服务, 时时刻刻、轻轻松满足您的个性化指纹产品需求。
功能用途指纹模块是嵌入式指纹产品的核心。
她面向锁具、安防和工控企业, 为他们提供一个“快速应用指纹技术”的硬件平台。
在这个平台上, 企业只需专注于原有产品, 无须关注指纹传感器的接入、指纹注册比对等远离其核心价值的技术, 从而在不增加研发成本的同时提升原有产品的应用价值。
指纹模块功能:活体指纹识别脱机指纹注册(250枚)脱机指纹比对(1: 1.1: N)可内置应用程序(固件)可接入任意指纹传感器件(光学、半导体电容、半导体温感、半导体压感、按压式、滑动式)丰富的接口支持(32位GPIO、SPI、UART、I2C.RF)指纹模块应用范围:指纹门锁指纹保险柜(箱)指纹文件柜指纹工控设备指纹遥控器指纹通关设备指纹POS机指纹IC卡读卡器指纹数码产品指纹电气开关等技术规格指纹模块一般参数:注: 指纹采集传感器选择请参考附录1。
模块优势可编程直接在模块的主控MCU中写入应用程序兼容性强能够兼容全球各种指纹传感芯片(光感、电容、电感、温感、压感, 滑动式和按压式)(用户可指定)指纹容量大片内可存储250枚以上指纹, 支持片外扩展注册比对性能优越指纹算法经过多年商用, 嵌入式环境下FAR、FRR性能优良服务好提供24小时技术支持和全面的ODM定制服务(只需提供规格书)四、程序分析根据如上提供的指纹操作API, 在linux开发环境下编写程序实现对指纹模块的完整操作。
电容式指纹模块的工作原理1. 引言随着科技的发展,指纹识别已经成为一种广泛应用的生物识别技术。
而电容式指纹模块是实现指纹识别的一种主流技术之一。
本文将详细介绍电容式指纹模块的工作原理,包括指纹的形成与结构、电容式指纹模块的主要组成部分、电容式指纹模块的工作流程以及原理解析。
2. 指纹的形成与结构指纹是人体皮肤表面的一种纹路,它由皮肤的皱褶和汗腺开口孔组成。
指纹的形成是由胎儿时期的胚胎皮肤表面起皱开始的,随着胚胎的发育,这些皱褶逐渐形成了指纹。
指纹的形态特征是独一无二的,每个人的指纹都是唯一的。
指纹主要分为三个部分:弓型、循环型和横纹。
其中弓型指纹较为稀少,循环型指纹最常见,横纹指纹次之。
指纹在特征方面可细分为:单纹、双纹、中纹、岛纹、混纹、复纹、裂纹、星纹等。
指纹的结构主要分为三层:表皮层,含有水分较多,是指纹的主要部分;乳头层,构成了指纹的起伏;基底层,对应指纹的基本纹型。
3. 电容式指纹模块的主要组成部分电容式指纹模块是通过感应和测量指纹的电容变化来实现指纹识别的。
它主要由以下几个基本组成部分组成:3.1 指纹传感器指纹传感器是电容式指纹模块的核心部件之一,它用来感应指纹的电容变化。
指纹传感器通常采用一种特殊的材料作为感应电极,这种材料能够在接触到指纹时产生电容变化。
指纹传感器的表面通常采用一层特殊的涂层,能够增加指纹与传感器之间的接触面积,提高电容变化的敏感度。
3.2 信号处理电路信号处理电路是负责接收、放大和处理指纹传感器输出的电信号的电路。
它通常包括模拟信号处理电路和数字信号处理电路两部分。
模拟信号处理电路负责对指纹传感器输出的模拟信号进行放大、滤波等处理,将其转换成适合数字信号处理电路处理的信号。
数字信号处理电路负责对模拟信号进行数字化处理,包括滤波、增强、特征提取等。
3.3 控制电路与接口控制电路与接口主要负责指纹模块与外部设备之间的通信和控制。
它通常包括微处理器、存储器、通信接口等。
程序:#include <reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned int#define Dbus P0#define buffer1ID 0x01#define buffer2ID 0x02#define queren 0x88#define tuichu 0x84#define shanchu 0x82sbit B0=B^0;sbit B7=B^7;sbit jidianqi=P3^6;sbit RS=P2^2;sbit RW=P2^1;sbit E1=P2^0;sbit LEDK=P3^4; //控制背光sbit SCLK=P2^3;sbit IO=P2^5;sbit RST=P2^4;uchar code ta[8]={0x00,0x51,0x09,0x10,0x05,0x02,0x11,0xbe}; uchar data a[7]; // 秒分时日月星期年uchar dz[4]; //存键输入值uchar mima[7];uchar mimaID[6]={1,2,3,4,5,6};uchar data K;uchar data Key;uint PageID;uchar data querenma;uchar sum[2];int summaf,summas;uchar code nian[]={"年"};uchar code yue[]={"月"};uchar code ri[]={"日"};uchar code xinqi[]={"星期"};uchar code mao=0x3a;unsigned char code text1[]={" 请按指纹"};unsigned char code text2[]={" 请再次按指纹"};unsigned char code text3[]={" 指纹采集成功"};unsigned char code text4[]={"请按任意键继续"};unsigned char code text5[]={" 指纹采集失败"};unsigned char code text6[]={"输入删去的指纹号"};unsigned char code text7[]={" 删指纹号成功"};unsigned char code text8[]={"按键一:增加指纹"};unsigned char code text9[]={"按键二:删去指纹"};unsigned char code text10[]={" 请重新按指纹"};unsigned char code text11[]={"清空指纹库成功"};unsigned char code text12[]={" 没搜索到指纹"};unsigned char code text13[]={"请先按键再刷指纹"};unsigned char code text14[]={" 请重新操作"};unsigned char code text15[]={" 删去失败"};unsigned char code text16[]={" 接收包出错"};unsigned char code text17[]={" 编号为:"};unsigned char code text18[]={"指纹已找到请进"};unsigned char code text19[]={" 该指纹已存储"};unsigned char code text20[]={" 请输入密码"};unsigned char code text21[]={" 密码错误"};unsigned char code text22[]={"按键三:更新密码"}; // @@@ unsigned char code text23[]={"请再次输入密码"};unsigned char code text24[]={"两次输入的密码不"};unsigned char code text25[]={"一致,请重新操作"};unsigned char code text26[]={" 密码更新成功"};另外:void delay(uint tt){ uchar i;while(tt--){for(i=0;i<125;i++);}}void initialize51(){SCON= 0x50; //串口方式1 //REN=1; 允许接收PCON=0x80; //SMOD=1TMOD= 0x20; //定时器1定时方式2TH1= 0xff; //11.0592MHz 模块默认波特率为57600bps TL1= 0xff;TR1= 1; //启动定时器}unsigned char Keycan(void) //按键扫描程序P1.0--P1.3为行线P1.4--P1.7为列线{unsigned char rcode, ccode;P1 = 0xF0; // 发全0行扫描码,列线输入if((P1&0xF0) != 0xF0) // 若有键按下{delay(1);// 延时去抖动if((P1&0xF0) != 0xF0){ rcode = 0xFE; // 逐行扫描初值while((rcode&0x10) != 0){P1 = rcode; // 输出行扫描码if((P1&0xF0) != 0xF0) // 本行有键按下{ccode = (P1&0xF0)|0x0F;//do{;}while((P1&0xF0) != 0xF0); //等待键释放return ((~rcode) + (~ccode)); // 返回键编码}elsercode = (rcode<<1)|0x01; // 行扫描码左移一位}}}return 0; // 无键按下,返回值为0}void KeyDeal(unsigned char Key){ //unsigned char n;if(Key!=0){switch(Key){case 0x11: K=1; break;case 0x21: K=2; break;case 0x41: K=3; break;case 0x81: break; //K=funguanliyuan;case 0x12: K=4; break;case 0x22: K=5; break;case 0x42: K=6; break;case 0x82: K=34;break; //K=funshanchu;case 0x14: K=7; break;case 0x24: K=8; break;case 0x44: K=9; break;case 0x84: break; //K=funtuichu;case 0x18: break; //K=shuazhiwencase 0x28: K=0; break;case 0x48: break;case 0x88: break; //K=funqueren;default: break;}}}//*************************************//12864//读12864忙void ReadBusy(void){unsigned char ch;cheak:Dbus=0xff;RS=0;RW=1;E1=1;ch=Dbus;E1=0;ch=ch|0x7f;if(ch!=0x7f)goto cheak;}//向LCD写命令void WriteCommand(uchar command){ReadBusy();RW=0;Dbus=command;E1=1;E1=0;}//向LCD写数据void WriteData(uchar Lcd_data){ReadBusy();RS=1;RW=0;Dbus=Lcd_data;E1=1;E1=0;}//清屏函数清DDRAMvoid Clrram (void){WriteCommand(0x01);}//LCD12864初始化程序void Lcd_int(){WriteCommand(0x30); //30---基本指令动作WriteCommand(0x0c); //开显示,关游标WriteCommand(0x01); //清屏,地址指针指向00HWriteCommand(0x02);}//LCD12864显示时间void playtime(){uchar i,n3,n4,y1,y2,r1,r2,s1,s2,f1,f2,m1,m2;WriteCommand(0x80); //指定第一行显示位置for(i=0;i<16;i++)WriteData(text13[i]); //显示LCD12864并行显示n3=a[6]>>4; n4=a[6]&0x0f;WriteCommand(0x90); //指定第二行显示位置WriteData(0x32);WriteData(0x30);WriteData(0x30+n3);WriteData(0x30+n4);for(i=0;i<2;i++) WriteData(nian[i]);y1=a[4]>>4; y2=a[4]&0x0f;WriteData(0x30+y1);WriteData(0x30+y2);for(i=0;i<2;i++) WriteData(yue[i]);r1=a[3]>>4; r2=a[3]&0x0f;WriteData(0x30+r1);WriteData(0x30+r2);for(i=0;i<2;i++)WriteData(ri[i]);WriteCommand(0x88); //指定第三行显示位置for(i=0;i<4;i++)WriteData(xinqi[i]);WriteData(a[5]+0x30);s1=a[2]>>4;s2=a[2]&0x0f; f1=a[1]>>4;f2=a[1]&0x0f; m1=a[0]>>4;m2=a[0]&0x0f;WriteCommand(0x98); //指定第四行显示位置WriteData(0x30+s1);WriteData(0x30+s2);WriteData(mao);WriteData(0x30+f1);WriteData(0x30+f2);WriteData(mao);WriteData(0x30+m1);WriteData(0x30+m2);}//*************************************//12864//*********************************//ds1302控制uchar r1302() //读数据ds1302{ uchar i;for(i=0;i<8;i++){B>>=1;B7 = IO;SCLK=1;SCLK=0;}return B;}void w1302(uchar co) // 写ds1302 单字节{uchar i;B = co;for(i=0;i<8;i++){IO = B0; //原来是使用ACC寄存器,但不行,后改使用B寄存器后才正常运行???SCLK=1;SCLK=0;B>>=1;}}void w(uchar a, uchar d) //寻址,写数{RST = 0;SCLK = 0;RST = 1;w1302(a);w1302(d);SCLK = 1;RST = 0;}uchar r(uchar a) //寻址,读数{uchar r;RST = 0;SCLK = 0;RST = 1;w1302(a);r=r1302();SCLK = 1;RST = 0;return r;}void wclo(uchar *p) //写多字节ds1302 {uchar i;w(0x8e,0x00); //写允许RST=0;SCLK=0;RST=1;w1302(0xbe); //写多字节命令for(i=0;i<8;i++)w1302(*(p+i)); //写时钟数据w(0x00,0x50); //??? 启动定时器SCLK=1;RST=0;}void rclo(uchar *p) //读出多字节ds1302 {uchar i;RST=0;SCLK=0;RST=1;w1302(0xbf);for(i=0;i<7;i++)*(p+i) = r1302(); //读出时钟数据SCLK=1;RST=0;}//***************************************//void SFG_getimage() //录入指纹图像{uchar i;SBUF=0xef;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;SBUF=0X03;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0X00;TI=0;summaf=0x05;SBUF=summaf;while(TI==0);TI=0;for(i=0;i<9;i++){while(RI==0);RI=0;}while(RI==0);RI=0;querenma=SBUF;while(RI==0);RI=0;sum[1]=SBUF;while(RI==0);RI=0;sum[0]=SBUF;summas=(sum[1]<<8)+sum[0];}void SFG_genchar(uchar bufferID) //生成特征并存于charbuffer1/2 调用后单片机波特率变化@@@ {uchar i;SBUF=0xef;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;SBUF=0X04;while(TI==0);TI=0;SBUF=0X02;while(TI==0);TI=0;SBUF=bufferID;while(TI==0);TI=0;summaf=0x07+bufferID; sum[0]=summaf;sum[1]=summaf>>8; SBUF=sum[1];while(TI==0)TI=0;SBUF=sum[0];while(TI==0)TI=0;for(i=0;i<9;i++){while(RI==0);RI=0;}while(RI==0);RI=0;querenma=SBUF; while(RI==0);RI=0;sum[1]=SBUF;while(RI==0);RI=0;sum[0]=SBUF;summas=(sum[1]<<8)+sum[0];}void SFG_regmodel() //合并生成模板{uchar i;SBUF=0xef;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;SBUF=0X03;while(TI==0);TI=0;SBUF=0X05;while(TI==0);TI=0;SBUF=0X00;while(TI==0);summaf=0x09;SBUF=summaf; //校验和while(TI==0);TI=0;for(i=0;i<9;i++){while(RI==0);RI=0;}while(RI==0);RI=0;querenma=SBUF;while(RI==0);RI=0;sum[1]=SBUF;while(RI==0);RI=0;sum[0]=SBUF;summas=(sum[1]<<8)+sum[0];}void SFG_storechar(uint pageID) //储存模板ID=1010也储存成功ID>=1011 querenma=0x18?@@@{uchar i,ID1,ID2;SBUF=0xef;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);SBUF=0X01;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;SBUF=0X06;while(TI==0);TI=0;SBUF=0X06;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;ID1=pageID;ID2=pageID>>8; SBUF=ID2;while(TI==0);TI=0;SBUF=ID1;while(TI==0);TI=0;summaf=0x0e+ID1+ID2; sum[0]=summaf;sum[1]=summaf>>8;SBUF=sum[1];while(TI==0);TI=0;SBUF=sum[0];while(TI==0);TI=0;for(i=0;i<9;i++){while(RI==0);RI=0;}while(RI==0);querenma=SBUF;while(RI==0);RI=0;sum[1]=SBUF;while(RI==0);RI=0;sum[0]=SBUF;summas=(sum[1]<<8)+sum[0];}void SFG_empty() //清空指纹库{uchar i;SBUF=0xef;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;SBUF=0X03;while(TI==0);TI=0;SBUF=0X0d;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;summaf=0x11;SBUF=summaf;while(TI==0);TI=0;for(i=0;i<9;i++){while(RI==0);RI=0;}while(RI==0);RI=0;querenma=SBUF;while(RI==0);RI=0;sum[1]=SBUF;while(RI==0);RI=0;sum[0]=SBUF;summas=(sum[1]<<8)+sum[0];}void SFG_fastsearch(uchar bufferID) //搜索指纹返回指纹ID号sum、pagenum>255都会使程序卡@@@ {uchar i,ID1,ID2;SBUF=0xef;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;SBUF=0X08;while(TI==0);TI=0;SBUF=0X1b;while(TI==0);TI=0;SBUF=bufferID;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;SBUF=0;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;SBUF=180;while(TI==0);TI=0;summaf=9+0x1b+bufferID+180; sum[0]=summaf;sum[1]=summaf>>8;SBUF=sum[1];TI=0;SBUF=sum[0];while(TI==0);TI=0;for(i=0;i<9;i++){while(RI==0);RI=0;}while(RI==0);RI=0;querenma=SBUF;while(RI==0);RI=0;ID1=SBUF;while(RI==0);RI=0;ID2=SBUF; //接收到的ID号while(RI==0);RI=0;while(RI==0);RI=0;while(RI==0);RI=0;sum[1]=SBUF;while(RI==0);RI=0;sum[0]=SBUF;summas=(sum[1]<<8)+sum[0];//PageID=ID1;PageID=(ID1<<8)+ID2;}void SFG_enroll() //自动注册模板返回存储ID =录图像+合并生成模板+储存模板{uchar i,ID1,ID2;SBUF=0xef;while(TI==0);TI=0;SBUF=0X01;TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;SBUF=0X03;while(TI==0);TI=0;SBUF=0X10;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;summaf=0x14;SBUF=summaf; //校验和while(TI==0);TI=0;for(i=0;i<9;i++){while(RI==0);RI=0;}while(RI==0);querenma=SBUF;while(RI==0);RI=0;ID1=SBUF;while(RI==0);RI=0;ID2=SBUF;while(RI==0);RI=0;sum[1]=SBUF;while(RI==0);RI=0;sum[0]=SBUF;summas=(sum[1]<<8)+sum[0];//PageID=ID1;PageID=(ID1<<8)+ID2;}void SFG_deletchar(uint pageID) //删除指纹校验和在2字节的页码处应分高低字节相加{uchar i,ID1,ID2;SBUF=0xef;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0X01;while(TI==0);SBUF=0X00;while(TI==0);TI=0;SBUF=0X07;while(TI==0);TI=0;SBUF=0X0c;while(TI==0);TI=0;ID1=pageID;ID2=pageID>>8; SBUF=ID2;while(TI==0);TI=0;SBUF=ID1;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;SBUF=1;while(TI==0);TI=0;summaf=0x15+ID1+ID2; sum[0]=summaf;sum[1]=summaf>>8;SBUF=sum[1];while(TI==0);TI=0;SBUF=sum[0];while(TI==0);TI=0;for(i=0;i<9;i++){while(RI==0);RI=0;}while(RI==0);RI=0;querenma=SBUF;while(RI==0);RI=0;sum[1]=SBUF;while(RI==0);RI=0;sum[0]=SBUF;summas=(sum[1]<<8)+sum[0];}void SFG_writereg(uchar N) //设置波特率{uchar i;SBUF=0xef;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;SBUF=0X05;while(TI==0);TI=0;SBUF=0X0e;while(TI==0);TI=0;SBUF=4;while(TI==0);TI=0;SBUF=N;while(TI==0);TI=0;summaf=0x1a;sum[0]=summaf;sum[1]=0;SBUF=sum[1];while(TI==0);TI=0;SBUF=sum[0];while(TI==0);TI=0;for(i=0;i<9;i++){while(RI==0);RI=0;}while(RI==0);RI=0;querenma=SBUF;while(RI==0);RI=0;sum[1]=SBUF;while(RI==0);RI=0;sum[0]=SBUF;summas=(sum[1]<<8)+sum[0];}void SFG_identify() //自动验证指纹录图像+生成特征+搜索{uchar i,ID1,ID2;SBUF=0xef;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;SBUF=0X03;while(TI==0);TI=0;SBUF=0X11;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;summaf=0x15;SBUF=summaf; //校验和while(TI==0);TI=0;for(i=0;i<9;i++){while(RI==0);RI=0;}while(RI==0);RI=0;querenma=SBUF;while(RI==0);RI=0;ID1=SBUF;while(RI==0);RI=0;ID2=SBUF;while(RI==0);RI=0;while(RI==0);RI=0; //得分while(RI==0);RI=0;sum[1]=SBUF;while(RI==0);RI=0;sum[0]=SBUF;summas=(sum[1]<<8)+sum[0];//PageID=ID1;PageID=(ID1<<8)+ID2;}void shuazhiwen(){uchar i,IDs1,IDs2,IDs3;Clrram();WriteCommand(0x90); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text1[i]); //显示LCD12864并行显示请按指纹//SFG_getimage();//SFG_genchar(1);//SFG_fastsearch(1);SFG_identify();while(querenma==2)SFG_identify();if(querenma==0){Clrram();WriteCommand(0x90); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text18[i]); //显示LCD12864并行显示指纹通过门已开IDs1=PageID/100;IDs2=PageID/10%10;IDs3=PageID%10;WriteCommand(0x88); //指定第三行显示位置for(i=0;i<10;i++)WriteData(text17[i]); //显示LCD12864并行显示编号为:WriteData(0x30+IDs1);WriteData(0x30+IDs2);WriteData(0x30+IDs3);jidianqi=0; //开门}else if(querenma==9){Clrram();WriteCommand(0x90); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text12[i]); //显示LCD12864并行显示没搜索到指纹}else{Clrram();WriteCommand(0x90); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text16[i]); //显示LCD12864并行显示接收包出错}WriteCommand(0x98); //指定第四行显示位置for(i=0;i<16;i++)WriteData(text4[i]); //显示LCD12864并行显示请按任意键继续while(Keycan()==0);}void addfinger(){uchar i,IDa1,IDa2,IDa3;Clrram();WriteCommand(0x90); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text1[i]); //显示LCD12864并行显示请按指纹SFG_getimage();while(querenma!=0)SFG_getimage();SFG_genchar(buffer1ID);initialize51();SFG_fastsearch(buffer1ID);while(querenma==1)SFG_fastsearch(buffer1ID);if(querenma==0){Clrram();WriteCommand(0x90); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text19[i]); //显示LCD12864并行显示该指纹已存储WriteCommand(0x98); //指定第四行显示位置for(i=0;i<16;i++)WriteData(text4[i]); //显示LCD12864并行显示请按任意键继续while(Keycan()==0);}else if(querenma==9){Clrram();WriteCommand(0x90); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text2[i]); //显示LCD12864并行显示请再次按指纹SFG_enroll();while(querenma==2)SFG_enroll();Clrram();if(querenma==0){IDa1=PageID/100;IDa2=PageID/10%10;IDa3=PageID%10;WriteCommand(0x90); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text3[i]); //显示LCD12864并行显示指纹采集成功WriteCommand(0x88); //指定第三行显示位置for(i=0;i<10;i++)WriteData(text17[i]); //显示LCD12864并行显示编号为:pgaeID WriteData(0x30+IDa1);WriteData(0x30+IDa2);WriteData(0x30+IDa3);}else if(querenma!=0){WriteCommand(0x90); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text5[i]); //显示LCD12864并行显示指纹采集失败WriteCommand(0x88); //指定第三行显示位置for(i=0;i<16;i++)WriteData(text14[i]); //显示LCD12864并行显示请重新采集}WriteCommand(0x98); //指定第四行显示位置for(i=0;i<16;i++)WriteData(text4[i]); //显示LCD12864并行显示请按任意键继续while(Keycan()==0);}Clrram();}void deletfinger(){uchar i,j=0;Clrram();WriteCommand(0x90); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text6[i]); //显示LCD12864并行显示请输入删去的指纹号for(i=0;i<5;i++)dz[i]=0; //不输入时会默认为000 @@@Key=Keycan();while(Key!=queren){Key=Keycan();KeyDeal(Key);delay(30); //按键有抖动@@@if(Key==0)K=10;if((K>=0)&&(K<=9)){dz[j]=K;if(j<3){WriteCommand(0x88+j); //指定第三行显示位置WriteData(0x30+dz[j]);}++j;if(j==4)j=3; //@@#yinhuang} //显示LCD12864并行显示if(K==34) //按了删除键{if(j==0){WriteCommand(0x88); //指定第三行显示位置WriteData(0x20);}else{--j;WriteCommand(0x88+j); //指定第三行显示位置WriteData(0x20);}}}if(j>=2)PageID=dz[2]+dz[1]*10+dz[0]*100;if(j==1)PageID=dz[1]+dz[0]*10;if(j==0)PageID=dz[0];SFG_deletchar(PageID);if(querenma==0){Clrram();WriteCommand(0x90); //指定第二行显示位置显示删除成功for(i=0;i<16;i++)WriteData(text7[i]); //显示LCD12864并行显示}else{Clrram();WriteCommand(0x90); //指定第二行显示位置显示删除失败for(i=0;i<16;i++)WriteData(text15[i]); //显示LCD12864并行显示}WriteCommand(0x88); //指定第三行显示位置for(i=0;i<16;i++)WriteData(text4[i]); //显示LCD12864并行显示请按任意键继续while(Keycan()==0);Clrram();}void gaimima(){uchar i,j,mima1[6],mima2[6];Clrram();WriteCommand(0x90); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text20[i]); //显示LCD12864并行显示请输入密码for(i=0;i<6;i++)mima1[i]=0;Key=Keycan();while(Key!=queren){Key=Keycan();KeyDeal(Key);delay(30);if(Key==0)K=10;if((K>=0)&&(K<=9)){mima1[j]=K;if(j<6){WriteCommand(0x88+j); //指定第三行显示位置WriteData(0x0f);}++j;if(j==7)j=6; //@@#yinhuang } //显示LCD12864并行显示if(K==34) //按了删除键{if(j==0){WriteCommand(0x88); //指定第三行显示位置WriteData(0x20);}else{--j;WriteCommand(0x88+j); //指定第三行显示位置WriteData(0x20);}}}Clrram();Clrram();j=0;WriteCommand(0x90); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text23[i]); //显示LCD12864并行显示请再次输入密码for(i=0;i<6;i++)mima2[i]=0;Key=Keycan();while(Key!=queren){Key=Keycan();KeyDeal(Key);delay(30);if(Key==0)K=10;if((K>=0)&&(K<=9)){mima2[j]=K;if(j<6){WriteCommand(0x88+j); //指定第三行显示位置WriteData(0x0f);}++j;if(j==7)j=6; //@@#yinhuang} //显示LCD12864并行显示if(K==34) //按了删除键{if(j==0){WriteCommand(0x88); //指定第三行显示位置WriteData(0x20);}else{--j;WriteCommand(0x88+j); //指定第三行显示位置WriteData(0x20);}}}Clrram();if((mima1[0]==mima2[0])&&(mima1[1]==mima2[1])&&(mima1[2]==mima2[2])&&(mima1[3]==mima2[3 ])&&(mima1[4]==mima2[4])&&(mima1[5]==mima2[5])){for(i=0;i<6;i++)mimaID[i]=mima1[i];WriteCommand(0x80); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text26[i]); //显示LCD12864并行显示密码更新成功WriteCommand(0x88); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text4[i]); //显示LCD12864并行显示请按任意键继续while(Keycan()==0);}else{WriteCommand(0x80); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text24[i]); //显示LCD12864并行显示两次输入的密码不WriteCommand(0x90); //指定第三行显示位置for(i=0;i<16;i++)WriteData(text25[i]); //显示LCD12864并行显示一致,请重新操作WriteCommand(0x88); //指定第四行显示位置for(i=0;i<16;i++)WriteData(text4[i]); //显示LCD12864并行显示请按任意键继续while(Keycan()==0);}Clrram();}void guanliyuan(){ uchar i,j;Clrram();WriteCommand(0x90); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text20[i]); //显示LCD12864并行显示请输入密码for(i=0;i<6;i++)mima[i]=0;Key=Keycan();while(Key!=queren){Key=Keycan();KeyDeal(Key);delay(30);if(Key==0)K=10;if((K>=0)&&(K<=9)){mima[j]=K;if(j<6){WriteCommand(0x88+j); //指定第三行显示位置WriteData(0x0f);}++j;if(j==7)j=6; //@@#yinhuang} //显示LCD12864并行显示if(K==34) //按了删除键{if(j==0){WriteCommand(0x88); //指定第三行显示位置WriteData(0x20);}else{--j;WriteCommand(0x88+j); //指定第三行显示位置WriteData(0x20);}}}Clrram();if((mima[0]==mimaID[0])&&(mima[1]==mimaID[1])&&(mima[2]==mimaID[2])&&(mima[3]==mimaID[3])&& (mima[4]==mimaID[4])&&(mima[5]==mimaID[5])){while(Keycan()!=tuichu){WriteCommand(0x90); //指定第二行显示位置按键1:增加指纹for(i=0;i<16;i++)WriteData(text8[i]); //显示LCD12864并行显示WriteCommand(0x88); //指定第三行显示位置按键2:删除指纹for(i=0;i<16;i++)WriteData(text9[i]); //显示LCD12864并行显示WriteCommand(0x98); //指定第三行显示位置按键3:改密码for(i=0;i<16;i++)WriteData(text22[i]); //显示LCD12864并行显示KeyDeal(Keycan());switch(K){case 1: addfinger();K=6; break;case 2: deletfinger(); break;case 3: gaimima(); break;default: break;}}}else{WriteCommand(0x90); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text21[i]); //显示LCD12864并行显示密码错误WriteCommand(0x88); //指定第三行显示位置for(i=0;i<16;i++)WriteData(text4[i]); //显示LCD12864并行显示请按任意键继续while(Keycan()==0);}Key=0;}void main(){initialize51();LEDK=0;Lcd_int();Clrram();wclo(ta);delay(100);//SFG_empty();///@@@@//SFG_deletchar(255);//SFG_storechar(1011);//SFG_fastsearch(1);// WriteCommand(0x90); //指定第二行显示位置// WriteData(0x30+((0xf0&querenma)>>4));WriteData(0x30+(0x0f&querenma));while(1){Key=Keycan();if(Key==0x18) //指纹刷机{Clrram();shuazhiwen();Clrram();}if(Key==0x81) //管理员操作{Clrram();guanliyuan();Clrram();}rclo(a); playtime(); delay(100); jidianqi=1; }}。
IDWD1020指纹识别模块用户手册IDWD1020 Fingerprint Module User’s Guide(Ver 1.1)北京艾迪沃德科技发展有限公司2014年6月第二版目录(一)概述 (1)(二)通讯协议 (2)2.1通讯处理过程 (2)2.2通讯包P ACKET 的分类 (3)2.2.1命令包Command packet (3)2.2.2响应包Response packet (3)2.2.3指令/响应的数据包Data Packet (3)2.3通讯包的帧结构 (4)2.3.1通讯包Parket识别代码 (4)2.3.2命令包(Command packet )的帧结构 (4)2.3.3响应包(Response packet)的帧结构 (5)2.3.4指令数据包(Command Data Packet)的帧结构 (5)2.3.5响应数据包(Response data packet)的帧结构 (6)(三)通讯命令(COMMAND )综述 (7)3.1指纹特征模板(T EMPLATE R ECORD)的数据结构 (7)3.2命令列表(C OMMAND L IST ) (7)(四)各通讯命令(COMMAND)详细说明 (9)4.1连接测试(CMD_TEST_CONNECTION) (9)4.2设置参数(CMD_SET_PARAM) (10)4.3读取参数(CMD_GET_PARAM) (13)4.4读取设备信息(CMD_DEVICE_INFO) (14)4.5使模块进入IAP模式(CMD_ENTER_IAP_MODE) (15)4.6采集指纹图像(CMD_GET_IMAGE) (16)4.7检测手指(CMD_FINGER_DETECT) (17)4.8上传指纹图像到主机(CMD_UP_IMAGE_CODE) (18)4.9下载指纹图像到模块(CMD_DOWN_IMAGE) (20)4.10控制采集器背光灯(CMD_SLED_CTRL)开/关 (22)4.11保存指纹模板数据到模块指纹库(CMD_STORE_CHAR) (23)4.12读取指纹库中的指纹并暂存在指定的R AM B UFFER中(CMD_LOAD_CHAR) (24)4.13将暂存在R AM B UFFER中的指纹模板上传到主机(CMD_UP_CHAR) (25)4.14下载指纹模板数据到模块指定的R AM B UFFER(CMD_DOWN_CHAR) (26)4.15删除指定编号范围内的指纹(CMD_DEL_CHAR) (28)4.16获取指定编号范围内可注册的首个编号(CMD_GET_EMPTY_ID) (29)4.17检查指定的编号是否已被注册(CMD_GET_STATUS) (30)4.18检查指定编号范围内的指纹库是否有数据损坏(CMD_GET_BROKEN_ID) (31)4.19获取指定编号范围内已注册的指纹总数(CMD_GET_ENROLL_COUNT) (32)4.20从暂存在I MAGE B UFFER中的指纹图像产生模板(CMD_GENERATE) (33)4.21合成指纹模板数据用于入库(CMD_MERGE) (34)4.22指定2个R AM B UFFER之间的模板做比对(CMD_MATCH) (35)4.23指定编号范围的1:N识别(CMD_SEARCH) (36)4.24指定R AM B UFFER与指纹库中指定编号的模板比对(CMD_VERIFY) (37)4.25设置模块序列号(CMD_SET_MODULE_SN) (38)4.26读取模块序列号(CMD_GET_MODULE_SN) (40)4.27取消采集指纹(CMD_FP_CANCEL) (41)4.28获取已注册ID列表(CMD_GET_ENROLLED_ID_LIST) (42)4.29进入休眠状态(CMD_ENTER_STANDBY_STATE) (44)4.30通讯错误返回(I NCORRECT C OMMAND) (45)4.31注意事项 (45)(五)响应(RESPONSE)及错误代码表(ERROR CODE) (46)(六)登记及比对流程图 (47)6.1光学及面阵式半导体指纹采集器模块的注册流程(E NROLL P ROCESS) (47)6.2滑动采集器模块的注册流程(E NROLL P ROCESS) (48)6.3光学及面阵式半导体采集器模块的验证及识别流程(V ERIFY &I DENTIFY) (49)6.4滑动采集器模块指纹验证和识别流程(V ERIFY &I DENTIFY ) (50)(七)硬件描述 (51)7.1主处理板尺寸 (51)7.2指纹传感器尺寸图..................................... 错误!未定义书签。
智能门锁指纹识别模块的安装说明智能门锁是现代家居生活中的重要组成部分,为了提高家庭安全性,越来越多的家庭开始安装智能门锁指纹识别模块。
下面将为您介绍智能门锁指纹识别模块的安装步骤。
一、准备工作在安装之前,请确保您具备以下物品:1. 智能门锁指纹识别模块一套;2. 电池或电源适配器;3. 所需工具,如螺丝刀、电钻等;4. 安装支架(根据产品型号)。
二、安装支架1. 首先,使用螺丝刀将门把手卸下。
2. 选择合适的位置安装支架,确保支架与门锁底座对齐。
3. 使用电钻钻孔,然后将支架紧固在门上。
三、连接电源1. 如果您使用的是电池供电,首先打开智能门锁指纹识别模块的电池仓盖,安装好电池,并将仓盖关闭。
2. 如果您使用的是电源适配器供电,将适配器插头插入智能门锁指纹识别模块上的电源插孔。
四、固定智能门锁指纹识别模块1. 将智能门锁指纹识别模块插入支架上的插槽,并轻轻向内按压,直到听到"卡槽卡入声"。
2. 验证指纹识别模块是否安装牢固,确保其不会松动。
五、测试指纹识别功能1. 按下指纹识别模块上的开锁按钮,屏幕将亮起。
2. 将您的手指放在指纹识别器上,让其读取指纹。
3. 等待片刻,如果指纹验证通过,门锁就会自动打开。
六、设置其他功能(可选)一些智能门锁指纹识别模块还提供了其他功能,例如密码锁、卡片解锁等。
您可以根据需要设置并使用这些功能。
七、注意事项1. 安装过程中请小心操作,避免受伤或损坏产品。
2. 在安装之前,请确保电池电量充足或使用适配器供电。
3. 若指纹识别不能正常工作,请检查指纹识别模块与门的对齐情况,并确保手指清洁无异物。
通过以上几个简单步骤,您就可以轻松地安装智能门锁指纹识别模块了。
这款智能设备将为您提供更加方便快捷、安全可靠的家居体验。
祝您安装顺利,享受智能门锁带来的便利!八、维护与保养一旦完成安装,为了保持智能门锁指纹识别模块的正常运行,您需要定期进行维护和保养。
1. 清洁指纹识别器:使用柔软的布和少量清洁剂轻轻擦拭指纹识别器表面,去除指纹和污渍。
指纹模块应用方案指纹模块是一种集成指纹采集、图像处理、特征提取和特征匹配等功能的模块。
它通过扫描和记录指纹图像,将指纹特征提取出来,并与预先存储的指纹特征进行匹配,从而实现指纹识别的功能。
指纹模块可以应用在各个领域,下面将介绍几种常见的指纹模块应用方案。
1.门禁系统应用方案:指纹模块可以应用在门禁系统中,通过与门禁控制器相连接,实现对门禁设备的指纹识别功能。
用户可以通过注册指纹信息,并将其存储在门禁控制器中,然后通过将手指放在指纹模块上,进行指纹识别验证,验证通过后门禁设备会打开。
2.安防监控系统应用方案:指纹模块可以应用在安防监控系统中,用于对监控设备进行身份识别。
例如,在一些需要限制访问权限的区域,只有特定人员的指纹信息被授权后才能进入,其他人员的指纹信息无法通过验证。
3.个人设备解锁应用方案:指纹模块可以应用在个人设备上,例如手机、平板电脑和笔记本电脑等,用于对设备进行解锁。
用户可以通过在设备上注册指纹信息,然后使用指纹进行解锁而无需输入密码或图案解锁。
这种方案不仅方便了用户,还提高了设备的安全性。
4.银行和金融领域应用方案:指纹模块可以应用在银行和金融领域,用于对用户进行身份验证。
用户在办理账户或进行交易时,可以通过指纹识别进行身份验证,确保账户的安全性和交易的合法性。
5.医疗健康领域应用方案:指纹模块可以应用在医疗健康领域,用于对患者和医务人员进行身份验证。
例如,医院可以使用指纹模块来验证医务人员的身份,以确保只有授权人员才能进入特定区域,或者通过指纹识别验证患者的身份,以确保医疗记录和处方的安全性。
除了以上几种常见的应用方案外,指纹模块还可以应用在各个领域的人员考勤、员工管理、数据加密等方面。
指纹模块的应用方案可以根据实际需求进行定制和开发,以满足不同场景下的指纹识别需求。
SFG系列指纹识别模块介绍R30X系列指纹识别模块是圣非格科技有限公司2009年推出的最新产品,采用了最先进的指纹传感器和高性能的DSP处理器,内嵌完整的指纹识别算法和协议。
具有指纹采集,指纹比对,搜索和存储等功能的智能型模块。
与同类指纹产品相比,因R30X系列采用自适应参数调节机制,对指纹的适应性更强,对干湿手指都有较好的成像质量,适用人群更广泛。
1.应用范围保险柜(箱)、门锁门禁系统与PC联机的指纹识别及认证系统等2.主要技术指标序号 项目 参数 备注1 工作电压 DC3.6-7.0V2 工作电流 100mA3 峰值电流 150mA4 安全等级 5级 从低到高:1、2、3、4、55 拒真率(FRR) <0.1% 安全等级为3时6 认假率(FAR) <0.001% 安全等级为3时7 图像处理时间 <0.4秒8 1:1000搜索时间 <1秒9 储存容量 250枚10 UART(TTL逻辑电平)波特率(9600×N)bps ,N=1-12默认N取6,即57600bps11 USB1.112 温度 -20℃-+50℃13 工作湿度 10%-90%(无凝露)14 储存温度 -30℃-+80℃15 储存湿度 <90%(无凝露)16 模块外形尺寸 48×32mm17 传感器尺寸 54×24×21mm二、硬件接口1.外部接口尺寸图R305光学式一体式指纹模块:R305F电容式指纹模块2.串行通讯引脚号 名称 定义 描述1 VIN 电源输入 电源正输入端2 GND 电源和信号地 电源和信号地3 TD 数据发送 串行数据输出,TTL逻辑电平4 RD 数据接收 串行数据输入,TTL逻辑电平模块通过串行通讯接口,可直接与采用3.3V或者5V电源的单片机进行通讯;指纹模块的数据发送端(TD)接上位机的数据接收端(RXD),指纹模块的数据接收端(RD)接上位机的数据发送端(TXD)。
深圳市指昂科技有限公司Shenzhen Zhi Ang Science and Technology Co., Ltd.ZAZ-050指纹识别模块目录第一章概述 (3)1.1 产品原理介绍 (3)1.2 产品规格 (3)第二章硬件接口 (4)2.1 上电延时时间 (4)2.2 接口定义(TTL电平) (4)2.3 接口定义(USB电平).................................................................... 错误!未定义书签。
第三章系统资源 . (5)3.1 缓冲区 (5)3.1.1 图像缓冲区 (5)3.1.2 特征文件缓冲区 (5)3.2 指纹库 (5)3.3 系统配置参数 (5)3.3.1 波特率控制(参数序号:4) (5)3.3.2 安全等级(参数序号:5) (5)3.3.3 数据包长度(参数序号:6) (5)第四章通讯协议 (6)1. 数据包格式 (6)2. 数据包的校验与应答 (6)第五章模块指令系统 (7)1 指纹处理类指令 (7)1)获取图像ZAZ_GetImg (7)2)图像生成特征ZAZ_GenChar (7)3)特征合成模板ZAZ_RegModel (8)4)上传特征或模板ZAZ_UpChar (8)5)下载特征或模板ZAZ_DownChar (8)6)存储模板ZAZ_Store (9)7)读出模板ZAZ_LoadChar (9)8)删除模板ZAZ_DeletChar (10)9)清空指纹库ZAZ_Empty (10)10)精确比对两枚指纹特征ZAZ_Match (10)11)搜索指纹ZAZ_Search (11)12)读有效模板个数ZAZ_TempleteNum (11)2 系统设置类指令 (11)13)设置模块系统基本参数ZAZ_SetSysPara (11)15)读系统参数ZAZ_ReadSysPara (12)14)写记事本ZAZ_WriteNotepad (12)16)读记事本ZAZ_ ReadNotepad (13)17)读取指纹库列表ZAZ_ ReadFpflash (13)第六章开发流程图 (14)第七章设备尺寸图 (15)第一章概述ZAZ-050指纹模块系指昂科技推出的,以高速DSP处理器为核心,结合具有公司自主知识产权的光学指纹传感器,具有指纹录入、图像处理、指纹比对、搜索和模板储存等功能的智能型模块。
指纹识别模块原理图
在指纹识别模块的原理图中,可以分为以下几个部分:
1. 指纹传感器:用于感知和采集用户手指上的指纹信息。
它由一组微小的传感器阵列组成,每个传感器可以测量细微的指纹特征。
传感器通常使用电容式或光学式技术。
2. 指纹图像处理器:负责对从指纹传感器采集到的原始数据进行处理和增强。
包括放大、滤波和去噪等操作,以提高指纹图像的质量和可靠性。
3. 特征提取算法:将处理后的指纹图像转化为数学表示,抽取出指纹特征。
常用的算法包括细节特征、方向特征和最小框架等。
4. 指纹模板存储:将提取的指纹特征转化为模板,并进行存储。
模板通常是一个由特征值和其相关信息组成的矩阵。
存储方式可以采用数据库或内部存储器。
5. 指纹匹配算法:对采集到的指纹特征和存储的指纹模板进行比对。
匹配算法可以采用多种方式,如1:1比对、1:N搜索等,以确定是否匹配成功。
6. 决策处理器:根据匹配结果,进行相应的决策处理。
例如,匹配成功可以授权解锁或认证通过,匹配失败可以拒绝访问或触发报警等。
7. 接口电路:提供模块与其他设备或系统的连接。
常见的接口有UART、SPI、I2C等,以便模块与宿主设备进行数据传输和控制。
以上是指纹识别模块的基本原理,不同的厂商和型号可能会有一些细微的差异,但总体流程和功能相似。
(完整版)指纹识别模块单片机程序#include#include#define TRUE 1unsigned char SaveNumber=0,searchnum=0;unsigned int S earchNumber=0;unsigned int clk0=0;sbit relay =P1^4; //继电器引脚sbit buzzer=P1^5; //蜂鸣器引脚sbit red= P2^7;//录入模式指示灯在板子靠近单片机处sbit green= P2^0;//识别模式指示灯在板子远离单片机处sbit k1=P3^3; //模式识别sbit k2=P3^4; //录入一次指纹sbit k3=P3^2; //清除所有指纹(10个指纹清除)//变量定义:unsigned char code tab[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//表:共阳数码管0-9//数码管引脚定义:sbit SMG_g = P1^3; //定义数码管阳级控制脚(个位)//由于程序中定时器被用我们用一位数码管显示且为静太显示所以推荐大家用1602或者12864液晶bit changeflag=0,modeflag=0,clearallflag=0; //默认为识别模式,如果为1为录入指纹模式,每录入一次SaveNumber++ //////////////////////////////////////常用指令定义///////////////////////////////Verify Password :验证设备握手口令unsigned char code VPWD[16]={16,0X01 ,0Xff,0xff,0xff,0xff, 0x01,0,7,0x13,0x00,0x00,0x00,0x00,0x00,0x1b}; //回送12个//设置设备握手口令unsigned char code STWD[16]={16,0X01 ,0Xff,0xff,0xff,0xff, 0x01,0,7,0x12,0x00,0x00,0x00,0x00,0x00,0x1a}; //回送12个//GetImage :探测手指并从传感器上读入图像unsigned char code GIMG[14]={12, 0X01 ,0Xff,0xff,0xff,0xff, 0x01, 0,3,1,0x00,0x05}; //回送12个//Gen Templet1 :根据原始图像生成指纹特征1unsigned char code GENT1[14]={13,0X01 ,0Xff,0xff,0xff,0xff,0x01,0,4,2,1,0x00,0x08}; //回送12个//Gen Templet2 :根据原始图像生成指纹特征2unsigned char code GENT2[14]={13,0X01 ,0Xff,0xff,0xff,0xff,0x01,0,4,2,2,0x00,0x09}; //回送12个//Search Finger :以CharBufferA或CharBufferB中的特征文件搜索整个或部分指纹库unsigned char code SEAT[18]={17, 0X01 ,0Xff,0xff,0xff,0xff, 0x01, 0,8, 4,1,0,0, 0,0x65, 0x00,0x73}; //回送16个//Merge Templet ;将CharBufferA与CharBufferB中的特征文件合并生成模板,结果存于ModelBuffer。