TRƯỜNG ĐẠI HỌC BÁCH KHOA TP.HCM
KHOA KHOA HỌC VÀ KỸ THUẬT MÁY TÍNH
BÁO CÁO
Môn:ĐỒ ÁN
`
THIẾT KẾ LUẬN LÝ
ĐỀ TÀI:
PASWORD DOOR SECURITY
GVHD: PHAN ĐÌNH THẾ DUY
Thành viên nhóm:
Phạm Khánh Duy
51200576
Phạm Lê Quốc Trung
51204157
Trần Tuấn Đạt
51200746
Tp.HCM,ngày 22 thánh 12 năm 2014
Trang 1
Ngày nay, trênt thế giới, điện tử viễn thông vẫn không ngừng phát triển với tốc độ rất cao và thâm
nhập vào tất cả các lĩnh vực của đời sống xã hội. Trong đó, lĩnh vực bảo mật là một mảng lớn mà
chúng ta can quan tâm, và đề tài của nhóm liên quan tới lĩnh vức này, đó là đề tài password door
security. Hệ thống này cho phép ta quản lý và hạn chế được số người ra vào theo mã số trong khu vực
cần bảo mật vối độ an toàn cao. Đề tài tuy không lớn nhưng về mặt nguyên lý thì có thể phát triển
thành các ứng dụng quản lý theo thẻ từ, mã vạch, mã …trong các khu vực đặc biệt cần phải có máy
tính hiện địa với CSDL, ngoài mật mã còn kiểm tra tần số giọng nói và camera kiểm tra hình ảnh,…
mà hiện nay đang rất cần thiết. Vì thế đối với nhóm đây là bước cơ sở để nhóm nghiên cứu những
ứng dụng lớn hơn sau này.
Trong quá trình thực hiện đề tài, tuy đã cố gắng song do những hạn chế nhất định về kiến thức cũng
như kinh nghiệm thực tế nên nhóm không tránh khỏi những thiếu sót. Chúng em rất mong nhận được
những ý kiến đóng góp của thầy cô và các bạn để đề tài của nhóm em được hoàn thiện hơn với nhiều
chức năng hơn.
Trang 3
Đồ án Thiết kế luận lý
PHẦN B NỘI DUNG
CHƯƠNG 1: GIỚI THIỆU
1.1Yêu cầu và chức năng hệ thống
Yêu cầu
Đây là một hệ thống đóng mở theo mã cho phép một số ít người có thể ra vào theo mã của họ. Nó có
thể được áp dụng làm cửa ra vào của các hệ thống can mang tính bảo mật, giới hạn số người ra vào
như: cửa ra vào cơ quan, nhà máy, các khu quan trọng,…
Trên cơ sở đó hệ thống phải có các yêu cầu cơ bản sao:
+ Tính an toàn: có chức năng bảo vệ
+ Dễ sử dụng:có đầy đủ hướng dẫn để người dùng sử dụng
Board mạch ARM STM32F103RB
1 LCD 16x2.
1 Bàn phím 3x4.
đèn led.
1 còi âm thanh.
…
Phần mềm:
Keil ARM
Flash loader demonstrator
Dfuse demonstration
Altium
1.3Kế hoạch, phân công công việc
Tài liệu: Phạm Khánh Duy + Phạm Lê Quốc Trung + Trần Tuấn Đạt.
Thiết kế mạch, đặt mạch, in mạch: Trần Tuấn Đạt.
Source Code: Phạm Khánh Duy + Phạm Lê Quốc Trung.
Test mạch: Phạm Khánh Duy.
Viết báo cáo: Phạm Lê Quốc Trung.
Trang 5
Khối Vi điều khiển: kit OLIMEXINO-STM32F103RB
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.
─ Cốt lõi: ARM 32-bit Cortex ™-M3 CPU
─ Tần số tối đa 72 MHz, 1,25 DMIPS / MH z (Dhrystone 2.1)
biểu diễn tại 0 chờ đợi truy cập bộ nhớ trạng thái
─ Nhân chu trình đơn và bộ phận phần cứng
─ 256-512 Kbytes bộ nhớ Flash
─ Lên đến 64 Kbytes SRAM
─ Linh hoạt điều khiển bộ nhớ tĩnh với 4 Chip Select. Hỗ trợ
Compact Flash, SRAM, PSRAM, NOR và NAND kỷ niệm
─ LCD giao diện song song, 8080/6800 chế độ
─ Đồng hồ, thiết lập lại và quản lý cung cấp
─ 2,0-3,6 V cung cấp ứng dụng và I / O
─ POR, PDR, và lập trình phát hiện điện áp (PVD)
─ tinh thể dao động 4-đến-16 MHz
─ 8 MHz RC
─ Hiệu chuẩn Nội bộ 40 kHz RC
─ dao động 32 kHz cho RTC
─ Điện năng thấp
─ sleep, Stop và wait
─ VBAT cung cấp cho RTC và đăng ký sao lưu
─ 3 x 12-bit, 1 ms chuyển đổi A / D (lên đến 21 kênh)
─ Phạm vi chuyển đổi: 0-3,6 V
─ Ba mẫu và giữ khả năng
─ Cảm biến nhiệt độ
─ D/A chuyển đổi 2x12-bit
─ DMA: 12 kênh điều khiển DMA
─ Giao diện USB 2.0 tốc độ đầy đủ
─ Giao diện SDIO
─ Đơn vị tính CRC, 96-bit ID duy nhất
─ ECOPACK gói
Môi trường phần cứng:
─ Chip ARM Cortex m3-STM32F103RCT6 được cấp nguồn +3.3V thông qua cổng USB của
PC, dùng thạch anh ngoài 8MHz, sau khi qua bộ nhân tần số đưa vào CPU lên tới 72MHz.
─ 2 pin Tx và Rx củ a USART1 lần lượt là: PA9, PA10.
Môi trường phần mềm:
─ Chương trình được viết dựa trên nền tảng bộ thư viện chuẩn CMSIS do công ty ARM đề xuất và
bộ thư viện truy xuất ngoại vi tương thích chuẩn CMSIS do công ty ST cung cấp
Chương trình được biên dị ch b ằng công c ụ quen thu ộc: Keil v4.01
─ Cổng USART1 được cài đặt các thông s ố hoạt động như sau:
+ BaudRate = 115200 baud
+ Word Length = 8 Bits
+ One Stop Bit
+ No parity
+ Hardware flow control disabled (RTS and CTS signals)
+ Receive and transmit enabled
Trang 8
Đồ án Thiết kế luận lý
Khối bàn phím: Keypad 3x4
Bàn phím gồm các nút. Mỗi nút là một bộ phận đogn1 mở bằng cơ khí. Các mã của bàn phím
EEPROM
SCL
Sơ đồ kết nối
Khối mở cửa: Điều khiển đóng mở cửa (mô phỏng bằng LED xanh sáng, tắt).
Khối 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.
Trang 10
Đồ án Thiết kế luận lý
2. 3 Source Code
Hệ thống sẽ cấp sẵn một số password của các cửa từ 0 đến 9. Các các password này sẽ được lưu
trong bộ nhớ EEPROM. Khi khởi động hệ thống, chương trình sẽ đọc các dữ liệu trong bộ nhớ này
Đầu tiên ta sẽ tiến hành chọn mã số cửa muốn mở, đó là các mã số từ 0 đến 9. Sau khi đã xác định
được cửa, ta sẽ tiến hành nhập password đã được cài đặt sẵn, nếu nhập sai hệ thống sẽ yêu cầu bấm
phím # để nhập lại. Nếu nhập đúng, hãy bấm phím số 1 để cửa mở, ngoài ra nếu muốn đổi password
mới ta nhấn phím *.
Lưu ý: Khi ở cửa ADMIN, ta có thể xem password các cửa khác bằng cách nhấn phím 0, sau đó
chọn mã số cửa muốn xem.
Project gồm các module thực hiện các chức năng của các khối như sau:
Keypad3x4:
Khởi tạo keypad3x4:
#include "Keypad.h"
#include "gpio.h"
Neu khong co nut duoc an.
********************************************************************************/
uint8_t
KEY3X4_IsPush(void)
{
if((COL0==0)|(COL1==0)|(COL2==0)) {
//
printf("aaa %d %d %d\n",COL0, COL1, COL2);
return 1;
}
else
return 0;
}
Trang 11
Đồ án Thiết kế luận lý
/*******************************************************************************
Noi Dung
:
:
Lay gia tri nut nhan duoc an.
Tham Bien
:
Khong.
Tra Ve
:
0:
Neu khong co nut duoc an.
khac 0: Gia tri cua nut an.
********************************************************************************/
uint8_t
KEY3X4_GetKey(void){
uint8_t
i;
ROW0_OFF;
ROW1_OFF;
#define COL2
GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_6)
#define COL0_ON
GPIO_SetBits(GPIOA,GPIO_Pin_9);
#define COL0_OFF
#define COL1_ON
GPIO_ResetBits(GPIOA,GPIO_Pin_9);
GPIO_SetBits(GPIOA,GPIO_Pin_8);
#define COL1_OFF
#define COL2_ON
#define ROW0_ON
#define ROW1_ON
#define ROW2_ON
#define ROW3_ON
//D2
GPIO_ResetBits(GPIOA,GPIO_Pin_0);
GPIO_SetBits(GPIOB,GPIO_Pin_9);
#define ROW3_OFF
//D3
GPIO_ResetBits(GPIOB,GPIO_Pin_9);
LCD16x2:
Khởi tạo LCD:
#include "lcd4bit.h"
#include "delay.h"
/*******************************************************************************
Noi Dung
:
Gui tin hieu Enable den LCD.
Tham Bien
:
Khong.
Tra Ve
:
Khong.
********************************************************************************/
void LCD_Enable(void)
{
LCD_EN(1);
void LCD_Send4Bit( uint8_t
Data )
{
//
LCD_RW(0);//
//
LCD_EN(1);//
LCD_D4((Data>>0)&0x01);
LCD_D5((Data>>1)&0x01);
LCD_D6((Data>>2)&0x01);
LCD_D7((Data>>3)&0x01);
//
delay_ms(1);//
//
LCD_EN(0);//
//
delay_ms(1);//
}
( command >>4 );
/* Gui 4 bit cao */
LCD_Enable () ;
LCD_Send4Bit
( command
);
/* Gui 4 bit thap*/
LCD_Enable () ;
//
LCD_RS(0);//
}
/*******************************************************************************
Noi Dung
:
Khoi tao LCD.
Tham Bien
:
LCD_Send4Bit(0x03);
delay_ms(5);
LCD_Send4Bit(0x03);
LCD_Enable();
delay_ms(5);
LCD_Enable();
delay_ms(100);
LCD_Enable();
LCD_Send4Bit(0x02);
//delay_ms(16);
LCD_Enable();
LCD_SendCommand( 0x28 );// giao thuc 4 bit, hien thi 2 hang, ki tu 5
//
delay_ms(16);
LCD_SendCommand( 0x0c);// cho phep hien thi man hinh
//
delay_ms(16);
LCD_SendCommand( 0x00 );// tang ID, khong dich khung hinh
//
delay_ms(16);
LCD_Clr();// xoa toan bo khung hinh
}
/*******************************************************************************
if(!y)
address = (0x80+x);
else
address = (0xC0+x);
delay_ms(1);
LCD_SendCommand(address);
delay_ms(5);
}
/*******************************************************************************
Noi Dung
:
Xoa noi dung hien thi tren LCD.
Tham Bien
:
Khong.
Tra Ve
:
Khong.
Trang 15
Data )
{
LCD_RS(1);
LCD_SendCommand( Data );
LCD_RS(0);
}
/*******************************************************************************
Noi Dung
:
Viet 1 chuoi ki tu len LCD.
Tham Bien
:
Khong.
Tra Ve
:
Khong.
********************************************************************************/
void LCD_Puts(char *s)
{
#define LCD_RW_OFF
#define LCD_EN_ON
GPIO_SetBits(GPIOA, GPIO_Pin_4);
GPIO_SetBits(GPIOA, GPIO_Pin_7);
GPIO_SetBits(GPIOA, GPIO_Pin_6);
//D12
GPIO_ResetBits(GPIOA, GPIO_Pin_6);
GPIO_SetBits(GPIOA, GPIO_Pin_5);
#define LCD_D6_OFF
#define LCD_D7_ON
//D11
GPIO_ResetBits(GPIOA, GPIO_Pin_7);
#define LCD_D5_OFF
#define LCD_D6_ON
//D10
GPIO_ResetBits(GPIOA, GPIO_Pin_4);
#define LCD_D4_OFF
#define LCD_D5_ON
SDA_OUT=1;
delay_ms(1);
}
// Ham start I2C
void start(void)
{
GPIO_SetState(GPIOB,GPIO_Pin_11,GPIO_Mode_Out_OD);
SCL=1;
//delay_ms(10000);
SDA_OUT=1;
delay_ms(1);
Trang 17
Đồ án Thiết kế luận lý
SDA_OUT=0;
delay_ms(1);
SCL=0;
delay_ms(1);
}
// Ham stop I2C
void stop(void)
{
GPIO_SetState(GPIOB,GPIO_Pin_11,GPIO_Mode_Out_OD);
SDA_OUT=0;
SCL=1;
delay_ms(1);
SDA_OUT=1;
Trang 18
Đồ án Thiết kế luận lý
SCL=1;
gt=gt*2;
delay_ms(1);
gt=gt|SDA_IN;
SCL=0;
delay_ms(1);
}
GPIO_SetState(GPIOB,GPIO_Pin_11,GPIO_Mode_Out_OD);
SCL=1;
SDA_OUT=1;
delay_ms(1);
SCL=0;
return gt;
}
Khởi tạo EEPROM:
#include "at24cxx.h"
#include "i2c.H"
#include "delay.h"
/*******************************************************************************
Noi Dung
:
address:
Tra Ve
:
Gia tri du lieu doc duoc.
Dia chi can doc du lieu.
********************************************************************************/
uint8_t EEP_24CXX_Read(uint8_t address)
{
uint8_t Data;
start();
truyen(0xa0);
truyen(address);
start();
truyen(0xa1);
Data=nhan();
stop();
Trang 19
Đồ án Thiết kế luận lý
return Data;
}
/*******************************************************************************
truyen(address);
truyen(Data);
stop();
delay_ms(10);
}
/*******************************************************************************
Noi Dung
:
Viet mot chuoi du lieu vao EEPROM.
Tham Bien
:
address:
Dia chi bat dau ghi du lieu.
*s
Chuoi du lieu can ghi.
Tra Ve
:
:
lenght :
Tra Ve
:
Do dai du lieu can doc.
Khong.
********************************************************************************/
void EEPROM_24CXX_ReadS(uint8_t address, uint8_t lenght, uint8_t *s){
uint8_t i=0;
while(lenght){
s[i++]=EEP_24CXX_Read(address++);
lenght--;
delay_ms(2);
}
s[i]=0;
}
Trang 20
Đồ án Thiết kế luận lý
2.4 Mạch nguyên lý, mạch layout
Mạch nguyên lý sử dụng phần mềm Antium:
người dùng lắm. Ta có thể sử dụng CGRAM để vẽ các ký tự tiếng Việt có dấu giúp người Việt dễ
sử dụng hơn.
Mặt khác với 10 chữ số từ 09 thì mức độ bảo mật chưa cao lắm. Ta có thể sử dụng các ký tự latin
để làm password để tăng tính bảo mật cho hệ thống.
Do là thiết kế đầu tiên nên không thể tránh khỏi sai sót nhất định Chúng em xin chân thành cảm ơn
sự giúp đỡ và hướng dẫn của các thầy giáo và các anh chị, các bạn trong thời gian vừa qua. Mong
rằng sẽ nhận được nhiều đóng góp ý kiến để bản thiết kế này và những bản thiết kế sau ngày càng
được hoàn thiện hơn.
Trang 23
Đồ án Thiết kế luận lý
PHẦN C TÀI LIỆU THAM KHẢO
/>www.arm.vn/
…
Trang 24