วิธีใช้งาน Arduino กับเซ็นเซอร์สแกนลายนิ้วมือ ควบคุมเปิดปิด LED
วิธีใช้งาน Arduino กับเซ็นเซอร์สแกนลายนิ้วมือ ควบคุมเปิดปิด LED
ในบทความนี้จะสอนใช้งาน Arduino กับ Fingerprint Sensor เพื่อสแกนลายนิ้วมือแล้วควบคุมการเปิด-ปิดไฟ LED เราจะเริ่มจากการบันทึกลายนิ้วมือเก็บไว้ในเซ็นเซอร์ จากนั้นนำมาเปรียบเทียบว่าเป็น ID ไหน ถ้าเป็นนิ้วโป้ง (ID1) จะสั่งให้ LED ติด ถ้าเป็นนิ้วชี้ (ID2) จะสั่งให้ LED ดับ
อุปกรณ์ที่ต้องเตรียม
- Arduino UNO R3 พร้อมสาย USB
- Fingerprint Sensor V2.0 หรือ V3.0
- LED 5mm สีแดง 1 ดวง
- ตัวต้านทาน 220 Ohm 1/4W
- บอร์ดทดลอง (Breadboard MB-102)
- สายไฟจัมเปอร์ ผู้-ผู้ และ ผู้-เมีย
วิธีต่อวงจร Fingerprint Sensor กับ Arduino
ต่อสายระหว่าง Fingerprint Sensor กับ Arduino UNO R3 ดังนี้
| Fingerprint Sensor | Arduino UNO R3 |
|---|---|
| สายสีแดง (5V) | ขา 5V |
| สายสีดำ (GND) | ขา GND |
| สายสีเขียว (TX) | ขา 2 |
| สายสีขาว (RX) | ขา 3 |
ส่วน LED ต่อเข้ากับขา 13 ผ่านตัวต้านทาน 220 Ohm อนุกรมกัน
ติดตั้ง Library สำหรับ Fingerprint Sensor
ดาวน์โหลด Adafruit Fingerprint Sensor Library จาก GitHub หรือเปิด Arduino IDE ไปที่ Sketch > Include Library > Manage Libraries แล้วค้นหาคำว่า “Adafruit Fingerprint” แล้วกด Install
หลังติดตั้งเสร็จ รีสตาร์ท Arduino IDE แล้วไปที่ File > Examples > Adafruit Fingerprint Sensor Library จะเห็นตัวอย่างโค้ดสำหรับทดสอบ
ขั้นตอนบันทึกลายนิ้วมือ
ก่อนจะใช้งานต้องบันทึกลายนิ้วมือลงในเซ็นเซอร์ก่อน อัปโหลดโค้ดด้านล่างลงใน Arduino
#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("พบเซ็นเซอร์สแกนลายนิ้วมือ");
} else {
Serial.println("ไม่พบเซ็นเซอร์ โปรดตรวจสอบการต่อสาย");
while (1);
}
Serial.println("พิมพ์ ID ที่ต้องการบันทึก (1-127)");
}
void loop() {
if (Serial.available()) {
int id = Serial.parseInt();
if (id > 0 && id < 128) {
enrollFingerprint(id);
}
}
}
uint8_t enrollFingerprint(uint8_t id) {
int p = -1;
Serial.print("สแกนนิ้วเพื่อบันทึก ID ");
Serial.println(id);
// สแกนครั้งที่ 1
while (p != FINGERPRINT_OK) {
p = finger.getImage();
}
p = finger.image2Tz(1);
Serial.println("ยกนิ้วออกแล้วสแกนใหม่");
delay(2000);
// สแกนครั้งที่ 2
while (p != FINGERPRINT_OK) {
p = finger.getImage();
}
p = finger.image2Tz(2);
// สร้างโมเดลลายนิ้วมือ
p = finger.createModel();
if (p == FINGERPRINT_OK) {
Serial.print("บันทึก ID ");
Serial.println(id);
p = finger.storeModel(id);
if (p == FINGERPRINT_OK) {
Serial.println("สำเร็จ!");
}
}
return p;
}
เปิด Serial Monitor (เลือก Baud Rate 9600) จะเห็นข้อความแจ้งให้พิมพ์ ID ที่ต้องการบันทึก
- พิมพ์เลข 1 แล้วกด Send → ไฟสีเขียวที่เซ็นเซอร์จะติด → นำนิ้วโป้งสแกนครั้งที่ 1
- ยกนิ้วออก
- สแกนนิ้วโป้งครั้งที่ 2 → สำเร็จจะขึ้น “บันทึก ID 1 สำเร็จ!”
- พิมพ์เลข 2 แล้วทำซ้ำขั้นตอนเดียวกันกับนิ้วชี้ → บันทึกเป็น ID 2
โค้ดควบคุม LED ด้วยลายนิ้วมือ
หลังจากบันทึกลายนิ้วมือเสร็จแล้ว อัปโหลดโค้ดด้านล่างเพื่อให้ระบบตรวจสอบลายนิ้วมือแล้วสั่งเปิด-ปิดไฟ LED ตาม ID ที่ตรวจพบ
#include <Adafruit_Fingerprint.h>
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3);
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
#define LED_PIN 13
void setup() {
Serial.begin(9600);
pinMode(LED_PIN, OUTPUT);
finger.begin(57600);
if (finger.verifyPassword()) {
Serial.println("พบเซ็นเซอร์สแกนลายนิ้วมือ");
} else {
Serial.println("ไม่พบเซ็นเซอร์");
while (1);
}
Serial.println("รอสแกนลายนิ้วมือ...");
}
void loop() {
getFingerprintID();
delay(100);
}
uint8_t getFingerprintID() {
uint8_t p = finger.getImage();
if (p != FINGERPRINT_OK) {
return p;
}
p = finger.image2Tz();
if (p != FINGERPRINT_OK) {
return p;
}
p = finger.fingerFastSearch();
if (p != FINGERPRINT_OK) {
Serial.println("ไม่พบลายนิ้วมือที่ลงทะเบียน");
digitalWrite(LED_PIN, LOW);
return p;
}
Serial.print("พบ ID:");
Serial.println(finger.fingerID);
// ตรวจสอบ ID แล้วควบคุม LED
if (finger.fingerID == 1) {
digitalWrite(LED_PIN, HIGH); // นิ้วโป้ง → เปิดไฟ
Serial.println(">>> เปิดไฟ LED");
} else if (finger.fingerID == 2) {
digitalWrite(LED_PIN, LOW); // นิ้วชี้ → ปิดไฟ
Serial.println(">>> ปิดไฟ LED");
}
return finger.fingerID;
}
เปิด Serial Monitor แล้วลองสแกนนิ้วโป้ง จะเห็นขึ้น “พบ ID:1” และ LED ที่ขา 13 จะติด ลองสแกนนิ้วชี้ จะขึ้น “พบ ID:2” และ LED จะดับ
วิธีลบลายนิ้วมือที่บันทึกไว้
ถ้าต้องการลบลายนิ้วมือออกจากเซ็นเซอร์ ให้ใช้โค้ดด้านล่าง
#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("พบเซ็นเซอร์สแกนลายนิ้วมือ");
} else {
Serial.println("ไม่พบเซ็นเซอร์");
while (1);
}
Serial.println("พิมพ์ ID ที่ต้องการลบ (เช่น 1)");
}
void loop() {
if (Serial.available()) {
int id = Serial.parseInt();
if (id > 0 && id < 128) {
deleteFingerprint(id);
}
}
}
uint8_t deleteFingerprint(uint8_t id) {
uint8_t p = finger.deleteModel(id);
if (p == FINGERPRINT_OK) {
Serial.print("ลบ ID ");
Serial.print(id);
Serial.println(" สำเร็จ");
} else {
Serial.print("ไม่สามารถลบ ID ");
Serial.println(id);
}
return p;
}
พิมพ์หมายเลข ID ที่ต้องการลบลงใน Serial Monitor แล้วกด Send เช่น พิมพ์ “1” เพื่อลบลายนิ้วมือ ID 1
สรุป
จากบทความนี้เราได้เรียนรู้วิธีใช้งาน Arduino กับ Fingerprint Sensor โดยสามารถบันทึกลายนิ้วมือหลาย ID ลงในเซ็นเซอร์ได้ แล้วนำมาตรวจสอบเพื่อควบคุมการทำงานของอุปกรณ์อื่น เช่น เปิด-ปิดไฟ LED ตามที่เราต้องการ
อยากทำโปรเจคแบบนี้?
รับทำโปรเจค Arduino / IoT จบงานไว ส่งงานครบ พร้อมสอน
หากต้องการ รับทำโปรเจคอาดูโน่ หรือระบบ IoT แบบเร่งด่วน สามารถดูรายละเอียดบริการได้ที่หน้าแรก
จ้างทำโปรเจคเลย