AS608 指纹门锁教程:Arduino 接线、录入与 12V 锁控制

Sensor cap jari AS608 hitam dengan jari diletak di tingkap kaca, disambung ke Arduino Uno biru dan modul relay merah yang membuka electric strike

要用指纹开门,把 AS608 sensor 通过 UART 接到 Arduino Uno,先把每根手指录入(enrol)到模块的存储器里,然后 sketch 会比对放上来的手指,驱动 relay 打开 12V 门锁。指纹 template 存在 AS608 模块自己的 flash 里,不是 Arduino——录入一次,断电也不会丢。

Arduino 指纹门锁需要哪些零件?

AS608FM 是一款 500 DPI 的光学指纹模块,内置 DSP——在 15x18mm 的扫描区域上,识别时间不到 1 秒。它通过 UART 通信,默认 57600 bps,供电 3.3V 到 6V。

开关门锁我们用2 路 relay 模块,而不是裸 relay:relay 线圈的电流远超 Arduino 单个引脚 20 mA 的上限,而这个模块板上已经带好 transistor、flyback diode 和 optocoupler。Songle 裸 relay 我们也有,留给自带 driver 电路的设计。

只有锁本身需要另外购买——抽屉和 locker 用 12V solenoid,房门用 electric strike;上面清单里的 12V adaptor 就是给锁供电的。这个项目全程低电压——要开关市电负载,请按我们的 relay 模块安全使用教程操作。

AS608 是怎么工作的?为什么必须先做录入?

AS608 不会把手指的图像传给 Arduino——它把每枚指纹存成一个数学化的 template,保存在模块自己的 flash 里,各自对应一个 ID 号。比对 sketch 只有在存了 template 之后才有用;很多人直接烧录 matching sketch,然后奇怪为什么所有手指都被拒——存储器还是空的。

录入一根手指的流程:选一个 ID 号,把手指放在玻璃窗上,抬起来,再把同一根手指放一次。两次读取合成一个 template,存进那个 ID。记得写下清单,哪个 ID 属于谁——模块只认号码,不认名字。

有人搬走时,用 finger.deleteModel(id) 删掉他那个 ID 的 template;要全部清空,用 finger.emptyDatabase()。不用换锁芯就能收回权限——这是比物理钥匙大得多的优势。

卡通插图展示指纹录入过程:在黑色 AS608 传感器上按压两次,template 才存入模块
录入:放手指、抬起、再放同一根手指——两次读取合成一个 template,存进模块的 flash。

AS608 光学式还是 ZW111 电容式——该选哪个?

AS608 隔着玻璃对手指表面拍一张光学图像;ZW111FP 则是电容式(半导体)sensor,核心是 RISC-V,用电学方式读取皮肤纹路。

方面 AS608FM(光学式) ZW111FP(电容式)
技术 手指表面光学成像,500 DPI 电学读取皮肤纹路,RISC-V 核心
手指湿 / 干 / 脏 需要清晰图像——手指湿或玻璃有灰经常识别失败 受表面状况影响较小;手指太湿仍然吃力
外形与安装 方形——适合平面面板或自制 bracket 白/银色圆形带 bezel——圆形面板开孔最整洁
接口 ribbon 线裸露线头——需要 solder 或 crimp 出厂带 dupont 母头——直接插 header

简单说:AS608 适合学习、学校项目和自制 bracket——也是本教程的选择;ZW111 适合圆形面板开孔、不想动烙铁的场合。

卡通对比插图:方形黑色、线头裸露的 AS608 指纹传感器与圆形白银色 bezel、带 dupont 插头的 ZW111 传感器
左:方形光学式 AS608,线头裸露。右:圆形电容式 ZW111,带即插即用的 dupont 插头。

AS608、relay 和 12V 门锁要怎么接线?

AS608 的 ribbon 里只用到四条线——VCC、GND、TXD 和 RXD,其余不接。线头是镀锡的裸线——先 solder 或 crimp 到 header pin 上,做法见我们的排针焊接教程。认线要看模块上的引脚标注,不要看颜色——不同批次的颜色顺序不一样。

关键点:供电可以 3.3V 到 6V,但 AS608 的 UART 逻辑电平是 3.3V。sensor 的 TXD 可以直连 Uno——3.3V 会被读作 HIGH——但反方向,Uno 的 TX(5V)进 sensor 的 RXD,必须经过 divider:从 pin 3 串 1 kΩ,再 2 kΩ 到 GND,在中点取约 3.3V 的信号。把 5V 直接灌进 3.3V 的 RX 引脚,是这个模块最经典的损坏方式。

引脚 / 线 接到 备注
AS608 VCC Uno 5V 模块供电 3.3V–6V
AS608 GND Uno GND 所有部分共地
AS608 TXD Uno pin 2(SoftwareSerial RX) 直连——3.3V 读作 HIGH
AS608 RXD Uno pin 3(TX),经 1 kΩ + 2 kΩ divider 必须把 5V 降到约 3.3V
Relay DC+ Uno 5V relay 线圈供电
Relay DC− Uno GND
Relay IN1 Uno pin 7 触发 channel 1
Relay COM(channel 1) 门锁电源 +12V 门锁回路与 Uno 分开
Relay NO(channel 1) 12V 门锁的 + 端 relay 吸合时才通电
门锁 − 门锁电源 −12V

为什么用 SoftwareSerial 而不是 pin 0/1?Uno 的硬件 Serial 与 USB 共用,要留给烧录和 Serial Monitor,所以 sensor 放在 pin 2 和 3——在 Uno 上所有数字引脚都支持 SoftwareSerial 的 RX,57600 baud 也在它支持的速率清单里——但这已经接近 16 MHz Uno 上 SoftwareSerial 的实际极限。pin 2/3 加 57600 的配置与 Adafruit library 官方示例一致,对这颗 sensor 的短数据包来说是稳定的;线尽量短,如果 sensor 偶尔“找不到”,先检查接线和 divider。relay 模块上还有 high/low level trigger 的 jumper:设成 high-trigger,relay 才会只在 pin 7 为 HIGH 时吸合——jumper 装错,门锁可能在开机瞬间被打开一下。

卡通接线图:黑色 AS608 接蓝色 Arduino Uno,经两颗电阻的 divider,配红色 relay 模块和独立供电的 12V solenoid 门锁
sensor 四条线(其中一条经过两颗电阻的 divider)、三条线到 relay,12V 门锁回路独立接在 COM/NO 上。

比对指纹并开锁的 Arduino sketch 怎么写?

下面的 sketch 用的是 Adafruit Fingerprint Sensor Library——在 Library Manager 里安装。录入请先跑 library 自带的现成示例:File → Examples → Adafruit Fingerprint Sensor Library → enroll,在 Serial Monitor 输入 ID 号并按提示操作。template 存好之后,再烧录这个比对 sketch:

#include <SoftwareSerial.h>
#include <Adafruit_Fingerprint.h>

// Pin 2 = Uno RX(接 sensor TXD),Pin 3 = Uno TX(经 divider 接 sensor RXD)
SoftwareSerial jalurSensor(2, 3);
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&jalurSensor);

const int PIN_RELAY = 7;                 // 接 relay 模块的 IN1
const unsigned long TEMPOH_BUKA = 5000;  // 门锁打开 5 秒

void setup() {
  digitalWrite(PIN_RELAY, LOW);          // 先设定空闲电平(jumper 设 high-trigger)
  pinMode(PIN_RELAY, OUTPUT);            // 再设为 output - 避免 boot 时 relay 咔哒一声

  Serial.begin(9600);
  finger.begin(57600);                   // AS608 默认 baud

  if (finger.verifyPassword()) {
    Serial.println(F("Sensor AS608 dijumpai."));
  } else {
    Serial.println(F("Sensor tidak dijumpai. Semak wiring dan baud."));
    while (true) { delay(100); }         // 停在这里
  }

  finger.getTemplateCount();
  if (finger.templateCount == 0) {
    Serial.println(F("Tiada template. Jalankan contoh 'enroll' dahulu."));
  } else {
    Serial.print(F("Template tersimpan: "));
    Serial.println(finger.templateCount);
  }
}

void loop() {
  if (capJariSepadan()) {
    Serial.print(F("Akses diberi untuk ID "));
    Serial.println(finger.fingerID);
    digitalWrite(PIN_RELAY, HIGH);       // relay ON,门锁打开
    delay(TEMPOH_BUKA);
    digitalWrite(PIN_RELAY, LOW);        // 重新上锁
  }
  delay(50);
}

// 只有手指与模块 flash 里的 template 匹配才返回 true
bool capJariSepadan() {
  if (finger.getImage() != FINGERPRINT_OK) { return false; }   // 没有手指(或读取失败)
  if (finger.image2Tz() != FINGERPRINT_OK) { return false; }   // 图像不够清晰
  if (finger.fingerSearch() != FINGERPRINT_OK) {
    Serial.println(F("Cap jari tidak dikenali."));
    delay(800);
    return false;
  }
  return true;
}

指纹门锁到底有多安全?

AS608 的标称指标是 FAR 低于 0.001%、FRR 低于 1.0%——两者都在默认安全等级(security level 3)下测得;不注明安全等级的 FAR/FRR 数字是没有意义的。FAR(False Acceptance Rate)是陌生人的手指被错误接受的频率——低于十万分之一。FRR(False Rejection Rate)则是你自己的手指被错误拒绝的频率——这才是你真正会感受到的数字,因为手指湿的时候把你挡在门外的就是它。实验室数字用状态良好的手指测出;真实世界会更高。

必须坦白说:光学 sensor 记录的是手指表面的图像,而安全研究一再证明,业余级 sensor 可以被足够好的指纹复制品骗过——具体做法我们刻意不展开。更根本的是,指纹换不了:RFID 卡丢了可以补,password 可以重设,但指纹一旦被复制,一辈子都是被复制的状态。

装在真正的门上,最重要的问题是 fail-safe 还是 fail-secure。接在 NO 端的锁只有 relay 吸合时才会开——断电时门保持上锁(fail-secure);maglock 则是断电就松开(fail-safe)。无论选哪种,真正的门必须保留物理钥匙或机械 override——手指读不出、sensor 坏了或者停电,都不能把你锁在自己家门外。

我们的评价:AS608 非常适合 locker、抽屉、工作间柜子、考勤系统和学校项目。用在家门上,把它当作真锁之上的一层便利,而不是唯一的锁。

我们常见到哪些错误?

“Did not find fingerprint sensor.” 最常见的模式:TXD/RXD 接反、baud 不是 57600,或者按颜色认线——而颜色顺序在不同批次之间是会变的。不焊接、只把线拧在一起也常常是罪魁——看着接好了,实际上时断时续。

所有手指都被拒。 多数是根本没做过录入——比对 sketch 烧进去时,模块存储器还是空的。如果 template 在却还是失败,像录入时那样让手指盖满整个玻璃窗,并把玻璃擦干净。

Serial Monitor 说匹配了,relay 却没反应。 检查 high/low trigger jumper,确认接到 pin 7 的是 IN1(不是 IN2),DC+/DC− 有供电。relay 咔哒了但锁不动?锁可能接在 NC 上,而不是 NO。

有时能识别,有时不能。 手指太湿或太干、接线松动,或者 sensor 和 relay 没有跟 Uno 共地。

常见问题

AS608 能存多少枚指纹?

所有 template 都存在模块自己的 flash 里。某厂商 datasheet 写 162 个 template,而很多 AS608 实机报告 300 的数据库容量,取决于固件——调用 finger.getParameters()finger.capacity,才是你手上那颗的准确数字。

指纹门锁能用在家门上吗?

能,当作一层便利——不能当唯一的锁。必须保留物理钥匙或机械 override,sensor 坏了或停电才不会把你锁在门外。用在 locker、抽屉和柜子上,它非常实用。

手指湿了或出汗怎么办?

光学 sensor 需要清晰的表面图像,手指湿、出汗或太干都经常被拒——这就是现实中的 FRR。先把手指和玻璃擦干净,再把同一根手指录入到两个不同的 ID,可以减少被拒。

AS608 能配 ESP32 用吗?

能,而且更简单:ESP32 本身就是 3.3V 逻辑——不需要 divider,TXD/RXD 直接接硬件 UART(比如 Serial2),VCC 接 3.3V。同一个 Adafruit library 不用 SoftwareSerial 也能跑。

指纹门锁和 RFID 有什么区别?

RFID 卡会丢、会被借走,也可以补办;指纹永远带在身上,但一旦被复制就换不了。RFID 对湿手和戴手套也更友好。对比可以看我们的 RFID RC522 门禁教程——对很多人来说,最好的答案是两者搭配。

最后更新:2026年8月。有问题?WhatsApp 联系我们

Leave a Reply

Your email address will not be published. Required fields are marked *