IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> AS608指纹+STM32串口通信录入或删除指纹 -> 正文阅读

[嵌入式]AS608指纹+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指纹模块与单片机接线

VCCGNDTX?RX?TCHUA?
3.3VGNDPA3PA4PA63.3V

?USB转TTL与单片机接线

VCCGNDTXRX
5VGNDRX(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中任何一个数。

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

我们可以进行指纹读取:

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

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

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

https://pan.baidu.com/s/1HoqaqClOjuoHO5D-bHeUJA? ? ?提取码:dte5

程序链接:https://pan.baidu.com/s/1v7yOCNp82kGRC_9qrAQGEA? ? ?提取码:jm7p

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

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-09-02 11:32:57  更:2021-09-02 11:33:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 0:52:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码