Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 66 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
66
Dung lượng
2,43 MB
Nội dung
[Document title] BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐH SƯ PHẠM KỸ THUẬT TP.HCM KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO ĐỒ ÁN MÔN HỌC HỆ THỐNG NHÚNG HỆ THỐNG CHẤM CÔNG TỰ ĐỘNG BẰNG SINH TRẮC HỌC GVHD: ThS Đinh Cơng Đoan [Document title] LỜI CẢM ƠN Nhóm xin chân thành gửi lời cảm ơn đến quý Thầy Cô khoa Công nghệ thông tin, quý Thầy Cơ thuộc mơn Hệ thống nhúng tận tình dạy kiến thức từ đến chuyên sâu để nhóm tiến hành thực hồn tất đồ án Đặc biệt nhóm chúng em gửi lời cảm ơn sâu sắc đến Thầy Đinh Công Đoan Thầy trực tiếp giảng dạy tận tình hướng dẫn đồng thời tạo điều kiện tốt cho nhóm thời gian thực đồ án Đồng cảm ơn đến anh chị, bạn khóa san sẻ giúp đỡ hợp tác trình thực để đồ án, để đồ án hồn thành nhanh thời gian quy định Mặc dù trải qua giải khó khăn thử thách kiến thức hạn chế nên đồ án chúng em cịn nhiều thiếu sót nội dung hình thức Nhóm chúng em hy vọng Thầy thơng cảm tận tình đóng góp ý kiến q báu để chúng em tiến hành cải tiến mơ hình sau cho tồn diện Một lần chúng em xin chân thành cảm ơn! [Document title] MỤC LỤC [Document title] LIỆT KÊ DANH SÁCH HÌNH LIỆT KÊ DANH SÁCH BẢNG [Document title] PHẦN MỞ ĐẦU Lời nói đầu Ngày việc ứng dụng vi điều khiển, vi xử lý ngày phát triển rộng rãi thâm nhập ngày nhiều vào lĩnh vực kỹ thuật đời sống xã hội Tuy nhiên ứng dụng cho hệ thống nhúng ngày không đơn giản dừng lại điều khiển đèn nhấp nháy, đếm số người vào/ra, hiển thị dịng thơng báo matrix led hay điều khiển ON-OFF động mà ngày trở nên phức tạp Và với xu hướng tất yếu với phát triển mạnh mẽ công nghệ chế tạo vi mạch, người ta tạo vi điều khiển có cấu trúc mạnh hơn, đáp ứng thời gian thực tốt hơn, chuẩn hóa so với vi điều khiển bit trước đây.Với phát triển mạnh mẽ khoa học,đặc biệt ngành điện tử, phát minh linh kiện điện tử ngày đáp ứng yêu cầu hệ thống Ưu điểm việc sử dụng linhkiện điện tử làm cho hệ thống linh hoạt đa dạng hơn,giá thành thấp độ xác cao Sau gần năm học tập nghiên cứu trường, chúng em làm quen với môn học chuyên ngành Để áp dụng lý thuyết với thực tế học kỳ chúng em chọn đồ án môn học hệ thống nhúng với đề tài “Xây dựng hệ thống chấm công tự động sinh học” Tuy nhiên kiến thức chuyên mơn cịn hạn chế, tàiliệu tham khảo có giới hạn nên cịn xảy nhiều sai sót Chúng em mong mong thầy bạn góp ý bổ sung để đồ án chúng em hoàn thiện giúp chúng em hiểu biết trình học tập Đặt vấn đề 2.1 - Tóm lược nghiên cứu ngồi nước liên quan đến đề tài Trong vài năm trở lại đây, xu hướng chủ yếu thiết kế với vi điều khiển sử dụng chip ARM7 ARM9 vi điều khiển đa dụng Ngày nhà sản xuất IC đưa thị trường 240 dòng vi điều khiển sử dụng lõi ARM Tập đồn ST Microelectronic vừa cho mắt dịng STM32 vi điều khiển dựa lõi ARM Cortex-M3 hệ hãng ARM thiết kế, lõi ARM Cortex-M3 cải tiến lõi ARM7 truyền thống Dòng STM32 thiết lập tiêu chuẩn hiệu suất, [Document title] chi phí, khả đáp ứng ứng dụng tiêu thụ lượng thấp tính điều khiển thời gian thực khắt khe - Khối trung tâm STM32 xử lí Cortex-M3 vi điều khiển tiêu chuẩn hóa gồm CPU 32-bit, cấu trúc bus, đơn vị xử lí ngắt có hỗ trợ tính lồng ngắt vào nhau, hệ thống kiểm lỗi tiêu chuẩn bố trí nhớ - STM32 bước tiến quan trọng đường cong chi phí hiệu suất (price/performance), giá gần Euro với số lượng lớn, STM32 thách thức thật với vi điều khiển 16-bit truyền thống STM32 gồm 14 biến thể khác nhau, phân thành hai nhóm: dịng Performance có tần số hoạt động CPU lên tới 72Mhz dịng Access có tần số hoạt động CPU lên tới 36Mhz Các biến thể STM32 hai nhóm tương thích hồn tồn cách bố trí chân (pin) phần mềm, đồng thời kích thước nhớ FLASH ROM lên tới 128K 20K SRAM - Dịng STM32 có hai nhánh, nhánh Performance hoạt động với xung nhịp lên đến 72Mhz có đầy đủ ngoại vi, nhánh Access hoạt động với xung nhịp tối đa 36Mhz có ngoại vi so với nhánh Performance - Về tình hình nước: ứng dụng hệ thống nhúng nhiều vào đời sống sản xuất thiết bị tự động, thiết bị bảo mật sinh trắc học,…Tuy nhiên so với nước phát triển cịn nhiều hạn chế 2.2 - Tính cấp thiết cần nghiên cứu đề tài Ngày với phát triển ngành điện tử ứng dụng điện tử giúp sáng tạo người trở thành thực Các lĩnh vực sống áp dụng thiết bị điện tử dường nhìn đâu gia đình có thiết bị điện tử Ngành điện tử ứng dụng điện tử tạo chỗ đứng khẳng định tầm quan trọng nhu cầu người [Document title] - Với ứng dụng cho hệ thống nhúng ngày trở nên phổ biến: từ ứng dụng đơn giản điều khiển chốt đèn giao thông định thời, đếm sản phẩm dây chuyền sản xuất, điều khiển tốc độ động điện chiều, thiết kế biển quảng cáo dùng Led ma trận, thiết bị xác thực sinh trắc học Đến ứng dụng phức tạp hệ thống điều khiển robot, kiểm soát nhà máy hệ thống kiểm soát máy lượng hạt nhân Các hệ thống tự động trước sử dụng nhiều công nghệ khác hệ thống tự động hoạt động nguyên lý khí nén, thủy lực, rơle điện, mạch điện tử số, thiết bị máy móc tự động cam chốt khí Các thiết bị, hệ thống có chức xử lý mức độ tự động thấp so với hệ thống tự động đại xây dựng tảng hệ thống nhúng - Trong nhiều năm trước, dòng vi điều khiển 8051 sinh viên dùng nhiều với tính đơn giản, dễ sử dụng; AVR sử dụng nhiều thi Robocon nhờ tốc độ sử lý cao, ổn định; PIC với ưu tốc độ cao, chi phí thấp nghiên cứu, sử dụng nhiều, đặc biệt thi lập trình tay nghề khu vực giới Nhưng vài năm trở lại đây, có dịng vi điều khiển mới, ngày nắm vị trí quan trọng lĩnh vực địi hỏi tốc độ xử lý cao điện tử viễn thơng, sản xuất dịng diện thoại di động smartphone, giám sát, an ninh… Đó họ vi điều khiển ARM Với nhiều hệ đời, với nhiều tính , cơng dụng khác Với nhiều tính vượt trội ARM xu lựa chọn dòng vi điều khiển Việt Nam nên báo cáo cuối kỳ này, nhóm em thực đề tài giao tiếp STM32F103 với cảm ứng vân tay hình LCD 2.3 - Một số tài liệu có liên quan Trước tìm hiểu đề tài, cần trang bị kiến thức liên quan đến hệ thống nhúng board mạch, vi xử lý, vi điều khiển, giao thức board nhúng [Document title] - Nắm vững tảng môn học Điện tử bản, Kiến trúc máy tính hợp ngữ, sơ đồ nguyên lý hoạt động board mạch - Phần nội dung đề tài có tham khảo kiến thức từ giáo trình thức mơn Hệ thống nhúng nguồn tư liệu từ Internet 2.4 Lý chọn đề tài Hiện nay, với phát triển ngành công nghiệp nhu cầu nguồn nhân lực điều thiếu Đặc biệt Việt Nam nước phát triển lượng dân số làm nhân viên cơng nhân lớn Từ đặt toán lan giải để quản lý nguồn nhân lực cách hiệu cụ thể việc chấm công nhân viên công nhân Với việc chấm công phương pháp điểm danh gọi tên hay ghi danh gây tốn nhiều thời gian người quản lý lẫn nhân viên, cơng nhân Để giải tốn phát triển ngành điện tử công nghệ sinh trắc học người phát triển hệ thống chấm công nhân viên tự động sinh trắc học vân tay, mẫu mắt Đó đề tài hay gây hứng thú với nhóm em, nên nhóm định chọn đề tài “Hệ thống chấm công tự động sinh trắc học” cụ thể nhóm chọn dấu vân tay Đây ứng dụng để tìm hiểu cách thức chấm cơng vân tay q trình thực 2.5 Mục tiêu đề tài Mục tiêu đề tài khai thác số chức có sẵn chip ARM STM32F103, cụ thể việc giao tiếp cảm biến vân tay hình LCD thông qua chip ARM STM32F103XXXX Cấu trúc chung KIT gồm thành phần, sơ đồ, demo, Giới thiệu kiến thức liên quan dùng đề tài Chỉ chức có sẵn chip sử dụng đề tài giải thích chức Trình bày ứng dụng, bước tiến hành, cấu hình tham số để nạp chương [Document title] trình vào kit Tổng kết lại ưu nhược điểm chip khó khăn trình làm đề tài đưa hướng phát triển đề tài 2.6 - - Đối tượng phạm vi nghiên cứu Đối tượng nghiên cứu: o Board STM32F103VET6 hãng ARM o Các thiết bị hỗ trợ: cảm biến vân tay R305,màn hình LCD 16x2 Phạm vi nghiên cứu: o Tìm hiểu cấu trúc chung board STM32F103 o Nghiên cứu cách thức giao tiếp board với cảm biến vân tay hình LCD o 2.7 - Viết code nạp vào Kit Phương pháp nghiên cứu Tìm hiểu lý thuyết cách thức giao tiếp board với cảm biến vân tay hình LCD - Xây dựng thuật toán thực lập trình 2.8 Nội dung đề tài Trong đề tài này, nhóm em giới thiệu vi xử lý STM32F103VET6 ứng dụng minh họa (chấm công vân tay hiển thị thơng tin hình LCD) Và nhóm trình bày thêm phần nạp code vào KIT demo ứng dụng [Document title] PHẦN NỘI DUNG CHƯƠNG 1: GIỚI THIỆU VI XỬ LÝ 1.1 Vi xử lý STM32F103XXXX Hình 1:Sơ đồ chân STM32F103VET6 10 [Document title] USART1_SendByte(0xEF);USART1_SendByte(0x01); USART1_SendByte(0xFF);USART1_SendByte(0xFF);USART1_SendByte(0xFF);US ART1_SendByte(0xFF); USART1_SendByte(0x01); USART1_SendByte(0x00);USART1_SendByte(0x03); USART1_SendByte(0x0D); USART1_SendByte(0x00);USART1_SendByte(0x11); return receive_finger(12); } Giao tiếp với LCD: #include "lcd.h" #include "main.h" /* define macro for debug -*/ #define DEBUG_LCD static void delay(u32 nCount); static void delay(u32 nCount) { u32 index = 0; /* default system clock is 72MHz */ for(index = (72000 * nCount); index != 0; index ) { } } void lcd_data_line_write(u8 data) { // Write only the highest bits! 52 [Document title] SET_LCD_EN_Line() ; // Disable LCD GPIO_Write(LCD_DATA_GPIO_PORT, ( GPIO_ReadOutputData(LCD_DATA_GPIO_PORT) & 0xFFF0 ) |(u16) ((data >> 4)&0x000F)); CLR_LCD_EN_Line() ; // Enable LCD, Create a falling edge Delayus(100); SET_LCD_EN_Line() ; // Disable LCD GPIO_Write(LCD_DATA_GPIO_PORT, (GPIO_ReadInputData(LCD_DATA_GPIO_PORT)&0xFFF0) |(u16)(data&0x000F)); CLR_LCD_EN_Line() ; // Enable LCD, create a falling edge Delayus(100); } u8 lcd_data_line_read(void) { u8 HNib, LNib; /* set data I/O lines to input */ lcd_data_line_conf(Input); /* set RS to "control" */ CLR_LCD_RS_Line(); /* set R/W to "read" */ SET_LCD_RW_Line(); Delayus(100); /* Read only the lowest bits!*/ SET_LCD_EN_Line(); HNib = (u8)(GPIO_ReadInputData(LCD_DATA_GPIO_PORT) & LCD_DATA_GPIO_PINS); CLR_LCD_EN_Line() ; // create a falling edge Delayus(100); SET_LCD_EN_Line(); LNib = (u8)(GPIO_ReadInputData(LCD_DATA_GPIO_PORT) & LCD_DATA_GPIO_PINS); CLR_LCD_EN_Line() ; // create a falling edge 53 [Document title] return (HNib |(LNib >> 4)); } void lcd_data_line_conf(GPIOConfig_Mode_TypeDef IO_mode) { GPIO_InitTypeDef GPIO_InitStructure; /* Enable the LCD Data line Clock */ RCC_APB2PeriphClockCmd(LCD_DATA_GPIO_CLK, ENABLE); /* Configure the LCD Data lines */ GPIO_InitStructure.GPIO_Pin = LCD_DATA_GPIO_PINS; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; if( IO_mode == Input ){ /* Configure LCD D0~D7 lines as Input */ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; } else if ( IO_mode == Output) { /* Configure LCD D0~D7 lines in Output Push-Pull mode */ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; } GPIO_Init(LCD_DATA_GPIO_PORT, &GPIO_InitStructure); } void lcd_Init_HW(void) { GPIO_InitTypeDef GPIO_InitStructure; /* Enable GPIO clocks for LCD control pins */ RCC_APB2PeriphClockCmd(LCD_RS_GPIO_CLK | LCD_RW_GPIO_CLK | LCD_EN_GPIO_CLK, ENABLE); /* initialize LCD control lines to output */ GPIO_InitStructure.GPIO_Pin = LCD_RS_GPIO_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 54 [Document title] GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(LCD_RS_GPIO_PORT, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = LCD_RW_GPIO_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(LCD_RW_GPIO_PORT, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = LCD_EN_GPIO_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(LCD_EN_GPIO_PORT, &GPIO_InitStructure); /* Enable GPIO clocks for LCD data pins */ RCC_APB2PeriphClockCmd(LCD_DATA_GPIO_CLK, ENABLE); /* initialize LCD data port to output */ GPIO_InitStructure.GPIO_Pin = LCD_DATA_GPIO_PINS; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(LCD_DATA_GPIO_PORT, &GPIO_InitStructure); } void lcd_Busy_Wait(void) { u8 status; { status = lcd_data_line_read(); } while (status & 0x80); /* Wait for busy flag */ } void lcd_Control_Write(u8 data) { /* write the control byte to the display controller */ 55 [Document title] /* wait until LCD not busy */ lcd_Busy_Wait(); /* set RS to "control" */ CLR_LCD_RS_Line(); /* set R/W to "write" */ CLR_LCD_RW_Line(); /* set data I/O lines to output (8bit) */ lcd_data_line_conf(Output); /* output data, 8bits */ lcd_data_line_write(data); /* leave data lines in input mode to save power consumption */ /* set data I/O lines to input (8bit) */ lcd_data_line_conf(Input); } u8 lcd_Control_Read(void) { /* read the control byte from the display controller */ register u8 data; /* wait until LCD not busy */ lcd_Busy_Wait(); /* set data I/O lines to input (8bit) */ lcd_data_line_conf(Input); /* set RS to "control" */ CLR_LCD_RS_Line(); /* set R/W to "read" */ SET_LCD_RW_Line(); /* input data, 8bits */ 56 [Document title] data = lcd_data_line_read(); /* leave data lines in input mode to save power consumption */ /* set data I/O lines to input (8bit) */ lcd_data_line_conf(Input); return data; } void lcd_Data_Write(u8 data) { /* write a data byte to the display */ /* wait until LCD not busy */ lcd_Busy_Wait(); /* set RS to "data" */ SET_LCD_RS_Line(); /* set R/W to "write" */ CLR_LCD_RW_Line(); /* set data I/O lines to output (8bit) */ lcd_data_line_conf(Output); /* output data, 8bits */ lcd_data_line_write(data); /* leave data lines in input mode to save power consumption */ /* set data I/O lines to input (8bit) */ lcd_data_line_conf(Input); } u8 lcd_Data_Read(void) { /* read a data byte from the display */ register u8 data; /* wait until LCD not busy */ 57 [Document title] lcd_Busy_Wait(); /* set data I/O lines to input (8bit) */ lcd_data_line_conf(Input); /* set RS to "data" */ SET_LCD_RS_Line(); /* set R/W to "read" */ SET_LCD_RW_Line(); /* input data, 8bits */ data = lcd_data_line_read(); /* leave data lines in input mode to save power consumption */ /* set data I/O lines to input (8bit) */ lcd_data_line_conf(Input); return data; } void lcd_Init(void) { /* initialize hardware */ lcd_Init_HW(); /* Set 4-bits interface */ lcd_Control_Write(0x33); delay(10); lcd_Control_Write(0x32); delay(10); 58 [Document title] /* Start to set LCD function */ lcd_Control_Write(LCD_DISP_INIT); /* clear LCD */ lcd_Control_Write(LCD_CLEAR_DISPLAY); /* wait 60ms */ /* set entry mode */ lcd_Control_Write(LCD_INC_MODE); /* set display to on */ lcd_Control_Write(LCD_DISP_ON); /* move cursor to home and set data address to */ lcd_Control_Write(LCD_RETRN_HOME); } void lcd_Home(void) { // move cursor to home lcd_Control_Write(LCD_RETRN_HOME); delay(10); } void lcd_Clear(void) { lcd_Control_Write(LCD_CLEAR_DISPLAY); delay(5); } void lcd_GotoXY(u8 x, u8 y) { register u8 DDRAMAddr; 59 [Document title] // remap lines into proper order switch(x) { case 0: DDRAMAddr = LCD_LINE0_ADDR+y; break; case 1: DDRAMAddr = LCD_LINE1_ADDR+y; break; //case 2: DDRAMAddr = LCD_LINE2_ADDR+y; break; or 20x4 only // for LCD 16x4 //case 3: DDRAMAddr = LCD_LINE3_ADDR+y; break; default: DDRAMAddr = LCD_LINE0_ADDR+y; } // set data address lcd_Control_Write(LCD_DD_RAM_PTR | DDRAMAddr); delay(5); } void lcd_Print_Data(char* data, u8 nBytes) { register u8 i; /* check to make sure we have a good pointer */ if (!data) return; /* print data */ for(i=0; i Debug kéo mũi tên xuống chọn mạch nạp cho KIT Trong đề tài dùng STlink nên chọn STlink Hình 24: Nạp chương trình vào Kit Bước 2: Nhấn F8 để bắt đầu nạp chương trình vào KIT 4.2 Mơ tả ứng dụng 4.2.1 Mô tả chức - Cho phép quét vân tay bất kỳ: o Vân tay Admin: Admin người quản lý, muốn thêm vân o - tay phải thông qua vân tay Admin Vân tay nhân viên: Hiện tên nhân viên thơng báo việc điểm danh hay trễ o Vân tay chưa lưu thông báo: “DAT TAY VAO” Thêm vân tay Admin 61 [Document title] - Thêm vân tay qua vân tay Admin 4.2.2 Demo ứng dụng Để thực chạy ứng dụng ta cấp nguồn cho ứng dụng cáp sạc USB Hình 25: Demo ứng dụng Ta đặt ngón tay lên cảm biến vân tay để quét, đèn chớp tắt qt thành cơng, vân tay thêm, tơng tin thị lên hình 62 [Document title] Hình 26: Demo ứng dụng 63 [Document title] CHƯƠNG 5: TỔNG KẾT 5.1 Kết - Hiểu cấu trúc, cách thức hoạt động board STM32F103VET6 Hiểu cấu trúc cách hoạt động cảm biến vân tay R305 LCD - 16x2 Hiểu chế truyền data từ cảm biến vân tay với STM32F103VET6 Tạo project với Keli C nạp chương trình vào Kit 5.2 Ưu nhược điểm 5.2.1 Ưu điểm - Xác định vân tay người khác Thêm vân tay qua vân tay Admin In thơng tin người có cân tay lưu hình Bước đầu sử dụng thư viện thời gian thực(RTC) để xác định điểm danh hay trể 5.2.2 Nhược điểm - Chỉ giao tiếp với STM32F103 Khó khăn việc quản lý vân tay, thơng tin nhân viên lưu cịn - hạn chế Còn hạn sử dụng thời gian thực xác định giờ, trễ 5.3 Hướng phát triển - - Thông báo thêm số ngày làm nhân viên, rõ thời gian điểm danh Sử dụng thẻ SD để lưu sở liệu tăng khả lưu trữ Phát triển thêm app liên kết để quản lý Khơng mơ hình có chức điểm danh, mơ hình mở rộng thành khóa điện tử để quản lý đóng hay mở tồn hệ thống cần thiết thiết bị chống xâm nhập hiệu 64 [Document title] TÀI LIỆU THAM KHẢO - Giáo trình mơn Hệ thống nhúng, ThS Đinh Cơng Đoan, 2015 Các nguồn tài liệu tham khảo internet: o Giao thức UART https://advancecad.edu.vn/khai-niem-co-ban-ve-truyen-thong-uart-so-doo o o khoi-ung-dung/ Cảm biến vân tay R305: https://dientutuonglai.com/module-nhan-dang-van-tay-r305.html Giao tiếp với cảm biến vân tay R305: http://hocdientu.vn/threads/giao-tiep-module-cam-bien-van-tay-r305-part1-gioi-thieu-chung.2973/ Giới thiệu LCD 16x2 http://www.echipkool.com/2012/09/gioi-thieu-co-ban-ve-lcd-16x2.html Link full đồ án: https://drive.google.com/file/d/1VOIZ_6xR4sT4lDBDRpbPfBVYLV kDqUIZ/view?usp=sharing 65 [Document title] 66 ... thực sinh trắc học Đến ứng dụng phức tạp hệ thống điều khiển robot, kiểm soát nhà máy hệ thống kiểm soát máy lượng hạt nhân Các hệ thống tự động trước sử dụng nhiều công nghệ khác hệ thống tự động. .. công nghệ sinh trắc học người phát triển hệ thống chấm cơng nhân viên tự động sinh trắc học vân tay, mẫu mắt Đó đề tài hay gây hứng thú với nhóm em, nên nhóm định chọn đề tài ? ?Hệ thống chấm công. .. chuyên ngành Để áp dụng lý thuyết với thực tế học kỳ chúng em chọn đồ án môn học hệ thống nhúng với đề tài “Xây dựng hệ thống chấm công tự động sinh học? ?? Tuy nhiên kiến thức chun mơn cịn hạn chế,