本帖最后由 0晨鹤0 于 2017-5-31 01:31 编辑
想改造宿舍门锁开始捣鼓指纹识别。
网上FPM指纹模块的资料比较少,大部分人在用Adafruit的库,感觉这个不是很稳定,经常出UNKNOW错误码,而且封装的函数也比较少。
于是刚学Arduino2天的小白我就自己写了个库(之前是Android程序猿),测试还比较稳定,也封装了好多函数。
各种返回值都有宏定义,比较规范(我是个强迫癌症患者→_→)
理论上FPMxx系列通用,已测试FPM10a
下面是已经封装好的函数,应该满足大部分需求了吧:
[kenrobot_code] /*设置模块地址,用于通讯。不设置默认为0xFFFFFFFF*/
void setCurrentAddress(uint8_t address[]);
/*获取指纹库容量*/
uint16_t getFingerStoreSize(uint16_t *num);
/*获取已有指纹个数*/
uint16_t getFingerNum(uint16_t *num);
/*设置模块安全等级*/
uint8_t setSecurityLevel(uint8_t level);
/*设置模块密码*/
uint8_t setPassword(uint8_t password[]);
/*验证模块密码(非初始密码必须先验证)*/
uint8_t verifyPassword();
uint8_t verifyPassword(uint8_t password[]);
/*录入指纹图像*/
uint8_t getFingerImage();
/*图像生成指纹特征*/
uint8_t image2tz(uint8_t bufferId);
/*2个特征合成指纹模板*/
uint8_t buildTemplate();
/*保存指纹*/
uint8_t storeFinger(uint8_t bufferId, uint16_t pageId);
/*从指纹库读取指纹特征*/
uint8_t loadFinger(uint8_t bufferId, uint16_t pageId);
/*删除指纹*/
uint8_t deleteFinger(uint16_t pageId, uint16_t count);
/*清空指纹库*/
uint8_t emptyFinger();
/*精确比对2个指纹*/
uint8_t contrastFinger(uint16_t * score);
/*搜索指纹库*/
uint8_t searchFinger(uint8_t bufferId, uint16_t startPage, uint16_t endPage, uint16_t *pageId, uint16_t *score);
uint8_t searchFinger(uint8_t bufferId, uint16_t startPage, uint16_t endPage, uint16_t *pageId);
/*以下方法为发送自定义数据及获得响应数据。不推荐使用,尽量用上面封装好的方法。*/
void sendCmd(uint16_t length, uint8_t *content);
uint8_t getReply(uint8_t pkg[], uint16_t timeout);
uint8_t getReply(uint8_t pkg[]);[/kenrobot_code]
整个库有中文注释可以参考,例程实现了 清空指纹库→录入指纹→保存指纹→循环搜索匹配指纹 的整个流程。
具体使用说明请移步github:FPMxx-Fingerprint-Sensor4Arduino https://github.com/liangchenhe55/FPMxx-Fingerprint-Sensor4Arduino(弱弱地求star)
只想要库的见附件。
FPMXX.zip
(6.28 KB, 下载次数: 341)
|