Package: haas-python-as608
HaaS Python介绍HaaS Python是阿里云IoT团队最新研发的一套低代码编程框架，兼容MicroPython编程规范，依托HaaS平台软硬件积木提供AI、支付、蓝牙配网、云连接、UI等物联网场景常用的能力，从而解决了物联网应用开发难的问题。有了Python轻应用框架，物联网编程不再局限于专业软件开发人员，一般的技术员也可以快速实现复杂的物联网需求。
更多HaaS Python介绍和开发资料见HaaS Python官网,创意案例,硬件积木HaaS Python is a set of low-code programming frameworks newly developed by Alibaba Cloud IoT team. It is compatible with MicroPython programming specifications. It relies on the hardware and software building blocks of the HaaS platform to provide capabilities commonly used in IoT scenarios such as AI, payment, Bluetooth network configuration, cloud connection, and UI. Solve the difficult problem of IoT application development. With the Python light application framework, IoT programming is no longer limited to professional software developers, and general technicians can quickly implement complex IoT requirements.
For more HaaS Python introduction and development materials, seeHaaS Python official website,Creative Case,Hardware Building Blocks安装方法在HaaS Python官网下载开发板对应的固件，并完成固件烧录Download the firmware corresponding to the development board atHaaS Python websiteand complete the firmware burning在开发板上运行以下命令完成安装和使用,如果您在使用过程中遇到问题，欢迎在github上向我们提交issue，我们的工程师会及时解答Run the following commands on the development board to complete the installation and use. If you encounter problems during use, please submit an issue to us ongithub, Our engineers will answer in timeimport upip
upip.install("haas-python-as608")
import haas-python-as608指纹识别模块 - ATK-AS608一、产品简介ATK-AS608指纹识别模块是ALIENTEK推出的一款高性能的光学指纹识别模块。它采用的是指纹识别芯片公司杭州晟元芯片技术有限公司生产的AS608指纹识别芯片。该芯片内置DSP运算单元，集成了指纹识别算法，能高效快速采集图像并对指纹特征进行识别。 该模块配备了串口和USB接口，用户无需研究复杂的图像处理及指纹识别算法，只需通过简单的串口、USB按照通讯协议便可控制模块。本模块可应用于各种考勤机、保险箱柜 、指纹门禁系统、指纹锁等场合。本文中主控板和AS608模块之间使用UART进行通信，实际使用过程中最少只需要使用VCC/TX/RX/GND四根引脚和主控板进行通信。模块接口外观及其定义如下：名称说明VCC模块电源正极TX串行数据输出，TTL逻辑电平RX串行数据输入，TTL逻辑电平GND地线TOUCH触摸板感应信号，默认高电平有效UA触摸板电源输入，3.3VD+USB D+数据线D-USB D-数据线二、技术参数供电电压：3.0V~5.5V，典型值：3.3V工作电流：30~60mA，典型值：40mAADC测量速率：8Bps~860Bps，可设置UART接口配置（默认波特率：57600，数据位：8，停止位1，校验位：none，TTL电平）USB接口支持全速2.0标准图像处理时间：<0.4秒上电延时：<0.1秒，模块上电后需要约 0.1S 初始化工作指纹搜索时间：<0.3秒拒真率：<1%认假率：<0.001%指纹存容量：300枚工作环境：温度-20~60摄氏度，湿度<90%（无凝露）三、软件接口AS608指纹识别模块HaaS Python驱动：下载地址AS608(uartObj) - 创建AS608驱动对象函数原型：fig = AS608(uartObj)参数说明：参数类型必选参数？说明uartObjUART是调用此函数前需确保uartObj对象已经处于open状态返回值：执行成功，返回指纹识别模块对象；创建失败，抛出Exception示例代码：fromdriverimportUART# 驱动库importas608# AS608指纹识别模块库uartDev=UART()uartDev.open('as608')# 按照board.json中名为"as608"的设备节点的配置参数（主设备UART波特率、起始位、数据位及停止位长度等）初始化UART类型设备对象fig=as608.AS608(uartDev)# AS608指纹识别设备初始化print("AS608 inited!")uartDev.close()# 关闭UART设备delfig# 删除AS608指纹识别设备对象输出：AS608 inited!getEmptyPosition - 获取空白位置ID函数功能：
查询AS608内部空闲指纹存储ID，即未存储有效指纹模板的存储空间函数原型：ADS1115.getEmptyPosition()参数说明：无返回值：
成功返回非负值，代表可用指纹存储ID，失败返回as608.FAIL示例：fromdriverimportUART# 驱动库importas608# AS608指纹识别模块库uartDev=UART()uartDev.open('as608')# 按照board.json中名为"as608"的设备节点的配置参数（主设备UART波特率、起始位、数据位及停止位长度等）初始化UART类型设备对象fig=as608.AS608(uartDev)# AS608指纹识别设备初始化print("AS608 inited!")id=fig.getEmptyPosition()print("available id:",id)uartDev.close()# 关闭UART设备delfig# 删除AS608指纹识别设备对象输出：AS608 inited!
available id: 1fingerEnroll - 指纹注册函数功能：
开始指纹注册操作，指纹识别的是通过将采集到的指纹和指纹库中的指纹进行特征匹配，匹配成功则指纹识别通过；否则指纹识别失败。需要“指纹注册”过程才能完成向指纹库录入指纹的目的。函数原型：AS608.fingerEnroll(id)参数说明：参数类型必选参数？说明idint是本次指纹注册成功后放在指纹识别库中的位置ID，范围为0~299返回值：
成功返回as608.SUCCESS；失败返回as608.FAIL示例：fromdriverimportUART# 驱动库importas608# AS608指纹识别模块库uartDev=UART()uartDev.open('as608')# 按照board.json中名为"as608"的设备节点的配置参数（主设备UART波特率、起始位、数据位及停止位长度等）初始化UART类型设备对象fig=as608.AS608(uartDev)# AS608指纹识别设备初始化print("AS608 inited!")id=fig.getEmptyPosition()print("available id:",id)ifid>=0:fig.fingerEnroll(id)uartDev.close()# 关闭UART设备delfig# 删除AS608指纹识别设备对象输出：AS608 inited!
available id:1
wait for finger print on the pannel
finger detected
take off your finger, please
put on your finger again, please
creating finger model
store finger model
store finger model successfingerSearch - 指纹识别函数功能：
进行指纹识别操作函数原型：AS608.fingerSearch()参数说明：无返回值：
(result, id, confidence)，返回值说明如下：参数类型说明resultintas608.SUCCESS代表在指纹库中搜索到指纹；as608.FAIL代表未搜索到指纹idint该指纹在指纹库中的位置confidenceint可信度，范围：0~65535，数值越大，可信度越高示例：fromdriverimportUART# 驱动库importas608# AS608指纹识别模块库uartDev=UART()uartDev.open('as608')# 按照board.json中名为"as608"的设备节点的配置参数（主设备UART波特率、起始位、数据位及停止位长度等）初始化UART类型设备对象fig=as608.AS608(uartDev)# AS608指纹识别设备初始化print("AS608 inited!")result,id,confidence=fig.fingerSearch()ifresult==as608.SUCCESS:print('finger search successs,',id,confidence)else:print('your finger was not enrolled')uartDev.close()# 关闭UART设备delfig# 删除AS608指纹识别设备对象输出：AS608 inited!
finger search successs, 0, 190deleteModel - 从指纹库中删除特定指纹函数功能：
从指纹库中删除特定指纹函数原型：AS608.deleteModel(id)参数说明：参数类型必选参数？说明idint是要删除的指纹在指纹识别库中的位置ID，范围为0~299返回值：
成功返回as608.SUCCESS；失败返回as608.FAIL示例：fromdriverimportUART# 驱动库importas608# AS608指纹识别模块库uartDev=UART()uartDev.open('as608')# 按照board.json中名为"as608"的设备节点的配置参数（主设备UART波特率、起始位、数据位及停止位长度等）初始化UART类型设备对象fig=as608.AS608(uartDev)# AS608指纹识别设备初始化print("AS608 inited!")id=0fig.deleteModel(id)print("model delete done")uartDev.close()# 关闭UART设备delfig# 删除AS608指纹识别设备对象输出：AS608 inited!
model delete doneemptyDatabase - 清空指纹库函数功能：
清空指纹库!慎用！函数原型：AS608.emptyDatabase()参数说明：无返回值：
成功返回as608.SUCCESS；失败返回as608.FAIL示例：fromdriverimportUART# 驱动库importas608# AS608指纹识别模块库uartDev=UART()uartDev.open('as608')# 按照board.json中名为"as608"的设备节点的配置参数（主设备UART波特率、起始位、数据位及停止位长度等）初始化UART类型设备对象fig=as608.AS608(uartDev)# AS608指纹识别设备初始化print("AS608 inited!")fig.emptyDatabase()print("empty database done")uartDev.close()# 关闭UART设备delfig# 删除AS608指纹识别设备对象输出：AS608 inited!
empty database done下面的API是AS608模块提供的原子功能的API，如果开发者对这个模块的功能比较熟悉，可以采用，但如果开发者对这个模块不熟悉，不建议直接使用下面的API。getImage - 采集指纹图片函数功能：
清空指纹库!慎用！函数原型：AS608.getImage()参数说明：无返回值：
成功返回as608.SUCCESS；失败返回as608.FAIL示例：
请参考fingerEnroll函数实现里边的用法image2Character - 指纹图片生成特征值函数功能：
清空指纹库!慎用！函数原型：AS608.image2Character(bufferId)参数说明：参数类型必选参数？说明bufferIdint否转换后的特征值存储缓冲区ID, 1代表将特征值存储在Buffer1中；2代表将特征值存储在Buffer2中返回值：
成功返回0；失败返回as608.FAIL示例：
请参考fingerEnroll函数实现里边的用法createModel - 合并特征并生成模板函数功能：
合并特征并生成模板函数原型：AS608.createModel()参数说明：无返回值：
成功返回as608.SUCCESS；失败返回as608.FAIL示例：
请参考fingerEnroll函数实现里边的用法storeModel - 存储模板函数功能：
将指纹对应的特征模板存放到指纹数据库中函数原型：AS608.storeModel(id)参数说明：参数类型必选参数？说明idint否指纹存储在指纹库中的位置，范围[0,299]返回值：
成功返回as608.SUCCESS；失败返回as608.FAIL示例：
请参考fingerEnroll函数实现里边的用法search - 在指纹库中搜索指纹函数功能：
在指纹库中搜索特征模板函数原型：AS608.search()参数说明：
无返回值：
(result, id, confidence)，变量说明如下：参数类型说明resultintas608.SUCCESS代表在指纹库中搜索到指纹；as608.FAIL代表未搜索到指纹idint该指纹在指纹库中的位置confidenceint可信度，范围：0~65535，数值越大，可信度越高示例：
请参考fingerSearch函数实现里边的用法四、接口案例此使用实例在board.json中定义了名为as608的UART类型的对象。在Python脚本中首先录制指纹，然后周期性的进行指纹识别board.json配置：{"name":"board-name","version":"1.0.0","io":{"as608":{"type":"UART","port":2,"dataWidth":8,"baudRate":57600,"stopBits":2,"flowControl":"disable","parity":"none"}},"debugLevel":"ERROR","repl":"disable"}案例代码：fromdriverimportUART# 驱动库importas608# AS608指纹识别模块库uartDev=UART()uartDev.open('as608')# 按照board.json中名为"as608"的设备节点的配置参数（主设备UART波特率、起始位、数据位及停止位长度等）初始化UART类型设备对象fig=as608.AS608(uartDev)# AS608指纹识别设备初始化print("AS608 inited!")id=fig.getEmptyPosition()print("empty record id:",id)ret=fig.fingerEnroll(id)ifret:print("finger enroll failed!")else:print("finger enroll success!")whileTrue:ret,id,score=fig.fingerSearch()print(ret,id,score)uartDev.close()# 关闭UART设备delfig# 删除AS608指纹识别设备对象输出：AS608inited!emptyrecordid:1waitforfingerprintonthepannelfingerdetectedtakeoffyourfinger,pleaseputonyourfingeragain,pleasecreatingfingermodelstorefingermodelstorefingermodelsuccessfingerenrollsuccess!五、通信协议主控芯片和AS608之间采用UART进行通信。发往AS608模块的指令都遵循如下的格式：名称包头芯片地址包标识包长度指令标识参数1...参数n校验和字节数（单位：bytes）24121NNN2内容0xEF01xxxx01N=AS608模块回复的响应都遵循如下的格式：名称包头芯片地址包标识包长度确认码返回参数校验和字节数（单位：bytes）24121N2内容0xEF01xxxx01N=AS608模组共提供31条指令，实际使用中最常用的指令有如下几条：指令码功能说明01H从传感器上读入图像存于图像缓冲区02H根据原始图像生成指纹特征存于CharBuffer1或CharBuffer203H精确比对CharBuffer1与CharBuffer2中的特征文件04H以CharBuffer1或CharBuffer2中的特征文件搜索整个或部分指纹库05H将CharBuffer1与CharBuffer2中的特征文件合并生成模板存于CharBuffer1与CharBuffer206H将特征缓冲区中的文件储存到flash指纹库中0CH删除flash指纹库中的一个特征文件0DH清空flash指纹库0EH设置系统参数0FH读系统基本参数1BH高速搜索FLASH1DH读有效模板个数AS608模块回复的响应包中的确认码如下：确认码功能说明00H表示指令执行完毕或OK01H表示数据包接收错误02H表示传感器上没有手指03H表示录入指纹图像失败04H表示指纹图像太干、太淡而生不成特征05H表示指纹图像太湿、太糊而生不成特征06H表示指纹图像太乱而生不成特征07H表示指纹图像正常，但特征点太少（或面积太小）而生不成特征08H表示指纹不匹配09H表示没搜索到指纹0aH表示特征合并失败0bH表示访问指纹库时地址序号超出指纹库范围0cH表示从指纹库读模板出错或无效0dH表示上传特征失败0eH表示模块不能接受后续数据包0fH表示上传图像失败10H表示删除模板失败11H表示清空指纹库失败13H表示口令不正确15H表示缓冲区内没有有效原始图而生不成图像18H表示读写 FLASH 出错19H未定义错误1AH无效寄存器号1BH寄存器设定内容错误号1CH记事本页码指定错误1DH端口操作失败1EH自动注册失败1FH指纹库满实际控制此指纹识别模块进行指纹录入和指纹识别的流程请参考下图。参考文献及购买链接[1]AS60x指纹识别SoC通讯手册[2]购买链接