要用指纹开门,把 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 光学式还是 ZW111 电容式——该选哪个?
AS608 隔着玻璃对手指表面拍一张光学图像;ZW111FP 则是电容式(半导体)sensor,核心是 RISC-V,用电学方式读取皮肤纹路。
| 方面 | AS608FM(光学式) | ZW111FP(电容式) |
|---|---|---|
| 技术 | 手指表面光学成像,500 DPI | 电学读取皮肤纹路,RISC-V 核心 |
| 手指湿 / 干 / 脏 | 需要清晰图像——手指湿或玻璃有灰经常识别失败 | 受表面状况影响较小;手指太湿仍然吃力 |
| 外形与安装 | 方形——适合平面面板或自制 bracket | 白/银色圆形带 bezel——圆形面板开孔最整洁 |
| 接口 | ribbon 线裸露线头——需要 solder 或 crimp | 出厂带 dupont 母头——直接插 header |
简单说:AS608 适合学习、学校项目和自制 bracket——也是本教程的选择;ZW111 适合圆形面板开孔、不想动烙铁的场合。

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 装错,门锁可能在开机瞬间被打开一下。

比对指纹并开锁的 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 联系我们。



Arduino Uno Compatible SMD UNO R3 with Type B Cable - ATMEGA328P with CH340G-Microcontroller Project
AS608 Fingerprint Scanner Module Optical Sensor Reader DIY Arduino Biometric Security Access Control Interface
Relay Module 3.3V 5V 12V 1/2/4/8 Ways Optocoupler Trigger Relay Module 1 2 4 8 Channel Relay Module - 5V RELAY MODULE(2WAY)
Power Supply Adapter DC Universal AC to DC Converter PSU 5V2A 5V3A 9V2A 12V2A - P.S. ADAPTOR (12V2A)