(错误都已改正)AS608指纹+STM32串口通信录入或删除指纹_as608指纹模块怎么连-程序员宅基地

技术标签: stm32  STM32应用  

目录

一、硬件使用分类

1.整体图展示

 2.STM32F103RCT6单片机

3.AS608指纹模块

4.USB转TTL

二、软件设计

1.接线设计

2.程序设计

一、硬件使用分类

1.整体图展示

采用STM32F103RCT6作为主控制器

 2.STM32F103RCT6单片机

 STM32F103RCT6不含USB转TTL芯片,需要外界接入

下图为STM32F103RCT6原理图

其中在RCT6中PA9,PA10为板子的USART1,原理图中并没有出现以上俩引脚,其引脚在为板子上标识的TX,RX

 以下是工程中USART1的初始化程序设计

void uart_init(u32 bound)
	{
  //GPIO端口设置
    GPIO_InitTypeDef GPIO_InitStructure;
	USART_InitTypeDef USART_InitStructure;
	NVIC_InitTypeDef NVIC_InitStructure;
	 
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE);	//使能USART1,GPIOA时钟
  
	//USART1_TX   GPIOA.9
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;	//复用推挽输出
  GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.9
   
  //USART1_RX	  GPIOA.10初始化
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//PA10
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
  GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.10  

  //Usart1 NVIC 配置
  NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;//抢占优先级3
	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;		//子优先级3
	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;			//IRQ通道使能
	NVIC_Init(&NVIC_InitStructure);	//根据指定的参数初始化VIC寄存器
  
   //USART 初始化设置

	USART_InitStructure.USART_BaudRate = bound;//串口波特率
	USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为8位数据格式
	USART_InitStructure.USART_StopBits = USART_StopBits_1;//一个停止位
	USART_InitStructure.USART_Parity = USART_Parity_No;//无奇偶校验位
	USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//无硬件数据流控制
	USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;	//收发模式

  USART_Init(USART1, &USART_InitStructure); //初始化串口1
  USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//开启串口接受中断
  USART_Cmd(USART1, ENABLE);                    //使能串口1 

}

在上面的程序段中,我们可以清晰的看出来PA9,PA10都可以使用,PA9为TX,PA10为RX。

3.AS608指纹模块

         AS608指纹识别模块是ALIENTEK推出的一款高性能的光学指纹识别模块。AS608模块采用了国内著名指纹识别芯片公司杭州晟元芯片技术有限公司(Synochip)的 AS608指纹识别芯片。芯片内置DSP运算单元,集成了指纹识别算法,能高效快速采集图像并识别指纹特征。模块配备了串口、USB通讯接口,用户无需研究复杂的图像处理及指纹识别算法,只需通过简单的串口、USB 按照通讯协议便可控制模块。本模块可应用于各种考勤机、保险箱柜、指纹门禁系统、指纹锁等场合。
        下面是AS608的一些具体参数:

供电电压  3.3V(切勿使用5V,容易烧毁芯片)
供电电流  < 60mA
指纹图像录入时间  < 1s
搜索时间 < 1.0s(1:500时,均值)
可录入指纹数量  300
通讯接口 USB/USART
匹配方式 比对方式(1:1),搜索方式(1:N)

        注意!!!!     AS608指纹模块切勿接5V,一定要接3.3V

        注意!!!!     AS608指纹模块切勿接5V,一定要接3.3V

        注意!!!!     AS608指纹模块切勿接5V,一定要接3.3V

如果不相信的话可以去试试(如果你是土豪的话,完全跳过这一条)

下面俩个图就是我们AS608指纹模块的引脚解释:

D+和D-不用接,就算你想接也不一定能接上,反正根本就没有那俩跟线的引脚。

其中5线(蓝线)这个引脚就是作为我们输出的引脚,话说每个模块到头来都是个开关而已,就是开关的启动方式不同罢了。

4.USB转TTL

这个就不做过多介绍了,都是大家常用的东西。

二、软件设计

1.接线设计

AS608指纹模块与单片机接线

VCC GND TX  RX  TCH UA 
3.3V GND PA3 PA2 PA6 3.3V

 USB转TTL与单片机接线

VCC GND TX RX
5V GND RX(PA10) TX(PA9)

 在RCT6中标识的是TX与RX,其实他们就是单片机上的PA10,PA9上面已经解释过了,这里就不做过多的解释了。

2.程序设计

程序是按照正点原子中的历程进行修改的,此处使用的是串口进行操作的

对于AS608指纹模块我们首先要进行握手,换句话也就是通过发送特定的16进制数据将单片机与模块进行连接而已了。

printf("AS608指纹模块串口操作\r\n");
	printf("作者:十里承欢-\r\n");
	printf("尝试连接AS608中.....\r\n");
	while(PS_HandShake(&AS608Addr))//与AS608模块握手
	{

		printf("未连接上AS608!\r\n");
		delay_ms(1000);
		printf("再次尝试连接中....\r\n");
		delay_ms(1000);	  
	}
	//连接模块成功,初始化
	printf("连接成功!!\r\n");
	str=mymalloc(30);
	sprintf(str,"波特率:%d   地址:%x",usart2_baund,AS608Addr);//显示波特率
	printf("%s",str);
	delay_ms(100);

 在握手过程中

1.发送包头:也就是0XEF0X01

2.发送地址:AS608的默认地址是0XFFFFFFFF

3.发送0X010X000X00等待AS608响应,对比响应的数据即可完成握手

//与AS608握手 PS_HandShake
//参数: PS_Addr地址指针
//说明: 模块返新地址(正确地址)	
u8 PS_HandShake(u32 *PS_Addr)
{
	SendHead();
	SendAddr();
	MYUSART_SendData(0X01);
	MYUSART_SendData(0X00);
	MYUSART_SendData(0X00);	
	delay_ms(200);
	if(USART2_RX_STA&0X8000)//接收到数据
	{		
		if(//判断是不是模块返回的应答包				
					USART2_RX_BUF[0]==0XEF
				&&USART2_RX_BUF[1]==0X01
				&&USART2_RX_BUF[6]==0X07
			)
			{
				*PS_Addr=(USART2_RX_BUF[2]<<24) + (USART2_RX_BUF[3]<<16)
								+(USART2_RX_BUF[4]<<8) + (USART2_RX_BUF[5]);
				USART2_RX_STA=0;
				return 0;
			}
		USART2_RX_STA=0;					
	}

	return 1;		
}

然后按照内容提示进行操做

 按下KEY1键就是录入指纹

 此时需要我们填写指纹的位置,由于该模块最多就能储存300个指纹,所以位置就是1~300中任何一个数。

 我们的指纹已经被成功录入。

我们可以进行指纹读取:

 在红框框住的,前面是我们的指纹位置,后面是我们的等级,也就是相似程度,可以这样理解。

剩下的功能就不过多演示了,基本跟着提示来就没有问题。

希望大家好好看看用户手册,我把链接放到下面:

百度网盘 请输入提取码     提取码:dte5

程序链接:百度网盘 请输入提取码           提取码:rq79

上面我也说过,可以通过TCH引脚进行一系列操作以及拓展,希望大家加油!!!!!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_57922194/article/details/120027463

智能推荐

UOJ #11. 【UTR #1】ydc的大树-程序员宅基地

文章浏览阅读92次。题目描述:ydc有一棵n个结点的黑白相间的大树,从1到n编号。这棵黑白树中有m个黑点,其它都是白点。对于一个黑点我们定义他的好朋友为离他最远的黑点。如果有多个黑点离它最远那么都是它的好朋友。两点间的距离定义为两点之间的最短路的长度。现在你要摧毁一个白点。摧毁后有一些黑点会不高兴。一个黑点不高兴当且仅当他不能到达任何一个在摧毁那个白点前的好朋友。请你最大化不高兴的黑点数。解题..._ydc的大树

阿里程序员常用的 15 款开发者工具~-程序员宅基地

文章浏览阅读88次。从人工到自动化,从重复到创新,技术演进的历程中,伴随着开发者工具类产品的发展。阿里巴巴将自身在各类业务场景下的技术积淀,通过开源、云上实现或工具等形式对外开放,本文将精选了一些阿里巴巴的开发者工具,希望能帮助开发者们提高开发效率、更优雅的写代码。由于开发者涉及的技术领域众多,笔者仅从自己熟悉的领域,以后端开发者的视角盘点平时可能用得到的工具。每个工具按照以下几点进行介绍:工具名称和简介使用场景使用教程获取方式一、Java 线上诊断工具 ArthasArthas是阿里巴巴 2018 年 9 月开

java实体类及类属性判空_判断实体类是否为空-程序员宅基地

文章浏览阅读1.1w次。敲代码时判空是必须的,这里分享一下java实体类及类属性判空体会。一、实体类判空:1.1实体类判空如果是读库返回实体类,我们直接判空即可,如下图1.2如果是先定义了类就不能这样判空了,因为new 对象时已经分配了资源,代码不执行if而是执行else,如下图二、类属性判空如果遇到上述1.2情况时,属性判空就比较麻烦了,特别是类属性是基本类型时,比如类的id属性是long类型时,这时可以用下面的代码(下面的代码是看网上提供的判断类是否都为null的判断方法)修改上述代码为下图,就可以根据实际需求_判断实体类是否为空

源码阅读笔记 - 2 std::vector (1)-程序员宅基地

文章浏览阅读362次。vector的源码真是太长了,今天用了一个下午和一个晚上看和注释了前面的一千行左右p.s.博客园的代码高亮真是太垃圾, 如果想要阅读带注释的源码,推荐粘贴到VS2015里,然后按ctrl+z取消自动格式化,用我格式化好的样子,并在最前面#include <vector>和using namespace std,这样就能带高亮的看我加了注释的代码了花了不短的时间弄明白了..._2std

利用python实现对连续特征的分箱操作(数据离散化)_连续性数据分箱方法-程序员宅基地

文章浏览阅读5.7k次。1. 数据分箱1.1 等区间分箱将连续变量的值进行获取,然后利用pandas的cut函数进行等区间分箱。如下代码,获取值A2_values ,并等数值区间分为6类为[0,1,2,3,4,5];(cut在操作时,统计了一维数组的最小、最大值,得到一个区间长度,因为需要划分6个区间)1.2 等频分箱将连续变量在[min,max]区间内,等数量地进行分箱。1.3 卡方分箱法(ChiMe..._连续性数据分箱方法

时序动作检测SSAD《Single Shot Temporal Action Detection》-程序员宅基地

文章浏览阅读6k次,点赞2次,收藏29次。温馨提示:本文仅供自己参考(勿捧杀),如有理解错误,有时间再改!时序动作分类:识别一段视频中的动作类别时序动作检测:识别一段视频中的动作类别以及动作的开始和结束时间时空动作检测:识别一段视频中的动作类别、动作的开始和结束时间,以及动作发生的空间位置(如投篮人所在的bbox)时序动作检测可以被看做是时序版本的图像目标检测,因为两者都是需要检测目标的类别,并且都需要确定目标的准确边界位置。detect by classifying时序动作检测方法:先使..._时序动作检测

随便推点

Xcode控制台调试常用命令_xcode po命令-程序员宅基地

文章浏览阅读1.7k次。当遇到crash时,查看线程栈,只能看到栈帧的地址,使用imagelookup–address地址可以方便的定位到这个地址对应的代码行。命令可以打印出线程的堆栈信息,该信息比左侧的DebugNavigator看到的还要详细一些。在调试时,动态的修改变量的值,这在调试想要让应用执行异常路径(如执行某个else情况)很有用。命令类似,所以也是可以打印常量、变量,打印表达式返回的对象等。在控制台执行该命令,可以在不修改代码,不重新编译的情况下,修改界面上的视图。命令是打印所有线程的堆栈信息。......_xcode po命令

PPT的配色方法(师从于珞珈老师)_ppt配色教程-程序员宅基地

文章浏览阅读969次。PPT的配色方法PPT中色彩的用处层次更加的清晰,ppt中有小标题 大标题 正文等不同的部分,每一个部分的重点和级别程度也不一样,可以使用不同的颜色来对重点和非重点进行区分分割内容区域,通常一个PPT具有很多个部分,每个部分表达的内容可能不一样,比如开题PPT,就包括了研究背景和意义、研究现状、研究内容、工作进度安排和参考文献五个部分。分别对每个部分用不同颜色加以区分(这里求同存异,我个人是不太赞成老师这一观点的,因为我一直觉得一套PPT必须有一套的完整风格)强化主题联系,在专业的场合,_ppt配色教程

ajax 注册异步查询,Ajax异步查询用户是否存在-程序员宅基地

文章浏览阅读142次。码农公社 210.net.cn210是何含义?10月24日是程序员节,1024 =210、210既210之意。Ajax就将信息发到了服务器去检查该用户名是否已经被注册了,这样如果用户名已经存在,不用等用户将所有数据都提交就可以给出提示。采用这种方式大大改善了用户体验。下面是用JS获取用户Id然后将其发送给UserValidate.jsp页面,然后通过callback方法接收页面返回的消息并通..._.net查询用户信息ajax

catkin_make 与cmake-程序员宅基地

文章浏览阅读990次。http://blog.csdn.net/zyh821351004/article/details/503884291. catkin_make 与cmake的关系 程序在cmake编译的流程: cmake指令依据你的CMakeLists.txt 文件,生成makefiles文件,make再依据此makefiles文件编译链接生成可执行文件.catkin_make是将..._catkin_make -dcmake_build_type=

基本函数依赖和候选键_5G 通信候选波形的设计和评测解决方案-程序员宅基地

文章浏览阅读336次。利用仿真技术深入分析 5G 通信系统及其波形概述虽然第四代(4G)蜂窝系统——LTE 和 LTE-Advanced——还处在部署进程中,第五代(5G)系统的研发已经开始,5G 技术愿景是“随时随地万物接入”。5G 相比 4G 的一个显著优势是, 5G 能够提供超快(接近 10 Gbps)、连贯和优质的连通性,时延很低(不超过几毫秒),可以支持新的用例和构成物联网(IoT) 的数十亿个传感器。同样重..._数学5g通讯函数

linux 编译 内核模块 头文件,linux/module.h: No such file or directory 内核模块编译过程...-程序员宅基地

文章浏览阅读1.7k次。1、缺少Linux kernel头文件To install just the headers in Ubuntu:sudo apt-get install linux-headers-$(uname -r)To install the entire Linux kernel source in Ubuntu:sudo apt-get install linux-sourceNote that yo..._linux/init.h: no such file or directory