Tải bản đầy đủ (.docx) (53 trang)

ĐỒ ÁN KỸ THUẬT Vi ĐIỀU KHIỂN CẢM BIẾN VÂN TAY FULL CODE

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (827.53 KB, 53 trang )

Đồ án môn học Vi Điều Khiển

SVTH: ........................................................................................

GVHD :TS…………………….

Trang 1


Đồ án môn học Vi Điều Khiển

GVHD :TS…………………….

Đà Nẵng ,Tháng 12 năm 2018

MỤC LỤC

SVTH: ........................................................................................

Trang 2


Đồ án môn học Vi Điều Khiển

GVHD :TS…………………….

Lời nói đầu
Ngày nay xã hội ngày càng phát triển với tiến bộ vượt bậc, nó mang lại cho
chúng ta thuận lợi và dễ dàng trong mọi lĩnh vực. Sự đa dạng về phát triển khoa học kĩ thuật làm
cho chúng ta có nhiều sự lựa chọn để giải quyết các vấn đề khác nhau. Việc ứng dụng các thành tựu
khoa học kỹ thuật hiện đại trong tất cả các lĩnh vực đã và đang rất phổ biến trên toàn thế giới, thay


thế dần những phương thức thủ công, lạc hậu và ngày càng được cải tiến hiện đại hơn. Cảm biến
vân tay chính là một trong số đó.
Như chúng ta đã biết, vấn đề an ninh trong cộng đồng và xã hội luôn là một vấn đề nhức nhối. Các
vụ trộm cắp xảy ra khắp mọi nơi và các đối tượng thì ngày càng tinh vi và trình độ ngày một cao,
đặt ra những yêu cầu về khả năng bảo mật, chống trộm. Cảm biến vân tay ra đời cũng nhằm phục
vụ mục đích đó. Hoạt động với nguyên lý xử lý hình ảnh dấu vân tay rồi mã hoá thành 1 chuỗi mã,
bằng cách giao tiếp với cảm biến thông qua hoạt động gửi và nhận liên tục các chuỗi mã, ta có thể
điều khiển các thiết bị ngoại vi như ý muốn (Khoá điện tử, còi chống trộm,…). Hơn nữa đề tài có
khả năng ứng dụng vào trong đời sống thực tế là rất khả quan nên chúng em quyết định chọn và
thực hiện đề tài này.
Sau vài tháng thiết kế và thi công mô hình, đề tài cũng đã hoàn thành và hoạt động tương đối ổn
định. Tuy nhiên do tầm hiểu biết còn hạn chế và thời gian thực hiện không nhiều nên chúng em khó
tránh khỏi những sai sót. Em rất cảm ơn sự hướng dẫn của thầy Đặng Phước Vinh và các bạn để đồ
án được hoàn chỉnh hơn.

SVTH: ........................................................................................

Trang 3


Đồ án môn học Vi Điều Khiển

GVHD :TS…………………….

PHẦN I: TỔNG QUAN ĐỀ TÀI
1.Đặt vấn đề:
Vấn đề an ninh trong cộng đồng và xã hội là một vấn đề luôn nhận được sự quan tâm. Các vụ
trộm cắp xảy ra khắp mọi nơi và các đối tượng thì ngày càng tinh vi và trình độ ngày một cao,
đặt ra những yêu cầu về khả năng bảo mật, chống trộm. Trên thị trường xuất hiện rất nhiều loại
khoá với các cơ cấu cơ khí và động lực với kết cấu cứng vững và ngày càng chắc chắn. Nhưng

cùng với đó cũng là sự tinh vi và kinh nghiệm của các đối tượng trộm cắp với kỹ năng bẻ khoá
cũng ngày một nâng cao. Chỉ từ khi có sự xuất hiện của các loại khoá với các vi mạch điện tử có
điều khiển thì mọi chuyện mới thật sự thay đổi( Cảm biến quang, cảm biến hồng ngoại, cảm
biến chuyển động, cảm biến siêu âm,…. Các loại khoá hoạt động tốt hơn, an toàn hơn và độ bảo
mật cao hơn.
Cảm biến vân tay ra đời cũng nhằm phục vụ mục đích đó. Hoạt động với nguyên lý xử lý
hình ảnh dấu vân tay rồi mã hoá thành 1 chuỗi mã, bằng cách giao tiếp với cảm biến thông qua
hoạt động gửi và nhận liên tục các chuỗi mã, ta có thể điều khiển các thiết bị ngoại vi như ý
muốn (Khoá điện tử, còi chống trộm,…). Do mỗi người có một dấu vân tay đặc trưng và tỉ lệ
trùng nhau là vô cùng nhỏ nên khả năng ứng dụng của cảm biến vân tay vào trong đời sống thực
tế là rất khả quan.
2.Tầm quan trọng của đề tài:
Cảm biến vân tay thuộc loại cảm biến sinh trắc học, dựa vào đặc điểm riêng biệt của mỗi
người là vân tay để mở khoá, dẫn đến một lợi thế là không xảy ra tình trạng là để quên hay bị
đãng trí như sử dụng ổ khoá chìa. Hơn nữa, tỉ lệ có 2 người trùng nhau dấu vân tay là 1/64 tỉ nên
việc sử dụng cảm biến vân tay để làm khoá điện tử phục vụ vào cuộc sống là hoàn toàn có thể
thực hiện. Bảo mật vân tay trong tương lai hứa hẹn sẽ thay thế hầu hết các loại khoá điện tử hiện
nay vì ưu điểm nhỏ gọn, dễ sử dụng và tiện lợi cho người dung mà vẫn đảm bảo khả năng bảo
mật cao.
3.Nội dung:
-

Tìm hiều về modul cảm biến vân tay R305
Thiết kế giao diện làm việc sử dụng Visual Studio
Thi công mạch chấp hành với LCD và KIT Arduino
Kiểm tra vận hành và khắc phục các sai sót

4.Mục đích của đề tài:
-


Tìm hiểu và giao tiếp với modul R305

SVTH: ........................................................................................

Trang 4


Đồ án môn học Vi Điều Khiển
-

GVHD :TS…………………….

Thực hiện nhận dữ liệu và điều khiển thiết bị ngoại vi

5.Đối tượng nghiên cứu:
-

Modul cảm biến vân tay R305
KIT Arduino Nano

- LCD 16x02

SVTH: ........................................................................................

Trang 5


Đồ án môn học Vi Điều Khiển

GVHD :TS…………………….


PHẦN II: THIẾT KẾ HỆ THỐNG
A. CƠ SỞ DỮ LIỆU THIẾT KẾ:
1. Module nhận dạng vân tay R305:
1.1. giới thiệu module nhận dạng vân tay R305:
Module nhận diện vân tay R305 là module có chức năng thu thập ảnh vân tay từ đó tạo nên một
khuôn mẫu vân tay hoặc so sánh sự trùng khớp giữa hai dấu vân tay.Ngoài ra R305 còn có khả
năng lưu trữ khuôn mẫu vân tay vào bộ nhớ.Nó có thể giao tiếp với máy tính hoặc vi điều khiển
trực tiếp thông qua giao thức UART hoặc MAX232/USB-Serial.
1.2.Thông số kỹ thuật module R305:
•Nguồn
•Giao

cấp: 3.6 - 6VDC

tiếp: TTL-UART hoặc USB 1.1

•Dòng

điện hoạt động: 100 - 150mA

•Chế

độ nhận dạng: 1:1 hoặc 1:N (1 ID nhiều vân tay)

•Tốc

độ truyền: 9600xN bps (mặc định N=6 tức 9600x6 = 57600bps)

•Thời


gian thu thập hình ảnh : <0.5s

•Kích

thước mẫu : 512 bytes

•Khả


năng lưu trữ: 120

Cấp độ bảo vệ : 5 (1, 2, 3, 4, 5(cao nhất))

•Lỗi

chấp nhận nhầm : <0.001%

•Lỗi

từ chối nhầm: <0.1%

•Thời

gian nhận dạng trung bình: < 0.8s (1:880)

•Kích

thước: 18mm*22mm


•Nhiệt

độ và độ ẩm hoạt động: -10oC – 40oC, RH: 40%-85%

•Nhiệt

độ và độ ẩm bảo quản: -40oC – 85oC, RH: <85%

1.3.Nguyên tắc hoạt động của module R305:
Qúa trình xử lý dấu vân tay gồm hai phần: quét vân tay và so sánh sự trùng khớp của hai dấu vân
tay.khi quá trình quét vân tay diễn ra,một đèn Led đỏ phát sang ,sau đó cảm biến hình ảnh sẽ thu lưu
lại hình ảnh dấu vân tay.Người dung khi tạo mẫu vân tay cần quét ngón tay hai lần,hệ thống sẽ xử
lý hai hình ảnh vân tay để tạo ra một mẫu và lưu mẫu đó vào thư vện của module.Khi tìm kiếm hệ

SVTH: ........................................................................................

Trang 6


Đồ án môn học Vi Điều Khiển

GVHD :TS…………………….

thống sẽ so sánh dấu vân tay cần tìm với toàn bộ thư vện của module,sau đó sẽ trả về kết quả tìm
thấy hoặc không tìm thấy mẫu vân tay đó.
1.4.Cấu trúc lệnh điều khiển module R305:
1.4.1:Lệnh quét vân tay:
o Dữ liệu gửi đi:
2 bytes
Header


4bytes
Module

1 byte
Package

2 bytes
Package length

1 byte
Instruction

2 bytes
Checksum

0xEF01

address
Xxxx

identifier
01H

03H

code
01H

05H


o Dữ liệu nhận về:
2 bytes
Header

4bytes
Module

1 byte
Package

2 bytes
Package length

1 byte
Confirmation

2 bytes
Checksum

0xEF01

address
Xxxx

identifier
01H

03H


code
xxH

Sum

 Ghi chú:
 Confirmation code=00H: hoàn thành thu thập vân tay;
 Confirmation code=01H: lỗi khi nhận gói;
 Confirmation code=02H: không thể phát hiện dấu vân tay;
 Confirmation code=03H: thu thập vân tay thất bại;
1.4.2.Lệnh đưa ảnh vào biến tạm:
o Dữ liệu gửi đi:
2 bytes
Header

4bytes
Module

1 byte
Package

2 bytes
Package

1 byte
Instruction

1 byte
Buffer


2 bytes
Checksum

0xEF01

address
xxxx

identifier
01H

length
04H

code
02H

number
BufferID

sum

 Ghi chú: BufferID của bộ đệm 1 và bộ đệm 2 lần lượt là 01h,02h.Nếu khác 2 giá trị
trên thì xem như bộ đệm 2.
o Dữ liệu trả về:
2 bytes

4bytes

1 byte


2 bytes

1 byte

SVTH: ........................................................................................

2 bytes

Trang 7


Đồ án môn học Vi Điều Khiển

GVHD :TS…………………….

Header

Module

Package

0xEF01

address
xxxx

identifier
07H


Package length

Confirmation

Checksum

03H

code
XxH

sum

 Ghi chú:
Confirmation code=00H: hoàn thành việc tạo file;




Confirmation code=01H: lỗi khi nhận gói;



Confirmation code=06H: không tạo được file do hình ảnh vân tay quá loạn;



Confirmation code=07H: không tạo dược tệp do thiếu điểm hoặc hình ảnh
quá nhỏ;




Confirmation code=15H: không tạo được hình ảnh;

1.4.3.Lệnh tổng hợp thông tin 2 dấu vân tay:
o Dữ liệu gửi đi:
2 bytes
Header

4bytes
Module

1 byte
Package

2 bytes
Package

1 byte
Instruction

2 bytes
Checksum

0xEF01

address
xxxx

identifier

01H

length
03H

code
05H

09H

o Dữ liệu trả về:
2 bytes
Header

4bytes
Module

1 byte
Package

2 bytes
Package

1 byte
Confirmation

2 bytes
Checksum

0xEF01


address
xxxx

identifier
07H

length
03H

code
xxH

sum

 Ghi chú:
 Confirmation code=00H: tổng hợp thành công;
 Confirmation code=01H: lỗi khi nhận gói;
 Confirmation code=0aH: lỗi khi kết hợp vân tay,vân tay không cùng một ngón;
1.4.4.Lệnh so sánh 2 dấu vân tay:
o Dữ liệu gửi đi:
2 bytes

4bytes

1 byte

2 bytes

1 byte


SVTH: ........................................................................................

2 bytes

Trang 8


Đồ án môn học Vi Điều Khiển

GVHD :TS…………………….

Header

Module

Package

Package length

Instruction code

Checksum

0xEF01

address
Xxxx

identifier

01H

03H

03H

07H

o Dữ liệu trả về:
2 bytes
Header

4bytes
Module

1 byte
Package

2 bytes
Package

1 byte
Confirmation

2 bytes
Matching

2 bytes
Checksum


0xEF01

address
Xxxx

identifier
07H

length
05H

code
XxH

score
XxH

sum

 Ghi chú:
 Confirmation code=00H: các mẫu của hai bộ đệm là phù hợp;
 Confirmation code=01H: lỗi khi nhận gói;
 Confirmation code=08H: các mẫu của hai bộ đệm là không phù hợp;

1.4.5.Lệnh lưu vân tay:
o Dữ liệu gửi đi:
2 bytes
Header

4bytes

Module

1 byte
Package

2 bytes
Package

1 byte
Instruction

1 byte
buffer

2 bytes
Location

2 bytes
Checksum

0xEF01

address
xxxx

identifier
01H

length
06H


code
06H

number
BufferID

number
PageID

sum

o Dữ liệu trả về:
2 bytes
Header

4bytes
Module

1 byte
Package

2 bytes
Package

1 byte
Confirmation

2 bytes
Checksum


0xEF01

address
Xxxx

identifier
07H

length
03H

code
xxH

sum



Confirmation code=00H: lưu thành công;



Confirmation code=01H: lỗi khi nhận gói;



Confirmation code=0bH: địa chỉ PageID vượt ra ngoài thư viện ngón tay;




Confirmation code=18H: lỗi khi ghi lên bộ nhớ Flash;

SVTH: ........................................................................................

Trang 9


Đồ án môn học Vi Điều Khiển

GVHD :TS…………………….

1.4.6.Lệnh tìm dấu vân tay:
o Dữ liệu gửi đi:
2 bytes

4bytes

1 byte

2 bytes

1 byte

1 byte

2 bytes

2 bytes


2 bytes

Header

Module

Package

Packag

Instructio

buffer

Parameter

Parameter

Checks

address

identifie

n code

number

04H


BufferID

0xEF01

xxxx

e

r
01H

length
08H

um
StartPage

PageNum

sum

o Dữ liệu trả về:
2 bytes
Header

4bytes
Module

1 byte
Package


2 bytes
Package

1 byte
Confirmation

2 bytes
页页

2 bytes
页页

2 bytes
Checksum

0xEF01

address
xxxx

identifier
07H

length
7

code
xxH


PageID

MatchScore

sum

 Ghi chú:


StartPage: địa chỉ bắt đầu tìm kiếm;



PageNum: số ID cần tìm kiếm;



Confirmation code=00H: đã tìm được;



Confirmation code=01H: lỗi khi nhận gói;



Confirmation code=09H: không tìm thấy trong thư viện;

1.4.7.Lệnh xóa từng vân tay:
o Dữ liệu gửi đi:
2 bytes

Header

0xEF01

4bytes
Module

1 byte
Package

2 bytes
Package

1 byte
Instruction

2 bytes
Page

2bytes
number of

address

identifier

length

code


number

templates to

01H

07H

0cH

PageID

be deleted
N

Xxxx

2 bytes
Checksum

sum

o Dữ liệu trả về:
2 bytes
Header

4bytes
Module

0xEF01


address
Xxxx

1 byte
Package identifier

2 bytes
Package

1 byte
Confirmation

2 bytes
Checksum

07H

length
03H

code
xxH

sum

SVTH: ........................................................................................
10

Trang



Đồ án môn học Vi Điều Khiển

GVHD :TS…………………….

 Ghi chú:


Confirmation code=00H: xóa thành công;



Confirmation code=01H: lỗi khi nhận gói;



Confirmation code=10H: không xóa được mẫu;

1.4.8.Lệnh xóa toàn bộ vân tay:
o Dữ liệu gửi đi:
2 bytes
Header

4bytes
Module

1 byte
Package


2 bytes
Package

1 byte
Instruction

2 bytes
Checksum

0xEF01

address
Xxxx

identifier
01H

length
03H

code
0dH

0011H

o Dữ liệu trả về:
2 bytes
Header

4bytes

Module

1 byte
Package

2 bytes
Package

1 byte
Confirmation

2 bytes
Checksum

0xEF01

address
Xxxx

identifier
07H

length
03H

code
xxH

sum


 Ghi chú:


Confirmation code=00H: xóa thành công;



Confirmation code=01H: lỗi khi nhận gói;



Confirmation code=11H: lỗi khi xóa vân tay trong thư viện;

1.5.Kết nối với module R305:
 Thứ tự các chân kết nối với module R305:
Chân số
1
2
3
4

Tên
Vin
GND
TD
RD

Loại
in


in
out

Chức năng
Nguồn cung cấp
Chân nối đất
Truyền dữ liệu
Nhận dữ liệu

 Phương thức truyền dữ liệu: Truyền dữ liệu nối tiếp.Tốc độ baud mặc định là 57600 bps.
Có thể thiết lập tốc độ baud trong khoảng 9600 – 115200 bps.Định dạng khung truyền là 10 bit,bit
khởi đầu là bit thấp,theo sau là 8 bit dữ liệu,cuối cùng là bit kết thúc.
SVTH: ........................................................................................
11

Trang


Đồ án môn học Vi Điều Khiển

GVHD :TS…………………….

2.Tổng quan arduino:
2.1.Giới thiệu arduino :
 Arduino là bo mạch vi điều khiển mạch đơn được sử dụng để làm thiết bị điện tử cho các dự
án đa lĩnh vực theo cách tiếp cận dễ dàng đối với người sử dụng. Phần cứng bao gồm một
bảng mạch điện tử phần cứng dạng nguồn mở được thiết từ bộ vi xử lý 8-bit Atmel AVR ,
hoặc 32-bit Atmel ARM. Phần mềm cho phần cứng này bao gồm một trình biên dịch ngôn
ngữ lập trình chuẩn và một bộ nạp khởi động, để có thể thực hiện các lệnh trên bộ vi điều
khiển.

 Arduino được khởi đầu vào năm 2005 từ một dự án cho sinh viên tại Viện Thiết kế Tương
tác Ivrea tại Ivrea, Italia. Tại thời điểm của chương trình đó sinh viên thường sử dụng bo
mạch "BASIC Stamp" có chi phí tới 100$, xem ra là đắt đôi với sinh viên. Một trong những
người sáng lập, Massimo Banzi, hiện đang là giảng viên tại Ivrea.
 Một đồ án về phần cứng đã đóng góp vào một thiết kế hệ thống kết nối điện dẫn của sinh
viên người Colombia tên là Hernando Barragan. Sau khi các nền tảng hệ thống điện dẫn đã
được hoàn tất, các nhà nghiên cứu làm việc để làm cho hệ thống đó gọn nhẹ hơn, rẻ hơn, và
có sẵn cho cộng đồng nguồn mở. Trường này cuối cùng đã đóng cửa, do đó, các nhà nghiên
cứu, trong số họ là David Cuartielles, đã thúc đẩy ý tưởng phát triển về Arduino.
2.2.Kit arduino nano:
2.2.1.Giới thiệu arduino nano:
Arduino Nano là phiên bản nhỏ gọn của Arduino Uno R3 sử dụng MCU ATmega328P-AU dán, vì
cùng MCU nên mọi tính năng hay chương trình chạy trên Arduino Uno đều có thể sử dụng trên
Arduino Nano, một ưu điểm của Arduino Nano là vì sử dụng phiên bản IC dán nên sẽ có thêm 2
chân Analog A6, A7 so với Arduino Uno.

SVTH: ........................................................................................
12

Trang


Đồ án môn học Vi Điều Khiển

GVHD :TS…………………….

Hình a.1: Arduino nano

2.2.2Thông số kỹ thuật:
o


IC chính: ATmega328P-AU.

o

IC nạp và giao tiếp UART: CH340.

o

Điện áp cấp: 5VDC cổng USB hoặc 6-9VDC chân Raw.

o

Mức điện áp giao tiếp GPIO: TTL 5VDC.

o

Dòng GPIO: 40mA.

o

Số chân Digital: 14 chân, trong đó có 6 chân PWM.

o

Số chân Analog: 8 chân .

o

Flash Memory: 32KB (2KB Bootloader).


o

SRAM: 2KB

o

EEPROM: 1KB

o

Clock Speed: 16Mhz.

o

Kích thước: 18.542 x 43.18mm

3. Phần mềm visual studio:
3.1.Giới thiệu phần mềm visual studio :
Microsoft Visual Studio là một môi trường phát triển tích hợp (IDE) từ Microsoft. Nó được sử dụng
để phát triển chương trình máy tính cho Microsoft Windows, cũng như các trang web, các ứng dụng
web và các dịch vụ web. Visual Studio sử dụng nền tảng phát triển phần mềm của Microsoft
SVTH: ........................................................................................
13

Trang


Đồ án môn học Vi Điều Khiển


GVHD :TS…………………….

như Windows API, Windows Forms, Windows Presentation Fundation, Windows
store và Microsoft Silverlight. Nó có thể sản xuất cả hai ngôn ngữ máy và mã số quản lý.
Visual Studio bao gồm một trình soạn thảo mã hỗ trợ IntelliSense cũng như cải tiến mã nguồn.
Trình gỡ lỗi tích hợp hoạt động cả về trình gỡ lỗi mức độ mã nguồn và gỡ lỗi mức độ máy. Công cụ
tích hợp khác bao gồm một mẫu thiết kế các hình thức xây dựng giao diện ứng dụng, thiết kế web,
thiết kế lớp và thiết kế giản đồ cơ sở dữ liệu. Nó chấp nhận các plug-in nâng cao các chức năng ở
hầu hết các cấp bao gồm thêm hỗ trợ cho các hệ thống quản lý phiên bản (như Subversion) và bổ
sung thêm bộ công cụ mới như biên tập và thiết kế trực quan cho các miền ngôn ngữ cụ thể hoặc bộ
công cụ dành cho các khía cạnh khác trong quy trình phát triển phần mềm.
Visual Studio hỗ trợ nhiều ngôn ngữ lập trình khác nhau và cho phép trình biên tập mã và gỡ lỗi để
hỗ trợ (mức độ khác nhau) hầu như mọi ngôn ngữ lập trình. Các ngôn ngữ tích hợp gồm có C, C+
+ và C++/CLI (thông qua Visual C++), VB.NET (thông qua Visual Basic.NET), C# (thông
qua Visual C#) và F# (như của Visual Studio 2010). Hỗ trợ cho các ngôn ngữ khác như J+
+/J#, Python và Ruby thông qua dịch vụ cài đặt riêng rẽ. Nó cũng hỗ
trợ XML/XSLT, HTML/XHTML, JavaScript và CSS.
Microsoft cung cấp phiên bản "Express" (đối với phiên bản Visual Studio 2013 trở về trước) và
"Community" (đối với bản Visual Studio 2015) là phiên bản miễn phí của Visual Studio.
3.2. Giơí thiệu ngôn ngữ C#:
C# là một ngôn ngữ lập trình hướng đối tượng được phát triển bởi Microsoft, là phần khởi đầu cho
kế hoạch .NET của họ. Tên của ngôn ngữ bao gồm ký tự thăng theo Microsoft nhưng
theo ECMA là C#, chỉ bao gồm dấu số thường. Microsoft phát triển C# dựa trên C++ và Java. C#
được miêu tả là ngôn ngữ có được sự cân bằng giữa C++, Visual Basic, Delphi và Java.
C# được thiết kế chủ yếu bởi Anders Hejlsberg kiến trúc sư phần mềm nổi tiếng với các sản
phẩm Turbo Pascal, Delphi, J++, WFC.
 Mục tiêu của việc phát triển C#:
• Ngôn ngữ được dự định là một ngôn ngữ lập trình đơn giản, hiện đại, hướng đến nhiều mục
đích sử dụng, và là một ngôn ngữ lập trình hướng đối tượng.
• Ngôn ngữ và việc triển khai đáp ứng các nguyên tắc của ngành kỹ thuật phần mềm như kiểm

tra chặt chẽ kiểu dữ liệu, kiểm tra giới hạn mảng, phát hiện các trường hợp sử dụng các biến
chưa có dữ liệu, và tự động thu gom rác. Tính mạnh mẽ, sự bền bỉ, và năng suất của việc lập
trình là rất quan trọng đối với ngôn ngữ này.
SVTH: ........................................................................................
14

Trang


Đồ án môn học Vi Điều Khiển

GVHD :TS…………………….

• Ngôn ngữ sẽ được sử dụng để phát triển các thành phần của phần mềm theo hướng thích hợp
cho việc triển khai trong các môi trường phân tán.
• Khả năng di chuyển (portability) là rất quan trọng, đặc biệt là đối với những lập trình viên đã
quen với C và C++.
• Hỗ trợ quốc tế hóa .
• Ngôn ngữ sẽ được thiết kế để phù hợp với việc viết các ứng dụng cho cả hai hệ thống: hosted
và nhúng, từ các phần mềm quy mô lớn, đến các phần mềm chỉ có các chức năng đơn giản.
• Mặc dù các ứng dụng C# có tính kinh tế đối với các yêu cầu về bộ nhớ và chế độ xử lý, ngôn
ngữ này không cạnh tranh trực tiếp về hiệu năng và kích thước đối với ngôn
ngữ Choặc assembly.
 Đặc điểm ngôn ngữ C#:
C# là ngôn ngữ lập trình phản ánh trực tiếp nhất đến .NET Framework mà tất cả các chương
trình.NET chạy, và nó phụ thuộc mạnh mẽ vào framework này. Mọi dữ liệu cơ sở đều là đối tượng,
được cấp phát và hủy bỏ bởi trình dọn rác Garbage-Collector (GC), và nhiều kiểu trừu tượng khác
chẳng hạn như class, delegate, interface, exception... phản ánh rõ ràng những đặc trưng của .NET
runtime.
So sánh với C và C++, ngôn ngữ này bị giới hạn và được nâng cao ở một vài đặc điểm nào đó,

nhưng không bao gồm các giới hạn sau đây:
• Các con trỏ chỉ có thể được sử dụng trong chế độ không an toàn. Hầu hết các đối tượng được
tham chiếu an toàn, và các phép tính đều được kiểm tra tràn bộ đệm. Các con trỏ chỉ được sử
dụng để gọi các loại kiểu giá trị; còn những đối tượng thuộc bộ gom rác (garbage-collector)
thì chỉ được gọi bằng cách tham chiếu.
• Các đối tượng không thể được giải phóng tường minh.
• Chỉ có đơn kế thừa, nhưng có thể cài đặt nhiều interface trừu tượng (abstract interfaces).







Chức năng này làm đơn giản hóa sự thực thi của thời gian thực thi.
C# thì an-toàn-kiểu (typesafe) hơn C++.
Cú pháp khai báo mảng khác nhau("int[] a = new int[5]" thay vì "int a[5]").
Kiểu thứ tự được thay thế bằng tên miền không gian (namespace).
C# không có tiêu bản.
Có thêm Properties, các phương pháp có thể gọi các Properties để truy cập dữ liệu.

Có reflection.

B.THIẾT KẾ HỆ THỐNG:
 Sơ đồ khối của hệ thống:

KHỐI
CẢM
BIẾN
KHỐI

KHỐI
CHẤP
ĐIỀU
XỬKHIỂN
HÀNH


SVTH: ........................................................................................
(Module
R305)
(Vi(Máy
điều tính)
khiển)
15

Trang


Đồ án môn học Vi Điều Khiển

GVHD :TS…………………….

1.Chức năng hệ thống:
1.1.Lưu dấu vân tay:
Để thực hiện lưu dấu vân tay cần quét vân tay 2 lần và lưu vào bộ nhớ tạm sau đó so sánh 2
dấu vân tay,nếu 2 dấu vân tay trùng nhau thì tiến hành tổng hợp 2 dấu vân tay.Cuối cùng là lưu dấu
vân tay vào bộ nhớ flash của module R305.
 Lưu đồ thuật toán:

SVTH: ........................................................................................

16

Trang


Đồ án môn học Vi Điều Khiển

GVHD :TS…………………….

1.2.Tìm kiếm vân tay:
Để kiểm tra dấu vân tay,tiến hành quét vân tay và lưu vào bộ nhớ tạm,sau đó tìm kiếm dấu vân
tay trong thư viện bộ nhớ Module R305.Nếu trùng khớp thì quá trình kiểm tra hoàn thành.
 Lưu đồ thuật toán:
SVTH: ........................................................................................
17

Trang


Đồ án môn học Vi Điều Khiển

GVHD :TS…………………….

1.3.Xóa dấu vân tay:
Có thể xóa từng dấu vân tay hoặc tất cả dấu vân tay trong bộ nhớ thư viện module R305.Để xóa
từng dâu vân tay cần gửi một lệnh với ID cần xóa,với tất cả dấu vân tay chỉ cần gửi lệnh thì toàn bộ
thư viện vân tay sẽ bị xóa.
SVTH: ........................................................................................
18


Trang


Đồ án môn học Vi Điều Khiển

GVHD :TS…………………….

2.Chương trình điều khiển:
2.1.Chương trình trên VISUAL STUDIO:
 Lớp ConnectDB:
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.OleDb;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace vantay1
{
class ConnectDB
{
OleDbConnection myConnection = new OleDbConnection();
public void Connect()
{
try
{
myConnection.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;
Data Source=D:\Vantay\bin\Debug\CSDL.accdb; Persist Security Info=False;";
myConnection.Open();
}

catch { }
}
public OleDbDataReader SelectSQL(String sql)
{
OleDbCommand cmd = myConnection.CreateCommand();
cmd.CommandText = sql;
OleDbDataReader reader = cmd.ExecuteReader();
cmd.Dispose();
return reader;
}
public int UpdateSQL(String sql)
{
OleDbCommand cmd = myConnection.CreateCommand();
cmd.CommandText = sql;
int result = cmd.ExecuteNonQuery();
cmd.Dispose();
return result;
}
public void Close()
{
try
SVTH: ........................................................................................
19

Trang


Đồ án môn học Vi Điều Khiển

GVHD :TS…………………….


{
if (myConnection != null && myConnection.State == ConnectionState.Open)
{
myConnection.Close();
}
}
catch { }
}
}
}
 Lớp ConnectDB:
using Emgu.CV;
using Emgu.CV.Structure;
using System;
using System.Timers;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.Drawing.Imaging;
using System.Linq;
using System.Text;
using System.Threading;
using System.Windows.Forms;
using System.IO.Ports;
using System.IO;
using System.Drawing.Drawing2D;
using System.Drawing.Text;

namespace vantay1
{
public partial class Form1 : Form
{
Capture _capture;
private bool _captureInProgress;
private bool find;
private bool notif;
SerialPort P = new SerialPort();
SerialPort Q = new SerialPort();
string InputData = String.Empty; // Khai báo string buff dùng cho hiển thị dữ liệu sau này.
delegate void SetTextCallback(string text);
public Form1()
{
InitializeComponent();
string[] ports = SerialPort.GetPortNames();
try
SVTH: ........................................................................................
20

Trang


Đồ án môn học Vi Điều Khiển

GVHD :TS…………………….

{
P.PortName = ports[0];
P.ReadTimeout = 1000;

P.BaudRate = 57600;
P.DataBits = 8;
P.Parity = Parity.None;
P.StopBits = StopBits.One;
P.Open();
P.DataReceived += new SerialDataReceivedEventHandler(DataReceive);
}
catch (Exception ex)
{
MessageBox.Show("Lỗi kết nối vân tay", "thông báo", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
try
{
Q.PortName = ports[1];
Q.ReadTimeout = 1000;
Q.BaudRate = 9600;
Q.DataBits = 8;
Q.Parity = Parity.None;
Q.StopBits = StopBits.One;
Q.Open();
}
catch(Exception ex)
{
MessageBox.Show("Lỗi kết nối arduino", "thông báo", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
status2.ForeColor = Color.Red;
status.ForeColor = Color.Red;
if(P.IsOpen||Q.IsOpen)

{
status.Text = " Đã kết nối với ";
}
if (P.IsOpen)
{
status.Text = status.Text + ports[0];
}
if (Q.IsOpen)
{
status.Text = status.Text +" "+ ports[1];
}
}
public byte stringtobyte(string str)
SVTH: ........................................................................................
21

Trang


Đồ án môn học Vi Điều Khiển

GVHD :TS…………………….

{
int c = int.Parse(hextoint(str));
byte byte1 = (byte)c;
return byte1;
}
public string sinttohex(string a)
{

Int16 b = Convert.ToInt16(int.Parse(a));
string hex = b.ToString("X4");
return hex;
}
public string inttohex(int a)
{
Int16 b = Convert.ToInt16(a);
string hex = b.ToString("X4");
return hex;
}
public string ToHex(string input)
{
StringBuilder sb = new StringBuilder();
foreach (char c in input)
{ sb.AppendFormat("{0:X2} ", (int)c); }
return sb.ToString().Trim();
}
private void DataReceive(object obj, SerialDataReceivedEventArgs e)
{
InputData = P.ReadExisting();
InputData = ToHex(InputData);
if (
InputData != String.Empty
)
{
SetText(string.Concat(InputData, "\r\n"));
}
}
private void SetText(string text)
{

if (this.tbdulieu.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(SetText);
this.Invoke(d, new object[] { text });
}
else this.tbdulieu.Text += text;
}
private void btnLuu_Click(object sender, EventArgs e)
{
SVTH: ........................................................................................
22

Trang


Đồ án môn học Vi Điều Khiển

GVHD :TS…………………….

int i=0,a,b;
if (Int32.TryParse(cboID.Text,out a)==false)
{
MessageBox.Show("Sai định dạng ID", "Thử lại", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
if (Int32.TryParse(cboNgaySinh.Text.Replace("/", ""), out b) == false && cboNgaySinh.Text!
="")
{
MessageBox.Show("Sai định dạng ngày sinh", "Thử lại", MessageBoxButtons.OK,
MessageBoxIcon.Error);

}
else
{
if (P.IsOpen)
{
btnLuu.Enabled = false;
for (i = 0; i < dataGridView1.RowCount; i++)
{
if (dataGridView1.Rows[i].Cells["ID"].FormattedValue.ToString() == cboID.Text)
{
btnLuu.Enabled = true;
MessageBox.Show("Trùng ID", "Thông Báo", MessageBoxButtons.OK,
MessageBoxIcon.Error);
i = i + 1;
break;
}
}
if (dataGridView1.Rows[i - 1].Cells["ID"].FormattedValue.ToString() != cboID.Text)
{
if (find)
{
btntimkiem.Text = "Tìm kiếm";
find = !find;
}
timer1.Enabled = false;
timer3.Enabled = false;
timer2.Enabled = true;
}
}
else

{
MessageBox.Show("COM chưa mở.", "Thông báo", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
SVTH: ........................................................................................
23

Trang


Đồ án môn học Vi Điều Khiển

GVHD :TS…………………….

}
private void btnThoat_Click(object sender, EventArgs e)
{
DialogResult dlr = MessageBox.Show("Bạn muốn xóa tất cả", "thông báo",
MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
if (dlr == DialogResult.Yes)
{
empty();
Thread.Sleep(200);
if (InputData.Substring(InputData.Length - 8, 2) == "00")
{
for (int i = dataGridView1.RowCount-1; i >=0; i=i-1)
{
string a = dataGridView1.Rows[i].Cells["ID"].FormattedValue.ToString();
String sql = "Delete from NhanVien where (ID = '" + a + "')";

Program.Database.UpdateSQL(sql);
loadData();
}
status2.Text = "Tất cả dữ liệu đã được xóa";
}
else
{
MessageBox.Show("quá trình xóa thất bại", "thông báo");
}
}
}
private void btnCapNhat_Click(object sender, EventArgs e)
{
if (cboTen.Text != "")
{
String sql = "update NhanVien Set Ten = '" + cboTen.Text + "' where (ID = '" + cboID.Text +
"')";
Program.Database.UpdateSQL(sql);
loadData();
}
if (cboNgaySinh.Text != "")
{
String sql1 = "update NhanVien Set NgaySinh = '" + cboNgaySinh.Text + "' where (ID = '" +
cboID.Text + "')";
Program.Database.UpdateSQL(sql1);
loadData();
}
if (cboBoPhan.Text != "")
{
String sql2 = "update NhanVien Set BoPhan = '" + cboBoPhan.Text + "' where (ID = '" +

cboID.Text + "')";
SVTH: ........................................................................................
24

Trang


Đồ án môn học Vi Điều Khiển

GVHD :TS…………………….

Program.Database.UpdateSQL(sql2);
loadData();
}
if (cboDiaChi.Text != "")
{
String sql3 = "update NhanVien Set DiaChi = '" + cboDiaChi.Text + "' where (ID = '" +
cboID.Text + "')";
Program.Database.UpdateSQL(sql3);
loadData();
}
if (pbchonanh.Image!=null)
{
MemoryStream str = new MemoryStream();
pbchonanh.Image.Save(str, ImageFormat.Jpeg);
byte[] pic1 = str.ToArray();
if (Convert.ToBase64String(pic1).Length < 500000)
{
String sql4 = "update NhanVien Set Anh = '" + Convert.ToBase64String(pic1) + "' where (ID
= '" + cboID.Text + "')";

Program.Database.UpdateSQL(sql4);
loadData();
}
else { MessageBox.Show("Kích thước ảnh quá lớn", "thông báo", MessageBoxButtons.OK,
MessageBoxIcon.Error); }
}
}
private void btnXoa_Click(object sender, EventArgs e)
{
if (cboID.Text != "")
{
DialogResult dlr1 = MessageBox.Show("Bạn muốn xóa ID " + cboID.Text, "Thông báo",
MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
if (dlr1 == DialogResult.Yes)
{
deletechar(Convert.ToByte(cboID.Text));
Thread.Sleep(200);
if (InputData.Substring(InputData.Length - 8, 2) == "00")
{
status2.Text = "Đã xóa ID" + cboID.Text;
String sql = "Delete from NhanVien where (ID = '" + cboID.Text + "')";
Program.Database.UpdateSQL(sql);
loadData();
}
else
{
SVTH: ........................................................................................
25

Trang



×