文章目录[隐藏]
ESP32开发之旅——AS608指纹识别模块)
前言
- 本文中,您将了解到如何使用ESP32调用AS608指纹识别模块。
- 需要注意的是,本文中的ESP32是使用Micro Python进行开发的,(同时ESP8266通过更改引脚的方式也可以实现)。
- 本文中使用的代码是由YPYBoard类库示例代码修改后而来,使其能够使用在MicroPython ESP32上。
- 22.2.28更新,修改后的完整代码在文末提供。
AS608指纹识别模块介绍
在正文开始前,按照惯例对该模块进行简单的介绍。
简介
ATK-AS608 指纹识别模块是 ALIENTEK 推出的一款高性能的光学指纹识别模块。ATK-AS608 模块采用了国内著名指纹识别芯片公司杭州晟元芯片技术有限公司(Synochip)的 AS608 指纹识别芯片。芯片内置 DSP 运算单元,集成了指纹识别算法,能高效快速采集图像并识别指纹特征。模块配备了串口、USB 通讯接口,用户无需研究复杂的图像处理及指纹识别算法,只需通过简单的串口、USB 按照通讯协议便可控制模块。
引脚定义
序号 | 名称 | 说明 |
---|---|---|
1 | VI | 模块电源 |
2 | TX | 串行数据输出。TTL 逻辑电平 |
3 | RX | 串行数据输入。TTL 逻辑电平 |
4 | GND | 信号地。内部与电源地连接 |
5 | TCH(WAK) | 感应信号输出,默认高电平有效 |
6 | VA(Vt) | 触摸感应电源输入端,3.3v 供电 |
7 | D+ | USB D+ |
8 | D- | USB D- |
模块实物图
正文
所需材料
- ESP32开发板(已刷入MicroPython固件,未刷入的小伙伴可以参考我前面的教程)
- AS608指纹识别模块
- Thonny(其他支持MicroPython开发的IDE皆可)
连线说明
在AS608模块中,一共引出来了8根线,实际上使用(VI、TX、RX、GND)
这4根就可以完成开发,若要考虑低功耗,则可以加上(TCH、VA)
这两根感应信号线,在本文中,只使用了4根线进行开发。
VI | TX | RX | GND |
---|---|---|---|
3.3V | 13 | 12 | GND |
官方指令文件
模块发出的
搜索 EF 01 FF FF FF FF 07 00 03 02 00 0C
搜索到后 EF 01 FF FF FF FF 07 00 03 00 00 0A
接着 EF 01 FF FF FF FF 02 00 82 EE EE EE EE EE EE EE EE EE EE EE EE EE ED DD DD DD DD DD DD ED DD CC DD DD DC CC DD DD DD DD DC CC DD DD DD DC CC BC CD DD DD CC BC CD DD DD DD CD DD DD DD DD CB BB CC CD DD DD DD CC CC DD CC CC DD DD ED DD DC CC CC CC CC CC DD DD DD DD DD DD CC CC CC CD DD DD DD DD DC DD DD DD DD DD EE EE EE EE EE EE EE EE EE EE EE EE EE EE EE EE EE EE EE EE EE EE EE EE EE EE EE EE EE EE EE EE EE 70 45
最后 EF 01 FF FF FF FF 07 00 03 00 00 0A
找到指纹 EF 01 FF FF FF FF 07 00 07 00 00 0E 01 2B 00 48
EF 01 FF FF FF FF 07 00 07 00 00 0F 00 40 00 5D
EF 01 FF FF FF FF 07 00 07 00 00 03 00 7E 00 8F
没有找到 EF 01 FF FF FF FF 07 00 07 09 00 0E 00 02 00 27
录入指纹:搜索指纹-搜索指纹-搜索到
PC发出的
连接 EF 01 FF FF FF FF 01 00 07 13 00 00 00 00 00 1B
EF 01 FF FF FF FF 01 00 03 16 00 1A
EF 01 FF FF FF FF 01 00 03 1D 00 21
EF 01 FF FF FF FF 01 00 04 1F 00 00 24
EF 01 FF FF FF FF 01 00 04 1F 01 00 25
搜索指纹 EF 01 FF FF FF FF 01 00 03 01 00 05
上传 EF 01 FF FF FF FF 01 00 03 0A 00 0E
EF 01 FF FF FF FF 01 00 04 02 01 00 08
EF 01 FF FF FF FF 01 00 03 01 00 05
EF 01 FF FF FF FF 01 00 03 0A 00 0E
录入 EF 01 FF FF FF FF 01 00 04 02 02 00 09
EF 01 FF FF FF FF 01 00 03 05 00 09
存入指纹 EF 01 FF FF FF FF 01 00 06 06 01 00 17 00 25
EF 01 FF FF FF FF 01 00 06 06 01 00 0D 00 1B
识别指纹 EF 01 FF FF FF FF 01 00 03 01 00 05
找到后 EF 01 FF FF FF FF 01 00 03 0A 00 0E
没有找到 EF 01 FF FF FF FF 01 00 04 02 01 00 08
EF 01 FF FF FF FF 01 00 08 04 01 00 00 01 2C 00 3B
找到 EF 01 FF FF FF FF 01 00 04 02 01 00 08
EF 01 FF FF FF FF 01 00 08 04 01 00 00 01 2C 00 3B
核心代码
这里为修改思路。
YPYBoard源码
def searchfig(self):
hc=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
self.uart.read()
self.sendcmd(cmd_search)
hc=self.uart.read()
while hc[11]!=0xa:
self.sendcmd(cmd_search)
hc=self.uart.read()
self.sendcmd(cmd_upload)
- 在运行中报错为:
TypeError: 'NoneType' object isn't subscriptable
,原因为hc= self.uart.read()
读取到的数据有时候会是None
,因此在下面运行hc[11] != 0xa
时会报错。 - 修改思路:通过查询官方指令文件发现,
0xa
是模块搜索到后反馈信息的最后一位,由于hc为None时没有下标,因此可以将它替换掉。
修改后:
find_dis = b'\xef\x01\xff\xff\xff\xff\x07\x00\x03\x02\x00\x0c' ###未搜索到指纹
def searchfig(self):
hc=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
self.uart.read()
self.sendcmd(cmd_search)
hc=self.uart.read()
while hc == None or hc == find_dis:
self.sendcmd(cmd_search)
time.sleep_ms(500)
hc=self.uart.read()
在源码中,还有一处错误相同的地方需要更改,由您去发现。
结尾处将附上源码。
结尾
版权声明:本文为CSDN博主「未来程序猿小吕」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44186593/article/details/121638267
暂无评论