ESP32开发之旅——AS608指纹识别模块

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

生成海报
点赞 0

未来程序猿小吕

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

nodemcu 模块用mciropython 使用SD卡

使用sd卡可以扩大8266的存储器,使用时候很重要的是接线。 其他很容易。下面程序就是初始化、挂载sd卡、读sd卡里面main.cpp里面的代码行。 import machine, sdcard, os from machine

树莓派4B控制伺服电机 串口转485通信

树莓派4B控制伺服电机 TTL串口转485通信 python 1. 树莓派串口设置 1.设置树莓派的串口输出,先确保树莓派4B的串口输出正常,可以串口连接电脑测试收发,按照下面两个教程走即可。 树

ESP32开发之旅——AS608指纹识别模块

ESP32开发之旅——AS608指纹识别模块) 前言 本文中,您将了解到如何使用ESP32调用AS608指纹识别模块。需要注意的是,本文中的ESP32是使用Micro Python进行开发的,(同时