Tôi sẽ hướng dẫn bạn làm một hệ thống mở/tắt đèn bằng vân tay gồm:
- Arduino UNO
- Cảm biến vân tay (ví dụ AS608 / R307 / FPM10A…)
- Module relay 5V
- Bóng đèn (tải AC hoặc DC)
Nguyên lý:
Ngón tay → Cảm biến vân tay → Arduino kiểm tra → Arduino kích Relay → Relay đóng/ngắt điện cho đèn
1. Chuẩn bị phần cứng
Arduino UNO
Cảm biến vân tay (AS608 ví dụ)
Thông thường có 4 dây:
| Cảm biến | Arduino |
|---|---|
| VCC / 3.3V | 5V hoặc 3.3V (xem module) |
| GND | GND |
| TX | D2 |
| RX | D3 |
Lưu ý:
- Nếu cảm biến ghi 3.3V thì cấp đúng 3.3V.
- Một số module AS608 có mạch ổn áp nên có thể dùng 5V.
Relay 5V
Relay có:
| Relay | Arduino |
|---|---|
| VCC | 5V |
| GND | GND |
| IN | D8 |
2. Sơ đồ tổng quát
CẢM BIẾN VÂN TAY
VCC -------- 5V
GND -------- GND
TX --------- D2
RX --------- D3
ARDUINO UNO
D8 -------- IN Relay
5V -------- VCC Relay
GND ------- GND Relay
RELAY
COM ---- nguồn đèn
NO ---- đèn
NO = thường hở
Khi nhận đúng vân tay → relay đóng → đèn sáng.
3. Cài thư viện Arduino
Mở Arduino IDE:
Vào:
Sketch
→ Include Library
→ Manage Libraries
Tìm:
Adafruit Fingerprint Sensor Library
Cài đặt.
4. Nạp chương trình đăng ký vân tay
Trước tiên phải lưu vân tay vào cảm biến.
Nạp code:
#include <Adafruit_Fingerprint.h>
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2,3);
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
void setup()
{
Serial.begin(9600);
finger.begin(57600);
if(finger.verifyPassword())
{
Serial.println("Cam bien OK");
}
else
{
Serial.println("Loi cam bien");
while(1);
}
}
void loop()
{
}
Mở:
Tools → Serial Monitor
Sau đó dùng ví dụ:
File
→ Examples
→ Adafruit Fingerprint Sensor Library
→ enroll
Nạp vào Arduino.
Chọn ID:
Ví dụ:
Nhap ID: 1
Đặt ngón tay 2 lần.
Bây giờ cảm biến đã nhớ vân tay.
5. Code điều khiển relay bật/tắt đèn
Nạp chương trình này:
#include <Adafruit_Fingerprint.h>
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2,3);
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
int relay = 8;
bool trangthai = false;
void setup()
{
pinMode(relay,OUTPUT);
digitalWrite(relay,HIGH);
Serial.begin(9600);
finger.begin(57600);
if(finger.verifyPassword())
{
Serial.println("Cam bien san sang");
}
}
void loop()
{
if(getFingerprintID()==true)
{
trangthai = !trangthai;
if(trangthai)
{
digitalWrite(relay,LOW);
Serial.println("BAT DEN");
}
else
{
digitalWrite(relay,HIGH);
Serial.println("TAT DEN");
}
delay(1000);
}
}
bool getFingerprintID()
{
uint8_t p = finger.getImage();
if(p != FINGERPRINT_OK)
return false;
p = finger.image2Tz();
if(p != FINGERPRINT_OK)
return false;
p = finger.fingerFastSearch();
if(p == FINGERPRINT_OK)
{
Serial.print("Tim thay ID: ");
Serial.println(finger.fingerID);
return true;
}
return false;
}
6. Hoạt động
Ví dụ:
Đèn đang tắt.
Bạn đặt ngón tay:
→ cảm biến đọc vân tay
→ Arduino so sánh dữ liệu
→ đúng ID
→ relay ON
→ đèn sáng
Đặt tay lần nữa:
→ relay OFF
→ đèn tắt
7. Nếu relay hoạt động ngược
Có loại relay:
- LOW = bật
- HIGH = tắt
Có loại ngược lại.
Nếu đèn luôn sáng, đổi:
digitalWrite(relay,LOW);
thành:
digitalWrite(relay,HIGH);
và ngược lại.
8. Lưu ý khi điều khiển đèn 220V
Không nối 220V trực tiếp vào Arduino.
Relay cách ly:
220V ---- Relay ---- Đèn
Arduino chỉ điều khiển chân IN.
Cẩn thận vì phần relay có điện áp nguy hiểm.
Bạn có thể nâng cấp tiếp thành:
- nhiều người dùng nhiều vân tay khác nhau
- hiển thị LCD tên người mở cửa
- lưu lịch sử mở cửa
- kết hợp ESP8266 gửi thông báo điện thoại
Với bộ linh kiện bạn đang có, mạch này là một dự án rất phù hợp để học Arduino + cảm biến + điều khiển thiết bị.
