Giải pháp dùng khóa số dựa trên nền tảng của kỹ thuật vi điều khiển
Trang 1hận xét của giáo viên hướng dẫn
Thái Nguyên, Ngày Tháng Năm 20
Giáo Viên hướng dẫn
(Ký ghi rõ họ tên)
1
Trang 2Nhận xét của giáo viên chấm
Thái Nguyên, Ngày Tháng Năm 20
Giáo Viên hướng dẫn
(Ký ghi rõ họ tên)
TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP
KHOA ĐIỆN TỬ
Bộ môn: KỸ THUẬT MÁY TÍNH
2
Trang 3ĐỒ ÁN MÔN HỌC
MÔN HỌC
Hệ Thống Nhúng
Nhóm sinh viên: 1 Vũ Đình Thăng
2 Nguyễn Thế Thịnh
3 Lê Văn Thành Lớp : K43kđt
Giáo viên hướng dẫn : ThS Nguyễn Tuấn Linh
Thái Nguyên – 2011
M Ở ĐẦ U 6
Ch ươ ng 1 : Phân Tích Bài Toán 7
L a ch n ph n m m : ự ọ ầ ề 11
Ch ươ ng 2: Thi t K Và Tính Toán Cho H Th ng ế ế ệ ố 12
S đ kh i c a khóa s ơ ồ ố ủ ố 12
3
Trang 4S ơ Đồ Đặ c T H Th ng Và S ả ệ ố ơ Đồ Call Graph: 13
Phân tích và tính toán ph n c ng ầ ứ 14
2.3.1 PIC 16F877 14
2.3.2 LCD Hi n Th ể ị 24
Bàn Phím 27
M ch c u đi u khi n đ ng c ạ ầ ề ể ộ ơ 28
ng c Độ ơ 33
Kh i Ngu n ố ồ 34
Ch ươ ng 3: Xây d ng l u đ thu t toán và vi t ch ự ư ồ ậ ế ươ ng trình cho h khóa s ệ ố 34
3.1 l u đ gi i thu t: ư ồ ả ậ 34
3.2 ho t đ ng c a s n ph m ạ ộ ủ ả ẩ 35
3.3 Ch ươ ng trình quét phím c b n: ơ ả 36
4
Trang 6MỞ ĐẦU
Với mỗi gia đình, cơ qua, xí nghiệp, trường học hay bất cứ nơi đâu, để bảo vệ tài sản trong phòng Trên mỗi cánh cửa ra vào được trang bị thêm chiếc khóa Hiện nay trên thị trường có rất nhiều loại khóa cửa nhưng hầu như đều là khóa cơ khí, các khóa cơ khí này gặp vấn đề lớn đó là tính bảo mật của các khóa này không cao, nên dễ dàng bị phá khóa bởi các chìa khóa đa năng
Đa số khoá kỹ thuật số đang có bán trên thị trường là do Hàn Quốc sản xuất, chủ yếu là loại khoá tay nắm và có giá khá cao
Khoá sử dụng phương pháp cài đặt mã số (như khoá số của các loại va li hay cặp số) để khoá hoặc mở và người sử dụng có thể cài đặt số bất kỳ Hệ thống số của khoá được thiết kế như các phím bấm số của điện thoại nên khá tiện lợi khi sử dụng Bên cạnh loại chỉ có một chức năng khoá bằng mã số, còn có loại kèm theo chức năng khoá bằng chìa Chìa của loại này cũng đặc biệt hơn các loại thông thường, nó được làm 4 cạnh, khó làm giả như các loại khoá 2 cạnh
Khoá kỹ thuật số còn có loại mở bằng dấu vân Loại khoá này có thể đăng ký được 25 hoặc 40 vân tay khác nhau Như vậy bạn có thể lưu lại rất nhiều vân tay của mọi người trong gia đình vào bộ nhớ của khoá Khi cho đúng các vân tay có lưu trong
bộ nhớ thì cửa sẽ được mở Phần lớn loại này không sử dụng chìa nữa
Vì vậy để nâng cao yêu cầu về tính bảo mật để bảo vệ tài sản, và dao diện dễ
sử dụng Nhóm nghiên cứu chúng tôi đề ra giải pháp dùng khóa số dựa trên nền tảng của kỹ thuật vi điều khiển
6
Trang 7Chương 1 : Phân Tích Bài Toán1.1. Tổng quan về khóa số:
Khóa số nói chung là loại khóa để bảo vệ thiết bị, tài sản….mà khi muốn mở ra thì phải tác động đến số mà ta cài đặt trước có 2 loại khóa số cơ bản hiện nay trên thị trường có đó là khóa số cơ khí và khóa số điện tử
- Khóa số cơ khí : khi mở khóa hay khóa lại thì ta phải xoay các vòng số trên khóa sao cho một dãy các số nào đó cùng hợp với nhau thì mở được khóa
- Khóa số điện tử : khi mở khóa thì ta phải nhập đúng mật khẩu là một dãy các số liên tiếp nhau, nếu nhập đúng các dãy số đó thì mở được khóa
Nhìn chung thì khóa số điện tử sẽ có nhiều ký tự, nhiều mã số để cài đặt hơn, cũng như độ dài của mã số sẽ dài hơn Vì vậy tính bảo mật của khóa số điện tử cũng cao hơn Bên cạnh đó, thao tác trên khóa số điện tử cũng thực hiện dễ dàng hơn với các phím bấm, chứ không phải là các vòng xoay ở khóa số cơ khí Khi thao tác đổi mật khẩu cũng dễ dàng hơn vì thao tác trên các phím bấm
Khóa số điện tử ngoài tính năng về bảo mật cao, và thao tác dễ dàng còn có tính năng cảnh báo nếu nhập mật mã nhiều sai quá số lần quy định Với dao diện người dùng, hiển thị các thông báo về nhập mật khẩu, cảnh báo, thay đổi mật khẩu khiến người dùng dễ sử dụng hơn
1.2 Nguyên lý cơ bản của khóa số điện tử :
Nhập một mật mã đưa tới một khối giao tiếp, và hiển thị những thông tin tới người dùng (nếu có) Rồi khối điều khiển sẽ gửi tín hiệu tới một thiết bị chấp hành đóng cắt, hoặc điều khiển cho đóng hoặc mở cửa nếu như mật mã đúng Và đưa ra thống báo (nếu có) khi nhập mật mã sai, có thể có báo động khi nhập mật mã sai quá
số lần quy định
7
Khối giao tiếp và
hiển thị thông tin Khối điều khiển
Thiết bị chấp hành
Trang 8Hình 1.1: sơ đồ khối khóa số cơ bản.
1.3. Các sản phẩm khóa số trên thị trường
Trên thị trường hiện nay có bán rất nhiều loại khóa số điện tử Hầu hết các loại khóa điện tử đó đều có tính nắng đổi mật mã, cảnh báo Nhưng lại không có tính năng giao diện người dùng bằng màn hình LCD khiến người dùng khó sử dụng các sản phẩm đó Thiết bị mà bộ khóa số trên thị trường điều khiển chủ yếu là Roler để đóng,
mở chốt cửa
8
Trang 9Hình 1.2: khóa số trên thị trường không có giao diện người dùng
Một số loại trên thị trường đã có giao diện người dùng qua những màn hình LCD 16x2 để hiển thị thông tin tới người dùng Như vậy thì dễ sử dụng hơn các loại khác
9
Trang 10Hình 1.3: khóa số đã trang bị màn hình LCD giao diện người dùng.
1.4. Các yêu cầu chính của khóa số và tính năng của sản phẩm:
Qua tham khảo các sản phẩm khóa số trên thị trường thì
Yêu cầu của một bộ sản phẩm khóa số thông thường:
- Dạo diện người dung dễ sử dụng
- Mật khẩu có độ dài đảm bảo tính bảo mật cao
- Có thể thay đổi được mật khẩu
- Tính năng cảnh báo khi nhập mật khẩu sai 3 lần liên tiếp
- Động cơ quay để điều khiển cửa hết hành trình thì dừng lại
- Hệ thống phải làm việc được ngay cả khi mất điện
Các ràng buộc :
- Thông thường hệ thống giao diện với người dùng để ở bên ngoài, nên phải an toàn, tránh được những tác động của ngoại cảnh
- Chi phí của bộ sản phẩm (không có động cơ) không quá 500.000vnđ
- Chịu được quá tải tải khi gặp chướng ngại vật trong thời gian dài
10
Trang 11Với yêu cầu về tính năng như trên, chúng tôi chọn các thiết bị chính:
• Vi điều khiển 16f877 với bộ nhớ eeprom có khả lưu trữ dữ liệu ngay cả khi mất điện
• Màn hình LCD 16x2 với mục đích hiển thị thông tin, giao tiếp vi điều khiển với người dùng
• Bàn phím 16 phím có các phím số và phím chức năng đưa đầu vào là mật khẩu, các lệnh đóng mơ cửa tới vi điều khiển
• Động cơ để kéo cánh cửa đóng và mở Với đề tài này có yêu cầu sản phẩm mô phỏng thực tế, chúng tôi chọn động cơ một chiều công suất nhỏ
• Nguồn dự trữ khi mất điện
Lựa chọn phần mềm :
CCS là trình biên dịch lập trình ngôn ngữ C cho Vi điều khiển PIC của hãng Microchip Chương trình là sự tích hợp của 3 trình biên dich riêng biết cho 3 dòng PIC khác nhau đó là:
‐ PCB cho dòng PIC 12‐bit opcodes
‐ PCM cho dòng PIC 14‐bit opcodes
‐ PCH cho dòng PIC 16 và 18‐bit
Tất cả 3 trình biên dich này đuợc tích hợp lại vào trong một chương trình bao gồm cả trình soạn thảo và biên dịch là CCS
PIC 16f877a là pic 14 Ta có thể dùng phần mềm để lập trình cho PIC với ngôn ngữ C dễ sử dụng
Cấu chúc cơ bản của chương trình khi vết với C:
#include, #device, #use, #fuses // các tiền xử lý
#define, int8 //định nghĩa các dữ liệu khai báo hằng, biến
Void tênhàm() {} dùng để khai báo, định nghĩa hàm
Void main() {// chương trình chính.}
11
Trang 12Chương 2: Thiết Kế Và Tính Toán Cho Hệ Thống
Sơ đồ khối của khóa số
Hình 2.1: Sơ đồ khối của Khóa số
- Khối nguồn: Nhằm nhiệm vụ cung cấp điện áp +5V, ±12V luôn ổn định cho mạch điện và vi điều khiển
- Vi điều khiển: xử lý các thông tin, nhận thông tin từ bàn phím , đưa đến điều khiển động cơ và đưa thông tin hiển thị ra LCD thông báo cho người dùng Lưu trữ mật khẩu qua bộ nhớ EEPROM có thể lưu trữ ngay khi mất điện
12
Giao Tiếp LCD
Vi Điều Khiển PIC 16F877a Khối Báo Động
Động Cơ Khuếch Đại Tín
Hiệu
Bàn Phím Ma Trận 4x4 Khối Nguồn
Màn Hình Hiển Thị LCD 16x2
Trang 13- Bàn phím: thực hiện chức năng nhập các dữ liệu đưa đến vi điều khiển và bao gồm thao tác nhập mật khẩu, thay đổi mật khẩu, mở cửa, khóa cửa
- Hệ thống báo động: cảnh báo khi nhập sai mật khẩu quá 3 lần Thông qua hệ thống chông báo động
- Bộ khuếch đại tín hiệu và mạch cầu H :dùng để đưa tín hiệu điều khiển động cơ
- Màn hình LCD: có chức năng chính để giao tiếp người dùng với Vi Điều Khiển
- Động cơ điều khiển: Dùng để điều khiển đóng mở cửa qua điều khiển từ mạch cầu H
Sơ Đồ Đặc Tả Hệ Thống Và Sơ Đồ Call Graph:
Hình 2.2: sơ đồ đặc tả của hệ thống
13
Giao Tiếp LCD
Thao Tác
Nhập Mật Mã
Đổi Mật Mã
Thao Tác Phím
Trang 14Hình 2.3 : sơ đồ Call graph giữa phần cứng và phần mềm
Phân tích và tính toán phần cứng
2.3.1 PIC 16F877
a Đặc điểm pic 16f877a:
• Công nghệ CMOS có đặc tính : công suất thấp, công nghệ bộ nhớ Flash/EEPROM tốc độ cao Điện áp hoạt động từ 2V đến 5,5V và tiêu tốn năng nượng thấp phù hợp với nhiệt độ làm việc trong công nghiệp và trong thương mại
• Tốc độ hoạt động :
- DC – 20MHz ngõ vào xung clock
- DC – 200ns chu kỳ lệnh
• Dung lượng của bộ nhớ chương trình Flash là 8K x 14words
• Dung lượng của bộ nhớ dữ liệu RAM là 368x8Bytes
• Dung lượng của bộ nhớ dữ liệu EEPROM là 256x8 Bytes
o Bộ nhớ dữ liệu EEPROM cho phép xóa và ghi 1.000.000 lần
o Bộ nhớ EEPROM có thể lưu giữ dữ liệu hơn 40 năm và có thể tự lập trình lại được dưới sự điều khiển của phần mềm
14
Controller software Giao Tiếp
LCD
Giao Tiếp EEPROM Giao Tiếp Bàn Phím
Điều Khiển Động cơ
Động Cơ
Chương Trình Báo Động
Chuông Báo
Trang 15• Số chân : 40 pins 5 cổng vào ra số RA,RB,RC,RD,RE.
Hình 2.4: Sơ đồ chân của pic 16F877a.
b Các công vào ra của PIC 16F877a:
Việc điều khiển các cổng vào ra của pic dựa trên việc điều khiển các File thanh ghi Vì trong đề tài chỉ sử dụng 3 cổng vào ra là PORTB, PORTC, PORTD nên chúng tôi xin đưa ra đặc điểm của các chân
PORTB và thanh ghi TRISB:
Portb (RPB) gồm 8 pin I/O thanh ghi điều khiển xuất nhập tương ứng là TRISB Bên cạnh đó một số chân của PORTB còn được sử dụng trong quá trình nạp chường trình cho vi điều khiển với các chế độ nào khác nhau PORTB còn liên quan dến ngắt ngoại vi và bộ Timer0 PORTB còn được tích hợp chức năng điện trở kéo lên được điều khiển bởi chương trình
Ba chân của PORTB được đa hợp với mạch điện gỡ rối bên trong và chức năng lập trình điện áp thấp RB3/PGM, RB6/PGC và RB7PGD
Mỗi chân của PORTB có điện trở kéo lên Bit điều khiển RBPU (OPTION_REG<7>) =0 thì có thể mở tất cả các điện trở kéo lên khi portb được thiết lập là ngõ ra thì sẽ tự động ngắt chức năng điện trở kéo lên , cũng tương tự khi CPU bị reset lúc mới cấp điện
Bốn chân của portb RB4:RB7 có cấu chúc ngắt thay đổi, chỉ có những chân được thiết lập ở cấu hình là ngõ vào thì mới có chức năng ngắt các chân ngõ vào là
15
Trang 16(RB4:RB7) được so sánh với giá trị cũ đã được chốt trong lần đọc trước của portb Các ngõ ra không trùng nhau của các chân RB4:RB7 được OR lại với nhau để tao ra ngắt ở PORTB với bít cờ báo ngắt RBIF<INTCON<0>>.
Ngắt này có thể kích hoạt vi điều khiển trở lại trạng thái hoạt động khi nó đang
ở chế độ SLEEP Trong chương trình phục vụ ngắt thì người dùng có thể xóa ngắt bằng các cách khác nhau:
• Bất kỳ lệnh đọc hay ghi PORTB sẽ kết thích điều kiện không thích ứng
• Xóa bít cờ RBIF
Điều kiện không tương thích sẽ tiếp tục làm cờ báo ngắt RBIF bằng 1 Khi đọc PORTB sẽ chấm dứt điều kiện không tương thích và cho phép xóa bít cờ báo ngắt RBIF
Cấu trúc ngắt thay đổi dùng để thoát khỏi chế độ nghỉ khi có nhấn phím và các hoạt động mà PORTB chỉ được dùng cho cấu trúc thay đổi ngắt
PORTC và thanh ghi TRISC:
PORTC là port 2 chiều 8 bít Thanh ghi định hướng là TRISC Khi bit TRISC=1 thì portc là nhập, khi TRISC=0 thì portc là xuất
Portc được đa hợp với vài chức năng ngoại vi Các chân của portc có mạch đệm Schmit Trigger ở ngõ vào Khi khối I2C được cho phép thì các chân PORTC (3,4)
có thể được định cấu hình ở các mức I2C hoặc mức SMBUS bằng cách sử dụng bít CKE (SSPSTAT<6>)
Khi cho phép chức năng ngoại vi, nên chú ý đến các bít TRIS cho mỗi chân của PORTC Một vài thiết bị ngoại vi ghi lên bít TRIS để làm một chân như là 1 ngõ ra, trong khi đó các thiết bị ngoại vi ghi lên bít TRIS để làm như một chân ngõ vào Khi ghi đè bít TRIS thì không ảnh hưởng đến các thiets bị đã cho phép, các kệnh đọc – hiệu chỉnh – ghi (BSF,BCF,XORWF) với TRISC là đích đến phải tránh dùng Người
sử dụng tham chiếu tới phần thiết bị ngoại vi tướng ứng để thiếp lập cho đúng bít TRIS
PORTD và thanh ghi TRISD:
PORTD là port 8 bít với ngõ vào có mạch Schmitt Trigger Mỗi chân có thể được cấu hình độc lập là ngõ vào hoặc ngõ ra PORTD có thể định cấu hình như là port của vi sử lũ 8 bít bằng cách thiết lập bít điều khiển PSPMODE(TRISE<4>) Trong mode này thì các bộ đến ngõ vào dạng TTL PORTD và TRISD không được xây dựng cho các bộ đếm ngõ vào TTL
16
Trang 17Các BANK thanh ghi:
Bộ nhớ dữ liệu trên được chia làm nhiều Bank và chứa những chức năng đặc biệt hai bit RP0, RP1 nằm trong thanh ghi STATUS thuộc bit thứ 5 và thứ 6 dùng
để chọn BANK thanh ghi
Hai BANK thanh ghi : BANK 0 và BANK 1 thuộc địa chỉ từ 0x5 đến 0x09 là địa chỉ của PORTA đến PORTE dùng để xuất nhập dữ liệu địa chỉ từ 0x85 đến 0x89 là địa chỉ của các thanh ghi định hướng TRISA đến TRISE
Khi chọn BANK thanh ghi ta thiết lập các giá trị của RP0 và RP1 thuộc thanh ghi STATUS như sau:
Trang 19Hình 2.5: Sơ đồ File thanh ghi.
19
Trang 20Với phần mềm CCS để viết chương trình C cho PIC, khi truy xuất các dữ liệu
từ các cổng thì ta không cần chọn BANK thanh ghi phức tạp như trên Ta chỉ cần dùng các lệnh : SET_TRIS_X và OUTPUT_X là có thể xuất nhập Nhưng khi nhập dữ liệu với các cổng ta không nên dùng lệnh OUTPUT_X vì trước khi thực hiện xuất một
dữ liệu thì mặc định nó đã SET_TRIS_X Ta nên khai báo địa chỉ ban đầu của thanh ghi ví dụ:
#BYTE PORTB =0x06, #BYTE PORTC=0x07
Như thế thì ta có thể xuất dữ liệu ra các cổng bằng các lệnh gán PORTX=0xXX mà không làm ảnh hưởng đến thanh ghi định hướng ban đầu qua lệnh SET_TRIS_X
Các cổng RB, RC, RD là cổng vào ra 8 bít, với các chân RX0 đến RX7
c chọn cổng vào ra kết nối với thiết bị ngoại vi :
• Do trong phần mềm CCS có hỗ chợ file LCD.C mặc định dùng ở cổng PORTD nên ta dùng cổng RD để kết nối với LCD Điều khiển LCD dùng PORTD với thiết lập ban đầu là cổng xuất dữ liệu để điều khiển LCD nên ta thiết lập ban đầu là SET_TRIS_D(0x00)
o Các chân từ RD4 => RD7 của PIC nối với các chân dữ liệu D4 => D7 của LCD
o Chân RD0 của pic nối với chân cho phép E (enable) của LCD
o Chân RD1 nối với chân RS – chân chọn thanh ghi của LCD
o Chân RD2 nối với chân RW – chân chọn chế độ đọc/ ghi của LCD
• Chọn cổng quét 16 phím: ma trận phím nối với cổng RC
• Chọn cổng điều khiển động cơ , công tắc hành trình và báo động : cổng RB
o Chân RB0, RB1 nối với công tắc hành trình để dừng động cơ khi điều khiển cửa
o Chọn chân RB6,RB7 để điều khiển động cơ thông qua mạch cầu
o Chọn chân RB5 để đưa tín hiệu ra hệ thống báo động
d Bộ nhớ EEPROM:
Dữ liệu EEPROM và bộ nhớ chương trình Fláh có thể đọc và ghi trong suốt quá trình hoạt động bình thường Bộ nhớ này không được thiết lập trực tiếp trong không gian file thanh ghi đặc biệt Có 6 thanh ghi FSR được sử dụng để đọc và ghi bộ nhớ này:
EECON1
20