You are on page 1of 35

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

ĐỒ ÁN II
ĐỀ TÀI: BẢO MẬT HỆ THỐNG KHO LƯU TRỮ
THÔNG MINH BẰNG CẢM BIẾN VÂN TAY
NGUYỄN QUANG ĐỨC

duc.nq181407@sis.hust.edu.vn

Ngành KT Điều khiển & Tự động hóa

Giảng viên hướng dẫn: PGS. TS. Nguyễn Quang Địch


Chữ ký của GVHD

Bộ môn: Tự Động Hóa Công Nghiệp

Trường: Điện – Điện tử

HÀ NỘI, 2/2022
BỘ GIÁO DỤC & ĐÀO TẠO CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

TRƯỜNG ĐH BÁCH KHOA HÀ NỘI Độc lập – Tự do - Hạnh phúc

NHIỆM VỤ
ĐỒ ÁN TỐT NGHIỆP

Họ và tên sinh viên: .Nguyễn Quang Đức..................................................................

Khóa…K63……………………Trường: Điện- Điện tử Ngành: CN ĐK &TĐH

1. Tên đề tài:
Bảo mật hệ thống kho lưu trữ thông minh bằng cảm biến vân tay

2. Nội dung đề tài:


Tìm hiểu về hệ thống bảo mật vân tay và chương trình nhận diện vân tay áp dụng trong kho
lưu trữ thông minh
3. Cán bộ hướng dẫn:
PGS.TS Nguyễn Quang Địch

4. Thời gian giao đề tài: 10/2/2021


5. Thời gian hoàn thành: 4/3/2021
Ngày 04 tháng 03 năm 2022

LÃNH ĐẠO BỘ MÔN CÁN BỘ HƯỚNG DẪN

SINH VIÊN THỰC HIỆN

(Ký và ghi rõ họ tên)


Tóm tắt nội dung đồ án

Nội dung dồ án: Bảo mật hệ thống kho lưu trữ thông minh bằng cảm biến vân tay.

Các công cụ sử dụng:

- Cảm biến vân tay FPM-10A

- Lập trình Python trên hệ điều hành Ubuntu

- Phần mềm thiết kế giao diện Qt Designer

Dựa trên những kiến thức đã tìm hiểu và kiến thức đã học, kết quả của đồ án có phù
hợp với các vấn đề đã đặt ra. Nội dung đồ án cũng được áp dụng rất nhiều vào công
việc, học tập cũng như thực tiễn.
Mục lục
Giới thiệu chung .......................................................................................................7
Chương 1: Hệ thống nhận dạng vân tay ................................................................8
1.1 Nhận dạng vân tay ..........................................................................................8
1.1.1 Tổng quan ..................................................................................................8
1.1.2 Nhận dạng dấu vân tay ............................................................................9
1.1.3 Ứng dụng nhận dạng vân tay ..................................................................9
1.2 Hệ thống nhận diện vân tay .........................................................................10
1.3 Cơ sở nhận dạng ...........................................................................................11
1.4 Phương pháp nhận dạng vân tay ................................................................14
1.4.1 Thuật toán xử lý ảnh ..............................................................................14
1.4.2 Phương pháp trích các điểm đặc trưng ................................................14
1.5 Đối sánh vân tay ............................................................................................15
Chương 2: Chương trình nhận diện vân tay .......................................................17
2.1 Giới thiệu về chương trình ...........................................................................17
2.1.1 phần mềm ................................................................................................17
2.1.2 Phần cứng ................................................................................................17
a. Cảm biến vân tay ...........................................................................................17
b. Cơ sở máy quét quang học ............................................................................18
2.2 Cảm biến vân tay FPM-10A ........................................................................19
2.2.1 Cách thức hoạt động...............................................................................19
2.2.2. Các thông số kĩ thuật .............................................................................19
2.2.3 Giao diện phần cứng...............................................................................20
a. Truyền thông nối tiếp:....................................................................................20
b. Giao tiếp phần cứng .......................................................................................22
2.2.4 Hệ thống tài nguyên ................................................................................23
a. Bộ đệm ...........................................................................................................23
b. Thư viện vân tay ............................................................................................23
c. Thông số cấu hình hệ thống ...........................................................................23
d. Địa chỉ mô-đun ..............................................................................................24
2.3 Giao tiếp UART ............................................................................................24
2.3.1 Giới thiệu về UART ................................................................................24
2.3.2 Giao tiếp nối tiếp và song song ..............................................................25
2.3.3 Cách thức hoạt động...............................................................................25
Chương 3. Lưu đồ thuật toán và ..........................................................................27
3.1 Lưu đồ thuật toán .........................................................................................27
3.2 Tạo cơ sở dữ liệu với SQLite........................................................................28
3.3 Giao diện phần mềm .....................................................................................29
3.4 Chương trình code ........................................................................................31
Kết luận ...................................................................................................................34
Tài liệu tham khảo .................................................................................................35
Danh mục hình ảnh
Hình 1 Hệ thống nhận diện vân tay .........................................................................10
Hình 2 Vân Tay ........................................................................................................12
Hình 3 Bề mặt S của một vùng vân tay ...................................................................13
Hình 4 Điểm Core và Delta .....................................................................................13
Hình 5 CCD ( Charge Coupled Device ) .................................................................18
Hình 6 Các chân của cảm biến .................................................................................21
Hình 7 Truyền thông UART ....................................................................................25
Hình 8 Gói dữ liệu UART........................................................................................26
Hình 9 Tạo cơ sở dữ liệu với SQLite .......................................................................29
Hình 10 Giao diện đăng nhập ..................................................................................29
Hình 11 Giao diện màn hình chính ..........................................................................30
Giới thiệu chung
Trong thời đại ngày nay, sự phát triển không ngừng của khoa học kỹ thuật đã
giúp cho con người thuận tiện hơn trong các công việc hằng ngày. Với sự bùng nổ
về công nghệ thông tin, quá trình toàn cầu hóa diễn ra nhanh chóng, sự bảo mật riêng
tư thông tin cá nhân cũng như để nhận biết một người nào đó trong hàng tỉ người
trên trái đất đòi hỏi phải có một tiêu chuẩn, hệ thống đảm nhận các chức năng đó.
Công nghệ sinh trắc ra đời và đáp ứng được các yêu cầu trên.

Trong các tổ chức, cơ quan an ninh, quân sự, hành chính, khoa học… luôn có
nhu cầu kiểm tra và trả lời các câu hỏi: “người này có phải là đối tượng đó hay
không?”, “người này có được quyền truy cập và sử dụng thiết bị đó?”, “người này
có được biết những thông tin đó?”… Phương pháp dựa vào thẻ bài truyền thống (ví
dụ dùng chìa khóa…), phương pháp dựa vào trí thức (ví dụ dùng mật khẩu và PIN –
Personal Identification Number) đã được sử dụng phổ biến nhưng thực tế đã chứng
minh là không hiệu quả vì tính an toàn không cao và khó nhớ. Người ta
nhận thấy các đặc trưng sinh trắc không thể dễ dàng bị thay thế, chia sẻ hay giả
mạo.., chúng được xem là đáng tin cậy hơn trong nhận dạng một người so với các
phương pháp trên. Vân tay là một trong những đặc điểm khá đặc biệt của con người
bởi vì tính đa dạng của nó, mỗi người sở hữu một dấu vân tay khác nhau, rất ít trường
hợp những người có dấu vân tay trùng nhau. Bằng việc sử dụng vân tay và mật mã,
việc xác nhận một người có thể được thực hiện bằng một hệ thống nhận dạng vân
tay an toàn và nhanh chóng.
Chương 1: Hệ thống nhận dạng vân tay
1.1 Nhận dạng vân tay
1.1.1 Tổng quan
- Vân tay là những vết lằn tạo nên các hoa văn trên bề mặt da đầu các ngón tay
mà ta quen gọi là các dòng đường vân. Một thẻ mẫu đã được in vân, được gọi là một
chỉ bản và thường gồm hai loại: vân tay lăn (rolled) và vân tay ấn (plain). Vân tay
được thu nhận bởi các sensor gọi là vân tay sống, dạng này phổ biến ở các nước công
nghiệp. Dấu vết vân tay của nghi can để lại hiện trường gọi là vân tay hiện trường,
dạng vân này chất lượng xấu và không đầy đủ nên rất khó nhận dạng.

- Một cấu trúc đường vân lý tưởng bao gồm các dòng đường vân và các dòng
đường rãnh chạy xen kẽ nhau, “song song” với nhau, một đường vân bị kẹp giữa hai
đường rãnh và ngược lại, một đường rãnh bị kẹp giữa hai đường vân.

- Tùy theo chất lượng mà ảnh vân tay được chia làm 3 miền con: vùng có cấu
trúc rõ ràng, vùng bị phá hủy nhưng có thể khôi phục lại được và vùng bị phá hủy
không thể khôi phục được.

- Đặc trưng của vân tay: Hình dạng các đường vân tay rất phong phú, song vẫn
có thể phân loại theo các lớp khác nhau. Vùng vân trung tâm dùng để phân loại là
vùng vân nằm chính giữa một dấu vân tay được giới hạn bởi đường bao trên và
đường bao dưới. Việc phân loại đường vân giúp rút ngắn thời gian nhận dạng vân.

- Điểm gặp nhau của ba dòng vân khác nhau được gọi là tam phân điểm (delta),
còn điểm mà quanh nó có một dòng vân chạy vòng quanh gọi là tâm điểm (core).

- Số đếm vân là số đường vân cắt đoạn thẳng nối hai điểm mốc. Điểm mốc có
thể là tâm điểm (core), tam phân điểm (delta) hay điểm đặc trưng chi tiết.
- Đặc điểm chi tiết của vân tay: Một số đường vân đang chạy liên tục rồi đến
một vị trí nào đó hoặc bị phân ra hai, ba nhánh (điểm rẽ nhánh) hoặc có khi bị đột
ngột kết thúc (điểm cụt) gọi là những đặc điểm chi tiết.

1.1.2 Nhận dạng dấu vân tay

- Nhận dạng vân tay hoạt động theo nguyên tắc: Khi đặt ngón tay lên trên một
thiết bị đọc dấu vân tay, ngay lập tức thiết bị này sẽ quét hình ảnh ngón tay đó và
đưa vào hệ thống. Hệ thống sẽ xử lý dấu vân tay, chuyển sang dạng dữ liệu số rồi
đối chiếu các đặc điểm của vân tay đó với dữ liệu đã được lưu trữ trong hệ thống.

- Nếu dấu vân tay này khớp với dữ liệu hệ thống thì các chức năng tiếp theo sẽ
được thực hiện. Trên lý thuyết, nhận dạng vân tay sẽ cho phép loại bỏ hoàn toàn các
loại mật khẩu song vẫn đảm bảo tính bảo mật khi người dùng đăng nhập thiết bị.

1.1.3 Ứng dụng nhận dạng vân tay

- So sánh dấu vân tay vốn được coi là một phương tiện hữu hiệu hỗ trợ cho các
nhà điều tra trong quá trình phá án và xét xử. Người ta có thể tìm ra tung tích tội
phạm cũng như nạn nhân thông qua dấu vân tay ở trên hiện trường. Tuy nhiên
phương pháp này vẫn bộc lộ một vài khuyết điểm do tác động của các yếu tố khách
quan như môi trường thời tiết, hiện trường sau khi khảo sát,…và các yếu tố chủ quan
gây nhiễu. Nếu chỉ đơn thuần dựa vào yếu tố kỹ thuật mà bỏ qua một loạt các biện
pháp nghiệp vụ khác, sai số này có thể lên tới 10%. Mặc dù vậy, phương pháp nhận
dạng vân tay hiện vẫn còn phổ biến ở nhiều nơi và nhiều quốc gia,mặc nhiên phương
pháp nhận dạng vân tay vẫn được sử dụng trong việc điều tra phá án của cảnh sát vì
thế việc nâng cao sự chính xác khi nhận dạng vân tay là một vấn để thiết yếu.

- Ngày nay, người ta cũng lợi dụng các đặc điểm riêng biệt của vân tay để
xây dựng các hệ thống bảo mật các thông tin riêng tư cho người sở hữu chúng, từ
việc dùng các ổ khóa vân tay thay thế cho các ổ khóa thông thường cho đến việc
dùng vân tay thay thế mật khẩu đã quá phổ biến trong thời đại công nghệ thông
tin. Người ta chỉ cần quét dấu vân tay của mình qua các thiết bị chức năng là có
thể mở được một cánh cửa, đăng nhập vào hệ thống máy vi tính, qua một phòng bí
mật hay các trạm bảo vệ bí mật.

- Trong lĩnh vực quản lý nhân sự, phương pháp nhận dạng vân tay còn hỗ trợ
đắc lực cho việc quản lý và chấm công tại các nhà máy, xí nghiệp, công ty bằng
máy các máy chấm công vân tay. Tuy nhiên, phổ biến nhất có lẽ là dấu vân tay
của chúng ta qua mặt sau của chứng minh thư để xác định một cách nhanh nhất
các đặc điểm, hồ sơ của một công dân đã được lưu trong cơ sở dữ liệu.

1.2 Hệ thống nhận diện vân tay


Hệ thống nhận dạng: là hệ thống xác thực một cá nhân bằng cách tìm kiếm và
đối sánh đặc tính sinh trắc của người này với toàn bộ các mẫu sinh trắc được lưu
giữ trong cơ sở dữ liệu.

Hình 1 Hệ thống nhận diện vân tay


Xử lý dấu vân tay bao gồm hai quá trình: quá trình đăng nhập bằng vân tay
và quá trình đối sánh dấu vân tay [trong đó việc đối sánh dấu vân tay được chia thành
quá trình so sánh dấu vân tay (1: 1) và tìm kiếm dấu vân tay (1: N) trong hai cách].

- Verification (Xác nhận dấu vân tay): Đầu tiên một người sẽ cung cấp dấu vân
tay cùng với thông hoặc đặc điểm cá nhân của người đó như họ tên, ngày sinh, quê
quán… (trong chứng minh thư) hoặc là Username, tên tài khoản, các quyền hạn của
ngươi đó,…(trong bảo mật). Bước này nhằm tạo ra một cơ sở dữ liệu tương ứng dấu
vân tay và các đặc điểm liên quan . Nguyên lý cơ bản của hệ thống này là sử dụng
các diot phát sáng để truyền các tia gần hồng ngoại (Near Infrared NIR) tới ngón tay
và chúng sẽ được hấp thụ lại bởi hồng cầu trong máu. Vùng các tia bị hấp thụ trở
thành vùng tối trong hình ảnh và được chụp lại bởi camera CCD. Sau đó, hình ảnh
được xử lý và tạo ra mẫu vân tay. Mẫu vân tay được chuyển đổi thành tín hiệu số và
là dữ liệu để nhận dạng người sử dụng. Ưu điểm vượt trội của hệ thống này là chỉ
tương tác với cơ thể sống nên việc bắt chước, giả mạo hoặc ăn cắp dữ liệu là điều
hoàn toàn bất khả thi.

- Identification (Nhận diện dấu vân tay): Dấu vân tay sẽ được đưa thu thập
từ một sensor để đối chiếu với database chứa các vân tay để truy ra các đặc điểm
muốn truy xuất. Việc đối sánh ảnh vân tay cần nhận dạng chỉ cần được tiến hành
trên các vân tay (có trong cơ sở dũ liệu) thuộc loại đã được xác định nhờ quá trình
phân loại. Đây là giai đoạn quyết định xem hai ảnh vân tay có hoàn toàn giống nhau
hay không và đưa ra kết quả nhận dạng, tức là ảnh vân tay cần nhận dạng tương ứng
với vân tay của cá thể nào đã được lưu trữ trong cơ sỏ dữ liệu.
1.3 Cơ sở nhận dạng
- Cơ sở nhận dạng vân tay là những đặc điểm riêng biệt trong cấu tạo của các
vân tay khác nhau. Dấu vân tay của mỗi cá nhân là độc nhất. Xác suất hai cá nhân
- thậm chí ngay cả anh em (hoặc chị em) sinh đôi cùng trứng - có cùng một bộ dấu
vân tay là 1 trên 64 tỉ.
- Ngay cả các ngón trên cùng bàn tay cũng có vân khác nhau. Dấu vân tay của
mỗi người là không đổi trong suốt cuộc đời. Người ta có thể làm phẫu thuật thay da
ngón tay, nhưng chỉ sau một thời gian dấu vân tay lại được hồi phục như ban đầu.
- Vân tay là những đường có dạng dòng chảy có trên ngón tay người. Nó là
một tham số sinh học bất biến theo tuổi tác đặc trưng cho mỗi cá thể. Cấu trúc dễ
nhận thấy nhất của vân tay là các vân lồi (đường gợn - ridge) và vân lõm (luống -
valley); trong ảnh vân tay, vân lồi có màu tối trong khi vân lõm có màu sáng. Vân
lồi có độ rộng từ 100 µm đến 300 µm. Độ rộng của một cặp vân lỗi lõm cạnh nhau
là 500 µm. Các chấn thương như bỏng nhẹ, mòn da.. không ảnh hưởng đến cấu trúc
bên dưới của vân, khi da mọc lại sẽ khôi phục lại đúng cấu trúc này. Vân lồi và vân
lõm thường chạy song song với nhau; chúng có thể rẽ thành hai nhánh, hoặc kết
thúc.

Hình 2 Vân Tay


- Hình ảnh vân tay thường được biểu diễn như là một bề mặt hai chiều. Kí hiệu
I là ảnh vân tay cấp xám với cấp xám g. I[x,y] là cấp xám của điểm ảnh [x,y]. Kí
hiệu z = S(x,y) là bề mặt rời rạc tương ứng với ảnh I: S(x,y) = I[x,y]. Bằng cách
chọn các điểm ảnh màu sáng có cấp xám là 0, và các điểm ảnh có màu tối có cấp
xám là g-1, thì các đường vân ( xuất hiện có màu tối trong I tương ứng với bề mặt
vân lồi còn khoảng không gian giữa các vân lồi ( có màu sáng ) tương ứng là bề mặt
vân lõm.
Hình 3 Bề mặt S của một vùng vân tay
- Trên các ảnh vân tay có các điểm đặc trưng được phân thành hai loại:
Singularity và Minutiae.

- Singularity: Trên vân tay có những vùng có cấu trúc khác thường so với
những vùng bình thường khác (thường có cấu trúc song song), những vùng như vậy
goi là Singularity. Có hai loại Singularity là Core và Delta.

Hình 4 Điểm Core và Delta


- Minutiae: Khi dò theo từng đường vân ta sẽ thấy có những điểm đường vân
kết thúc (Ridge Ending) hoặc rẽ nhánh (Bifurcation), những điểm này được gọi
chung là Minutiae.

1.4 Phương pháp nhận dạng vân tay


Hai phương pháp nhận dạng vân tay thường được sử dụng là:

- Phương pháp 1: Dựa vào các đặc tính cụ thể của dấu vân tay, như điểm cuối,
điểm rẽ nhánh của các vân trên tay.
- Phương pháp 2: So sánh toàn bộ đặc tính của dấu vân tay.
1.4.1 Thuật toán xử lý ảnh
Quá trình nhận dạng vân tay thực chất là quá trình xử lý ảnh vân tay. Do điều
kiện chuyên môn nên bài báo cáo này không đi sâu vào môn xử lý ảnh mà chỉ tập
trung vào việc ứng dụng nó vào việc trích được các điểm đặc trưng từ một bức ảnh
dấu vân tay.

1.4.2 Phương pháp trích các điểm đặc trưng


Ảnh vân tay là ảnh định hướng, các đường vân là các đường cong theo các
hướng xác định. Góc định hướng θxy hợp bởi phương của một điểm (x,y) trên đường
vân với phương ngang được gọi là hướng của điểm đó, nó nằm trong đoạn [0o;180o].
Thay vì tính góc định hướng tại mỗi điểm ảnh, hầu hết các phương pháp trích chọn
đặc trưng và xử lý vân tay ước lượng góc định hướng tại các vị trí rời rạc (để làm
giảm gánh nặng tính toán và cho phép thực hiện các ước lượng còn lại nhờ phép nội
suy). Tập hợp các hướng của các điểm trên ảnh vân tay gọi là trường định hướng
của ảnh vân tay đó. Ảnh định hướng vân tay là một ma trận D mà mỗi phần tử mang
thông tin về góc định hướng của các đường vân. Mỗi phần tử θij, tương ứng với nốt
[i,j] trong lưới ô vuông chứa điểm ảnh [xi, yj], biểu diễn hướng trung bình của đường
vân trong lân cận của [xi, yj]. Người ta thêm vào một giá trị rij liên kết với θij để biểu
diễn tính tin cậy (hay toàn vẹn) của hướng.
Có hai phương pháp chính để tìm các điểm minutiae: trích các điểm
minutiae từ ảnh nhị phân (binary) và trích các điểm minutiae trực tiếp từ ảnh xám.

- Trích các điểm minutiae từ ảnh nhị phân (binary): Ý tưởng chính của phương
pháp này là từ ảnh xám ban đầu ta sử dụng các bộ lọc thích hợp để phát hiện và làm
mảnh đường vân dưới dạng một pixel (ridge detection), biến đổi ảnh xám ban đầu
thành ảnh binary (có giá trị là 0 hoặc 1) tương ứng.

- Trích các điểm minutiae trực tiếp từ ảnh xám : I là một ảnh xám có kích thước
m x n, coi chiều thứ ba z là mức xám tại điểm (i,j). Theo quan điểm toán học, đường
vân là tập hợp các điểm cực đại dọc theo một hướng xác định. Việc xác định các
điểm Minutiae trực tiếp từ ảnh xám dựa vào thuật toán dò theo đường vân. Thuật
toán này dựa vào việc xác định các điểm cực đại dọc theo đường vân. Điểm cực đại
có thể được xác định bằng cách so sánh mức xám giữa các điểm trong thiết diện Ω.

1.5 Đối sánh vân tay


- Đối sánh vân tay là công việc cuối cùng của quá trình nhận dạng vân tay, nó
trả lời câu hỏi “Vân tay này là của ai trong số những người đó”. Bài toán nhận dạng
vân tay (tìm kiếm một vân tay đầu vào trong một cơ sở dữ liệu có N vân tay) có thể
được thực hiện như là thực hiện tuần tự đối sánh một - một giữa các cặp vân tay. Sự
phân loại vân tay và các kĩ thuật đánh chỉ số thường được sử dụng để tăng tốc độ
tìm kiếm trong các bài toán nhận dạng vân tay.

- Một lượng lớn các thuật toán đối sánh vân tự động đã được đề nghị trong các
tài liệu nhận dạng mẫu. Hầu hết các thuật toán này không gặp khó khăn trong đối
sánh các ảnh vân tay chất lượng tốt. Nhưng trong đối sánh vân tay tồn tại thách thức
ở các ảnh chất lượng thấp và vấn đề đối sánh từng vùng vân tay. Trong trường hợp
hệ thống trợ giúp con người AFIS, một thuật toán kiểm tra chất lượng được sử dụng
để chỉ lấy và chèn vào cơ sở dữ liệu các ảnh vân tay tốt. Hơn nữa, quá trình xử lý
các mẫu vân khó có thể được quản lý. Dù sao, sự can thiệp là không thể trong các
hệ thống nhận dạng trực tuyến tự động - những hệ thống này đang có nhu cầu ngày
càng tăng trong các ứng dụng thương mại.

- Các phương pháp đối sánh vân tay có thể được phân loại thành ba họ:

+ Đối sánh dựa độ tương quan: Hai ảnh vân tay được đặt chồng lên và độ tương
quan giữa các điểm ảnh tương ứng được tính với sự căn chỉnh khác nhau (ví dụ với
các vị trí và độ quay khác nhau).

+ Đối sánh dựa vào điểm đặc trưng: Đây là kĩ thuật phổ biến nhất và được sử dụng
rộng rãi nhất, do các chuyên gia pháp lý so sánh các vân tay và chấp nhận phương
pháp như là bằng chứng định danh trong các phiên tòa ở hầu hết các quốc gia. Điểm
đặc trưng được trích chọn từ hai vân tay được lưu giữ như là tập các điểm trong một
bề mặt hai chiều. Đối sánh dựa vào điểm đặc trưng cơ bản bao gồm tìm kiếm sự căn
chỉnh giữa tập điểm đặc trưng mẫu và tập điểm đặc trưng đầu vào dẫn tới sự so
khớp lớn nhất các cặp điểm đặc trưng.

+ Đối sánh dựa đặc tính vân: Trong các ảnh vân tay chất lượng thấp, việc trích
chọn chi tiết rất khó khăn. Khi các đặc trưng khác của mẫu vân tay (ví dụ: hướng
và tần suất cục bộ, hình dạng vân, thông tin kết cấu) có thể được trích chọn một
cách tin cậy hơn chi tiết, sự khác biệt của chúng là không cao. Các phương pháp
thuộc họ này so sánh các vân tay với các đặc trưng được trích chọn từ các mẫu vân.
Về nguyên lý, đối sánh dựa độ tương quan và đối sánh dựa vào chi tiết có thể xem
như là một phần của đối sánh dựa đặc trưng vân, theo cách hiểu mật độ điểm ảnh,
vị trí chi tiết là nhưng đặc trưng của mẫu vân ngón tay

- Nhiều kĩ thuật khác cũng đã được đề nghị chính thức, về nguyên lý, có thể
được xếp vào các loại trên theo các đặc trưng được sử dụng, nhưng chúng ta đề cập
để phân loại chúng tách biệt trên cơ sở các kĩ thuật đối sánh. Chúng bao gồm các
phương pháp dựa mạng thần kinh và các cố gắng thực hiện đối sánh vân sử dụng
các bộ xử lý song song hoặc với các kiến trúc dành riêng khác.

Chương 2: Chương trình nhận diện vân tay


2.1 Giới thiệu về chương trình

2.1.1 phần mềm

Đây là chương trình nhận dạng vân tay dựa theo phương pháp trích các điểm đặc
trưng Singularity và Minutiae. Chương trình nhận dạng vân tay của nhóm cảm biến
vân tay được xây dựng bằng lập trình python trong hệ điều hành ubuntu. Ưu điểm
của ngôn ngữ lập trình python:

2.1.2 Phần cứng


a. Cảm biến vân tay
- Cảm biến vân tay là một thiết bị điện tử được sử dụng để chụp một hình ảnh
kỹ thuật số của các mẫu vân tay. Hình ảnh chụp được gọi là mẫu lấy trực tiếp. Nó
được xử lý kỹ thuật số để tạo ra một mẫu sinh trắc học được lưu giữ và sử dụng cho
việc đối sánh. Đây là điểm chung của một số công nghệ sử dụng các bộ cảm biến
vân tay.

- Sự tạo ảnh vân tay quang học bao gồm việc chụp một hình ảnh kỹ thuật số
của ảnh sử dụng ánh sáng nhìn thấy được. Về bản chất, loại cảm biến là máy ảnh
kỹ thuật số đặc biệt. Lớp trên cùng của cảm biến, nơi ngón tay được đặt vào, được
gọi là bề mặt cảm ứng. Bên dưới lớp này là một lớp phosphor phát sáng chiếu vào
bề mặt của ngón tay. Ánh sáng phản chiếu từ các ngón tay đi qua lớp phosphor
thành một chuỗi các trạng thái rắn pixels thu thập hình ảnh trực quan của vân tay.
Một trầy xước hoặc bề mặt cảm ứng bẩn có thể gây ra một hình ảnh vân tay chất
lượng kém. Một nhược điểm của loại cảm biến này trong thực tế là khả năng hình
ảnh bị ảnh hưởng lớn bởi chất lượng của da trên ngón tay. Ví dụ, một ngón tay bẩn
hoặc trầy xước rất khó để có được một hình ảnh đúng. Nó cũng có thể dễ dàng bị
đánh lừa bởi một hình ảnh vân tay nếu không kết hợp với một bộ dò “ngón tay
sống”. Tuy nhiên, không giống như cảm biến điện dung, công nghệ cảm biến này
không nhạy cảm với hiện tượng phóng điện.

b. Cơ sở máy quét quang học

- Trung tâm của máy quét quang học là CCD ( Charge Coupled Device ) - hệ
thống cảm biến ánh sáng sử dụng trong camera kỹ thuật số. CCD là một mảng diode
nhạy cảm với ánh sáng gọi là photosite, có nhiệm vụ tạo tín hiệu điện tương ứng
với những photon ánh sáng. Mỗi photosite ghi lại một pixel, tức một chấm nhỏ thể
hiện rằng ánh sáng đã chạm đến điểm đó. Các pixel sáng và tối sẽ tổng hợp thành
một hình ảnh của vật thể được quét (như ngón tay). Thường thì Bộ chuyển đối ADC
(từ analog sang digital) trong hệ thống quét sẽ xử lý tín hiệu điện analog để tạo ra
bức ảnh dạng số hóa.
- Quy trình quét bắt đầu khi
bạn đặt ngón tay lên một đĩa thủy
tinh, và để CCD chụp ảnh. Máy
quét có nguồn điện riêng, thường
là một mảng diode phát sáng để
tỏa sáng các đường vân trên ngón
tay. Cuối cùng hệ thống CCD sẽ
tạo ra hình ảnh đảo ngược của
ngón tay. Bộ xử lý quét sẽ đảm
bảo rằng hình ảnh thu được đủ rõ Hình 5 CCD ( Charge Coupled Device )
bằng cách kiểm tra độ tối pixel trung bình, hay tổng giá trị của một mẫu nhỏ, và sẽ
từ chối quét hình nếu nó quá sáng hoặc quá tối. Nếu ảnh bị từ chối, máy quét sẽ
điều chỉnh thời gian phơi sáng, rồi quét lại lần nữa. Còn nếu độ tối đã đủ thì hệ
thống sẽ tiếp tục kiểm tra độ phân giải ảnh. Bộ xử lý sẽ quan sát một số đường thẳng
di chuyển ngang dọc trên ảnh. Nếu ảnh có độ phân giải tốt, đường thẳng chạy vuông
góc với vân tay sẽ gồm các phần xen kẽ gồm các pixel rất tối và rất sáng.

2.2 Cảm biến vân tay FPM-10A

2.2.1 Cách thức hoạt động

- Xử lý dấu vân tay bao gồm hai quá trình: quá trình đăng nhập bằng vân tay và
quá trình đối sánh dấu vân tay [trong đó việc đối sánh dấu vân tay được chia thành
quá trình so sánh dấu vân tay (1: 1) và tìm kiếm dấu vân tay (1: N) trong hai cách].

- Khi đăng nhập bằng vân tay, hãy nhập từng dấu vân tay 2 lần, Hình ảnh mục
nhập thứ hai được xử lý và mẫu tổng hợp được lưu trữ trong mô-đun. Khi vân tay
được khớp, thông qua cảm biến đầu vân tay, hình ảnh dấu vân tay cần xác minh sẽ
được nhập và xử lý, sau đó khớp và so sánh với mẫu vân tay trong mô-đun (nếu nó
khớp với mẫu được chỉ định trong mô-đun, nó được gọi là phương pháp so sánh dấu
vân tay, đó là phương pháp 1: 1; nếu nó phù hợp với nhiều mẫu, nó được gọi là
phương pháp tìm kiếm dấu vân tay, nghĩa là 1: N), mô-đun đưa ra kết quả phù hợp
(đạt hoặc không đạt).

2.2.2. Các thông số kĩ thuật

- Nguồn cung cấp hiệu điện thế: DC 3.6 ~ 6.0V


- Dòng điện làm việc: <120mA; Dòng điện đỉnh: <150mA
- Thời gian nhập ảnh vân tay: <1,0 giây
- Phương pháp đối sánh: Phương pháp so sánh (1: 1)
Phương pháp tìm kiếm (1: N)
- Tệp tính năng:256 byte
- Tệp mẫu:512 byte
- Dung lượng :162/930 mẫu
- Mức độ bảo mật: Mức 5 (từ thấp đến cao: 1, 2, 3, 4, 5)
- Tỷ lệ nhận dạng sai (FAR):<0,001% (khi mức an toàn là 3)
- Tỷ lệ từ chối xác thực (FRR):<1,0% (khi mức an toàn là 3)
- Thời gian tìm kiếm: <1,0 giây (trung bình ở 1: 200)
- Giao diện máy tính chủ: UART (mức logic TTL)
- Tốc độ truyền Baud (UART): (9600xN) bps trong đó N = 1 〜 12 (giá trị mặc
định N = 6, tức là 57600bps)
- Môi trường làm việc: Nhiệt độ: (-20 ℃) –(+ 50 ℃)

Độ ẩm tương đối: 40% RH-85% RH (không ngưng tụ)


- Môi trường lưu trữ: Nhiệt độ: (-40 ℃) – (+85 ℃)
Độ ẩm tương đối: <85% H (không ngưng tụ)

- Kích thước hình dạng (LxWxH):56 x 20 x 21,5mm

2.2.3 Giao diện phần cứng


a. Truyền thông nối tiếp:

Khi mô-đun giao tiếp nối tiếp với thiết bị người dùng, Các chân được xác
định như sau:
Hình 6 Các chân của cảm biến

STT chân Tên gọi Loại Công năng mô tả


1 Vin in Nguồn điện ở đầu vào. (dây đỏ)
2 TD out Đầu ra dữ liệu nối tiếp: Mức logic TTL. (dây màu
xanh lá cây)

3 RD in Nhập dữ liệu nối tiếp: Mức logic TTL. (dây trắng)

4 GND - Tín hiệu đất: nối đất. (dây đen)

5 NC - Không xác định


b. Giao tiếp phần cứng
Thông qua giao diện nối tiếp, mô-đun sẽ kết nối với nguồn: chân gửi dữ liệu
(TD) kết nối với đầu nhận dữ liệu của máy chủ (RXD), chân nhận dữ liệu của
mô-đun (RD) kết nối với đầu gửi dữ liệu của máy tính chủ (TXD).

- Chân TXD (đầu ra, mức logic TTL)

Thông
số Đơn
Nguồn Dòng diện Lưu ý
Tối Điển Tối đa vị
thiểu hình
VOL IOL=-4mA 0.4 V Logic 0

VOH IOH= 4mA 2.4 3.3 V Logic 1

- Chân RXD (đầu vào, mức logic TTL)

Số tham
khảo Đơn
Nguồn Điều kiện Lưu ý
Tối Điển Tối vị
thiểu hình đa
VIL 0.6 V Logic 0

VIH 2.4 V Logic 1


VIH =5V 1 mA
IIH
VIH =3.3V 30 uA

VImax -0.3 5.5 V Điện áp đầu vào


giới hạn

- Thông số đầu vào nguồn điện


Thông số
Đơn
Nguồn, dòng điện Tối Điển Tối vị Lưu ý
thiểuhình đa
Điện áp cung cấp Vin 3.6 6.0 V Giá trị hoạt động bình
thường
Điện áp cực hạn Vinmax -0.3 7.0 V Vượt quá phạm vi này có thể
gây ra thiệt hại vĩnh viễn
Dòng điện hoạt 90 100 110 mA
động Icc
Dòng điện cao 150 mA
điểm Ipeak

2.2.4 Hệ thống tài nguyên


a. Bộ đệm

- Bộ đệm hình ảnh: Bộ đệm hình ảnh ImageBuffer được sử dụng để lưu trữ dữ liệu
hình ảnh và sử dụng trong xử lý hình ảnh bên trong mô-đun. Khi tải lên / tải xuống
hình ảnh, định dạng hình ảnh là 256x288 pixel

- Bộ đệm tệp tính năng CharBuffer1 hoặc CharBuffer2 có thể được sử dụng để lưu
trữ cả tệp tính năng phổ biến và tệp tính năng mẫu.

b. Thư viện vân tay


- Mô-đun đã mở ra một vùng lưu trữ trong FLASH làm vùng lưu trữ mẫu vân tay,
thường được gọi là thư viện vân tay. Dữ liệu trong thư viện vân tay được bảo vệ khi
tắt nguồn.

- Các mẫu vân tay được lưu trữ theo số thứ tự, nếu dung lượng của cơ sở dữ liệu
vân tay là N thì số thứ tự của các mẫu vân tay trong cơ sở dữ liệu vân tay được xác
định là: 0, 1, 2 ...N-2, N- 1.

c. Thông số cấu hình hệ thống


- Tốc độ Baud: Nếu giá trị tham số là N (giá trị của N nằm trong khoảng từ 1
đến 12), tốc độ truyền tương ứng là (9600xN) bps

- Mức độ bảo mật: Tham số này kiểm soát việc so sánh dấu vân tay và ngưỡng
so sánh trong quá trình tìm kiếm. Nó được chia thành 5 mức, phạm vi giá trị là:
1,2,3,4,5. Khi mức độ bảo mật là 1, tỷ lệ chấp nhận sai là cao nhất và tỷ lệ từ chối là
thấp nhất. Mức độ bảo mật là 5 Khi tỷ lệ sai là thấp nhất, tỷ lệ từ chối là cao nhất.

d. Địa chỉ mô-đun


- Mỗi mô-đun có một địa chỉ nhận dạng, khi mô-đun giao tiếp với máy trên,
mỗi hướng dẫn, dữ liệu được truyền dưới dạng gói dữ liệu, mỗi gói chứa một địa chỉ
chứa các mục địa chỉ. Mô-đun chỉ phản ứng với các hướng dẫn và gói dữ liệu có
chứa cùng một địa chỉ như địa chỉ của chính họ.

- Địa chỉ mô-đun là 4 byte và giá trị mặc định là: 0xFFFFFFFF. Người dùng có
thể sửa đổi địa chỉ mô-đun .Sau khi địa chỉ mô-đun được sửa đổi, địa chỉ mới vẫn
được lưu sau khi mô-đun bị mất điện.

2.3 Giao tiếp UART

Giao thức truyền thông đóng một vai trò quan trọng trong việc tổ chức giao
tiếp giữa các thiết bị. Nó được thiết kế theo nhiều cách khác nhau dựa trên các yêu
cầu của hệ thống và các giao thức này có một quy tắc cụ thể được thống nhất giữa
các thiết bị để việc truyền dữ liệu được thực hiện thành công. Trong đề tài này nhóm
em sử dụng giao thức UART để giao tiếp.

2.3.1 Giới thiệu về UART


UART (Universal Asynchronous Receiver / Transmitter) là một vi mạch sẵn
có trong một vi điều khiển, Tất cả các loại kiến trúc vi điều khiển đều có phần cứng
UART tích hợp do giao tiếp nối tiếp và chỉ sử dụng hai cáp để liên lạc. Chức năng
chính của UART là truyền dữ liệu nối tiếp. Trong UART, giao tiếp giữa hai thiết bị
có thể được thực hiện theo hai cách là giao tiếp dữ liệu nối tiếp và giao tiếp dữ liệu
song song.

Hình 7 Truyền thông UART


2.3.2 Giao tiếp nối tiếp và song song
- Giao tiếp dữ liệu nối tiếp: dữ liệu được truyền qua một cáp hoặc một đường
dây ở dạng bit-bit và chỉ cần hai cáp. Truyền thông dữ liệu nối tiếp không đắt khi
chúng ta so sánh với giao tiếp song song. Nó đòi hỏi rất ít mạch cũng như dây. Vì
vậy, giao tiếp này rất hữu ích trong các mạch ghép so với giao tiếp song song.

- Giao tiếp dữ liệu song song: dữ liệu có thể được truyền qua nhiều cáp cùng
một lúc. Truyền dữ liệu song song tốn kém nhưng rất nhanh, vì nó đòi hỏi phần cứng
và cáp bổ sung. Các ví dụ tốt nhất cho giao tiếp này là máy in cũ, PCI, RAM, v.v.

2.3.3 Cách thức hoạt động


Việc truyền dữ liệu của UART có thể được thực hiện bằng cách sử dụng bus
dữ liệu ở dạng song song bởi các thiết bị khác như vi điều khiển, bộ nhớ, CPU, v.v.
Sau khi nhận được dữ liệu song song từ bus, nó tạo thành gói dữ liệu bằng cách thêm
ba bit như bắt đầu, dừng lại và trung bình. Nó đọc từng bit gói dữ liệu và chuyển đổi
dữ liệu nhận được thành dạng song song để loại bỏ ba bit của gói dữ liệu. Tóm lại,
gói dữ liệu nhận được bởi UART chuyển song song về phía bus dữ liệu ở đầu nhận.
Dữ liệu truyền qua UART được tổ chức thành các gói. Mỗi gói chứa 1 bit
bắt đầu, 5 đến 9 bit dữ liệu (tùy thuộc vào UART), một bit chẵn lẻ tùy chọn và 1
hoặc 2 bit dừng.

Hình 8 Gói dữ liệu UART


- Start-bit: Start-bit còn được gọi là bit đồng bộ hóa được đặt trước dữ liệu
thực tế. Để bắt đầu truyền dữ liệu, truyền UART kéo đường dữ liệu từ mức điện áp
cao (1) xuống mức điện áp thấp (0). UART thu được thông báo sự chuyển đổi này
từ mức cao sang mức thấp qua đường dữ liệu cũng như bắt đầu hiểu dữ liệu thực.
Nói chung, chỉ có một start-bit.

- Bit dừng được đặt ở phần cuối của gói dữ liệu. Thông thường, bit này dài 2
bit nhưng thường chỉ sử dụng 1 bit. Để dừng sóng, UART giữ đường dữ liệu ở mức
điện áp cao.

- Bit chẵn lẻ cho phép người nhận đảm bảo liệu dữ liệu được thu thập có đúng
hay không. Đây là một hệ thống kiểm tra lỗi cấp thấp & bit chẵn lẻ có sẵn trong hai
phạm vi như Chẵn lẻ – chẵn lẻ cũng như Chẵn lẻ – lẻ. Trên thực tế, bit này không
được sử dụng rộng rãi nên không bắt buộc.

- Các bit dữ liệu bao gồm dữ liệu thực được truyền từ người gửi đến người
nhận. Độ dài khung dữ liệu có thể nằm trong khoảng 5 & 8. Nếu bit chẵn lẻ không
được sử dụng thì chiều dài khung dữ liệu có thể dài 9 bit. Nói chung, LSB của dữ
liệu được truyền trước tiên sau đó nó rất hữu ích cho việc truyền.
Chương 3. Lưu đồ thuật toán và
chương trình code
3.1 Lưu đồ thuật toán
- Tổng quát: Lấy mẫu vân tay → Chọn vân tay để nhận dạng → Nhận dạng

- Lưu đồ giải thuật quá trình lấy mẫu vân tay

- Lưu đồ giải thuật quá trình chọn vân tay để nhận dạng
- Lưu đồ giải thuật quá trình nhận dạng

3.2 Tạo cơ sở dữ liệu với SQLite


- SQLite là hệ quả trị cơ sở dữ liệu (DBMS) quan hệ tương tự như Mysql, ...
Đặc điểm nổi bật của SQLite so với các DBMS khác là gọn, nhẹ, đơn giản, đặt biệt
không cần mô hình server-client, không cần cài đặt, cấu hình hay khởi động nên
không có khái niệm user, password hay quyền hạn trong SQLite Database. Dữ liệu
cũng được lưu ở một file duy nhất.

- Để lập một cơ sở dữ liệu, ta sẽ lập một bảng với các nội dung chính sau:
+ Tên đăng nhập (Usersname)
+ Mật khẩu (Password)
+ Vân tay: Các ảnh vân tay dữ liệu của một người được lưu dưới tên i là sô thứ tự
mẫu vân tay của người đó (i = 1, 2, 3,…). Trong chương trình này i = 0, 1, 2…
Hình 9 Tạo cơ sở dữ liệu với SQLite
3.3 Giao diện phần mềm
- Kết nối thiết bị với máy tính. Sử dụng phần mềm QT Designer để thiết kế giao
diện chương trình nhận dạng vân tay.

Hình 10 Giao diện đăng nhập


- Có thể sử dụng tên đăng nhập hoặc vân tay để đăng nhập vào hệ thống.

- Để sử dụng chương trình, trước hết phải kích chuột vào hình vân tay trên giao
diện để máy tính thực hiện việc kết nối với thiết bị và kích hoạt Cảm biến hoạt động.

- Áp ngón tay lên mặt gương của thiết bị sao cho bề mặt vân tay của ngón tay đó
gần như khớp với bề mặt gương, như vậy ảnh vân tay thu được sẽ rõ nét và đầy đủ
nhất, quá trình nhận dạng sẽ chính xác hơn. Để tăng độ chính xác nhận dạng, mỗi
người sẽ được lấy ảnh 2 lần.

- Quá trình xử lý nhận dạng bắt đầu, quá trình này cũng cần mất một khoảng thời
gian nhất định. Kết thúc quá trình xử lý, nếu vây tay cần nhận dạng trùng với một
trong những vân tay trong cơ sở dữ liệu thì sẽ xuất hiện cửa sổ màn hình chính.

Hình 11 Giao diện màn hình chính


3.4 Chương trình code
Fingerprint finger = Fingerprint(&mySerial);

void setup()
{
Serial.begin(9600);
while (!Serial); // For Yun/Leo/Micro/Zero/...
delay(100);
Serial.println("\n\nfinger detect test");

// set the data rate for the sensor serial port


finger.begin(57600);
delay(5);
if (finger.verifyPassword()) {
Serial.println("Found fingerprint sensor!");
} else {
Serial.println("Did not find fingerprint sensor :(");
while (1) { delay(1); }
}

Serial.println(F("Reading sensor parameters"));


finger.getParameters();
Serial.print(F("Status: 0x")); Serial.println(finger.status_reg, HEX);
Serial.print(F("Sys ID: 0x")); Serial.println(finger.system_id, HEX);
Serial.print(F("Capacity: ")); Serial.println(finger.capacity);
Serial.print(F("Security level: ")); Serial.println(finger.security_level);
Serial.print(F("Device address: ")); Serial.println(finger.device_addr, HEX);
Serial.print(F("Packet len: ")); Serial.println(finger.packet_len);
Serial.print(F("Baud rate: ")); Serial.println(finger.baud_rate);

finger.getTemplateCount();

if (finger.templateCount == 0) {
Serial.print("Sensor doesn't contain any fingerprint data. Please run the
'enroll' example.");
}
else {
Serial.println("Waiting for valid finger...");
Serial.print("Sensor contains "); Serial.print(finger.templateCount);
Serial.println(" templates");
}
}

void loop() // run over and over again


{
getFingerprintID();
delay(50); //don't ned to run this at full speed.
}

uint8_t getFingerprintID() {
uint8_t p = finger.getImage();
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image taken");
break;
case FINGERPRINT_NOFINGER:
Serial.println("No finger detected");
return p;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
return p;
case FINGERPRINT_IMAGEFAIL:
Serial.println("Imaging error");
return p;
default:
Serial.println("Unknown error");
return p;
}

// OK success!

p = finger.image2Tz();
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image converted");
break;
case FINGERPRINT_IMAGEMESS:
Serial.println("Image too messy");
return p;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
return p;
case FINGERPRINT_FEATUREFAIL:
Serial.println("Could not find fingerprint features");
return p;
case FINGERPRINT_INVALIDIMAGE:
Serial.println("Could not find fingerprint features");
return p;
default:
Serial.println("Unknown error");
return p;
}

// OK converted!
p = finger.fingerSearch();
if (p == FINGERPRINT_OK) {
Serial.println("Found a print match!");
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("Communication error");
return p;
} else if (p == FINGERPRINT_NOTFOUND) {
Serial.println("Did not find a match");
return p;
} else {
Serial.println("Unknown error");
return p;
}

// found a match!
Serial.print("Found ID #"); Serial.print(finger.fingerID);
Serial.print(" with confidence of "); Serial.println(finger.confidence);

return finger.fingerID;
}

// returns -1 if failed, otherwise returns ID #


int getFingerprintIDez() {
uint8_t p = finger.getImage();
if (p != FINGERPRINT_OK) return -1;

p = finger.image2Tz();
if (p != FINGERPRINT_OK) return -1;

p = finger.fingerFastSearch();
if (p != FINGERPRINT_OK) return -1;

// found a match!
Serial.print("Found ID #"); Serial.print(finger.fingerID);
Serial.print(" with confidence of "); Serial.println(finger.confidence);
return finger.fingerID;
}
Kết luận
Trong thời gian tìm hiểu và thực hiện đồ án 2 dưới sự hướng dẫn tận tình của
PGS. TS. Nguyễn Quang Địch trong bộ môn Tự động hóa Công Nghiệp – Viện điện,
em đã hoàn thành đồ án 2 của mình với đề tài: Bảo mật hệ thống tủ lưu trũ thông
minh bằng cảm biến vân tay

Dù đã cố gắng hoàn thành đồ án này và có sự hướng dẫn của thầy cô nhưng


do tầm hiểu biết còn hạn chế và chưa có kinh nghiệm thực tiễn nên chắc chắn đồ án
này còn nhiều hạn chế và thiếu sót. Vì vậy, em rất mong sự sủa chữa đóng góp ý
kiến của các thầy cô và các bạn để em được rút kinh nghiệm và bổ sug thêm kiến
thức.

Em xin chân thành cảm ơn!


Tài liệu tham khảo
[1] https://hshop.vn/products/cam-bien-nhan-dang-van-tay-fpm10a

[2] https://en.wikipedia.org/wiki/Universal_asynchronous_receiver-transmitter

[3] https://github.com/adafruit/Adafruit-Fingerprint-Sensor-Library

You might also like