GIỚI THIỆU TỔNG QUAN
Tổng quan về công nghệ sinh trắc học
Công nghệ sinh trắc học (Biometric) là một công nghệ sử dụng những thuộc tính vật lý hoặc các mẫu hành vi, các đặc điểm sinh học đặc trưng như dấu vân tay, mẫu võng mạc, giọng nói, khuôn mặt, dáng đi, để nhận diện con người Sinh trắc học (biometric) là một công cụ kiểm tra cá nhân hữu hiệu chưa từng có trong lịch sử.
Hình 1.1: Giới thiệu về công nghệ sinh trắc học
Bên cạnh đó, bảo mật sinh trắc học cũng đem đến sự nhanh chóng và thuận tiện cao Với công nghệ này, người dùng sẽ không còn phải ghi nhớ các chuỗi pin hay mật khẩu phức tạp Và không giống như mật khẩu hay các thông báo mã xác thực, họ cũng không thể quên hay làm thất lạc sinh trắc học của mình.
Quan trọng nhất là, khác với các hệ thống được bảo mật bằng mật khẩu, sẽ thực sự khó để hack một hệ thống được bảo vệ bởi sinh trắc học.
Các phương pháp bảo mật biometric hiện nay bao gồm: mã hóa, xác thực và xác minh người dùng Trong đó: mã hóa dữ liệu là quá trình biến đổi thông tin gốc thành dạng khó đọc để ngăn chặn việc truy cập trái phép vào thông tin Còn xác thực là quá trình xác định người dùng đúng là ai Và xác minh là quá trình xác định xem người dùng có phải là người được ủy quyền hay không.
Công nghệ bảo mật sinh trắc học có thể được sử dụng để bảo vệ thông tin cá nhân của người dùng trong nhiều lĩnh vực, bao gồm an ninh, thương mại, y tế, chính phủ, tài chính,… Ví dụ, công nghệ này có thể được sử dụng để đảm bảo tính bảo mật của thông tin y tế của bệnh nhân, xác thực đăng nhập vào các tài khoản trực tuyến, kiểm soát truy cập vào các khu vực nhạy cảm,…
1.1.2 Lịch sử công nghệ sinh trắc học
Việc bắt đầu sử dụng vân tay là ở thời gian rất xa xưa Theo lịch sử tìm thấy, vân tay đã được sử dụng trên những tấm thẻ bằng đất sét cho việc giao dịch kinh doanh ở thời Babylon cổ xưa Ở Trung Quốc, dấu vân tay được tìm thấy trên những con dấu bằng đất sét Nhưng mãi đến thế kỷ 19 những kết quả nghiên cứu khoa học mới được phổ biến và công nghệ vân tay mới bắt đầu được xem xét hàng loạt
Việc sử dụng những nghiên cứu khoa học ở những năm 1800 như là một phát minh, công nghệ vân tay đã được ứng dụng vào đầu thế kỷ 20 Vào năm 1924, FBI (Federal Bureau of Investigation) đã biết lưu trữ 250 tỷ vân tay của công dân cho mục đích điều tra tội phạm và nhận dạng những người bị chết mà không biết rõ họ tên Vào đầu những năm 1900, công nghệ vân tay đã gặp một bước ngoặt lớn khi nó cho ra đời
“Live-Scan”, một phương pháp đạt được hình ảnh vân tay không sử dụng mực in Khi FBI loan báo rằng đó là kế hoạch để ngưng sử dụng những thẻ vân tay bằng giấy cho những thành viên mới gia nhập AFIS (IAFIS) nội bộ của họ Đó là thực tế đang công bố gây một bước nhảy vọt cho công nghệ Live-Scan ngày hôm nay
Nhưng công nghệ nhận dạng vân tay không dừng lại chỉ cho mục đích pháp lý.
Nó đã được sử dụng một cách chính thức cho mục đích kinh doanh vào năm 1968 tại một nhóm kinh doanh về an ninh tại đường Wall Vân tay ngày nay đang được sử dụng như là một phương pháp nhận dạng hiệu quả và chắc chắn trong nhiều lĩnh vực, bao gồm tài chính, y học, kinh tế điện tử và ứng dụng điều khiển truy nhập và khóa cửa vân tay Ứng dụng hiện đại nhất của công nghệ vân tay là nhờ vào phần lớn của sự phát triển của mắt đọc vân tay dạng nén một cách phi thường
1.1.3 Ứng dụng của công nghệ sinh trắc học
Các ứng dụng của sinh trắc học đang áp dụng hiện nay:
Là công nghệ được áp dụng nhiều trong thực tế Và các thiết bị sử dụng công nghệ này không phải hiếm trong đời sống Nó được áp dụng trên điện thoại di động cũng như laptop Khóa vân tay, thiết bị chấm công,hoặc kiểm soát ra vào.
Hình 1.2: Công nghệ sinh trắc vân tay
- Quét tĩnh mạch lòng bàn tay:
Được áp dụng khá nhiều trong trường học bệnh viện Cũng như trong ngân hàng trên thế giới Năm 2004 Fujitsu là nhà sản xuất đầu tiên thương mại hóa công nghệ tĩnh mạch lòng bàn tay.
Hình 1.3: Sinh trắc học bàn tay
Là công nghệ dựa trên các đặc điểm trên khuôn mặt để nhận diện các cá nhân.
Hình 1.4: Sinh trắc khuôn mặt
Là công nghệ sinh trắc học có độ bảo mật cao nhất nó dựa vào cấu trúc của võng mạc để nhận dạng các cá nhân.
Hình 1.5: Sinh trắc học mắt, quét võng mạc
Thuật toán nhận dạng vân tay
1.2.1 Tiền xử lý ảnh, nâng cao chất lượng ảnh
Tăng cường ảnh bằng phương pháp lọc Gabor:
Phương pháp lọc Gabor được triển khai bởi Lin Hong là một trong những phương pháp tăng cường ảnh vân tay phổ biến nhất hiện nay Phương pháp này dựa vào bộ lọcGabor mà bộ lọc này là sự hòa hợp của hướng vân và tần số vân cục bộ Các bước chính của phương pháp này bao gồm: chuẩn hóa ảnh (normalization), ước lượng hướng ảnh (orientation image estimation), ước lượng tần số ảnh (frequency image estimation),Tạo các vùng mặt nạ (region mask generation) và lọc Gabor (filtering).
Hình 1.6: Các bước tăng cường ảnh của phương pháp lọc Gabor
Chuẩn hóa ảnh Mục đích của bước này là làm giảm độ khác biệt các giá trị mức xám giữa các vân tay với nhau nhằm tạo thuận lợi cho các bước xử lý tiếp theo. Nguyên nhân của sự khác biệt giá trị mức xám này là do quá trình lấy dấu vân tay từ thiết bị đã tạo nên sự không đồng đều màu, có chổ màu lợt màu đậm Đặc biệt, ảnh vân tay sau khi được chuẩn hóa, các vân tay sẽ được làm rõ hơn mà không làm thay đổi cấu trúc của vân tay
Công thức của chuẩn hóa vân tay: Ψ(i, j)={ M M 0 + 0 − √ √ V A R V A R 0 ( 0 VAR I ( VAR I (i , j ( i, j)−M )−M ) 2 ) ,∧if I 2 ,∧ otherwise (i , j )> M
Trong đó I(i,j) là giá trị mức xám tại điểm ảnh (i,j), M và VAR tương ứng là mean và variance của I, Ψ(i,j) là giá trị mức xám tại điểm (i,j) sau khi đã được chuẩn hóa, M0 và VAR0 tương ứng là mean và variance mong muốn.
Hình 1.7: Minh họa kết quả chuẩn hóa ảnh
Mục đích của bước này là xác định hướng của các đường vân tay; nhằm phục vụ cho bước Ước lượng tần số ảnh và Lọc Gabor Đây được xem là một trong những bước quan trọng nhất trong phần Tăng cường ảnh; vì nếu việc Ước lượng hướng không đúng sẽ dẫn đến việc Ước lượng tần số và Lọc Gabor sai; kết quả này làm ảnh sau khi tăng cường không tốt, thậm chí còn xấu hơn rất nhiều so với ảnh ban đầu; dẫn đến việc rút trích đặc trưng không đúng
Các bước chính của Ước lượng hướng ảnh:
Chia Ψ thành nhiều ô có kích thước w×w (giá trị w đề nghị là 16).
Ở mỗi ô, có tâm điểm (i,j), dùng toán tử Sobel để tính gradient ∂x(i,j) và ∂y(i,j) tại mỗi điểm (i,j)
- Toán tử Sobel ngang được dùng để tính ∂x(i,j).
- Toán tử Sobel ngang được dùng để tính ∂y(i,j).
- Ước lượng hướng ở mỗi ô có tâm điểm (i,j) theo phương trình sau:
V x (i, j) Trong đó θ(i,j) là hướng cục bộ của ô có tâm điểm là (i,j)
Sử dụng lọc Gaussian làm mượt các trường hướng của ô căn cứ vào thông tin của các ô lân cận, vì các điểm gây nhiễu, vân bị đứt, hay các đặc trưng vân tay, … trong ảnh vân tay làm cho việc xác định hướng cục bộ của ô không đúng Ngoài ra, tính chất hướng của các ô thay đổi một cách từ từ so với các ô lân cận của nó, nên một lọc thông thấp (low-pass) được dùng để chỉnh sửa những hướng vân cục bộ sai Để thực hiện lọc thông thấp, hướng của các ô được chuyển về các trường véc tơ liên tục: Φ x (i , j)=cos(2θ(i j)) Φ y (i , j)=sin(2θ(i j))
Trong đó Φ x (i , j) và Φ y (i , j)là các trường véc tơ tương ứng với x và y Áp dụng bộ lọc thông thấp lên các trường véc tơ ta có: Φ ' x (i , j)= ∑ u= −w Φ 2 w Φ
Trong đó G là lọc thông thấp Gaussian của kích thước w Φ x w Φ
Hướng sau khi được làm mượt ở mỗi ô:
Hình 1.8: Ước lượng hướng ảnh khi chưa làm mượt(a) và đã được làm mượt(b).
1.2.1.3 Ước lượng tần số ảnh
Mục đích của bước này là xác định tần số của vân tay, nhằm phục vụ cho bước lọc Gabor Tần suất vân cục bộ tại điểm (i,j) là nghịch đảo của số vân trên một đơn vị chiều dài dọc theo đoạn có tâm tại (i,j) và vuông góc với hướng vân cục bộ Các bước chính của ước lượng tần số ảnh:
Chia G thành các ô có kích thước w×w (16×16)
Ở mỗi tâm điểm (i,j) của ô, tính giá trị trong cửa sổ hướng (oriented window) có kích thước l×w (32×16).
Ở mỗi tâm điểm (i,j) của ô, tính x-signature, X[0], X[1], … X[l – 1], của vân lồi và vân lõm trong phạm vi cửa sổ hướng.
Nếu trong cửa sổ hướng không chứa đặc trưng vân tay nào thì hình dạng của x- signature là một hình sin rời rạc có biên độ gần bằng nhau; do đó, tần số của vân có thể được ước lượng từ x-signature Đặt T(i,j) là khoảng cách trung bình của cặp đỉnh liền kề trong x-signature Tần số vân Ω(i,j) , được tính như sau: Ω(i,j)=1/T(i,j)T(i,j)
Đối ảnh vân tay có độ phân giải không thay đổi, thì giá trị của tần số vân cục bộ là một khoảng giá xác định nào đó Như đối với ảnh 500 dpi, giá trị tần số là [1/T(i,j)3, 1/T(i,j)25]; do đó, nếu giá trị ước lượng tần số nằm ngoài phạm vi của tần số thì được gán giá trị là -1 để xác định đây là ô không thể xác định được tần số.
Đối những cửa sổ hướng có chứa những đặc trưng vân tay thì hình dạng của x- signature là một hình sin có các giá trị của đỉnh biên độ trên lệch nhau nhiều Giá trị tần số của ô được suy ra từ các giá trị tần số của các ô lân cận
1.2.1.4 Tạo các vùng mặt nạ
Mục đích của bước này là xác định các vùng điểm của ảnh vân tay đầu vào nào có khả năng được phục hồi, và vùng điểm nào không thể được phục hồi Việc phân loại các điểm ảnh vào vùng có khả năng được phục hồi hay không thể được phục hồi là dựa vào hình dạng sóng của vân tay cục bộ Ba yếu tố sau được dùng là đặc tính của sóng hình dạng sin của tần số: biên độ (α ), tần số (β ), độ khác biệt (γ )
Thuật toán: đặt X[1], X[2], …, X[l] là x-signature của ô có tâm (i,j) Ba đặc tính được tính như sau:
- α = (chiều cao trung bình của các đỉnh – bề sâu trung bình của các đáy của sóng hình sin)
- β =1/T(i,j)T(i,j) Trong đó, T(i,j) là số điểm ảnh trung bình giữa 2 đỉnh đỉnh kề nhau
Nếu sự kết hợp của ba đặc tính trên mà lớn hơn một ngưỡng nào đó, thì ô có tâm (i,j) có khả năng được phục hồi, ngược lại thì không thể được phục hồi.
Cấu trúc song song của vân tay cùng với một tần số vân và hướng trong một ảnh vân tay cung cấp thông tin hữu ích cho việc loại bỏ các nhiễu ra khỏi ảnh vân tay; do đó, việc dùng bộ lọc Gabor mà dựa vào tần số và hướng vân giúp làm rõ ảnh vân tay một cách hiệu quả Một bộ lọc đối xứng hai chiều Gabor có dạng sau:
Trong đó θ là hướng của bộ lọc Gabor,[xθ ,yθ] là tọa độ của [x, y] sau khi quay theo chiều kim đồng hồ của trục descartes một góc [900 - θ], f là tần số của sóng mặt phẳng sin, δ x và δ y là hằng số không gian Gaussian theo trục tọa độ x và y.
1.2.2 Trích xuất đặc trưng Đa số các hệ thống nhận dạng vân tay tự động so sánh các vân tay dựa trên đối sánh đặc trưng; vì vậy, việc rút trích đặc trưng đúng đắn là một nhiệm vụ cực kỳ quan trọng.
1.2.2.1 Phương pháp nhị phân hóa
Một trong những kỹ thuật dễ dàng nhất là sử dụng ngưỡng toàn cục t và được thực hiện bằng cách thiết lập các điểm ảnh có mức xám nhỏ hơn t về 0 và các điểm ảnh còn lại về 1 Nhưng các phần khác nhau của ảnh có thể được đặc tính hóa bởi độ tương phản và cường độ khác nhau; do vậy, một ngưỡng đơn là không đủ để nhị phân hóa chính xác Một kỹ thuật khác là dùng ngưỡng cục bộ t, bằng cách điều chỉnh giá trị của nó theo cường độ cục bộ trung bình Trong trường hợp ảnh vân tay có chất lượng thấp, kỹ thuật ngưỡng cục bộ không phải lúc nào cũng cho ra một kết quả tốt; vì có sự xuất hiện các lỗ, các đứt gãy nhỏ và các cầu giữa các vân trên ảnh nhị phân hóa (hình 3.10). Để giải quyết vấn đề này ta cần có thêm bước Lọc đặc trưng
Phương pháp này nhằm làm mỏng bề dày của vân tay về còn một điểm ảnh mà các cấu trúc vân tay vẫn được đảm bảo
Hình 1.9: Kết quả của việc nhị phân hóa và làm mỏng của ảnh
Giả sử (x,y) là một điểm trên đường vân đã được làm mỏng và N0, N1, …, N7 là
8 điểm xung quanh nó thì:
(x,y) là một điểm kết thúc nếu∑ i=0
(x,y) là một điểm rẽ nhánh nếu∑ i=0
Hình 1.10: a) một phần điểm của vân tay; b) điểm kết thúc; c) điểm rẽ nhánh.
CƠ SỞ LÝ THUYẾT
Giới thiệu về vi xử lý ARM
ARM là viết tắt của Advanced RISC Machine (trước đây là Acorn RISC Machine) là bộ xử lý dựa trên kiến trúc RISC (Reduced Instruction Set Computer – Máy tính có tập lệnh đơn giản hóa), được phát triển bởi Arm Holdings, Ltd.
ARM sản xuất bộ vi xử lý đa nhân RISC 32 bit và 64 bit Các bộ xử lý RISC được thiết kế để thực hiện một số lượng nhỏ hơn các loại lệnh máy tính để chúng có thể hoạt động ở tốc độ cao hơn, thực hiện nhiều lệnh mỗi giây (MIPS) Bằng cách loại bỏ các hướng dẫn không cần thiết và tối ưu hóa các đường dẫn, bộ xử lý RISC cung cấp hiệu suất vượt trội nhưng mức tiêu thụ điện năng ở mức thấp.
Hình 2.1: Bộ xử lý ARM
Bộ xử lý ARM được sử dụng rộng rãi trong các thiết bị điện tử như smartphone, máy tính bảng, trình phát đa phương tiện và các thiết bị di động khác Bộ vi xử lý ARM được thiết kế để hiệu quả nhất có thể, chỉ chấp nhận các lệnh có thể được thực hiện trong một chu kỳ bộ nhớ Quá trình phổ biến đối với CPU là tìm nạp, giải mã và thực thi các lệnh.
Thiết kế đơn giản của bộ xử lý ARM cho phép xử lý đa lõi hiệu quả hơn và mã hóa dễ dàng hơn cho các nhà phát triển Mặc dù chúng không có cùng thông lượng tính toán thô như các sản phẩm của Intel dẫn đầu thị trường x86, bộ vi xử lý ARM đôi khi vượt quá hiệu suất của bộ xử lý Intel cho các ứng dụng tồn tại trên cả hai kiến trúc.
Hình 2.2: Kiến trúc của vi xử lý ARM
2.1.2 Lịch sử phát triển của ARM
Vi xử lý ARM bắt đầu được thiết kế từ năm 1983 trong một dự án phát triển của công ty máy tính Arcon.
Bảng 2.1: Các dòng phát triển của ARM
Kiến trúc Số bit Tên lõi
ARM8 ARM7TDMI, ARM9TDMI
ARMv5 32 ARM7EJ, ARM9E, ARM10E
ARM-Cortex-M0, ARM-Cortex-M0+, ARM-Cortex-M1 ARM-Cortex-M3
ARM-Cortex-M4 ARM-Cortex-R4, ARM-Cortex-R5, ARM-Cortex-R7
ARMv7-A 32 ARM-Cortex-A5, ARM-Cortex-A7, ARM-Cortex-A8,
ARM-Cortex-A9, ARM-Cortex-A12, ARM-Cortex-A15 ARM-Cortex-A17
ARMv8-A 64/T(i,j)32 ARM-Cortex-A53, ARM-Cortex-A57
2.1.3 Giới thiệu chung về ARM Cortex
Dòng ARM Cortex là một bộ xử lý thế hệ mới đưa ra một kiến trúc chuẩn cho nhu cầu đa dạng về công nghệ Không giống như các chip ARM khác, dòng Cortex là một lõi xử lý hoàn thiện đưa ra một chuẩn CPU và kiến trúc hệ thống chung.
ARM Cortex gồm 3 dòng chính:
Dòng A(Cortex-A): dành cho các ứng dụng cao cấp, chạy trên các hệ điều hành mở và phức tạp như Linux, Android,… Hỗ trợ tập lệnh ARM, thumb, thumb-2.
Dòng R(Cortex-R): dành cho các ứng dụng thời gian thực Hỗ trợ tập lệnh ARM, thumb, thumb-2.
Dòng M(Cortex-M): dành cho các ứng dụng vi điều khiển Microcontroller và chi phí thấp Hỗ trợ tập lệnh thumb-2 Dòng ARM STM32 có lõi Cortex-M.
2.1.4 Giới thiệu về ARM Cortex-M3
Bộ vi xử lý ARM Cortex-M3 là bộ vi xử lý ARM đầu tiên dựa trên kiến trúc ARMv7-M và được thiết kế đặc biệt để đạt được hiệu suất cao trong các ứng dụng nhúng cần tiết kiệm năng lượng và chi phí, chẳng hạn như các vi điều khiển, hệ thống cơ ô tô, hệ thống kiểm soát công nghiệp và hệ thống mạng không dây Thêm vào đó là việc lập trình được đơn giản hóa đáng kể giúp kiến trúc ARM trở thành một lựa chọn tốt cho ngay cả những ứng dụng đơn giản nhất.
Một số đặc điểm của ARM Cortex-M3:
ARM Cortex-M3 được xây dựng dựa trên kiến trúc ARMv7-M 32bit có cấu trúc thứ bậc.
Dựa trên cấu trúc Harvard, được đặc trưng bằng sự tách biệt giữa vùng nhớ dữ liệu và chương trình.
Hỗ trợ bảo vệ bộ nhớ thông qua việc phân quyền thực thi và truy xuất.
Hỗ trợ kiến trúc tập lệnh thumb-2.
Hỗ trợ kỹ thuật Bit Band giúp cho phép truy xuất dữ liệu theo bit đồng thời giảm thời truy xuất.
Cho phép truy cập dữ liệu không xếp hàng (unaligned data accesses) đặc điểm này cho phép sử dụng hiệu quả SRAM nội.
SysTick timer 24 bit hỗ trợ cho việc chạy hệ điều hành thời gian thực.
Hỗ trợ lập trình và gỡ rối qua cổng JTAG truyền thống cũng như chuẩn 2 dây nhỏ gọn SWD ( Serial Wire Debug).
Khối quản lý vector ngắt lồng nhau ( NVIC-Nested Vectored Interrupt Controller) cho phép rút ngắn thời gian đáp ứng yêu cầu ngắt.
Hình 2.3: Cấu trúc vi xử lý ARM Cortex-M3
2.1.5 Giới thiệu dòng chip STM32
STM32 là vi điều khiển dựa trên nền tảng lõi ARM Cortex–M3 Lõi ARM Cortex–M3 là sự cải tiến từ lõi ARM7 truyền thống của công ty ARM Dòng STM32 tiêu thụ năng lượng cực thấp trong khi đó hiệu suất cực cao và việc lập trình cũng rất dễ dàng Với sư đồ sộ về ngoại vi (GPIO, I2C, SPI, ADC, USB, Ethernet, CAN ).
2.1.6 Giới thiệu về chip STM32F103C8T6
Hình 2.4: Mô tả sơ đồ chân
Cấu hình chi tiết của STM32F103C8T6 sử dụng dòng ARM Cortex-M3 hoạt động với tần số lên đến 72Mhz với các thông số:
Lõi ARM 32-bit Cortex M3 với clock max là 72Mhz.
- Flash được tổ chức một khối chính (Main Block) có dung lượng lên đến 128 Kbytes (hoặc 64 Kbytes) được chia thành 128 Page (hoặc 64 Page đối với loại 64 Kbytes) Và một khối thông tin (information block) có địa chỉ bắt đầu từ 0x08000000.
Clock, reset và quản lý nguồn:
- Power On Reset(POR), Power Down Reset(PDR) và Programmable Voltage Detector (PVD).
- Sử dụng thạch anh ngoài từ 4Mhz -> 20Mhz.
- Thạch anh nội dung dao động RC ở mode 8Mhz hoặc 40kHz.
- Sử dụng thạch anh ngoài 32.768kHz được sử dụng cho RTC.
Trong trường hợp điện áp thấp:
- Có các mode: ngủ, ngừng hoạt động hoặc chế độ chờ.
- Cấp nguồn chân Vbat bằng pin để hoạt động bộ RTC và sử dụng lưu trữ data khi mất nguồn cấp chính.
2 bộ ADC 12 bit với 9 kênh cho mỗi bộ:
- Khoản giá trị chuyển đổi từ 0 – 3.6V.
- Lấy mẫu nhiều kênh hoặc 1 kênh và có cảm biến nhiệt độ nội.
- Gồm 7 kênh DMA, hỗ trợ DMA cho ADC, I2C, SPI, UART.
- 3 timer 16 bit hỗ trợ các mode IC/T(i,j)OC/T(i,j)PWM.
- 1 timer 16 bit hỗ trợ để điều khiển động cơ với các mode bảo vệ như ngắt input, dead-time….
- 2 Watchdog Timer để bảo vệ và kiểm tra lỗi
- 1 Systick Timer 24 bit đếm xuống cho hàm Delay,….
Hỗ trợ 9 kênh giao tiếp:
- 2 bộ I2C, 3 bộ USART, 2 SPI, 1 CAN, USB 2.0 full-speed interface.
Kiểm tra lỗi CRC và 96-bit ID.
Hình 2.5: Hình ảnh thực tế của chip STM32F103C8T6
Kiến trúc của chip ARM STM32F103C8T6 bao gồm:
Icode bus: Kết nối lõi Cortex™-M3 với bộ nhớ Flash để truyền mã lệnh.
Dcode bus: Kết nối lõi Cortex™-M3 với bộ nhớ Flash để truyền dữ liệu.
System bus: Kết nối lõi Cortex™-M3 với BusMatrix và BusMatrix sẽ phân quyền sử dụng bus giữa lõi ARM và khối DMA.
DMA bus: Kết nối DMA với BusMatrix và BusMatrix sẽ quản lý việc truy xuất dữ liệu của CPU, DMA tới SRAM, Flash và các ngoại vi.
Các cầu AHB/T(i,j)APB: 2 cầu AHB/T(i,j)APB giúp đồng bộ kết nối giữa AHB với 2bus APB APB1 có tốc độ tối đa là 36 Mhz và APB2 đạt tốc độ tối đa 72 Mhz.
BusMatrix: Phân quyền sử dụng bus giữa lõi ARM và khối DMA Việc phân quyền này dựa trên thuật toán Round-Robin (các khối sẽ thay phiên nhau truy cập bus trong 1 đơn vị thời gian định sẵn).
Sau mỗi lần CPU bị reset thì tất cả các nguồn xung clock cấp cho ngoại vi đều bị tắt hết chỉ trừ xung clock cấp cho SRAM và FLITF.
Hình 2.6: Kiến trúc của ARM STM32F103C8T6
2.1.8 Cấp xung Clock cho STM32
Có 4 loại xung clock có thể dùng làm xung clock cho hệ thống (SYSCLK-xung clock cấp cho khối xử lý):
HIS (High Speed Internal) nguồn xung clock tốc độ cao bên trong ARM.
HSE (High Speed External) nguồn xung clock tốc độ cao bên ngoài ARM.
LSI (Low Speed Internal) nguồn xung clock tốc độ chậm 40kHz ở bên trong RM.
LSE (Low Speed External) nguồn xung clock tốc độ chậm thường được nối với thạch anh 32,768kHz từ bên ngoài, xung clock này có thể được dùng để cấp cho RTC.Mỗi nguồn xung clock có thể được bật, tắt độc lập nhằm tiết kiệm năng lượng.
Giới thiệu linh kiện
- Điện áp cấp 5VDC qua cổng Micro USB sẽ được chuyển đổi thành 3.3VDC qua
IC nguồn và cấp cho Vi điều khiển chính.
- Tích hợp sẵn thạch anh 8Mhz.
- Tích hợp sẵn thạch anh 32Khz cho các ứng dụng RTC.
- Ra chân đầy đủ tất cả các GPIO và giao tiếp: CAN, I2C, SPI, UART, USB,….
- Tích hợp Led trạng thái nguồn, Led PC13, Nút Reset.
Sử dụng với các mạch nạp:
Kết nối chân khi nạp bằng ST-Link Mini
Cấu hình chân chi tiết:
Bảng 2.2: Cấu hình chân của module STM32F103C8T6
Kiểu chân Tên chân Mô tả
3.3V Điện áp hoạt động đầu ra
Power 5V Chân cấp nguồn ở cổng USB hoặc nguồn
Chân Analog PA0-PA7, PB0-PB1 Chân ADC độ phân giải 10, 12-bit
Ngắt ngoài PA0-PA15, PB0-
PA10, PB0-PB1, PB6-PB9
15 chân điều chế độ rộng xung
Giao tiếp dữ liệu nối tiếp ( UART )
TX1, RX1, TX2, RX2, TX3, RX3
Chân Bus của mạng CAN
Chân dữ liệu I2C và chân xung nhịp Đèn LED tích hợp
PC13 Đèn LED chỉ thị
2.2.2 Module wifi ESP8266 Node MCU
ESP8266 là một hệ thống trên chip (SoC), do công ty Espressif của Trung Quốc sản xuất Nó bao gồm bộ vi điều khiển Tensilica L106 32-bit (MCU) và bộ thu phát Wifi Nó có 11 chân GPIO (Chân đầu vào /T(i,j) đầu ra đa dụng) và một đầu vào analog, có nghĩa là bạn có thể lập trình nó giống như với Arduino hoặc vi điều khiển khác Bản thân chip ESP8266 có 17 chân GPIO, nhưng 6 trong số các chân này (6-11) được sử dụng để giao tiếp với chip nhớ flash trên bo mạch
Ngoài ra nó có kết nối Wifi, vì vậy bạn có thể sử dụng nó để kết nối với mạngWifi, kết nối Internet, lưu trữ máy chủ web với các trang web thực, để điện thoại thông minh của bạn kết nối với nó, Khả năng là vô tận! Không có gì lạ khi con chip này đã trở thành thiết bị IoT phổ biến nhất hiện có.
Có nhiều module khác nhau của nó, các module độc lập như dòng ESP - ## của
AI Thinker hoặc các bộ phát triển hoàn chỉnh như NodeMCU DevKit hoặc WeMos D1 Các bo mạch khác nhau có thể có các chân cắm khác nhau, có ăng-ten Wifi khác nhau hoặc dung lượng bộ nhớ flash khác nhau trên bo mạch.
ESP8266 có thể được dùng làm module Wifi bên ngoài, sử dụng firmware tập lệnh AT tiêu chuẩn bằng cách kết nối nó với bất kỳ bộ vi điều khiển nào sử dụng UART nối tiếp hoặc trực tiếp làm bộ vi điều khiển hỗ trợ Wifi, bằng cách lập trình một chương trình cơ sở mới sử dụng SDK được cung cấp.
Hình 2.8: Chip và kit ESP8266
Các chân GPIO cho phép IO Analog và Digital, cộng với PWM, SPI, I2C, v.v. ESP8266 có nhiều ứng dụng khi nói đến IoT Đây chỉ là một số chức năng mà chip này được sử dụng.
Kết nối mạng: anten Wifi của module cho phép các thiết bị nhúng kết nối với bộ định tuyến và truyền dữ liệu.
Xử lý dữ liệu: bao gồm xử lý đầu vào cơ bản từ cảm biến analog và kỹ thuật số để tính toán phức tạp hơn nhiều với RTOS hoặc SDK không phải hệ điều hành Kết nối P2P: Tạo giao tiếp trực tiếp giữa các ESP và các thiết bị khác bằng kết nối IoT P2P.
Máy chủ Web: Truy cập các trang được viết bằng HTML hoặc ngôn ngữ phát triển.
Hình 2.9: Sơ đồ chân ESP8266
- Tương thích các chuẩn wifi : 802.11 b/T(i,j)g/T(i,j)n.
- Điện áp vào: 5V thông qua cổng USB.
- Hỗ trợ: Wi-Fi Direct (P2P), soft-AP.
- Số chân I/T(i,j)O: 11 (tất cả các chân I/T(i,j)O đều có Interrupt/T(i,j)PWM/T(i,j)I2C/T(i,j)One-wire, trừ chân D0).
- Số chân Analog Input: 1 (điện áp vào tối đa 3.3V).
- Giao tiếp: Cable Micro USB ( tương đương cáp sạc điện thoại ).
- Hỗ trợ bảo mật: WPA/T(i,j)WPA2.
- Tích hợp giao thức TCP/T(i,j)IP.
- Dòng tiêu thụ < 1.0mW (DTIM3).
- Các chuẩn giao tiếp và các thông tin khác: SDIO 2.0, SPI, UART.
- ESP8266 cũng được lập trình trên trình biên dịch arduino bằng cách download thư viện board và thiết lập tương tự như arduino uno Driver bản cũ dùng ch340p, bản mới dùng CP210x Driver.
2.2.3 Module thời gian thực DS3231
Module IC Thời Gian Thực DS3231 AT24C32 I2C là module đồng hồ thời gian thực giao tiếp qua chuẩn I2C và có ưu điểm là cực kỳ chính xác với bộ dao động thạch anh nội có tính năng bù nhiệt IC có đầu vào cho pin riêng, tách biệt khỏi nguồn chính đảm bảo cho việc giữ thời gian chính xác Thạch anh tích hợp sẵn giúp tăng độ chính xác trong thời gian dài hoạt động và giảm số lượng linh kiện cần thiết khi làm board Thời gian trong IC được giữ ở dạng: giờ, phút, giây, ngày, thứ, tháng, năm Các tháng có ít hơn 31 ngày sẽ tự động được điều chỉnh, các năm Nhuận cũng được chỉnh đúng số ngày Thời gian có thể hoạt động ở chế độ 24h hoặc 12h Am PM IC còn có chức năng báo động, có thể cài đặt 2 thời gian báo và lịch, có tín hiệu ra là xung vuông. Giao tiếp với IC được thực hiện thông qua I2C bus
- IC chính: RTC DS3231 + EEPROM AT24C32.
- Lưu trữ và cung cấp các thông tin thời gian thực: ngày, tháng, năm, giờ, phút, giây,
- Có pin backup duy trì thời gian trong trường hợp không cấp nguồn.
- Cảm biến nhiệt trên IC có độ chính xác ± 3 ℃
- I2C bus có tốc độ tối đa 400Khz.
- Kèm thêm pin sạc được CR2032.
- Kèm thêm memory IC AT24C32 (32k bits).
LCD có rất nhiều ưu điểm so với các dạng hiển thị khác Nó có khả năng hiển thị ký tự đa dạng LCD 20x4 là loại màn hình tinh thể lỏng nhỏ dùng để hiển thị chữ hoặc số trong bảng mã ASCII Mỗi ô của Text LCD bao gồm các chấm tinh thể lỏng, các chấm này kết hợp với nhau theo trình tự “ẩn” hoặc “hiện” sẽ tạo nên các ký tự cần hiển thị và mỗi ô chỉ hiển thị được một kí tự duy nhất.
LCD 20x4 sử dụng MPU SPLC780D-01 điều khiển và truy xuất dữ liệu LCD. LCD 20x4 nghĩa là loại LCD có 4 dòng và mỗi dòng chỉ hiển thị được 20 ký tự Đây là loại màn hình được sử dụng rất phổ biến trong các loại mạch điện.
- Hiển thị tối đa 20 ký tự trên 4 dòng.
- Chữ đen nền xanh lá hoặc xanh dương.
- Tên các chân được ghi ở mặt sau của màn hình LCD hổ trợ việc kết nối, đi dây điện.
- Có thể được điều khiển với 6 dây tín hiệu.
Keypad là một thiết bị nhập chứa các nút bấm cho phép người dùng nhập các chữ số, chữ cái hoặc ký tự điều khiển Keypad không chứa tất cả bảng mã ASCII như keyboard vì thế nó thường được sử dụng trong các ứng dụng chuyên dụng và tương đối đơn giản, ở đó, số lượng nút nhấn thay đổi phụ thuộc vào ứng dụng.
Keypad 4x4 có 16 nút nhấn được bố trí dạng ma trận 4 hàng và 4 cột Bên dưới mỗi nút nhấn trên keypad có một công tắc, và các công tắc này được nối với nhau theo hàng và cột và có tất cả 8 đầu ra.
- Module bàn phím ma trận 4x4 loại phím mềm.
- Nhiệt độ hoạt động 0 ~ 70oC.
- Kích thước bàn phím 77 x 69 mm.
- Để làm việc với KeyPad 4×4, người lập trình thường sử dụng giải thuật “quét phím” Đầu tiên đặt tất cả các hàng ở mức cao (mức logic) và cấu hình các đầu vào cột như các đầu vào với điện trở kéo lên.
- Lặp lại từng hàng, đặt hàng đó ở mức thấp trong khi đọc các đầu vào cột.
- Nếu phát hiện mức thấp trên bất kỳ đầu vào cột nào, điều đó cho thấy một phím trong hàng và cột tương ứng đang được nhấn.
- Xác định phím cụ thể dựa trên kết hợp hàng và cột.
- Lặp lại quá trình quét định kỳ để theo dõi liên tục các phím được nhấn.
Mạch chuyển đổi I2C LCD giúp tiết kiệm dây nối với vi điều khiển cho khả năng hiển thị nhanh và nhiều chức năng Thay vì sử dụng tối thiểu 6 chân của vi điều khiển để kết nối với LCD (RS, EN, D7, D6, D5 và D4) thì với module chuyển đổi ta chỉ cần sử dụng 2 chân (SCL, SDA) để kết nối Module chuyển đổi I2C hỗ trợ các loại LCD sử dụng driver HD44780(LCD 1602, LCD 2004, … ), kết nối với vi điều khiển thông qua giao tiếp I2C.
- Tiết kiệm chân cho vi điều khiển.
- Dễ dàng kết nối với LCD.
- Mở rộng các chân cho vi điều khiển.
- Điện áp hoạt động: 2.5-6V DC.
- Hỗ trợ màn hình: LCD1602,1604,2004 (driver HD44780).
- Địa chỉ mặc định: 0X27 (có thể điều chỉnh bằng ngắn mạch chân A0/T(i,j)A1/T(i,j)A2).
- Kích thước: 41.5mm(L)x19mm(W)x15.3mm(H).
- Tích hợp Jump chốt để cung cấp đèn cho LCD hoặc ngắt.
- Tích hợp biến trở xoay điều chỉnh độ tương phản cho LCD.
Pin connectivity Address of PCF8574A Address byte value
Vdd Vss Vdd 0 1 1 1 1 0 1 - 7Ah 7Bh 3Dh
Vdd Vdd Vss 0 1 1 1 1 1 0 - 7Ch 7Dh 3Eh
Vdd Vdd Vdd 0 1 1 1 1 1 1 - 7Eh 7Fh 3Fh
2.2.7 Cảm biến vân tay AS608
Cảm biến nhận dạng vân tay AS608 Fingerprint Sensor sử dụng giao tiếp UART TTL hoặc USB để giao tiếp với Vi điều khiển hoặc kết nối trực tiếp với máy tính (thông qua mạch chuyển USB-UART hoặc giao tiếp USB).
THIẾT KẾ VÀ THI CÔNG HỆ THỐNG
Thiết kế hệ thống
HÌnh 3.1: Sơ đồ nguyên lý của mạch
Sơ đồ khối hệ thống
Hình 3.3: Sơ đồ khối hệ thống
Sơ đồ hệ thống gồm các khối:
- Khối nguồn: gồm 2 nguồn 5V và 3.3V cấp nguồn cho toàn mạch
- Khối xử lý: là trung tâm của hệ thống điều khiển, giao tiếp với tất cả các khối của hệ thống điều khiển cũng như tiếp nhận thông tinh từ đầu vào Từ đó khối xử lý sẽ xử lý thông tin sau đó sẽ gửi kết quả ra màn hình lcd và ESP8266.
Keypad: có chức năng nhập dữ liệu Khi người dùng bấm phím thì sẽ tạo ra tín hiệu điện tử đại diện cho ký tự hoặc số được bấm và gửi tín hiệu đó tới khối xử lý.
AS608: có chức năng quét và lấy dữ liệu vân tay của người dùng sau đó chuyển dữ liệu thành tính hiệu điện tử Tín hiệu điện tử này sẽ được gửi tới khối xử lý
DS3231: có chức năng cập nhập, cung cấp thời gian thực cho hệ thống thông qua cổng I2C.
Màn hình LCD : có chức năng hiển thị, cập nhập thông tin kết quả theo yêu cầu của hệ thống.
ESP8266: giúp hệ thống kết nối wifi, truyền nhận dữ liệu giữa firebase và hệ thống.
Lưu đồ thuật toán
3.3.1 Lưu đồ thuật toán chương trình chính
Hình 3.4: Lưu đồ thuật toán của chương trình chính
3.3.2 Lưu đồ thuật toán của chương trình thêm vân tay
Hình 3.5: Lưu đồ thuật toán của chương trình con thêm vân tay
3.3.3 Lưu đồ thuật toán của chương trình quét vân tay
Hình 3.6: Lưu đồ thuật toán của chương trình con quét vân tay
3.3.4 Lưu đồ thuật toán của chương trình xóa 1 vân tay
Hình 3.7: Lưu đồ thuật toán của chương trình con xóa 1 vân tay
3.3.5 Lưu đồ thuật toán của chương trình xóa tất cả vân tay
Hình 3.8: Lưu đồ thuật toán của chương trình con xóa tất cả vân tay
KẾT QUẢ - ĐÁNH GIÁ - HƯỚNG PHÁT TRIỂN
Kết quả đạt được
Trong thời gian tìm hiểu và nghiên cứu thì em đã có gặp nhiều vấn đề và học hỏi thêm nhiều kiến thức như:
Hiểu biết sâu hơn về các giao tiếp và các vi điều khiển Biết sử dụng các tính năng của ARM khi giao tiếp với các module
Biết cách sử dụng cảm biến vân tay AS608.
Nắm được lý thuyết cơ bản về hệ thống điểm danh và biết được đặc điểm của công nghệ sinh trắc học.
Thiết lập được hệ thống điểm danh cho sinh viên
Kết quả thực nghiệm
Hình 4.1: Mô hình sau khi hoàn thiện
Bảng 4.1: Bảng kết quả kiểm thử chung
Lần thử Kết quả Đánh giá
1 Thử thêm vân tay thành công Thử quét vân tay thì lỗi không chạy được chương trình Chỉnh sửa lại code quét vân tay
2 Thêm vân tay thành công, quét vân tay thành công, xóa vân tay không thành công do không truy cập chính xác vào vị trí lưu vân tay Chỉnh sửa lại code
3 Thêm vân tay thành công, quét vân tay thành công, xóa vân tay thành công, dữ liệu gửi lên firebase bị lỗi ký tự Kiểm tra thì thấy nguyên nhân do lỗi mạch nguyên lý Chỉnh sửa lại mạch trên altium
4 Thêm vân tay thành công, quét vân tay thành công, xóa vân tay thành công Đạt
5 Thêm vân tay mới với id: 5 và tên là: “nguyen van a” thành công, khi quét vân tay thì hiển thị đúng tên và id Đạt
6 Thử dùng vân tay chưa đăng ký để quét thì LCD hiển thị không có vân tay, khi dùng vân tay đã đăng ký để quét thì hiển thị đúng tên và id Đạt
7 Thêm vân tay mới với id: 9 và tên là “nguyen van c” thành công, quét vân tay thành công, xóa vân tay với id:9 rồi quét lại vân tay đó lúc này LCD báo không có vân tay Đạt
8 Thêm vân tay thành công, quét vân tay thành công, xóa 1 vân tay thành công Gửi dữ liệu lên Firebase khi thêm, quét và xóa 1 vân tay thành công Đạt
9 Thêm vân tay thành công, quét vân tay thành công, xóa tất cả vân tay thành công Gửi dữ liệu lên Firebase khi thêm, quét, và xóa tất cả vân tay thành công Đạt
10 Thêm vân tay thành công, quét vân tay thành công Đạt Đánh giá chung Đạt
Bảng 4.2: Bảng kiểm thử các chức năng của hệ thống
Chức năng Số lần thử Số lần đạt Số lần không đạt
Xóa tất cả vân tay 10 10 0
Kết quả trang web
Hình 4.2: Giao diện đăng nhập
Hình 4.3: Giao diện quản lý
Đánh giá
Thiết kế được 1 hệ thống chấm công sinh viên sử dụng dấu vân tay có đầy đủ chức năng cơ bản có thể sẵn sàng quản lý người dùng theo yêu cầu
Sau khoản 50 lần thử nghiệm thì thấy hệ thống chạy ổn định.
Mô hình nhỏ gọn, dễ sử dụng và dễ dàng ứng dụng vào thực tế.
Khả năng lưu trữ tùy thuộc vào dung lượng của bộ nhớ hệ thống.
Độ chính xác của hệ thống có thể bị ảnh hưởng bởi các yếu tố bên ngoài như: chất lượng của cảm biến vân tay, mặt quét của cảm biến vân tay dính bụi hay tình trạng ngón tay của người dùng.
Giao diện thiết kế chưa bắt mắt, chưa giống với một sản phẩm ứng dụng thực tế.
Hướng phát triển
Trong thời đại công nghệ phát triển nhanh chóng, các thiết bị điện tử và ứng dụng thông minh ngày càng được sử dụng nhiều trong nhiều lĩnh vực, trong đó có giáo dục Hệ thống chấm công học sinh sử dụng dấu vân tay là một trong những ứng dụng công nghệ thông tin được sử dụng phổ biến trong các trường học hiện nay nhằm đơn giản hóa quá trình chấm công và tăng độ chính xác Để liên tục nâng cao hiệu quả và phát huy hơn nữa tiềm năng, cần phát triển các đặc điểm sau:
Cải thiện độ chính xác và bảo mật của hệ thống bằng cách sử dụng các thuật toán mã, thuật toán nhận dạng vân tay hóa tiên tiến hơn hoặc sử dụng các cảm biến vân tay có độ phân giải cao hơn.
Kết nối với hệ thống quản lý học sinh của trường để tự động cập nhật và quản lý dữ liệu học sinh
Tích hợp nhận dạng khuôn mặt để cải thiện độ chính xác và thuận tiện.
Tích hợp thêm các cảm biến như: nhiệt độ, độ ẩm, khí gas, khói,… để thuận tiện cho việc giám sát