基于STM32单片机光学指纹识别模块


2.购买指纹模块,可以获得三份资料
3.硬件搭建
FPM10A光学指纹模块共有5个管脚
2 为 GND
3 为 TXD
4 为 RXD
5 为 NC

4.模块的测试工作
5.现在我们要进入编程环节了
这里我使用的STM32单片,所以这两个程序如下:
// 从 USART1 发送一个字节
void USART1_SendByte(unsigned char temp)
{
}
// 从 USART1 读取一个字节
unsigned char USART1_ReceivByte()
{
}
6.查看FPM10A用户手册 我们来实现比对一个指纹(我们这里假设指纹模块中已经存在指纹模板)

//检测指纹模块录入指纹情况,返回00表示录入成功;02无手指;03录入失败
unsigned char test_fig()
{
}
因此,我们在主函数中可以这样调用:
void main
{
}
7.如何录入一个新的指纹信息呢?
//添加一个新的指纹
unsigned char FP_add_new_user(unsigned char ucH_user,unsigned char ucL_user)
{
}
//存储模版到特定地址
void FINGERPRINT_Cmd_Save_Finger( unsigned char ucH_Char, unsigned char ucL_Char)
{
}
8.如何删除一个模板?
//删除所有指纹模版
void FINGERPRINT_Cmd_Delete_All_Model(void)
{
}
9.如何获取已经存取的指纹模板信息?
这个模块一共可以存储0~999枚指纹信息
//搜索全部用户999枚
void FINGERPRINT_Cmd_Search_Finger(void)
{
}
根据用户手册,我们可以从应答包中得出模块中已经存在指纹数量的大小
这样,我们就轻松把指纹模块搞定!
下面我附上基于STM32单片机光学指纹识别模块(FPM10A)打包好的函数库
第一个是
#include "stm32f10x.h"
#include "stm32f10x_usart.h"
#include "misc.h"
unsigned char dat[18];
//FINGERPRINT通信协议定义
unsigned char FP_Pack_Head[6] = {0xEF,0x01,0xFF,0xFF,0xFF,0xFF};
unsigned char FP_Get_Img[6] = {0x01,0x00,0x03,0x01,0x0,0x05};
unsigned char FP_Templete_Num[6] ={0x01,0x00,0x03,0x1D,0x00,0x21 };
unsigned char FP_Search[11]={0x01,0x0,0x08,0x04,0x01,0x0,0x0,0x03,0xA1,0x0,0xB2};
unsigned char FP_Search_0_9[11]={0x01,0x0,0x08,0x04,0x01,0x0,0x0,0x0,0x13,0x0,0x21};//搜索0-9号指纹
unsigned char FP_Img_To_Buffer1[7]={0x01,0x0,0x04,0x02,0x01,0x0,0x08};
unsigned char FP_Img_To_Buffer2[7]={0x01,0x0,0x04,0x02,0x02,0x0,0x09};
unsigned char FP_Reg_Model[6]={0x01,0x0,0x03,0x05,0x0,0x09};
unsigned char FP_Delet_All_Model[6]={0x01,0x0,0x03,0x0d,0x00,0x11};
unsigned char FP_Save_Finger[9]={0x01,0x00,0x06,0x06,0x01,0x00,0x0B,0x00,0x19};
unsigned char FP_Delete_Model[10]={0x01,0x00,0x07,0x0C,0x0,0x0,0x0,0x1,0x0,0x0};
//从 USART1 发送一个字节
void USART1_SendByte(unsigned char temp)
{
}
//从 USART1 读取一个字节
unsigned char USART1_ReceivByte()
{
}
//FINGERPRINT命令字
//FINGERPRINT_获得指纹图像命令
void FINGERPRINT_Cmd_Get_Img(void)
{
}
//删除所有指纹模版
void FINGERPRINT_Cmd_Delete_All_Model(void)
{
}
//讲图像转换成特征码存放在Buffer1中
void FINGERPRINT_Cmd_Img_To_Buffer1(void)
{
}
//将图像转换成特征码存放在Buffer2中
void FINGERPRINT_Cmd_Img_To_Buffer2(void)
{
}
//将BUFFER1 跟 BUFFER2 中的特征码合并成指纹模版
void FINGERPRINT_Cmd_Reg_Model(void)
{
}
//存储模版到特定地址
void FINGERPRINT_Cmd_Save_Finger( unsigned char ucH_Char, unsigned char ucL_Char)
{
}
//获得指纹模板数量
void FINGERPRINT_Cmd_Get_Templete_Num(void)
{
}
//搜索全部用户999枚
void FINGERPRINT_Cmd_Search_Finger(void)
{
}
//搜索用户0~9枚
void FINGERPRINT_Cmd_Search_Finger_Admin(void)
{
}
//添加一个新的指纹
unsigned char FP_add_new_user(unsigned char ucH_user,unsigned char ucL_user)
{
}
第2个 FPM10A.h
#ifndef _FPM10A_H
#define _FPM10A_H
#include
extern unsigned char dat[18];
extern void FINGERPRINT_Cmd_Get_Img();
extern void FINGERPRINT_Cmd_Img_To_Buffer1();
extern void FINGERPRINT_Cmd_Img_To_Buffer2();
extern void FINGERPRINT_Cmd_Reg_Model();
extern void FINGERPRINT_Cmd_Delete_All_Model(void);
extern void FINGERPRINT_Cmd_Search_Finger(void);
extern void FINGERPRINT_Cmd_Get_Templete_Num(void);
extern void FINGERPRINT_Cmd_Search_Finger_Admin(void);
extern void FINGERPRINT_Cmd_Save_Finger( unsigned char ucH_Char, unsigned char ucL_Char);
extern unsigned char FP_add_new_user(unsigned char ucH_user,unsigned char ucL_user);
extern void USART1_SendByte(unsigned char temp);
extern unsigned char USART1_ReceivByte();
extern void Delay_ms1(uint32_t nCount);
void Delay_nus1(uint32_t nCount)
{
}
void Delay_ms1(uint32_t nCount)
{
}
unsigned char test_fig()//检测指纹模块录入指纹情况,返回00表示录入成功;02无手指;03录入失败
{
}
#endif
有了这两个东西,加入到你的工程中,就可以直接调用啦!
评论