Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 59 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
59
Dung lượng
5,94 MB
Nội dung
SỞ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM KHOA CÔNG NGHỆ THÔNG TIN MÔN: HỆ THỐNG NHÚNG ĐỀ TÀI: HỆ THỐNG NHẬN DẠNG VÂN TAY GVHD: ThS Đinh Công Đoan Nhận xét giảng viên: …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… TP Hồ Chí Minh, Ngày … tháng … năm 2019 Giảng viên hướng dẫn (Ký ghi rõ họ tên) Mục lục PHẦN 1: MỞ ĐẦU Tóm tắt Hệ thống nhận dạng vân tay khơng phải điều mẻ, qua hàng chục năm kể từ máy đọc vân tay đời, cơng nghệ có nhiều thay đổi, hệ thống nhận dạng bảo mật vân tay thực trở nên bùng nổ biết đến rộng rãi ứng dụng thiết bị di động, hệ thống điểm danh Hệ thống nhúng có mặt nhiều sản phẩm gần gũi với sống người như: Thiết bị gia dụng, thiết bị thiết kế mạng, thiết bị y tế, thiết bị văn phịng (trong có máy chấm cơng…), … Theo nhà thống kê giới số chip xử lý máy PC server, mạng LAN, WAN, Internet chiếm không đầy 1% tổng số chip vi xử lý có giới Hơn 99% số vi xử lý lại nằm hệ thống nhúng.Thị trường hệ thống nhúng có tiền phát triển vô lớn Các nước dẫn đầu lĩnh vực Châu Á Nhật Bản, thị trường phần mền nhúng hàng đầu giới Một phần quan trọng việc lập trình hệ thống nhứng giao tiếp với thiết bị ngoại vi Với thiết bị có cách giao tiếp khác Vì đề tài nhóm tập trung nghiên cứu vào giao tiếp với thiết bị ngoại vi Cụ thể giao tiếp với vi xử lý thông qua cổng UART Đặt vấn đề 2.1 Nghiên cứu nước 2.1.1 Trong nước Hiện nghiên cứu ngành sinh trắc học dấu vân tay Việt Nam cịn ít, chủ yếu nghiên cứu ứng dụng cảm biến vân tay lĩnh vực đời sống 2.1.2 Ngoài nước Khoa học dấu vân tay Francis Galton khởi xướng vào cuối kỉ thứ XIX Năm 1880, Henry Faulds đưa lý luận số lượng vân tay RC (Ridge Count) để đánh giá mức độ phụ thuộc vân tay vào gen di truyền Năm 1868 nhà bác học Roberts ngón tay có mơi trường phát triển vi mô khác Năm 1968 nhà bác học Holt chứng minh dự đốn tương đối xác tổng số lượng vân Hệ thống nhận dạng vân tay – Nhóm 17 tay TRC (Total Ridge Count) mức độ phụ thuộc chúng vào gen di truyền người Vào nửa sau kỉ XIX, Richard Edward Henry Scotland Yard (cơ quan an ninh Anh) phát triển phương pháp phân loại nhận dạng dấu vân tay Phương pháp Francis Galton cải tiến vào năm 1892 Nghiên cứu ngành Sinh trắc dấu vân tay có tuổi đời 200 năm Kết nghiên cứu áp dụng ngành nhân học, di truyền học, y học thông kê giúp giải mã khả tiềm ẩn người Những quốc gia Nga, Trung Quốc, Đài Loan, Malaysia, Singapore áp dụng kỹ thuật lĩnh vực như: thể thao, đào tạo, quản trị nguồn nhân lực, tuyển dụng, giải trí định hướng thiên tài - 2.2 Một số tài liệu liên quan Fingerprint Recognition System: Design & Analysis https://www.researchgate.net/publication/247773759_Fingerprint_Recognition_System_ Design_Analysis - Fingerprint algorithms Algorithmes de reconnaissance d'empreintes digitales https://biometrics.mainguet.org/types/fingerprint/fingerprint_algo.htm - How fingerprint scanners work: optical, capacitive, and ultrasonic variants explained https://www.androidauthority.com/how-fingerprint-scanners-work-670934/ 2.3 Tính cấp thiết đề tài (lý chọn đề tài) Người ta biết dấu vân tay cá nhân độc nhất, không thay đổi suốt đời Người ta làm phẫu thuật thay da ngón tay, sau thời gian dấu vân tay lại phục hồi ban đầu, … Chính đặc điểm quan trọng vân tay, đặc điểm quan trọng đó, hệ thống nhận dạng vân tay ngày sử dụng nhiều đáp ứng u cầu bảo vệ liệu, đảm bảo an ninh với độ xác cực cao Các phương pháp cổ điển thường dùng để nhận dạng, xác thực cho thấy chúng chứa đựng nhiều điểm yếu, phương pháp kiểm tra sở hữu vật để chứng minh nhân thân quyền hạn người sở hữu bộc lộ điểm yếu Hệ thống nhận dạng vân tay – Nhóm 17 tình vật bị đánh rơi, cắp thất lạc, tình xảy xem người ủy quyền quyền hạn trao, người sở hữu vật xem có quyền mà cơng tác xác thực bảo vệ Chính yếu tố trên, chúng em chọn đề tài Hệ thống nhận dạng vân tay để tìm hiểu kỹ cách thức hoạt động - 2.4 Mục tiêu đề tài Nắm vững cách thức hoạt động chuẩn giao tiếp kit, từ thực - xây dựng demo đơn giản nhận dạng vân tay Đề tài đời với mục đích giúp sinh viên tổng hợp lại kiến thức tiếp thu q trình học mơn Hệ thống nhúng, đồng thời có nhìn tổng quan - ngành lập trình nhúng Có kiến thức kit, giao tiếp thiết bị, bước đệm tốt hướng đến công việc sau trường Hiểu lý thuyết, ngun lý giao tiếp, lập trình với Keil 2.5 Đối tượng phạm vi nghiên cứu 2.5.1 Đối tượng nghiên cứu - Kit STM32F407VET6 - Màn hình LCD - Cổng giao tiếp I2C - Giao thức UART - Cảm biến vân tay AS608 2.5.2 Phạm vi nghiên cứu - Nghiên cứu mức lập trình cho thiết bị giao tiếp với thiết bị - Xây dựng thuật toán code nhúng vào thiết bị - Hiểu nguyên lý hoạt động kit, cách mà thiết bị giao tiếp với thiết bị khác đề tài nghiên cứu 2.6 Phương pháp nghiên cứu - Đi từ kiến thức kit, cách vận hành cấu hình đến lập trình - nhúng Tìm hiểu nguyên lý hoạt động giao tiếp LCD, AS608, I2C Kit STM32F407VET6 2.7 Nội dung đề tài Nội dung đề tài gồm có chương: - Chương 1: Giới thiệu vi xử lý Chương 2: Cấu trúc chung kit Hệ thống nhận dạng vân tay – Nhóm 17 - Chương 3: Những kiến thức liên quan Chương 4: Ứng dụng Hệ thống nhận dạng vân tay – Nhóm 17 PHẦN 2: NỘI DUNG Chương 1: Giới thiệu vi xử lý 1.1 Giới thiệu vi xử lí ARM Dịng vi xử lý ARM Cortex dựa kiến trúc chuẩn đủ để đáp ứng hầu hết yêu cầu hiệu làm việc tất lĩnh vực Dịng ARM Cortex gồm ba cấu hình khác kiến trúc ARMv7: cấu hình A cho ứng dụng tinh vi, yêu cầu cao chạy hệ điều hành mở phức tạp Linux, Android…, cấu hình R dành cho hệ thống thời gian thực cấu hình M tối ưu cho ứng dụng vi điều khiển, cần tiết kiệm chi phí Bộ vi xử lý Cortex-M4 vi xử lý ARM dựa kiến trúc ARMv7-M thiết kế đặc biệt để đạt hiệu suất cao ứng dụng nhúng cần tiết kiệm lượng chi phí, chẳng hạn vi điều khiển, hệ thống tơ, hệ thống kiểm sốt cơng nghiệp hệ thống mạng khơng dây Thêm vào việc lập trình đơn giản hóa đáng kể giúp kiến trúc ARM trở thành lựa chọn tốt cho ứng dụng đơn giản 1.2 Đặc điểm vi xử lí ARM 1.2.1 Hiệu suất cao Để đạt hiệu suất cao hơn, vi xử lý làm việc nhiều làm việc thơng minh Đẩy tần số hoạt động cao làm tăng hiệu suất kèm với việc tiêu thụ lượng nhiều việc thiết kế phức tạp Nói cách khác, thực tác vụ cách nâng cao hiệu tính tốn hoạt động tần số thấp dẫn đến đơn giản hóa việc thiết kế tốn lượng Trung tâm vi xử lý Cortex-M4 lõi có cấu trúc đường ống tiên tiến tầng, dựa kiến trúc Harvard, kết hợp nhiều tính mạnh mẽ suy đoán việc rẽ nhánh, phép nhân thực thi chu kỳ phép chia thực phần cứng tạo nên hiệu vượt trội (điểm Dhrystone 1.25 DMIPS/MHz) Bộ vi xử lý Cortex-M4 hỗ trợ kiến trúc tập lệnh Thumb-2, giúp hoạt động hiệu 70% cho MHz so với vi xử lý ARM7TDMI-S thực thi với tập lệnh Thumb, hiệu 35% so với xử lý ARM7TDMI-S thực thi với tập lệnh ARM 1.2.2 Dễ sử dụng, phát triển ứng dụng nhanh chóng, hiệu Tiêu chí quan trọng việc lựa chọn vi xử lý giảm thời gian chi phí phát triển, đặc biệt khả phát triển ứng dụng phải thật nhanh chóng đơn giản Bộ vi xử lý Cortex-M4 thiết kế để đáp ứng mục tiêu Người lập trình khơng cần phải viết mã hợp ngữ (assembler code) cần phải có kiến thức sâu kiến trúc để tạo ứng dụng đơn giản Bộ vi xử lý có mơ hình lập trình dựa ngăn xếp đơn giản hoá để tương thích với kiến trúc ARM truyền thống tương tự với hệ thống triển khai kiến trúc 16-bit, giúp việc chuyển tiếp đến kiến trúc 32-bit dễ dàng Ngồi mơ hình ngắt dựa phần cứng giúp việc viết chương trình xử lý ngắt trở nên đơn giản hết, chương trình khởi động viết trực tiếp ngôn ngữ C mà không cần lệnh assembly so với kiến trúc ARM truyền thống Các tính tập lệnh Thumb-2 bao gồm việc thực mã lệnh C cách tự nhiên hơn, thao tác trực tiếp bit, phép chia phần cứng lệnh If/Then Hơn nữa, nhìn từ góc độ phát triển ứng dụng, Thumb-2 tăng tốc độ phát triển, đơn giản hóa việc bảo trì, hỗ trợ đối tượng biên dịch thông qua tối ưu hóa tự động cho hiệu suất mật độ mã mà không cần quan tâm đến việc mã biên dịch cho chế độ ARM Thumb Kết lập trình viên để mã nguồn họ ngôn ngữ C mà không cần tạo thư viện đối tượng biên dịch sẵn, có nghĩa khả tái sử dụng mã nguồn lớn nhiều 1.2.3 Giảm chi phí phát triển lượng tiêu thụ Chi phí ln rào cản lớn cho lựa chọn vi xử lý hiệu suất cao Bộ vi xử lý thiết kế diện tích nhỏ giảm chi phí đáng kể Bộ vi xử lý CortexM4 thực điều cách cài đặt lõi ARM nhỏ từ trước đến nay, với 33.000 cổng (cổng NAND NOR… tuỳ vào công nghệ sản xuất) lõi trung tâm (0.18um G) cách kết hợp hiệu quả, chặt chẽ thành phần hệ thống vi xử lý Bộ nhớ tối giản cách cài đặt nhớ không thẳng hàng (unaligned), thao tác bit dễ dàng với kĩ thuật bit banding Tập lệnh Thumb-2 tiết kiệm nhớ 25% so với tập lệnh ARM HAL_Delay(100); // - take Image //+++ put image to buffer TxBuf[8]=0x04; TxBuf[9]=FINGERPRINT_IMAGE2TZ; TxBuf[10]=1; TxBuf[11]=0x00; TxBuf[12]=0x08; TimeOut=0; while(1) { ClearBuffer(); HAL_UART_Transmit_IT(&huart4,TxBuf,13); HAL_Delay(500); if((RxBuf[6]==0x07) && (RxBuf[7]==0x00) && (RxBuf[8]==0x03)){ if(RxBuf[9]==0x00) break; else { TimeOut++; } } if(TimeOut==WaitForFingerInSecond) goto Faild; } //+++ Wait for put your finger up lcd_write(2,"Bo tay ra"); HAL_Delay(2000); // - Wait for put your finger up lcd_write(2,"Lay mau lan 2"); //+++ take Image TxBuf[8]=0x03; TxBuf[9]=FINGERPRINT_GETIMAGE; TxBuf[10]=0x00; TxBuf[11]=0x05; TimeOut=0; while(1){ ClearBuffer(); HAL_UART_Transmit_IT(&huart4,TxBuf,12); HAL_Delay(500); if((RxBuf[6]==0x07) && (RxBuf[7]==0x00) && (RxBuf[8]==0x03)){ if(RxBuf[9]==0x00) break; else { TimeOut++; } } if(TimeOut==WaitForFingerInSecond) goto Faild; } lcd_write(2,"Dang luu van tay"); //+++ put image to buffer TxBuf[8]=0x04; TxBuf[9]=FINGERPRINT_IMAGE2TZ; TxBuf[10]=2; TxBuf[11]=0x00; TxBuf[12]=0x09; TimeOut=0; while(1) { ClearBuffer(); HAL_UART_Transmit_IT(&huart4,TxBuf,13); HAL_Delay(500); if((RxBuf[6]==0x07) && (RxBuf[7]==0x00) && (RxBuf[8]==0x03)){ if(RxBuf[9]==0x00) break; else { TimeOut++; } } if(TimeOut==WaitForFingerInSecond) goto Faild; } HAL_Delay(2000); //+++ Create Register model TxBuf[8]=0x03; TxBuf[9]=FINGERPRINT_REGMODEL; TxBuf[10]=0x00; TxBuf[11]=0x09; TimeOut=0; while(1) { ClearBuffer(); HAL_UART_Transmit_IT(&huart4,TxBuf,12); HAL_Delay(500); if((RxBuf[6]==0x07) && (RxBuf[7]==0x00) && (RxBuf[8]==0x03)){ if(RxBuf[9]==0x00) break; else { TimeOut++; } } if(TimeOut==WaitForFingerInSecond) goto Faild; } //+++ Store in memory TxBuf[8]=0x06; TxBuf[9]=FINGERPRINT_STORE; TxBuf[10]=0x01; TxBuf[11]=Location>>8; TxBuf[12]=Location&0xFF; uint8_t Checksum=0; for(uint8_t i=0;i>8; TxBuf[14]=Checksum&0xFF; while(1) { ClearBuffer(); HAL_UART_Transmit_IT(&huart4,TxBuf,15); HAL_Delay(500); if((RxBuf[6]==0x07) && (RxBuf[7]==0x00) && (RxBuf[8]==0x03)){ if(RxBuf[9]==0x00) { lcd_write(2,"Luu cong"); HAL_Delay(2000); break; } else { lcd_write(2,"Luu that bai"); HAL_Delay(2000); goto Faild; } } } return true; Faild: return false; } void SearchFinger(void) { uint8_t WaitForFingerInSecond=10; uint8_t TimeOut=10, cstr[2]; HAL_Delay(100); lcd_write(2,"Dat tay vao cb"); TxBuf[0]=FINGERPRINT_STARTCODE_BYTE0; TxBuf[1]=FINGERPRINT_STARTCODE_BYTE1; TxBuf[2]=0xFF; TxBuf[3]=0xFF; TxBuf[4]=0xFF; TxBuf[5]=0xFF; TxBuf[6]=FINGERPRINT_COMMANDPACKET; TxBuf[7]=0x00; TxBuf[8]=0x03; TxBuf[9]=FINGERPRINT_GETIMAGE; TxBuf[10]=0x00; TxBuf[11]=0x05; TimeOut=0; HAL_Delay(100); while(1) { ClearBuffer(); HAL_UART_Transmit_IT(&huart4,TxBuf,12); HAL_Delay(500); if((RxBuf[6]==0x07) && (RxBuf[7]==0x00) && (RxBuf[8]==0x03)){ if(RxBuf[9]==0x00) break; else TimeOut++; } if(TimeOut==WaitForFingerInSecond) break; } TxBuf[8]=0x04; TxBuf[9]=FINGERPRINT_IMAGE2TZ; TxBuf[10]=1; TxBuf[11]=0x00; TxBuf[12]=0x08; HAL_Delay(100); TimeOut=0; while(1) { ClearBuffer(); HAL_UART_Transmit(&huart4,TxBuf,13,100); HAL_Delay(500); if((RxBuf[6]==0x07) && (RxBuf[7]==0x00) && (RxBuf[8]==0x03)){ if(RxBuf[9]==0x00) break; else TimeOut++; } if(TimeOut==WaitForFingerInSecond) break; } lcd_write(2,"Dang tim "); HAL_Delay(1000); TxBuf[8]=0x08; TxBuf[9]=FINGERPRINT_SEARCH; TxBuf[10]=0x01; TxBuf[11]=0x00; TxBuf[12]=0x00; TxBuf[13]=0x00; TxBuf[14]=0xA3; uint16_t Checksum=0; for(uint8_t i=0;i>8; TxBuf[16]=Checksum&0xFF; TimeOut=0; HAL_Delay(500); while(1) { ClearBuffer(); HAL_UART_Transmit_IT(&huart4,TxBuf,17); HAL_Delay(1000); if((RxBuf[6]==0x07) && (RxBuf[7]==0x00) && (RxBuf[8]==0x07)){ if(RxBuf[9]==0x00) { cstr[0]=RxBuf[10]