第4章:指纹模块选型与数据手册解读

做门禁项目,第一步就是选模块。市面上常见的指纹模块就那么几款——AS608、FPM10A、R307。说实话,我刚入行那会儿也被这些型号搞得头晕。后来项目做多了,发现它们其实各有脾气。

今天我就带你把这三款模块掰开揉碎了讲。数据手册怎么看?关键参数抓哪些?引脚怎么接?咱们一个一个来。

4.1 三款模块的硬碰硬对比

先看一张对比表,心里有个底:

参数项 AS608 FPM10A R307
传感器类型 光学 光学 光学
工作电压 3.3V ~ 5V 3.3V ~ 5V 3.3V ~ 5V
工作电流 典型 50mA 典型 60mA 典型 55mA
指纹容量 300 枚 200 枚 1000 枚
通讯接口 UART / USB UART UART
默认波特率 57600 bps 57600 bps 9600 bps
指令集 自定义协议 自定义协议 自定义协议
工作温度 -20℃ ~ 60℃ -20℃ ~ 60℃ -20℃ ~ 60℃
模块尺寸 约 40×20 mm 约 40×20 mm 约 50×25 mm

看到没?三款模块电压范围一样,但波特率有差异。R307默认是9600,另外两款是57600。我有个朋友第一次用R307,按57600发指令,模块死活没反应——折腾了一下午才发现是波特率没对上。

⚠️ 注意: 模块的波特率可以通过指令修改,但修改后要断电重启才能生效。我曾经在调试时连续改了三次波特率,结果模块彻底失联了……最后只能重新烧固件。

4.2 数据手册里的关键参数

拿到一份数据手册,别急着翻页。我一般先看三个地方:指令集、波特率、电压。这三样搞不定,后面全是白搭。

4.2.1 指令集

指纹模块的指令集,说白了就是你和模块对话的「暗号」。每个模块厂家都有自己的协议格式。以AS608为例,它的指令包长这样:

包头(0xEF01) + 芯片地址(4字节) + 包标识(1字节) + 包长度(2字节) + 数据体(N字节) + 校验和(2字节)

举个例子,录入指纹的指令:

0xEF 0x01 0xFF 0xFF 0xFF 0xFF 0x01 0x00 0x07 0x13 0x00 0x00 0x00 0x00 0x1B

嗯,看着有点吓人。但别怕,实际开发时我们一般用封装好的库函数。不过我还是建议你手撕一遍协议——我当年就是靠这个彻底搞懂了模块的通信机制。

💡 小技巧: 调试指令时,用串口助手先发一条「读版本号」指令。如果返回的数据格式正确,说明通信链路没问题。这是我最常用的「握手」方法。

4.2.2 波特率

波特率就是通信速度。三款模块的默认值不一样,但都可以通过指令修改。我个人习惯用57600,因为速度够快,而且误码率低。

但要注意:修改波特率后,模块会保存到Flash里。下次上电就用新波特率。如果你忘了自己改过什么值……嗯,那就只能盲猜了。我建议你在代码里加个「波特率自动探测」功能,遍历常见波特率发握手指令。

4.2.3 电压

三款模块都支持3.3V和5V供电。但这里有个坑:模块的UART电平是3.3V的!

如果你用5V的单片机(比如Arduino Uno),直接连TX/RX会烧模块。必须加电平转换电路,或者用电阻分压。我见过有人直接怼5V上去,模块冒烟了……

✅ 正确做法: 用3.3V供电,或者用5V供电但串接1kΩ电阻限流。更稳妥的方案是用电平转换芯片(如TXS0108E)。

4.3 原理图与引脚定义

三款模块的引脚定义大同小异。以AS608为例,标准6针接口:

引脚编号 名称 功能
1 VCC 电源正极(3.3V ~ 5V)
2 GND 电源地
3 TX 模块发送(接单片机RX)
4 RX 模块接收(接单片机TX)
5 TOUCH 手指检测输出(高电平有效)
6 RST 复位引脚(低电平复位)

FPM10A和R307的引脚基本一样,只是封装顺序可能不同。接法上,我建议你把TOUCH引脚接到单片机的外部中断上。这样手指一按,MCU立刻响应,不用轮询。

原理图方面,我贴一个最简的接线图:

单片机(3.3V)          AS608模块
   TX  ————————————  RX
   RX  ————————————  TX
   VCC ————————————  VCC
   GND ————————————  GND
   INT ————————————  TOUCH
   IO  ————————————  RST

注意:RST引脚不能悬空。我见过有人不接复位,结果模块上电后状态不确定。加个10kΩ上拉电阻到VCC,或者直接接单片机IO口控制。

⚠️ 避坑指南: 我曾经在批量生产时,发现部分模块上电后无法通信。排查了一整天,最后发现是RX/TX接反了。从那以后,我每次画板子都会在丝印层标上「TX→RX」「RX→TX」的箭头。

4.4 选型建议

说了这么多,到底选哪款?我的建议是:

  • AS608:适合入门学习,资料最多,淘宝上10块钱就能买到。但容量只有300枚,商用项目慎用。
  • FPM10A:和AS608几乎一样,但多了个手指检测引脚。我比较推荐这款,因为TOUCH引脚很好用。
  • R307:容量大(1000枚),适合做门禁考勤系统。但默认波特率低,通信速度慢一点。

我个人习惯:小项目用FPM10A,大项目用R307。AS608嘛……除非客户指定,否则我一般不碰。为什么?因为它的指令集和另外两款不兼容,换模块时得重写驱动。

好了,这一章就到这里。下一章我们开始实战——用STM32驱动FPM10A,把指纹录进去、认出来。到时候你会看到,数据手册里的那些参数,到底是怎么在代码里落地。