atk301指纹识别模块-stm32-串口实现
连接
1、ATK-301 电容 指纹识别模块简介 ATK-301 电容 指纹识别模块(以下简称 LB301 模块)是 ALIENTEK 推出的一款高性 能的电容半导体指纹识别模块。LB301 采用了瑞典 FPC 公司按压式电容指纹传感器,该传 感器具有功耗低、稳定、图像一致性效果好、耐静电等级高的特点。模块搭配 GigaDevice (兆易创新)生产的指纹控制专用芯片,针对指纹传感器做出了大量的图像优化、速度优 化、算法优化,使模块具有识别速度快,通过率高的等特点。相对传统光学指纹模块,本 模块具有识别速度更快、体积更小、功耗更低等特点。 模块配备了串口通讯接口,用户无需研究复杂的图像处理及指纹识别算法,只需通过简 单的串口通讯按照通讯协议便可控制模块。本模块可应用于各种考勤机、保险箱柜、指纹门 禁系统、指纹锁等场合。技术指标如表 1.1 所示
技术指标:
项目 说明 工作电压(V) 3.0~3.6V,
典型值:3.3V 工作电流(mA) 20~50mA,
典型值:40mA
静态功耗(uA) 3~10uA,
典型值:5uA
工作环境 温度(°C):-20~70
传感器图像大小(pixel) 192*192pixel
分辨率 508DPI
对比速度 1:1<6ms 拒真率(FRR) <1%
认假率(FAR) <0.001% 指纹存容量 500 枚(ID:0~499)
使用寿命 1,000,000 次
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "key.h"
#include "usart2.h"
#include "LB301.h"
#include "led.h"#define usart2_baund 57600//串口2波特率,根据指纹模块波特率更改SysPara LB301Para;//指纹模块LB301参数
u16 ValidN;//模块内有效指纹个数void Add_FR(void); //录指纹
void Del_FR(void); //删除指纹
void press_FR(void);//刷指纹u16 GET_NUM(void);//获取数值int main(void)
{ u8 ensure;u8 key_num;u16 count = 0;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2delay_init(); //初始化延时函数LED_Init();uart_init(115200); //初始化串口1波特率为115200,用于支持USMARTusart2_init(usart2_baund);//初始化串口2,用于与指纹模块通讯KEY_Init(); //按键初始化 printf("与LB301模块握手....\r\n");while(PS_GetImage() == 0xff)//与LB301模块握手(读取图像指令有数据返回说明模块已经连接){delay_ms(400);printf("未检测到模块!!!\r\n");delay_ms(800); printf("尝试连接模块...\r\n");}printf("通讯成功!!!\r\n");printf("波特率:%d 地址:%x\r\n",usart2_baund,LB301Addr);ensure=PS_ReadSysPara(&LB301Para); //读参数 if(ensure==0x00){printf("库容量:%d 对比等级: %d\r\n",LB301Para.PS_max-ValidN,LB301Para.PS_level);}else;printf("key0删指纹,key1录指纹 \r\n");while(1){key_num=KEY_Scan(0);if(key_num){if(key_num==1){printf("正在删除指纹\r\n");Del_FR();} if(key_num==2){printf("正在录指纹\r\n");Add_FR(); //录指纹 } }//查询刷指纹if(++count > 10) {count = 0;press_FR(); }delay_ms(1); }
}//录指纹
void Add_FR(void)
{u8 i=0,ensure ,processnum=1,pressCout=1,len;u16 ID;while(1){switch (processnum){case 1: //连续按压4次指纹分别存到4个charBuffer里 i++;printf("请按指纹(%d)\r\n",pressCout);ensure=PS_GetImage();if(ensure==0x00) {i=0;delay_ms(100);//这里需要延时一下,模块内部处理图像需要时间ensure=PS_GenChar(pressCout);//生成特征if(ensure==0x00){printf("指纹正常\r\n");pressCout++;if(pressCout >=5){pressCout = 0;processnum=2;//跳到第二步} }else; }else ; break;case 2:ensure=PS_RegMB();if(ensure==0x00) {printf("生成指纹模板成功\r\n");processnum=3;//跳到第三步}else {processnum=0;}delay_ms(1200);break;case 3: printf("请输入ID 0=< ID <=499\r\n");ID=500;do{ if(USART_RX_STA&0x8000){ len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度 printf("您发送的id为:\r\n\r\n"); switch(len){case 1:ID=USART_RX_BUF[0]-48;break;case 2:ID=(USART_RX_BUF[0]-48)*10+(USART_RX_BUF[1]-48);break;case 3:ID=(USART_RX_BUF[0]-48)*100+(USART_RX_BUF[1]-48)*10+(USART_RX_BUF[2]-48);break;}printf("ID %d\r\n",ID);USART_RX_STA=0;}}while(!(ID<LB301Para.PS_max));//输入ID必须小于模块容量最大的数值ensure=PS_StoreMB(CharBuffer1,ID);//储存模板if(ensure==0x00) { printf("录入指纹成功\r\n");PS_ValidTempleteNum(&ValidN);//读库指纹个数delay_ms(1500);return ;}else {processnum=0;} break; }delay_ms(200);if(i>=20)//超过20次没有按手指则退出{break; } }
}//刷指纹
void press_FR(void)
{SearchResult seach;u8 ensure;ensure=PS_AutoIdentify(&seach);if(ensure==0x00)//自动验证成功{printf("ID:%d 匹配得分:%d\r\n",seach.pageID,seach.mathscore);if(seach.pageID==1)LED0=!LED0;else if(seach.pageID==2)LED1=!LED1;delay_ms(3000);}else if(ensure != 0xff){printf("验证错误\r\n");delay_ms(500);}
}//删除指纹
void Del_FR(void)
{u8 ensure,len;u16 num;printf("删除指纹\r\n");delay_ms(50);//num=GET_NUM();//获取返回的数值printf("请输入指纹ID,按key1清除全部指纹\r\n");num=500;do{ if(KEY1==0) {num=0xff00; break; } if(USART_RX_STA&0x8000){ len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度 printf("您发送的id为:\r\n\r\n"); switch(len){case 1:num=USART_RX_BUF[0]-48;break;case 2:num=(USART_RX_BUF[0]-48)*10+(USART_RX_BUF[1]-48);break;case 3:num=(USART_RX_BUF[0]-48)*100+(USART_RX_BUF[1]-48)*10+(USART_RX_BUF[2]-48);break;}printf("ID %d\r\n",num);USART_RX_STA=0;}}while(!(num<LB301Para.PS_max));//输入ID必须小于模块容量最大的数值if(num==0xFFFF)goto MENU ; //返回主页面else if(num==0xFF00){ printf("正在清空指纹库\r\n");ensure=PS_Empty();//清空指纹库}else ensure=PS_DeletChar(num,1);//删除单个指纹if(ensure==0){printf("删除指纹成功\r\n");}elsedelay_ms(1200);PS_ValidTempleteNum(&ValidN);//读库指纹个数MENU: delay_ms(50);}
其它详细代码请参考正点原子 指纹识别模块ATK-301 — 正点原子资料下载中心 1.0.0 文档 (openedv.com)http://www.openedv.com/docs/modules/other/ATK-301.html
atk301指纹识别模块-stm32-串口实现相关推荐
- AS608指纹识别模块+STM32实现指纹录入
视频演示 d9148ed412b24119db81eef6c2c8e9ec 1.特性参数 (资料来自ALIENTEK文档) ATK-AS608 指纹识别模块是 ALIENTEK 推出的一款高性能的光学 ...
- 基于STM32单片机光学指纹识别模块(FPM10A)全教程(基于C语言)
本文转载,其来源在参考中:1,稍加修改,因为近期使用到这个模块,故而加以整理! 1.平台 首先我使用的是 奋斗 STM32 开发板 MINI板 基于STM32单片机光学指纹识别模块(FPM10A)全教 ...
- K_A12_007 基于STM32等单片机驱动AS608光学指纹识别模块 OLED0.96显示
K_A12_007 基于STM32等单片机驱动AS608光学指纹识别模块 OLED0.96显示 一.资源说明 二.基本参数 参数 引脚说明 三.驱动说明 对应程序: 四.部分代码说明 1.接线引脚定义 ...
- YH-AS608指纹识别模块介绍
前言 自小刺头深草里,而今渐觉出蓬蒿. 时人不识凌云木,直待凌云始道高.----杜荀鹤<小松> 一.YH-AS608简介 YH-AS608 是野火设计的高性能光学指纹识别模块.它采用了杭州 ...
- 硬件速攻-AS608指纹识别模块
简介 AS608指纹识别模块是一种小型化.低功耗.高精度的指纹识别模块.它采用了高速DSP处理器和先进的算法,可以快速.准确地完成指纹图像的采集和识别. 这个指纹识别模块内部集成了指纹传感器.处理器. ...
- 51驱动AS608光学指纹识别模块 12864显示
51驱动AS608光学指纹识别模块 12864显示 AS608光学指纹识别模块 模块工作原理 1.指纹特征 2.指纹处理 模块参数 引脚说明 实验程序 硬件设备和接线 程序讲解 按键 主函数 实验步骤 ...
- 【HaaS Python硬件积木】AS608指纹识别模块 打造指纹门禁 开门有手就行
一.产品简介 ATK-AS608指纹识别模块是ALIENTEK推出的一款高性能的光学指纹识别模块.它采用的是指纹识别芯片公司杭州晟元芯片技术有限公司生产的AS608指纹识别芯片.该芯片内置DSP运算单 ...
- 电容指纹识别模块使用教程十分钟教会你使用指纹识别
电容指纹识别模块使用教程十分钟教会你使用指纹识别 FPC1020A 引脚说明 使用前准备 接线说明 使用参考 总结 原文链接:https://www.yourcee.com/newsinfo/2923 ...
- ESP32开发之旅——AS608指纹识别模块
ESP32开发之旅--AS608指纹识别模块) 前言 本文中,您将了解到如何使用ESP32调用AS608指纹识别模块. 需要注意的是,本文中的ESP32是使用Micro Python进行开发的,(同时 ...
最新文章
- 阿里CEO张勇放话,90%产品岗将由技术产生,不懂技术的产品人被out了吗?
- LR11之web_reg_find文本检查点的使用
- WebView无法自动播放h5的video视频标签解决办法
- 使用增强回归树和随机森林模型进行溪流水质预测--文献阅读
- java 自动类型_java类型自动转换
- 你H第一次做的视频,在B站播放量过万了~
- java jpanel setbackground,java – JLabel.setBackground(颜色)不起作用?
- 为已经存在的用设置表空间
- android java 图像显示不出来_Java-Android Studio无法在图像视图中显示图像
- Linux解决忘记密码的方法
- 吐血实践-TiDB离线安装
- ubuntu的初始密码
- No way to dispatch this command to Redis Cluster because keys have different slots.
- 2022.5.2 HTML学习第二天
- php 短信验证码过期时间,php下发短信验证码60秒简单验证
- 免费在线pdf转换成word转换器
- 高通平台8953 Linux DTS(Device Tree Source)设备树详解之三(高通MSM8953 android7.1实例分析篇)
- 电脑连接手机热点用百度云下载一会后断网
- python的交互式是什么,python交互是什么
- 深入理解MAGENTO – 第九章 – 数据集合瓦瑞恩