You are on page 1of 102

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP. HỒ CHÍ MINH

ĐỒ ÁN TỐT NGHIỆP

THIẾT KẾ VÀ THI CÔNG MÔ HÌNH NHÀ THÔNG


MINH

NGÀNH: KỸ THUẬT ĐIỆN TỬ- VIỄN THÔNG


GIẢNG VIÊN HƯỚNG DẪN: ThS. TRẦN DUY CƯỜNG

Sinh viên thực hiện: MSSV: Lớp:


Mai Xuân Hoàn 1911790007 19DDTA1
Nguyễn Đại Long 1911790164 19DDTA1

TP. Hồ Chí Minh, tháng , năm


VIỆN KỸ THUẬT HUTECH BM01/QT05/ĐTKT

PHIẾU ĐĂNG KÝ
ĐỀ TÀI ĐỒ ÁN/KHÓA LUẬN TỐT NGHIỆP

Hệ: Chính Quy (CQ, LT, B2, VLVH)

1. Họ và tên sinh viên/ nhóm sinh viên đăng ký đề tài (sĩ số trong nhóm 01):

(1) Nguyễn Đại Long MSSV: 1911790164 Lớp:19DDTA1


Điện thoại: 0855665278 Email:nguyendailong89@gmail.com
(2) Mai Xuân Hoàn MSSV: 1911790007 Lớp: 19DDTA1
Điện thoại: 0941428567 Email:xuanhoan.at2@gmail.com
Ngành : Kỹ thuật Điện tử - Viễn thông
Chuyên ngành : Điện tử - Viễn thông
2. Tên đề tài đăng ký : Thiết Kế và Thi Công Mô Hình Nhà Thông Minh
Sinh viên đã hiểu rõ yêu cầu của đề tài và cam kết thực hiện đề tài theo tiến
độ và hoàn thành đúng thời hạn.

TP. HCM, ngày 30 tháng 01 năm 2023


Giảng viên hướng dẫn Sinh viên đăng ký
(Ký và ghi rõ họ tên) (Ký và ghi rõ họ tên)
MÃ ĐỀ TÀI: 198
Viện Kỹ thuật Hutech

PHIẾU GIAO NHIỆM VỤ


THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP
(Mỗi sinh viên một phiếu, GVHD ghi rõ tên đề tài và nhiệm vụ của từng sinh viên.
GVHD chuyển cho SV để nộp về VP Viện.)

3. Sinh viên thực hiện đề tài


Họ tên : Mai Xuân Hoàn MSSV: 1911790007 Lớp :19DDTA1
Điện thoại :0941428567 Email: xuanhoan.at2@gmail.com
Ngành : Điện tử - Viễn thông
4. Tên đề tài: Thiết Kế Và Thi Công Mô Hình Nhà Thông Minh.
5. Nhiệm vụ thực hiện đề tài:
- Tổng quan về nhà thông minh.
- Tìm hiểu và thiết kế mô hình mở khoá cửa bằng thẻ từ, bằng vân tay, báo cháy/khói
trong nhà.
- Xây dựng giải thuật và thiết kế mô hình nhà thông minh.
- Thi công mô hình.
- Viết quyển đồ án tốt nghiệp theo chuẩn của Viện Kỹ thuật Hutech.

TP. HCM, ngày … tháng … năm 20…


Sinh viên thực hiện Giảng viên hướng dẫn
(Ký và ghi rõ họ tên) (Ký và ghi rõ họ tên)
MÃ ĐỀ TÀI: 198
Viện Kỹ thuật Hutech

PHIẾU GIAO NHIỆM VỤ


THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP
(Mỗi sinh viên một phiếu, GVHD ghi rõ tên đề tài và nhiệm vụ của từng sinh viên.
GVHD chuyển cho SV để nộp về VP Viện.)

6. Sinh viên thực hiện đề tài


Họ tên : Nguyễn Đại Long MSSV:1911790164 Lớp:19DDTA1
Điện thoại : 0855665278 Email: nguyendailong89@gmail.com
Ngành : Điện tử - Viễn thông
7. Tên đề tài: Thiết Kế và Thi Công Mô Hình Nhà Thông Minh
8. Nhiệm vụ thực hiện đề tài:
- Tổng quan về nhà thông minh.
- Tìm hiểu khóa cửa thông minh mở bằng mật khẩu số, mở từ xa bằng điện
thoại (app).
- Thiết kế mô hình bật tắt thiết bị từ xa qua internet.
- Xây dựng giải thuật và thiết kế mô hình nhà thông minh.
- Thi công mô hình.
- Viết quyển đồ án tốt nghiệp theo chuẩn của Viện Kỹ thuật Hutech.

Sinh viên thực hiện TP. HCM, ngày 20 tháng 3 năm 2023
(Ký và ghi rõ họ tên) Giảng viên hướng dẫn
(Ký và ghi rõ họ tên)
LỜI CAM ĐOAN

Tôi cam đoan đây là công trình nghiên cứu của tôi.
Các số liệu, kết quả nêu trong luận văn là trung thực và chưa từng được ai công
bố trong bất kì một công trình nào khác.
Tp. Hồ Chí Minh, ngày ... tháng ... năm 2023

(Ký và ghi rõ họ tên)


LỜI CẢM ƠN

Trong thời gian làm đồ án tốt nghiệp, chúng em đã nhận được nhiều sự giúp
đỡ, đóng góp ý kiến và chỉ bảo nhiệt tình của thầy cô, gia đình và bạn bè.

Chúng em xin gửi lời cảm ơn chân thành đến thầy ThS.Trần Duy Cường,
người đã tận tình hướng dẫn, chỉ bảo chúng em trong suốt quá trình làm đồ án tốt
nghiệp.

Chúng em cũng xin chân thành cảm ơn các thầy cô giáo trong trường Đại học
Công Nghệ Tp.HCM - HUTECH nói chung, các thầy cô giảng dạy ngành Điện Tử -
Viễn Thông nói riêng đã dạy dỗ cho chúng em kiến thức về các môn đại cương cũng
như các môn chuyên ngành, giúp chúng em có được cơ sở lý thuyết vững vàng và tạo
điều kiện giúp đỡ chúng em trong suốt quá trình học tập.

Với điều kiện thời gian, kinh tế cũng như kinh nghiệm còn hạn chế của một
học viên, đồ án này không thể tránh khỏi được những sự thiếu sót. Chúng em rất
mong nhận được sự chỉ bảo, đóng góp ý kiến của các thầy cô để chúng em có điều
kiện bổ sung, nâng cao nhận thức, kinh nghiệm để giúp chúng em ngày một hoàn
thiện bản thân mình hơn.

Cuối cùng, chúng em xin chân thành cảm ơn gia đình và bạn bè, đã luôn tạo
điều kiện, quan tâm, giúp đỡ, động viên chúng em trong suốt quá trình học tập và
hoàn thành đồ án tốt nghiệp.

Chúng em xin kính chúc các thầy cô luôn luôn khỏe mạnh và ngày một thành
công hơn trên con đường giảng dạy của mình.

Chúng em xin trân trọng cảm ơn.

ii
TÓM TAT
Thời đại 4.0 - thời đại của công nghệ, mọi thứ đang dần được công nghệ hóa,
hiện đại hóa và Smart home thì cần có smartlock. Công nghệ hiện đại ngày
càng phát triển, những chiếc khóa cửa thông minh dần thay thế những khóa
chìa truyền thống. Khóa cửa thông minh tốt giúp hạn chế những nguy cơ nhà
bị đột nhập, mất cắp, bảo vệ an toàn những tài sản có giá trị trong gia đình
bạn.
Thiết kế khóa cửa thông minh tại thời điểm này không phải là quá sớm hay
mới mẻ nhưng đó cũng chưa là muộn khi xã hội đang dần tiếp cận gần hơn và
rất ưa chuộng với thiết bị điện tử thông minh có tính bảo mật cao. Trong vài
năm trở lại đây, nhu cầu sử dụng khóa thông minh ngày càng trở nên phổ
biến, đặc biệt là các khu chung cư, biệt thự cao cấp.
Khóa cửa thông minh là một thiết bị cơ điện khác biệt với các loại khóa truyền
thống có tác dụng thực hiện các nhiệm vụ đóng/mở khi nhận được lệnh từ
một thiết bị được xác thực. Smartlock sử dụng kết nối không dây với một
khóa mã để thực hiện quá trình xác nhận. Khóa cửa thông minh cũng đồng
thời nhận diện bất kỳ sự tiếp cận nào và gửi thông báo về các tình huống khẩn
cấp khác liên quan đến tình trạng của thiết bị.
Mặt khác, việc phát triển không ngừng của vi xử lý đã cho ra đời nhiều loại
sản phẩm thông minh nhỏ gọn, tích hợp nhiều chức năng cho người dùng dễ sử
dụng. Không thể không kể đến kit Arduino- một sản phẩm được sử dụng trên
toàn cầu và có cộng đồng người dùng rất lớn. Kit Arduino có thể kết hợp với
nhiều module khác để tạo nên những ứng dụng thiết thực cho cuộc sống hiện
đại ngày nay.
Với những đặc tính trên, em đã quyết định thực hiện mô hình bao gồm
Arduino, module cảm biến vân tay, bàn phím, thẻ từ, và mở khóa từ xa thông
qua điện thoại để làm bộ khóa cửa thông minh.

iii
ABSTRACT
The 4.0 era - the age of technology, everything is gradually being modernized and
modernized, and Smart home requires a smartlock. Modern technology is
increasingly developing, smart door locks gradually replace traditional key locks. A
good smart door lock helps limit the risk of home being broken into, stolen, and safely
protects valuable assets in your family. Smart door lock design at this time is not too
early or new, but it is not too late when society is gradually approaching closer and
is very popular with smart electronic devices with high security. In the past few years,
the need to use smart locks has become more and more popular, especially in high-
class apartment buildings and villas. A smart door lock is an electromechanical device
different from traditional locks that performs opening/closing tasks when receiving
commands from an authenticated device. Smartlock uses a wireless connection with
a code lock to perform the process confirm. The smart door lock also recognizes any
access and sends notifications about other emergencies related to the device's
condition. On the other hand, the continuous development of microprocessors has
produced a variety of compact smart products, integrating many functions for easy
use by users. It is impossible not to mention the Arduino kit - a product that is used
globally and has a very large user community. The Arduino Kit can be combined with
many other modules to create practical applications for today's modern life. With the
above characteristics, I decided to make a model including Arduino, fingerprint
sensor module, keyboard, magnetic card, and remote unlocking via phone to make a
smart door lock.

iv
MỤC LỤC

LỜI CAM ĐOAN ......................................................................................... i


LỜI CẢM ƠN. ............................................................................................. ii
TÓM TẮT .................................................................................................. iii
THUẬT NGỮ VIẾT TẮT ........................................................................ viii
DANH MỤC HÌNH ẢNH .......................................................................... ix
DANH MỤC BẢNG BIỂU ........................................................................ xi
CHƯƠNG 1: TỔNG QUAN VỀ NHÀ THÔNG MINH, KHÓA THÔNG
MINH ...............................................................................................................1
1.1 Lý do chọn đề tài ....................................................................................1
1.2 Mục tiêu ..................................................................................................2
1.3 Giới thiệu về khóa thông minh ...............................................................3
1.3.1 Khái quát về khóa thông minh ......................................................3
1.3.2 Các phương thức mở khóa trong đồ án .........................................7
1.3.3 Ưu nhược điểm của khóa cửa thông minh ....................................8
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT VỀ CÁC LINH KIỆN ..........................10
2.1.1 Giới thiệu về Board Arduino Uno ...............................................10
2.1.1.1 Khái quát về Arduino .............................................................10
2.1.1.2 Các thông số kỹ thuật board Arduino Uno ............................12
2.1.2 Giới thiệu về Board Arduino Mega 2560 ...................................15
2.1.2.1 Khái quát về Arduino Mega 2560 ..........................................15
2.1.2.2 Thông số kỹ thuật: ..................................................................16
2.2 Nhận dạng vân tay với cảm biến vân tay AS608 ..................................20
2.2.1 Sơ lược về dấu vân tay và nhận dạng vân tay .............................20
2.2.1.1 Khái niệm về dấu vân tay .......................................................20
2.2.1.2 Nguyên lý hoạt động cơ bản của nhận dạng vân tay..............20
2.2.1.3 Các bước xử lý trong quá trình nhận dạng vân tay ................25

v
2.2.2 Giới thiệu về cảm biến vân tay AS608 ........................................21
2.2.2.1 Nguyên lý hoạt động ..............................................................22
2.2.2.2 Các đặc tính ............................................................................22
2.2.2.3 Thông số kỹ thuật ...................................................................23
2.2.2.4 Giao tiếp phần cứng ...............................................................24
2.2.2.5 Giao thức truyền thông nối tiếp không đồng bộ UART .........25
2.3 Giới thiệu công nghệ RFID ...................................................................28
2.3.1 Module RFID-RC522 ..................................................................29
2.3.1.1 Thông số kỹ thuật ...................................................................29
2.3.1.2 Tính năng và đặc điểm ...........................................................30
2.3.1.3 Chân kết nối ...........................................................................31
2.3.1.4 Thẻ từ RFID ...........................................................................31
2.4 Bàn phím ma trận 4x4 (KEYPAD 4X4) ...............................................33
2.5 Giới thiệu về Module SIM 900A ..........................................................34
2.5.1 Giới thiệu chung ..........................................................................34
2.5.2 Thông số kỹ thuật Module SIM900A .........................................35
2.5.3 Sơ đồ chân Module GSM GPRS .................................................35
2.5.4 Tập lệnh AT của Module SIM900A ...........................................36
2.6 Màn hình LCD 16x2 .............................................................................38
2.6.1 Giới thiệu .....................................................................................38
2.6.2 Module giao tiếp I2C giữa LCD 16x2 với ARDIUNO ...............39
2.7 Cảm biến nhiệt độ DS18b20 .....................................................................40
2.8 Cảm biến MQ-135 ....................................................................................42
CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ...................................................44
3.2 Tính toán và thiết kế mạch ....................................................................46
3.2.1 Khối xử lý trung tâm ...................................................................46
3.2.2 Khối cảm biến vân tay .................................................................47
3.2.3 Khối Module thu phát sóng di động SIM 900A ..........................49
3.2.4 Khối Module đọc ghi thẻ từ RFID-RC522 ..................................50

vi
3.2.5 Khối bàn phím .............................................................................53
3.2.6 Khối nguồn ..................................................................................54
3.2.7 Khối Relay, khoá điện .................................................................55
CHƯƠNG 4: THI CÔNG HỆ THỐNG .........................................................58
4.2 Giới thiệu phần mềm lập trình ARDUINO IDE ...................................58
4.3 Lập trình code và nạp cho vi điều khiển ...............................................60
4.3.1 Đăng ký dấu vân tay cho cảm biến AS608 .................................60
4.3.2 Xóa dấu vân tay trong bộ nhớ của AS608...................................61
4.1.1 Nạp code cho Ardiuno Mega 2560 .............................................62
4.2 Mô hình sau khi đã hoàn thành .............................................................64
KẾT LUẬN.....................................................................................................71
TÀI LIỆU THAM KHẢO ..............................................................................72
CODE NẠP VÀ CHÚ THÍCH .......................................................................73
1. Code đăng ký dấu vân tay cho cảm biến AS608 .........................................73
2. Code xóa dấu vân tay trong bộ nhớ của AS608 ..........................................78
3. Code nạp cho ARDIUNO MEGA 2560 .....................................................79
4. Code nạp dùng cho hệ thống báo cháy .......................................................85

vii
THUẬT NGỮ VIẾT TAT

DSP Digital Signal Processor Bộ xử lý tín hiệu số


GND Ground Đất

I2C Inter-Integrated Circuit giao tiếp nối tiếp 2 dây


IC Integrated circuit Vi mạch

ICSP In Circuit serial Programming Lập trình nối tiếp trong mạch

IDE Integrated Development Environment Môi trường phát triển tích hợp
PCB Printed Circuit Board Bảng mạch PCB
PWM Pulse-width modulation Điều chế độ rộng xung
RF Radio Frequency Tần số vô tuyến
RFID Radio Frequency Identification Nhận dạng vô tuyến điện

RX Reciever Phía thu


SCK Serial Clock Xung liên tiếp
SPI Serial Peripheral Interface Giao diện Ngoại vi Nối tiếp
SRAM Static Random Access Menory Bộ nhớ truy cập ngẫu nhiên tĩnh

TX Transmiter Phía phát


Universal Asynchronous Giao thức truyền thông nối tiếp
UART Receiver/Transmitter không đồng bộ

viii
DANH MỤC HÌNH ẢNH
Hình 1.1 Hình ảnh về khóa thông minh thực tế ....................................................... 3
Hình 1.2 Khóa thông minh mở khóa bằng vân tay .................................................. 4
Hình 1.3 Khóa thông minh mở khóa bằng thẻ từ, mã số ......................................... 5
Hình 1.4 Khóa thông minh mở khóa bằng điện thoại, app, wifi, bluetooth ............. 6
Hình 2.1 Các loại board Arduino ........................................................................... 10
Hình 2.2 Hình ảnh thực tế về Arduino Uno ........................................................... 11
Hình 2.3 Hình ảnh thực tế về Ardiuno Mega 2560 ................................................ 15
Hình 2.4 Sơ đồ chân Ardiuno Mega 2560 ............................................................. 18
Hình 2.5 Hình ảnh thực tế về cảm biến vân tay AS608 ......................................... 22
Hình 2.6 Giao thức truyền thông của AS608 ......................................................... 25
Hình 2.7 Sơ đồ quá trình xử lý ảnh ........................................................................ 26
Hình 2.8 Quá trình so sánh vân tay ........................................................................ 27
Hình 2.9 Chip bảo mật trong thẻ RFID .................................................................. 29
Hình 2.10 Hình ảnh thực tế Module RFID-RC522 ................................................ 29
Hình 2.11 Thẻ từ để quét với Module RFID .......................................................... 31
Hình 2.12 Hình ảnh thực tế của bàn phím ma trận 4x4 ......................................... 33
Hình 2.13 Hình ảnh thực tế về Module SIM900A ................................................. 34
Hình 2.14 Hình ảnh các chân thực tế về Module SIM900A .................................. 36
Hình 2.15 Hình ảnh thực tế màn hình LCD 16x2 .................................................. 38
Hình 2.16 Hình ảnh thực tế Module giao tiếp I2C ................................................. 39
Hình 2.17 Hình ảnh thực tế I2C kết nối với arduino Mega 2560 .......................... 40
Hình 2.18 Hình ảnh cảm biến DS18B20 ................................................................ 41
Hình 2.19 Hình ảnh cảm biến MQ-135.................................................................. 42
Hình 3.1 Sơ đồ khối hệ thống ................................................................................ 44
Hình 3.2 Board Arduino Mega 2560 ..................................................................... 46
Hình 3.3 Khối xử lý và khối cảm biến vân tay ...................................................... 47
Hình 3.4 Phương thức truyền thông nối tiếp UART .............................................. 48
ix
Hình 3.5 Cảm biến vân tay kết nối Arduino Mega ................................................ 49
Hình 3.6 Module SIM900A kết nối Arduino Mega ............................................... 50
Hình 3.7 Phương thức giao tiếp SPI ...................................................................... 51
Hình 3.8 Module đọc thẻ từ kết nối Arduino Mega ............................................... 52
Hình 3.9 Hình ảnh thực tế của bàn phím ma trận 4x4 ........................................... 53
Hình 3.10 Hình ảnh nguồn Adapter 12V 3A thực tế ............................................. 54
Hình 3.11 Nguồn pin 9V dự phòng........................................................................ 55
Hình 3.12 Dây cáp cấp nguồn cho Arduino ........................................................... 55
Hình 3.13 Hình ảnh Relay thực tế .......................................................................... 55
Hình 3.14 Khóa điện 12V ...................................................................................... 57
Hình 4.1 Lưu đồ giải thuật ..................................................................................... 58
Hình 4.2 Giao diện phần mềm lập trình Arduino IDE ........................................... 59
Hình 4.3 Đăng ký vân tay thành công .................................................................... 61
Hình 4.4 Chạy thử 3 chức năng mở cửa................................................................. 63
Hình 4.5 Mặt trước mô hình .................................................................................. 64
Hình 4.6 Mặt trong mô hình................................................................................... 65
Hình 4.7 Module SIM900A trên mô hình thực tế .................................................. 66
Hình 4.8 Module đọc thẻ từ trên mô hình thực tế .................................................. 67
Hình 4.9 Cảm biến vân tay trên mô hình thực tế ................................................... 68
Hình 4.10 Module bàn phím trên mô hình thực tế ................................................. 68

x
DANH MỤC BẢNG BIỂU
Bảng 2.1 Thông số kỹ thuật của Arduino Uno...................................................... 13
Bảng 2.2 Thông số kỹ thuật của cảm biến vân tay AS608O ................................. 23
Bảng 2.3 Chức năng các chân của cảm biến vân tay ............................................ 24
Bảng 2.4 Sơ đồ các chân của màn hình LCD 16x2............................................... 38

xi
CHƯƠNG 1: TỔNG QUAN VỀ NHÀ THÔNG
MINH, KHOÁ THÔNG MINH

1.1. Lý do chọn đề tài:

“Nhà thông minh” (tiếng Anh: home automation, domotics, smart


home hoặc Intellihome) là kiểu nhà được lắp đặt các thiết bị điện, điện tử có
thể được điều khiển hoặc tự động hoá hoặc bán tự động. Thay thế con người
trong thực hiện một hoặc một số thao tác quản lý, điều khiển. Hệ thống điện
tử này giao tiếp với người dùng thông qua bảng điện tử đặt trong nhà, ứng
dụng trên điện thoại di động, máy tính bảng hoặc một giao diện web.

Nhờ ứng dụng các công nghệ như hồng ngoại, điện thoại thông minh, IoT,
công nghệ đám mây…Nhà thông minh có thể tự động giúp bạn làm những
công việc trong nhà. Với những nhà đầu tư thông minh, họ luôn đánh giá cao
một căn nhà có thể tự động hóa.

Khi làm một nhà thông minh, có nghĩa là bạn đang dùng công nghệ để
làm cuộc sống thoải mái hơn. Chúng sẽ giảm khối lượng công việc của bạn.
Giúp bạn có nhiều thời gian thư giãn chứ không làm bạn lười đi.

Thời đại 4.0 - thời đại của công nghệ, mọi thứ đang dần được công nghệ
hóa, hiện đại hóa và Smart home thì cần có smartlock. Công nghệ hiện đại
ngày càng phát triển, những chiếc khóa cửa thông minh dần thay thế những
khóa chìa truyền thống. Khóa cửa thông minh tốt giúp hạn chế những nguy
cơ nhà bị đột nhập, mất cắp, bảo vệ an toàn những tài sản có giá trị trong gia
đình bạn.
Thiết kế khóa cửa thông minh tại thời điểm này không phải là quá sớm
hay mới mẻ nhưng đó cũng chưa là muộn khi xã hội đang dần tiếp cận gần
hơn và rất ưa chuộng với thiết bị điện tử thông minh có tính bảo mật cao.

1
Trong vài năm trở lại đây, nhu cầu sử dụng khóa thông minh ngày càng trở
nên phổ biến, đặc biệt là các khu chung cư, biệt thự cao cấp.
Khóa cửa thông minh là một thiết bị cơ điện khác biệt với các loại khóa
truyền thống có tác dụng thực hiện các nhiệm vụ đóng/ mở khi nhận được
lệnh từ một thiết bị được xác thực. Smartlock sử dụng kết nối không dây với
một khóa mã để thực hiện quá trình xác nhận. Khóa cửa thông minh cũng
đồng thời nhận diện bất kỳ sự tiếp cận nào và gửi thông báo về các tình
huống khẩn cấp khác liên quan đến tình trạng của thiết bị.
Mặt khác, việc phát triển không ngừng của vi xử lý đã cho ra đời nhiều
loại sản phẩm thông minh nhỏ gọn, tích hợp nhiều chức năng cho người dùng
dễ sử dụng. Không thể không kể đến kit Arduino- một sản phẩm được sử
dụng trên toàn cầu và có cộng đồng người dùng rất lớn. Kit Arduino có thể
kết hợp với nhiều module khác để tạo nên những ứng dụng thiết thực cho
cuộc sống hiện đại ngày nay.
Với những đặc tính trên, em đã quyết định thực hiện mô hình bao gồm
Arduino, module cảm biến vân tay, bàn phím, thẻ từ, và mở khóa từ xa thông
qua điện thoại để làm bộ khóa cửa thông minh.
Phù hợp với một đề tài tốt nghiệp vì chi phí rẻ hợp với sinh viên, có
tính liên kết với nhiều môn học, mang tính thực tiễn cao.

1.2. Mục tiêu:

- Tìm hiểu và nghiên cứu về kit Arduino, module cảm biến vân tay
AS608, thiết bị điện và cách kết nối giữa các module để hoàn
thành mô hình hoàn thiện.

- Xây dựng hệ thống quét dấu vân tay để điều khiển đóng mở cửa
qua cảm biến vân tay và dữ liệu vân tay sẽ được gửi lên máy tính
qua cổng truyền thông giao tiếp.
- Xây dựng mật khẩu qua ma trận bàn phím 4x4, và hiển thị lên
màn hìnhLCD.
2
- Kết nối mudun RFID để quá trình mở cửa nhanh nhất, sử dụng
ModunSIM 900A để điều khiển mở cửa từ xa bằng cuộc gọi.

- Thiết kế hoàn chỉnh mô hình thực tế.

- Tiến hành chạy thử nghiệm mô hình hệ thống.

1.3. Giới thiệu về khóa thông minh:

Hình 1.1: Hình ảnh về khóa thông minh thực tế


1.3.1. Khái quát về khóa thông minh
Khóa cửa thông minh còn gọi là khóa cửa kỹ thuật số (Digitallock), là
loại khóa được tích hợp rất nhiều tính năng mở cửa hiện đại như dùng vân tay,
thẻ từ, mã số, thậm chí là mở cửa qua bluetooth, bằng điện thoại, app, wifi.
Đây là loại khóa cửa ứng dụng khoa học kĩ thuật hiện đại với thiết kế đặc
biệt sử dụng mạch điện tử thông qua nguồn điện 4V để hoạt động hoặc sử
dụng pin sạc nhiều lần. Do đó, không cần sử dụng những chiếc chìa khóa cơ
thông thường để mở cửa và quên đi nỗi lo khi làm rơi, mất chìa hoặc quên chìa
3
khi ra khỏi nhà như các dòng khóa cơ truyền thống.

Các tính năng của khóa cửa thông minh điện tử:

1.3.2. Mở khóa bằng vân tay

Hình 1.2: Khóa thông minh mở khóa bằng vân tay

Khóa thông minh mở khóa bằng vân tay trong ứng dụng đời sống hàng
ngày có thiết kế tương tự Hình 1.2.Tính năng này giúp khóa cửa thông minh
nâng tính bảo mật và an toàn lên rất cao và được nhiều người ưa chuộng.
Khóa ứng dụng công nghệ sinh trắc học vân tay - đặc trưng nhận diện của
mỗi người, những lí thuyết tưởng chừng chỉ áp dụng trong quản lí con người,
điều tra tội phạm trong hình sự.
Chỉ có những người cài đặt trên hệ thống vân tay mới có khả năng mở cửa,
đảm bảo an toàn tối đa cho gia đình bạn. Bất kì ai, dù là người trong nhà nếu
không cài đặt trên hệ thống vân tay của khóa cửa thông minh này cũng không
thể mở cửa. Sản phẩm này thường được áp dụng tại nhiều chung cư, nhà phố
cao cấp hay bất kì nơi nào đòi hỏi yêu cầu bảo mật cao.

1.3.3. Mở khóa bằng thẻ từ, mã số

4
Hình 1.3: Khóa thông minh mở khóa bằng thẻ từ, mã số

Khóa thông minh mở khóa bằng thẻ từ, mã số rất phổ biến rồi, không cần
giới thiệu quá nhiều, chúng có kiểu dáng tương tự như loại khóa trên Hình
1.3. Thay vì dùng những chiếc chìa khóa thông thường, bạn chỉ cần quệt nhẹ
thẻ từ vào ổ khóa cửa, cửa của bạn đã được mở dễ dàng. Thẻ từ thường được
sử dụng tại các hệ thống khách sạn, resort nhằm đảm bảo sự an toàn và thoải
mái cho du khách. Hơn nữa, khóa từ rất dễ sử dụng và có thể cung cấp số
lượng thẻ lớn. Khi kết hợp với các sản phẩm khác như hệ thống quản lí khách
sạn thông minh, chủ doanh nghiệp sẽ rất dễ quản lí.

5
1.3.4. Điều khiển từ xa bằng điện thoại, app, wifi, bluetooth

Hình 1.4: Khóa thông minh mở khóa bằng điện thoại, app, wifi, bluetooth

Khóa thông minh mở khóa bằng điện thoại, app, wifi, bluetooth trong
thực tế sẽ tương tự như Hình 1.4. Tiện lợi và hữu dụng là thế mạnh của
dòng khóa cửa thông minh này. Khi sử dụng loại khóa này, bạn không cần
phải lo lắng về những bất cập mà các dòng khóa khác đem đến như kẹt
khóa, quên chìa… Hơn nữa, chủ nhà hoàn toàn có thể chia sẻ các phím ảo cho
người khác nhưng sẽ bị giới hạn về thời gian. Vì thế, những vị khách này chỉ
có thể truy cập khóa thông minh cũng như vào được nhà khi chủ nhà cho
phép. Khóa thông minh sẽ gửi thông tin tín hiệu cho chủ nhà khi có người
bước vào và ra khỏi nhà. Chủ nhà cũng có thể hủy lệnh mở cửa bất kì khi
nào, đặc biệt trong tình trạng cấp bách.

6
1.3.5. Mở cửa bằng chìa cơ dự phòng
Khi tất cả những tính năng trên của khóa cửa thông minh đều có vấn đề
và gặp trục trặc, bạn vẫn có thể sử dụng chìa cơ để mở. Dù hiện đại đến đâu
cũng sẽ không tránh khỏi được những sai sót và những trường hợp bất khả
kháng. Do đó, tính năng này bắt buộc phải có ở mỗi chiếc khóa cửa thông
minh.

- Các loại cửa khóa cửa thông minh có thể lắp đặt:

Hầu hết các loại chất liệu làm cửa đều có thể lắp được những chiếc khóa
cửa thông minh. Từ cửa nhôm kính, cửa gỗ, cửa thép, cửa kính thủy lực…
Tùy vào kích thước và độ dày của cửa, cần lựa chọn những loại khóa điện tử
phù hợp. Thông thường với khóa cửa thông minh thì cửa có kích thước từ 85
mm trở lên và độ dày từ 35 mm trở lên là có thể lắp được khóa.
Khóa cửa thông minh trong cuộc sống số thời đại 4.0 là điều cần thiết
giúp chúng ta tiếp cần gần hơn với cuộc sống hiện đại, nâng cao chất lượng
cuộc sống. Một ngôi nhà thông minh sẽ thông minh từ cánh cửa.

1.4. Các phương thức mở khóa trong đồ án

Từ phương thức hoạt động đến cấu tạo kết hợp với công nghệ cao, chúng
em xin thiết kế khóa cửa thông minh có các phương thức mở cơ bản sau:

 Mở khóa bằng vân tay: hệ thống này cho phép vân tay của người
sử dụng được mã hóa trên thiết bị và chỉ khi có bàn tay đó đặt vào
thì khóa mới tự động mở.
 Mở khóa bằng chuỗi mật mã: Là loại khóa dùng mật mã thay cho
chìa khóa để mở cửa. Mỗi thẻ có mỗi mã ID, và chỉ mã ID được
cài đặt thì mới có thể mở khóa.

 Mở khóa bằng Card RFID: RFID là viết tắt của cụm từ Radio

7
Frequency Identification, là công nghệ nhận dạng các đối tượng
dựa trên bước sóng vô tuyến. Nhờ áp dụng công nghệ này mà các
thiết bị khóa hiện đại có thể nhanh hơn các phương thức khác.
 Mở khóa bằng chìa khóa ảo: Không chỉ thực hiện thao tác đóng
hay mở cửa, ổ khóa cửa thông minh này còn có ứng dụng mở rộng
cho phép chủ nhân căn nhà có thể mở cửa từ xa thông qua thao tác
gọi điện thoại.

1.5. Ưu nhược điểm của khóa cửa thông minh

Giới thiệu về khóa của thông minh em muốn đưa đến các góc nhìn thực
tế cả về ưu và nhược điểm của thiết bị công nghệ thời đại 4.0 này.

a) Ưu điểm nổi bật mà khóa của thông minh sở hữu:

- Khóa cửa thông minh dần được ưa chuộng và là sự lựa chọn cho
cuộc sống số chứng tỏ chúng đang sở hữu nhiều ưu điểm nổi bật
so với các dòng khóa truyền thống khác:
- Không còn lo lắng về việc rơi, hay để quên chìa khóa, chúng ta chỉ
cần nhớ mật mã hoặc có card từ hay đơn giản chỉ là ngón tay của
mình.
- Không cần mất thời gian tiền bạc để đánh chìa khóa, tất cả được sao
lưu trong bộ nhớ máy và điện thoại của bạn.
- Thao tác nhanh chóng, thuận tiện ngay cả khi chúng ta đang mang
vác nặng nhọc.
- Vật liệu của khóa thông minh thường chắc chắn, chịu được sự ăn
mòn tốt. Cũng do không cần phải tác động vật lý nhiều như khóa
truyền thống, do vậy, ổ khóa thông minh thường bền hơn.
- Tự động khóa khi cửa đóng.

- Hoạt động với nguồn điện riêng.

- Thiết kế sang trọng, đa dạng, phù hợp với nhiều phong cách kiến
trúc khác nhau.
8
- Dễ dàng thiết lập, cài đặt loại mã khóa phù hợp.

b) Hạn chế, rủi ro và cũng là nhược điểm của dòng khóa cửa thông minh

Luôn có mặt ưu và nhược điểm sẽ tồn tại song song và mô hình về khóa
cửa thông minh em cũng không lẩn tránh những hạn chế của thiết bị này.

- Với những loại khóa dùng mã số, mã khóa có thể dễ bị tiết lộ hay
bị phá mã.

- Để duy trì tính an toàn và bảo mật, khóa cửa thông minh cần liên tục
được bảo trì và nâng cấp để chống lại xâm nhập.

 Mặc dù có những rủi ro nhất định, khóa cửa thông minh chắc chắn
vẫn sẽ được sử dụng trong tương lai. Trong những năm tiếp theo, việc sử
dụng khóa cửa thông minh như khóa vân tay, khóa dùng thẻ, khóa mã số, sẽ
dần thay thế các khóa truyền thống do tính năng vượt trội trong việc đảm
bảo giám sát ra vào ở mức độ cao nhất cho các khu vực cần có sự kiểm soát
ra vào chặt chẽ.

9
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT VỀ CÁC
LINH KIỆN

2.1. Tổng quan về Arduino:

Hình 2.1: Các loại board Arduino

2.2. Giới thiệu về Board Arduino Uno


2.2.1. Khái quát về Arduino

Arduino thật ra là một bo mạch vi xử lý được dùng để lập trình tương tác
với các thiết bị phần cứng như cảm biến, động cơ hoặc các thiết bị khác. Chúng
có rất nhiều loại để đáp ứng nhu cầu sử dụng đa dạng, có thể thấy trong Hình
2.1 trên. Đặc điểm nổi bật của Arduino là môi trường phát triển ứng dụng cực

10
kỳ dễ sử dụng, với một ngôn ngữ lập trình có thể học một cách nhanh chóng
ngay cả với người ít am hiểu về điện tử và lập trình cũng có thể sử dụng một
cách dễ dàng. Arduino có mức giá thấp, phù hợp với nhu cầu người dùng, có
tính chất nguồn mở và cộng đồng người dùng đông đảo.

Arduino Uno là một bảng mạch vi điều khiển nguồn mở dựa trên vi điều
khiển Microchip ATmega328 được phát triển bởi Arduino.cc. Bảng mạch
được trang bị các bộ chân đầu vào/đầu ra Digital và Analog có thể giao tiếp
với các bảng mạch mở rộng khác nhau. Mạch Arduino Uno (có thể thấy rõ
hình ảnh thực tế trong Hình 2.2) thích hợp cho những bạn mới tiếp cận và đam
mê về điện tử, lập trình... Dựa trên nền tảng mở do Arduino.cc cung cấp các
bạn dễ dàng xây dựng cho mình một dự án nhanh nhất (lập trình Robot, xe tự
hành, điều khiển bật tắt led...).

Hình 2.2: Hình ảnh thực tế về Arduino Uno


11
2.2.2. Các thông số kỹ thuật board Arduino Uno

a) Nguồn

- LED: Có 1 LED được tích hợp trên bảng mạch và được nối vào
chân D13.Khi chân có giá trị mức cao (HIGH) thì LED sẽ sáng
và LED tắt khi ở mức thấp (LOW).
- VIN: Chân này dùng để cấp nguồn ngoài (điện áp cấp từ 7-
12VDC).

- 5V: Điện áp ra 5V (dòng điện trên mỗi chân này tối đa là 500mA).

- 3V3: Điện áp ra 3.3V (dòng điện trên mỗi chân này tối đa là
50mA).

- GND: Là chân mang điện cực âm trên board.

- IOREF: Điện áp hoạt động của vi điều khiển trên Arduino UNO
và có thể đọc điện áp trên chân IOREF. Chân IOREF không dùng
để làm chân cấp nguồn.

b) Thông số kỹ thuật

Chip điều khiển ATmega328P

Điện áp hoạt động 5V

Điện áp đầu vào (khuyên dùng) 7-12V

Điện áp đầu vào (giới hạn) 6-20V

14(of which 6 provide


Số chân Digital
PWM(điều chế độ rộng xung)
output)

12
Số chân PWM Digital 6

Số chân Analog 6

Dòng điện DC trên mỗi chân I/O 20 mA

Dòng điện DC trên chân 3.3V 50 mA

FlashbMemory 32 KB (ATmega328P) of which


(bộ nhớ chương 0.5 KBused by bootloader
trình)

SRAM 2 KB (ATmega328P)

EEPROM 1 KB (ATmega328P)

Tốc độ thạch anh 16 MHz

LED_BUILTIN (Led tích 13


hợp)

Chiều dài 68.6 mm

Chiều rộng 53.4 mm

Cân nặng 25 g

Bảng 2.1: Thông số kỹ thuật của Arduino Uno

c) Bộ nhớ

Vi điều khiển ATmega328:


- 32 KB bộ nhớ Plash: Trong đó bootloader chiếm 0.5KB.

13
- KB cho SRAM (Static Random Access Menory): Giá trị các biến
khai báo sẽ được lưu ở đây. Khai báo càng nhiều biến thì càng tốn
nhiều bộ nhớ RAM. Khi mất nguồn dữ liệu trên SRAM sẽ bị mất.

- 1 KB cho EEPROM: (Electrically Eraseble Programmable Read


Only Memory): Là nơi có thể đọc và ghi dữ liệu vào đây và không bị
mất dữ liệu khi mất nguồn.

d) Các chân đầu vào và đầu ra

Trên Board Arduino Uno có 14 chân Digital được sử dụng để làm chân
đầu vào vàđầu ra và chúng sử dụng các hàm pinMode(), digitalWrite(),
digitalRead(). Giá trị điện áp trên mỗi chân là 5V, dòng trên mỗi chân là 20mA
và bên trong có điện trở kéo lên là 20-50 ohm. Dòng tối đa trên mỗi chân I/O
không vượt quá 40mA để tránh trường hợp gây hỏng board mạch.
Ngoài ra, một số chân Digital có chức năng đặt biệt:

- Serial: 0 (RX) và 1 (TX): Được sử dụng để nhận dữ liệu (RX) và


truyền dữ liệu (TX) TTL.
- Ngắt ngoài: Chân 2 và 3.

- PWM: 3, 5, 6, 9 và 11 Cung cấp đầu ra xung PWM với độ phân giải


8 bit bằng hàm analogWrite ().
- SPI (Serial Peripheral Interface :Giao diện Ngoại vi Nối tiếp): 10
(SS), 11 (MOSI), 12 (MISO), 13 (SCK). Các chân này hỗ trợ giao
tiếp SPI bằng thư viện SPI.
- LED: Có 1 LED được tích hợp trên bảng mạch và được nối vào chân
D13. Khi chân có giá trị mức cao (HIGH) thì LED sẽ sáng và LED
tắt khi ở mức thấp (LOW).
- TWI/I2C: A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp I2C/TWI với các
thiết bị khác.
- Arduino Uno R3 có 6 chân Analog từ A0 đến A5, đầu vào cung cấp
độ phân giải là 10 bit.
14
2.3. Giới thiệu về Board Arduino Mega 2560
2.3.1. Khái quát về Arduino Mega 2560:

Arduino Mega 2560 CH340 là phiên bản nâng cấp của Arduino Uno R3
với số chân giao tiếp, ngoại vi và bộ nhớ nhiều hơn. Mạch được thiết kế và
sử dụng các linh kiện tương đương với phiên bản chính hãng trên Arduino.cc,
phù hợp cho các ứng dụng cần nhiều bộ nhớ hoặc nhiều chân, cổng giao tiếp
hơn so với Arduino Uno. Arduino Mega 2560 CH340 chỉ thay đổi chip dán
so với Arduino Mega 2560 R3.
Arduino Mega 2560 là board mạch vi điều khiển dựa trên chip xử lý
Atmega2560 được mở rộng thêm bộ nhớ và các chân I/O so với các bo mạch
khác có sẵn trên thị trường.

Arduino Mega được thiết kế đặc biệt cho các dự án đòi hỏi mạch phức
tạp và cần nhiều không gian bộ nhớ hơn như có thể thấy trong Hình 2.3.

Hình 2.3: Hình ảnh thực tế về Ardiuno Mega 2560

15
2.3.1.1. Thông số kỹ thuật:
a) Nguồn

Có ba cách để cấp nguồn cho Arduino Mega. Bạn có thể sử dụng cáp
USB để cấp nguồn cho bo Arduino Mega hoặc sử dụng chân cấp nguồn Vin
hoặc từ giắc cắm nguồn vào DC.

b) Thông số kỹ thuật

- Chíp ATMEGA2560
- Điện áp hoạt động: 5V DC
- Nguồn Cấp: 7-12V (Giới Hạn 6-20V)
- Dòng Max chân 5V : 500mA
- Dòng Max 3.3V: 50mA
- Dòng Max Chân I/O: 40mA
- 54 Chân Digital I/O (15 Chân PWM)
- 16 Chân Analog Inputs
- Bộ Nhớ Flash: 256K
- 16Mhz Clock Speed
- SRAM 8 KB
- EEPROM 4 KB

c) Các cổng vào ra

- Có 54 chân I/O digital và 16 chân analog được tích hợp trên bo


mạch giúp thiết bị này trở nên riêng biệt và nổi bật so với các
thiết bị khác.
- Có 15 chân được sử dụng cho xuất xung PWM
- Một bộ dao động thạch anh có tần số 16 MHz được tích hợp
trên board Arduino Mega2560
- Arduino Mega2560 có cổng USB được sử dụng để kết nối và
chuyển mã từ máy tính đến mạch Arduino Mega dựa trên phần
mềm IDE

16
- Tích hợp jack nguồn DC để cấp nguồn cho bo mạch. Một số
phiên bản Arduino khác thiếu tính năng này như Arduino Pro
Mini không đi kèm jack cắm nguồn DC.
- Đầu jack kết nối ICSP (Header đôi gần nút reset) được bổ sung
đáng chú ý cho Arduino Mega, sử dụng để lập trình Arduino và
tải file lên từ máy tính qua phần mềm IDE
- Arduino Mega2560 có hai mức điện áp là 5V và 3.3V cung cấp
sự linh hoạt để điều chỉnh điện áp theo yêu cầu so với Arduino
Pro Mini chỉ đi kèm với một bộ điều chỉnh điện áp.
- So sánh với Arduino Uno thì Arduino Mega không có nhiều sự
khác biệt giữa Arduino Uno và ArduinoMega ngoại trừ Arduino
Mega được mở rộng bộ nhớ và các chân I/O nhiều hơn, kích
thước lớn hơn.
- Về phần mềm lập trình, tất cả các loại Arduino đều dùng chung
phần mềm IDE.
- Tính khả dụng của Atmega16 trên bo mạch Arduino Mega làm
cho nó khác với Arduino Pro Mini chỉ sử dụng USB để chuyển
đổi nối tiếp để lập trình.
- Tích hợp nút reset trên board mạch và 4 cổng nối tiếp phần cứng
được gọilà USART, tạo ra tốc độ tối đa để giao tiếp.

17
Hình 2.4: Sơ đồ chân Ardiuno Mega 2560
Arduino Mega2560 được thiết kế với cầu chì tự phục hồi mục đích ngăn
cổng USB của máy tính sinh nhiệt khi xảy ra hiện tượng quá dòng trên mạch
Arduino do các chânI/O chạm chập.
Mỗi chân I/O của Arduino Mega2560 đi kèm với một chức năng cụ thể
liên quan đến chân đó. Tất cả các chân analog có thể được sử dụng làm chân
I/O số. Sơ đồ các chân Ardiuno Mega 2560 ta có thế thấy trên Hình 2.5.

d) Chi tiết về các chân trên board mạch Arduino Mega2560

- Chân 5V & 3.3V : Chân này được sử dụng để cung cấp điện
áp đầu rakhoảng 5V.
- Chân GND : Có 5 chân nối mass có sẵn trên board Arduino
Mega, giúp dễ dàng kết nối nếu thực hiện dự án với nhiều kết
nối thiết bị ngoại vi.
- Chân reset : Được sử dụng để thiết lập lại board mạch về lại ban
đầu. Mức tích cực LOW được thiết lập sẽ reset lại board mạch.

Chân Vin : Là chân điện áp đầu vào cung cấp cho mạch Arduino Mega,

18
điện áp từ 7V đến 20V. Mặt khác điện áp được cấp bởi jack nguồn DC có
thể được lấy thông qua chân này. Tuy nhiên, điện áp đầu ra thông qua chân này
đến mạch Arduino sẽ được tự động thiết lập là 5V.
- Chân truyền thông nối tiếp ( Serial Communication ) : RXD và
TXD là các chân nối tiếp được sử dụng để truyền và nhận dữ
liệu nối tiếp, chân Rx đại diện cho việc truyền dữ liệu còn Tx
được sử dụng để nhận dữ liệu.Có tất cả 4 kết hợp các chân nối
tiếp này được sử dụng trong đó Serial 0 là chân RX(0) và TX(1),
Serial 1 là chân TX(18) và RX(19), Serial 2 là chân TX(16) và
RX(17), và Serial 3 là chân TX(14) và RX(15).
- Chân Ngắt ngoài ( External Interrupts) : 6 chân được sử dụng
để tạo các ngắt ngoài đó là ngắt 0 (chân 0), ngắt 1 (chân 3), ngắt
2 (chân 21), ngắt 3 (chân 20), ngắt 4 (chân 19), ngắt 5 (chân 18).
Các chân này tạo ra các ngắt bằng một số cách tức là cung cấp
giá trị LOW, thay đổi giá trị cho các chân ngắt.
- Đèn LED : Arduino Mega 2560 tích hợp đèn LED trên board
mạch kết nốivới chân 13. Giá trị HIGH đèn LED được bật và
LOW đèn LED tắt. Giúp người lập trình quan sát trực quan khi
test, kiểm tra chương trình trên board Arduino
- Chân AREF : Chân tạo điện áp tham chiếu cho đầu vào analogs
- Các chân tương tự (Analogs): Có 16 chân analog được tích hợp
trên board Arduino có ký hiệu là A0 đến A15. Điều quan trọng
cần lưu ý là tất cả các chân analog này có thể được sử dụng làm
chân I / O Digital. Mỗi chân analog đi kèm với độ phân giải 10
bit. Các chân này có thể có điện áp thay đổi tử 0V đến 5V. Tuy
nhiên, giá trị trên có thể được thay đổi bằng cách sử dụng hàm
ISF và analog Reference ().
- Giao tiếp I2C : Hai chân 20 và 21 hỗ trợ giao tiếp I2C trong đó
20 đại diện cho SDA (Dòng dữ liệu nối tiếp chủ yếu được sử

19
dụng để giữ dữ liệu) và21 đại diện cho SCL (Dòng đồng hồ nối
tiếp chủ yếu được sử dụng để cung cấp đồng bộ hóa dữ liệu giữa
các thiết bị)
- Truyền thông SPI : Được sử dụng để truyền dữ liệu giữa
Arduino và các thiết bị ngoại vi khác. Chân 50 (MISO), Chân
51 (MOSI), Chân 52 (SCK),Chân 53 (SS) được sử dụng để liên
lạc SPI.

2.4. Nhận dạng vân tay với cảm biến vân tay AS608:
2.4.1. Sơ lược về dấu vân tay và nhận dạng vân tay
2.4.1.1. Khái niệm về dấu vân tay

Vân tay là do các gai da đội lớp biểu bì lên mà thành. Đó là nơi tập kết
miệng các tuyến mồ hôi, tuyến bã nhờn… Nó đã định hình khi con người còn
là cái thai 4 tháng trong bụng mẹ. Khi đứa bé ra đời, lớn lên, vân tay được phóng
đại nhưng vẫn giữ nguyên dạng cho đến khi về già. Nếu tay có bị bỏng, bị
thương, bị bệnh thì khi lành, vân tay lại tái lập y hệt như cũ. Chỉ khi có tổn
thương sâu huỷ hoại hoàn toàn, sẹo chằng chịt mới xoá mất vân tay.
Dấu vân tay của con người rất chi tiết, gần như độc đáo, khó thay đổi và
bền bỉ trong suốt cuộc đời của một cá nhân, khiến chúng phù hợp như những
dấu ấn lâu dài của bản sắc con người.
Vân tay không ai giống ai, đặc biệt nhất là vân ngón cái và ngón trỏ.[2]

2.4.1.2. Nguyên lý hoạt động cơ bản của nhận dạng vân tay

Nguyên lý hoạt động của công nghệ nhận dạng vân tay là khi đặt ngón
tay lên trên một thiết bị nhận dạng dấu vân tay, ngay lập tức thiết bị này sẽ
quét hình ảnh dấu vân tay của ngón tay đó và đối chiếu các đặc điểm hình ảnh
vân tay của ngón tay đó với dữ liệu đã được lưu trữ trong hệ thống. Quá trình
xử lý dữ liệu sẽ được thiết bị chuyển sang các dữ liệu số và ra thông báo rằng
dấu vân tay đó là hợp lệ hay không hợp lệ để cho phép hệ thống thực hiện các
chức năng tiếp theo. Hệ thống sinh trắc học sẽ ghi nhận mẫu vân tay của người
dùng và lưu trữ tất cả những dữ liệu này thành một mẫu nhận diện được số
20
hoá toàn phần. Có hai phương pháp để lấy dấu vân tay.
Cách thứ nhất (cổ điển) là sao chép lại hình dạng vân tay (như lăn tay
bằng mực, hay chạm vào một vật gì đó) thông qua máy quét ghi nhận và xử
lý.
Cách thứ hai, hiện tại đa số các nước đều sử dụng phần mềm hoặc thiết
bị quét vân tay để nhận dạng vân tay.
Cách em dùng là sử dụng cảm biến quét vân tay AS608, vì thuận tiện
và tiết kiệm thời gian.

2.4.2. Giới thiệu về cảm biến vân tay AS608

Hiện tại trên thị trường có rất nhiều loại cảm biến để nhận dạng và phát
hiện người dùng như: Cảm biến nhận dạng khuôn mặt, cảm biến hồng ngoại,
cảm biến giọng nói, RFID… nhưng với tính bảo mật và tiện lợi của cảm biến
vân tay rất phù hợp cho việc quản lý khóa và mở cửa.
Hình 2.8 dưới đây là một ví dụ về module nhận dạng vân tay giao tiếp
trực tiếp qua giao thức UART có thể kết nối trực tiếp đến vi điều khiển hoặc
qua PC adapter Max232/USB-Serial. Người sử dụng có thể lưu trữ dữ liệu vân
tay trực tiếp vào module.Module có thể dễ dàng giao tiếp với các loại vi điều
khiển chuẩn 3.3V hoặc 5V. Có một con Led xanh được bật sáng nằm sẵn trong
ống kính trong suốt quá trình chụp vân tay.Cảm biến với độ chính xác cao và
có thể được nhúng vào các thiết bị như: điều khiển truy cập, két sắt, khóa cửa
nhà, khóa cửa xe…[1]

21
Hình 2.5: Hình ảnh thực tế về cảm biến vân tay AS608

2.4.2.1. Nguyên lý hoạt động

Nguyên lý hoạt động của module cảm biến vân tay cơ bản có 2 phần:

- Lấy dữ liệu hình ảnh của vân tay: Khi lấy dữ liệu, người dùng cần
phải thực hiện quét dấu vân tay hai lần thông qua cảm biến quang
học. Hệ thống sẽ tiến hành thuật toán xử lý hình ảnh của 2 lần quét
vân tay, tạo ra một khuôn mẫu của các vân tay dựa trên kết quả xử
lý và lưu trữ lại các bản mẫu.
- So sánh dấu vân tay (có thể theo chế độ 1:1 hoặc theo 1:N): Khi
người dùng thực hiện quét dấu vân tay, module sẽ chụp lại dữ liệu
hình ảnh vân tay và so sánh với các mẫu vân tay đã được lưu trữ sẵn
trong thư viện. Đối với 1:1, hệ thống sẽ so sánh trực tiếp vân tay với
mẫu được chỉ định cụ thể trong module; đối với 1:N, hoặc tìm kiếm,
hệ thống sẽ tìm kiếm trong thư viện để tìm vân tay phù hợp. Sau đó
trả về kết quả đúng nếu trùng khớp hoặc kết quả sai nếu không trùng
khớp dữ liệu đã được lưu trữ.

2.4.2.2. Các đặc tính

- Module tích hợp nhiều loại chip xử lý trong cùng 1 module: Cảm

22
biến dấu vân tay quang học, bộ vi xử lý DSP tốc độ cao, bộ nhớ
PLASH…
- Tiêu thụ điện năng thấp, giá thành không cao, kích thước nhỏ gọn,
hiệu năng tốt.
- Khả năng chống tĩnh điện mạnh mẽ, chỉ số chống tĩnh điện đạt
15KV trở lên.

- Khả năng xử lý hình ảnh tốt, có thể chụp được hình ảnh có độ phân
giải lên đến 500 dpi.[4]

2.4.2.3. Thông số kỹ thuật

Thông số kỹ thuật module cảm biến vân tay AS608:


Nguồn cung cấp điện áp DC 3.6 đến 6.0V
Nguồn cung hiện tại <120mA
Màu đèn nền Màu xanh lục
Giao diện UART
Tỷ lệ xấu 9600
Mức độ an toàn 5 (từ thấp đến cao: 1,2,3,4,5)
Tỷ lệ chấp nhận sai (FAR) Tỷ lệ chấp nhận sai (FAR)
Tỷ lệ từ chối giả (FRR) <1.0% (mức độ bảo mật 3)
Số lượng vân tay có thể lưu trữ 127

Bảng 2.2 Thông số kỹ thuật của cảm biến vân tay AS608

 Điện áp cung cấp: DC 3.6 ~ 6.0V. Dòng cung cấp:

- Dòng làm việc bình thường: 40 mA.

- Dòng đỉnh: 150 mA.

 Thời gian thu thập hình ảnh: < 0.5 giây. Kích thước cửa sổ quét:
18x22 mm.

 Chế độ quét:

23
- So sánh với một mẫu duy nhất (1:1).

- Tìm kiếm và so sánh với mẫu lưu trong bộ nhớ (1: N). Bộ nhớ
lưu trữ mẫu:256 bytes.
 Mức độ an toàn: năm (từ thấp đến cao: 1, 2, 3, 4, 5 (cao nhất)). Tỷ
lệ lỗi chấp nhận nhầm (FAR): < 0,001.
 Tỷ lệ từ chối nhầm (FRR): < 0.1%.

 Thời gian tìm kiếm: < 0.8 giây (1: 880, trung bình).

 Giao tiếp với máy tính: UART (TTL mức logic) hoặc USB 1:1

 Tốc độ truyền thông tin liên lạc (UART): (9600 x N) bps đó N = 1


~ 12 (giá trị mặc định N = 6, tức là 57600bps)
 Môi trường làm việc:

- Nhiệt độ: -10 ℃ ~ + 40 ℃

- Độ ẩm tương đối: 40% - 85% [4]


2.4.3. Giao tiếp phần cứng
Giao tiếp phần cứng của module R305 được thể hiện qua bảng 2.3 :
Số chân Tên chân
Chức năng
1 VCC Nguồn vào
2 GND Tín hiệu nối đất
3 TXD Dữ liệu đầu ra. Kiểu TTL logic
4 RXD Dữ liệu đầu vào. Kiểu TTL logic
5 VCC +5V DC
6 D- Dữ liệu âm
7 D+ Dữ liệu dương
8 GND Ground

Bảng 2.3 Chức năng các chân của cảm biến vân tay

24
2.4.4. Giao thức truyền thông nối tiếp không đồng bộ UART

UART là phương thức truyền nhận bất đồng bộ, nghĩa là bên nhận và bên
phát không cần phải có chung tốc độ xung clock (ví dụ: xung clock của vi điều
khiển khác xung clock của máy tính). Khi đó bên truyền muốn truyền dữ liệu
sẽ gửi start bit (bit ‘0’) để báo cho bên thu biết để bắt đầu nhận dữ liệu và khi
truyền xong dữ liệu thì stop bit (bit ‘1’) sẽ được gửi để báo cho bên thu biết kết
thúc quá trình truyền.
Khi có start bit thì cả hai bên sẽ dùng chung 1 xung clock (có thể sai khác
một ít) với độ rộng 1 tín hiệu (0 hoặc 1) được quy định bởi baud rate, ví dụ
baud rate = 9600 bps nghĩa là độ rộng của tín hiệu 0 (hoặc 1) là 1/9600 =
104ms và khi phát thì bên phát sẽ dùng baud rate chính xác (ví dụ 9600 bps)
còn bên thu có thể dùng baud rate sai lệch1 ít (9800bps chẳng hạn). Truyền
bất đồng bộ sẽ truyền theo từng frame và mỗi frame có cấu trúc như trong
hình 2.10 sau đây:

Hình 2.6: Giao thức truyền thông của AS608

- Module sẽ kết nối với MCU theo kết nối sau: TXD (chân 3 của module)
kết nối với RXD (chân nhận của MCU), RXD (chân 4 của module) kết nối
với TXD (chân truyền của MCU).

2.5. Các bước xử lý trong quá trình nhận dạng vân tay:

Quá trình xử lý nhận dạng vân tay được chia làm hai quá trình lớn: Quá
trình xử lý ảnh và quá trình so sánh vân tay.

25
i) Quá trình xử lý ảnh

Hình 2.7: Sơ đồ quá trình xử lý ảnh

Mục đích của quá trình này được biểu diễn qua Hình 2.7 là tăng cường
ảnh vân tay, sau đó, rút trích các đặc trưng vân tay từ ảnh đã được tăng cường.
Quá trình này được thực hiện qua các bước nhỏ sau:

- Nhận dạng hình ảnh vân tay (Fingerprint Recognize): Muốn xử lý


hình ảnh vân tay trước hết ta phải lấy mẫu vân tay thông qua thiết
bị đầu đọc vân tay.

- Tăng cường ảnh (Image Enhancement): Ảnh được lấy từ thiết bị đầu
đọc vân tay sẽ được làm rõ. Do các thiết bị đầu đọc vân tay không
lấy ảnh tốt hay do vân tay của người dùng trong lúc lấy bị hao mòn,
dơ bẩn, hay do lực ấn ngón tay trong lúc lấy vân tay. Vì vậy, bước
này là một trong các bước quan trọng nhất của quá trình này để làm
rõ ảnh vân tay để rút trích các đặc trưng đúng và đầy đủ.
- Phân tích ảnh (Image Analysis): Thông qua phân tích ảnh, ảnh sẽ
được loại bỏ những thông tin làm nhiễu hay những thông tin không
cần thiết.
- Nhị phân hóa (Binarization): Nhị phân hóa ảnh vân tay thành ảnh
trắng đen. Bước này phục vụ cho bước “Làm mỏng vân tay”. Bước
này có thể có hoặc không vì phụ thuộc vào thuật toán rút trích đặc

26
trưng.
- Làm mỏng các đường vân lồi của ảnh vân tay (Thinning): Bước này
nhằm mục đích cho việc rút trích đặc trưng của vân tay. Bước này
cũng có thể có hoặc không vì phục thuộc vào thuật toán rút trích đặc
trưng.
- Rút trích đặc trưng (Minutiae Extraction): Rút trích những đặc trưng
cần thiết cho quá trình so sánh vân tay.

j) Quá trình so sánh vân tay

Hình 2.8: Quá trình so sánh vân tay

Mục đích của quá trình này được biểu diễn trên Hình 2.7 là so sánh vân
tay dựa trên các đặc trưng đã được rút trích. Quá trình này được thực hiện qua
các bước nhỏ sau:

- Phân tích đặc trưng (Minutiae Analysis): Phân tích các đặc điểm cần
thiết của các đặc trưng để phục vụ cho việc so sánh vân tay.
- Xét độ tương tự cục bộ (Local Similarily): Thuật toán so sánh vân
tay sẽ dựa vào các thông tin cục bộ của các đặc trưng (gồm: tọa độ

27
(x, y), hướng của đặc trưng, góc tạo bởi tiếp tuyến của đường vân
tại đặc trưng và trục ngang) của vân tay để tìm ra các cặp đặc trưng
giống nhau giữa hai vân tay.
- Xét độ tương tự toàn cục (Global Similarily): Từ nhưng khu vực
tương tự nhau trên cục bộ, thuật toán sẽ tiếp tục mở rộng so sánh
trên toàn cục.
- Tính điểm so sánh (Calculate Matching Score): Tính toán tỷ lệ độ
giống nhau giữa các cặp đặc trưng. Điểm so sánh này sẽ cho biết độ
giống nhau của hai ảnh vân tay là bao nhiêu.

2.6. Giới thiệu công nghệ RFID:

Radio Frequency Identification (RFID) là công nghệ nhận dạng đối


tượng bằng sóng vô tuyến. Một thiết bị hay một hệ thống RFID được cấu tạo
bởi hai thành phần chính là thiết bị đọc (RFDI reader) và thiết bị phát sóng
RFID có gắn chip hay còn gọi là tag.
Nguyên lý hoạt động của RFID là thiết bị RFID reader sẽ phát ra sóng điện
từ ở một tần số nhất định, khi sản phẩm có gắn RFID tag trong vùng hoạt động
sẽ cảm nhận được sóng điện từ này và thu năng lượng từ đó phát lại cho thiết
bị RFID Reader biết mã số của mình. Từ đó, RFID reader có thể nhận dạng
được tag nào đang trong vùng hoạt động.
Thẻ chip (tag) RFID chứa rất nhiều mã nhận dạng khác nhau, thông
thường là 32bit tương ứng với hơn 4 tỷ mã số khác nhau. Ngoài ra khi xuất
xưởng mỗi thẻ chip RFID được gán một mã số khác nhau. Do vậy khi một
vật được gắn chip RFID thì khả năng nhận dạng nhầm vật đó với 1 thẻ chip
RFID khác là rất thấp, xác suất là 1 phần 4 tỷ.

28
Hình 2.9: Chip bảo mật trong thẻ RFID

2.7. Module RFID-RC522

Hình 2.10: Hình ảnh thực tế Module RFID-RC522

2.7.1. Thông số kỹ thuật

- Nguồn: 3.3VDC, 13 – 26mA


- Dòng ở chế độ chờ: 10-13mA
- Dòng ở chế độ nghỉ: <80uA
- Tần số sóng mang: 13.56MHz
- Khoảng cách hoạt động: 0~60mm (mifare1 card)

29
- Giao tiếp: SPI
- Tốc độ truyền dữ liệu: Tối đa 10Mbit/s
- Nhiệt độ hoạt động: -20 đến 80 ° C
- Tốc độ cao SPI: 10Mbit /s
- Hỗ trợ: ISO / IEC 14443A /MIFAR
- Kích thước: 60mm×40mm
- Có khả năng đọc và ghi.

2.7.2. Tính năng và đặc điểm

- MF RC522 ứng dụng cho việc tích hợp cao việc đọc và viết dữ liệu.
- Giao tiếp với thẻ tại tần số 13.56MHz(HF: tần số cao).
- Là sự lựa chọn tốt cho sự phát triển của các thiết bị thông minh
và thiết bị di động cầm tay.
- MF RC552 sử dụng cho việc nâng cao điều chế và giải mã điều
chế thông tin giao tiếp thụ động bằng các phương pháp hoàn toàn
thích hợp trong tần số 13.56Mhz.
- Tương thích với bộ phát tín hiệu 14443A.
- ISO 14443A xử lý kỹ thuật để phát hiện lỗi và các khung hình.
- CRYPTO1 nhanh chóng hỗ trợ mã hóa thuật toán để xác nhận
sản phẩm là mifire.
- MF RC552 hỗ trợ mifire giao tiếp với các chuỗi bằng tốc độ
cao,tốc độtruyền dữ liệu 2 chiều lên tới 424kbit/s.
- MF RC552 cũng tương tự như MF RC500, MF RC530 nhưng
cũng có những đặc điểm và sự khác biệt, giao tiếp giữa nó và
máy chủ ở chế độ SPI giúp giảm thiểu các kết nối hạn hẹp của
PCB, giảm chi phí đáng kể.
- Các MF RC552 là các module được thiết kế để dễ dàng sử
dụng với các đầu đọc thẻ mạch.
- Giá thành rẻ và được áp dụng cho sự phát triển các thiết bị cho

30
người sử dụng.
- Nâng cao sự phát triển của các ứng dụng, đáp ứng nhu cầu về sử
dụng các thiết bị đầu/cuối sử dụng thẻ nhớ RF.
- Module này có thể được nạp trực tiếp vào các khuôn reader khác
nhau, rất thuận tiện.

2.7.3. Chân kết nối

- SDA(SS) chân lựa chọn chip khi giao tiếp SPI (kích hoạt mức thấp).
- SCK: Chân xung trong chế độ SPI.
- MOSI(SDI): Master Data Out – Slave In trong chế độ giao tiếp SPI.
- MISO(SDO): Master Data In – Slave Out trong chế độ giao tiếp SPI
- IRQ: Chân ngắt.
- GND: Chân nối mass.
- RST: Chân reset lại module.
- VCC: Nguồn 3.3V.

2.8. Thẻ từ RFID

Hình 2.11: Thẻ từ để quét với Module RFID

31
Thẻ RFID (tem từ RFID)
Một thiết bị hay một hệ thống RFID được cấu tạo bởi hai thành phần
chính là thiết bị đọc (reader) và thiết bị phát mã RFID có gắn chip hay còn gọi
là tag. Hai thiết bị này hoạt động thu phát sóng điện từ cùng tần số với nhau.
Các tần số thường được sử dụng trong hệ thống RFID là 125Khz hoặc
900Mhz.
Thiết bị đọc được gắn Anten để thu – phát sóng điện từ, thiết bị phát mã
RFID tag được gắn với vật cần nhận dạng, mỗi thiết bị RFID tag chứa một mã
số nhất định và không trùng lặp nhau.
Đầu đọc sẽ gửi tín hiệu sóng từ tương tác với thẻ tag thông qua ăng ten,
thẻ tag sẽ phản hồi lại với một mã thông tin duy nhất. Thẻ Tag RFID có 2 loại
là chủ động (Active) và thụ động (Passive).
Thẻ RFID chủ động có chứa một nguồn năng lượng cho phép nó có khả
năng truyền sóng với khoảng cách đọc xa tới 100 mét. Chính với đặc điểm
khả năng đọc xa này mà thẻ RFID chủ động được ứng dụng lý tưởng trong
nhiều lĩnh vực công nghiệp để quản lý vị trí tài sản, cải thiện quy trình logistic.
Thẻ RFID thụ động bản thân nó không có nguồn năng lượng. Thay vào
đó, nó được nạp năng lượng bởi năng lượng sóng từ được truyền từ các đầu
đọc RFID. Bởi vì sóng radio phải đủ mạnh để truyền năng lượng lên thẻ tag,
chính vì vậy thẻ RFID thu động có khoảng cách đọc khá gần thông thường
chỉ tới 25 mét.

32
2.9. Bàn phím ma trận 4x4 (KEYPAD 4X4):

Hình 2.12: Hình ảnh thực tế của bàn phím ma trận 4X4

Keypad là một "thiết bị nhập" chứa các nút nhấn cho phép người dùng
nhập các chữ số, chữ cái hoặc ký hiệu vào bộ điều khiển. Keypad không chứa
tất cả bảng mã ASCII như keyboard và vì thế keypad thường được tìm thấy
trong các thiết bị chuyên dụng.

Các nút nhấn trên các máy tính điện tử cầm tay là một ví dụ về keypad.
Số lượng nút nhấn của một keypad thay đổi phụ thuộc vào yêu cầu ứng dụng.
Gọi là keypad 4x4 vì keypad này có 16 nút nhấn được bố trí dạng ma trận 4
hàng và 4 cột. Cách bố trí ma trận hàng và cột là cách chung mà các keypad
sử dụng. Các nút nhấn cùng hàng và cùng cột được nối với nhau, vì thế với
keypad 4x4 sẽ có tổng cộng 8 ngõ ra (4 hàng và 4 cột).
Thông số kỹ thuật của keypad 4x4

- Module bàn phím ma trận 4x4 loại phím mềm


- Dòng / áp hoạt động tối đa: 30mA, 24V DC.
- Tuổi thọ hoạt động: khoảng 1.000.000 lần nhấn phím

33
- Thời gian phản hồi: ≤ 5ms
- Độ dài cáp: 88mm
- Nhiệt độ hoạt động: 0~70℃
- Đầu nối ra 8 chân
- Kích thước bàn phím 77 x 69mm

2.10. Giới thiệu về Module SIM 900A:


2.10.1. Giới thiệu chung

Module SIM900A GSM là module nhỏ và rẻ nhất cho giao tiếp dữ liệu định vị
GPRS / GSM. Giao tiếp phổ với Arduino và vi điều khiển trong hầu hết các ứng dụng
nhúng. Module cung cấp công nghệ định vị GPRS / GSM để liên lạc thông qua sử
dụng sim di động.

Moule sử dụng dải tần số 900 và 1800MHz cho phép người dùng nhận / gửi cuộc
gọi và tin nhắn SMS di động. Bàn phím và giao diện hiển thị cho phép các nhà phát
triển tạo ứng dụng tùy chỉnh. [5]

Hình 2.13: Hình ảnh thực tế về module SIM900A

34
2.10.2. Thông số kỹ thuật Module SIM900A

- Điện áp nguồn đơn: 3,4V – 4,5V


- Chế độ tiết kiệm năng lượng: Mức tiêu thụ năng lượng điển hình ở chế độ SLEEP
là 1,5mA.
- Băng tần: SIM900A Băng tần kép: EGSM900, DCS1800. SIM900A có thể tự
động tìm kiếm hai dải tần số. Các dải tần số cũng có thể được đặt bằng lệnh AT.
- Lớp GSM: MS nhỏ
- Kết nối GPRS: GPRS đa khe cắm loại 10 (mặc định), GPRS đa khe cắm loại 8
(tùy chọn).
- Công suất phát: Loại 4 (2W) ở EGSM 900, Loại 1 (1W) ở DCS 1800
- Nhiệt độ hoạt động: -30ºC đến +80ºC
- Nhiệt độ bảo quản: -5ºC đến +90ºC
- DATA GPRS: tốc độ truyền tải xuống tối đa là 85,6KBps, truyền tải lên tối đa
42,8KBps.
- Hỗ trợ CSD, USSD, SMS, FAX
- Hỗ trợ đầu vào MIC và âm thanh
- Đầu vào loa
- Tính năng giao diện bàn phím
- Giao diện hiển thị tính năng
- Tính năng Đồng hồ thời gian thực
- Hỗ trợ giao diện UART
- Hỗ trợ thẻ SIM duy nhất
- Nâng cấp chương trình cơ sở bằng cổng gỡ lỗi
- Giao tiếp bằng cách sử dụng các lệnh AT

2.10.3. Sơ đồ chân Module GSM GPRS

- VCC: Nguồn vào 3.7 – 4.2V.

- TXD: Chân truyền Uart TX.

35
- RXD: Chân nhận Uart RX.

- DTR : Chân UART DTR, thường không xài.

- SPKP, SPKN: ngõ ra âm thanh, nối với loa để phát âm thanh.

- MICP, MICN: ngõ vào âm thanh, phải gắn thêm Micro để thu âm thanh.

- Reset: Chân khởi động lại Sim800L (thường không xài).

- RING: Báo có cuộc gọi đến

- GND: Chân Mass, cấp 0V.

Hình 2.14: Hình ảnh các chân thực tế về module SIM900A

2.10.4. Tập lệnh AT của Module SIM900A

a) Các lệnh chung

 Lệnh: AT<CR><LF>

Mô tả : Kiểm tra đáp ứng của Module Sim 900A, nếu trả về OK thì Module
hoạt động

36
 Lệnh: ATE[x]<CR><LF>

Mô tả : Chế độ echo là chế độ phản hồi dữ liệu truyền đến của module Sim
900A, x = 1 bật chế độ echo , x = 0 tắt chế độ echo (bạn nên tắt chế độ này khi
giao tiếp với vi điều khiển).

 Lệnh: AT+IPR=[baud rate]<CR><LF>

Mô tả : cài đặt tốc độ giao tiếp dữ liệu với Module Sim900A, chỉ cài
được các tốc độ sau baud rate : 0 (auto), 1200, 2400, 4800, 9600, 19200,
38400, 57600, 115200

 Lệnh: AT&W<CR><LF>

Mô tả : lưu lại các lệnh đã cài đặt

b) Các lệnh điều khiển cuộc gọi

 Lệnh: AT+CLIP=1<CR><LF>

Mô tả : Hiển thị thông tin cuộc gọi đến

 Lệnh: ATD[Số_điện_thoại];<CR><LF>

Mô tả : Lệnh thực hiện cuộc gọi

 Lệnh: ATH<CR><LF>

Mô tả : Lệnh thực hiện kết thúc cuộc gọi , hoặc cúp máy khi có cuộc gọi
đến

 Lệnh: ATA<CR><LF>

Mô tả : Lệnh thực hiện chấp nhận khi có cuộc gọi đến


37
2.11. Màn hình LCD 16x2:
2.11.1. Giới thiệu

Hình 2.15: Hình ảnh thực tế màn hình LCD 16x2

Thứ tự Tên kí hiệu I/O Mô tả


1 Vss Power GND
2 Vcc Power +5V
3 Vo Analog Điều khiển ánh sáng nền
4 RS Input Register Select
5 R/W Input Read/Write
6 E Input Enable (Storage)
7 D0 I/O Data LSB
8 D1 I/O Data
9 D2 I/O Data
10 D3 I/O Data
11 D4 I/O Data
12 D5 I/O Data
13 D6 I/O Data
14 D7 I/O Data MSB
15 A I Nguồn dương 5V
16 K I GND

Bảng 2.4 Sơ đồ các chân của màn hình LCD 16x2

38
2.12. Module giao tiếp I2C giữa LCD 16x2 với ARDIUNO
a) Giới thiệu Module giao tiếp I2C

Hình 2.16: Hình ảnh thực tế Module giao tiếp I2C


Bằng việc sử dụng giao tiếp I2C (Hình 2.18), việc điều khiển trực tiếp
màn hình được chuyển sang cho IC xử lý nằm trên mạch. Chỉ cần việc gửi
mã lệnh cùng nội dung hiển thị, do vậy giúp vi điều khiển có nhiều thời gian
xử lý các tiến trình phức tạp khác.
Ưu điểm của việc sử dụng giao tiếp I2C:

- Giao tiếp I2C chỉ sử dụng duy nhất 2 dây tín hiệu: SDA và SCL
giúp tiết kiệm chân trên vi điều khiển.

- Tốc độ truyền dữ liệu lên đến 400Kbps


- Dữ liệu truyền nhận đảm bảo tính toàn vẹn vì sử dụng cơ chế phản
hồi (ACK) trên mỗi byte dữ liệu.
- Có khả năng kết nối nhiều thiết bị với nhau: Trên mạch có sẵn
các mối hàn A0, A1, A2 để thay đổi địa chỉ của module.

Địa chỉ mặc định: 0x27, có thể mắc vào I2C bus tối đa 8 module điện áp
hoạt động: 3V-6V.
Đề điều khiển độ tương phản điều chỉnh biến trở màu xanh.

b) Kết nối I2C với ardiuno Mega 2560.

39
- Chân GND I2C nối với chân GND của mega 2560
- Chân VCC I2C nối với chân 5V của mega 2560
- Chân SDA I2C nối với chân 20 SDA của mega 2560
- Chân SCL I2C nối với chân 21 SCL của mega 2560

Hình 2.17: Hình ảnh thực tế Kết nối I2C với ardiuno Mega 2560.

2.13. Cảm biến nhiệt độ DS18b20


DS18B20 là IC cảm biến nhiệt độ bán dẫn, gồm 3 chân, đóng vỏ
nhỏ gọn. Giao tiếp thông qua truyền thông 1 dây. Độ phân giải nhiệt
độ lên tới 12 bít, dòng tiêu thụ rất thấp, giải điện áp sử dụng rộng 3
-5.5V, kết nối được nhiều cảm biến chung trên1 đường truyền. Ứng
dụng trong đo đạc nhiệt độ chính xác và thu thập nhiệt độ nhiều
điểm.

40
Hình 2.18: Cảm biến ds18b20

Cảm biến nhiệt độ DS18B20 có những tính năng như sau:


- Theo chuẩn giao tiếp 1-wire, kết nối nhiều cảm biến DS18B20
trên 1 đường truyền.

- Dãi nhiệt độ đo lường: -55°C to +125°C (-67°F to +257°F)

- Độ chính xác: ±0.5°C trong khoảng đo -10°C to +85°C.

- Độ phân giải 9 đến 12 bit có thể chương trình

- Mỗi thiết bị có mã định danh duy nhất 64 bit.

- Có thể dùng nguồn ký sinh (không cần cung cấp nguồn cho chip,
chip lấy nguồn từ tín hiệu).

Thông số kỹ thuật:

• Nguồn : 3 – 5.5V
• Dải đo nhiệt độ : -55 – 125 độ C ( -67 – 257 độ F)
• Sai số : +- 0.5 độ C khi đo ở dải -10 – 85 độ C
• Độ phân giải : người dùng có thể chọn từ 9 – 12 bits

41
• Chuẩn giao tiếp : 1-Wire ( 1 dây ).
• Có cảnh báo nhiệt khi vượt ngưỡng cho phép và cấp nguồn từ chân data.
• Thời gian chuyển đổi nhiệt độ tối đa : 750ms ( khi chọn độ phân giải 12bit ).
• Mỗi IC có một mã riêng (lưu trên EEPROM của IC) nên có thể giao tiếp
nhiều DS18B20 trên cùng 1 dây
• Ống thép không gỉ (chống ẩm , nước) đường kính 6mm, dài 50mm
• Đường kính đầu dò: 6mm
• Chiều dài dây: 1m

2.14. Cảm biến MQ-135

Hình 2.19: Cảm biến MQ-135

Cảm biến khí MQ-135 được sử dụng trong các thiết bị kiểm
soát chất lượng không khí và thích hợp để phát hiện hoặc đo NH3,
NOx, Alcohol, Benzene, Smoke,CO2. Mô-đun cảm biến MQ-135 đi
kèm với một ghim kỹ thuật số giúp cảm biến này hoạt động ngay cả
42
khi không có bộ vi điều khiển và rất hữu ích khi bạn chỉ cố gắng phát
hiện một loại khí cụ thể. Nếu bạn cần đo các khí trong PPM, cần sử
dụng chân analog. Chân tương tự được điều khiển TTL và hoạt động
trên 5V và do đó có thể được sử dụng với hầu hết các bộ vi điều khiển
phổ biến.

- Thông số kỹ thuật:

 Điện áp nguồn: 5V DC
 Điện áp của heater: 5V±0.1 AC/DC
 Điện trở tải: thay đổi được (2kΩ-47kΩ)
 Điện trở của heater: 33Ω±5%
 Công suất tiêu thụ của heater: ít hơn 800mW
 Khoảng phát hiện: 10 - 300 ppm NH3, 10 - 1000 ppm Benzene, 10 - 300 Alcol
 Kích thước: 32mm*20mm
 Khoảng đo rộng
 Bền, tuổi thọ cao
 Phát hiện nhanh, độ nhạy cao
 Mạch đơn giản

43
CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ

3.1. Thiết kế sơ đồ khối hệ thống:

Hệ thống gồm 7 khối ghép lại với nhau theo nhiều hướng tạo nên một hệ
thống hoạt động ổn định được trình bày trong sơ đồ khối Hình 3.1 như sau:

Hình 3.1: Sơ đồ khối hệ thống

44
Chức năng từng khối:

- Khối nguồn: Cung cấp nguồn 5V cho bo mạch xử lý trung tâm là


arduino UNO và Mega 2560. Nguồn từ bo mạch cấp cho cảm biến
vân tay , module RFID-RC522, khối hiển thị LCD, ma trận bàn
phím 4x4. Cung cấp nguồn 12V cho khóa điện. Cung cấp nguồn
12V 3A qua module giảm áp LM2596 ra thành nguồn 4,2V 3A
để cấp cho module sim 900A.
- Khối xử lý trung tâm: Thu thập dữ liệu từ các thiết bị sau đó xử lý
và điều khiển khối chấp hành và khối hiển thị. Khối này do Arduino
Mega 2560 thực hiện.
- Khối cảm biến vân tay: Tiến hành quét dấu vân tay để đóng mở
cửa và nơi lưu trữ dấu vân tay. Khối này do module cảm biến vân
tay AS608 thực hiện.
- Khối thu phát sóng di động: Cho phép mở cửa khi có cuộc gọi từ
số điện thoại chủ nhà đã được cài đặt sẵn trong vi xử lý.
- Khối hiển thị: Hiển thị thông tin chế độ hoạt động khi người dùng
thao tác nhập mật khẩu, quẹt thẻ từ hay ấn vân tay. Khối này do
màn hình LCD 16x2 thực hiện.
- Khối bàn phím: Cho phép nhập mật khẩu để mở cửa, khối này do
bàn phím ma trận 4x4 đảm nhiệm.
- Khối đọc ghi thẻ từ: Đọc thẻ quẹt vào, nếu đúng mã ID được cài
đặt trong bo mạch trung tâm thì cho phép mở cửa. Khối này do
module RFID-RC255 đảm nhiệm.
- Khối rơ le, khoá điện: Khóa điện 12V sẽ nhận lệnh từ vi xử lý và
tiến hành mở cửa.

45
3.2. Tính toán và thiết kế mạch:
3.2.1. Khối xử lý trung tâm:

Arduino Mega 2560 sử dụng chip ATmega2560. Nó có 54 chân digital


I/O 16 chân đầu vào tương tự (Analog Inputs), 4 UARTs (cổng nối tiếp phần
cứng), một thạch anh dao động 16 MHz, kết nối USB, một jack cắm điện,
một đầu ICSP và một nút reset có thể nhìn thấy rõ trong Hình 3.2. Nó chứa
tất cả mọi thứ cần thiết để tạo thành khối xử lý trung tâm với đầy đủ các port.

Ý tưởng thiết kế là kết hợp nhiều module lại với nhau, do vậy sẽ có nhiều
chân kết nối nên việc lựa chọn Arduino Mega 2560 là rất phù hợp.

Hình 3.2: Board Arduino Mega 2560

Trong quá trình kết nối các module và lập trình cho hệ thống:Bộ nhớ sử
dụng hết 2958 bytes vào khoảng 36% bộ nhớ Tổng số chân I/O sử dụng
là 20 chân, Công thức tính dòng tiêu thụ:

Dòng tiêu thụ = 20 x 40mA = 800mA.

46
3.2.2. Khối cảm biến vân tay

Khối xử lý Khối cảm


trung tâm biến vân tay

Hình 3.3: Khối xử lý và khối cảm biến vân tay


Cảm biến vân tay AS608 tích hợp xử lý hình ảnh và thuật toán xử lý trên
cùng một chip như được thể hiện trong Hình 3.3. Khả năng xử lý ảnh chụp
tốt với độ phân giải lên đến 500dpi. Chuẩn giao tiếp: USB
UART (TTL logical logic) từ 9600 – 115200bps, sử dụng tốc độ mặc định
là 57600bps đảm bảo truyền nhận chính xác dữ liệu. Bên cạnh đó là các thông
số khác như:

- Điện áp cung cấp: 3.6V ~ 6V DC.


- Dòng điện tiêu thụ: < 120mA.

a) Giao tiếp UART.

UART có tên đầy đủ là Universal Asynchronous Receiver – Transmitter.


Nó là một mạch tích hợp được sử dụng trong việc truyền dẫn dữ liệu nối tiếp
giữa máy tính và các thiết bị ngoại vi.
UART có chức năng chính là truyền dữ liệu nối tiếp. Trong UART, giao
tiếp giữa hai thiết bị có thể được thực hiện theo hai phương thức là giao tiếp
dữ liệu nối tiếp và giao tiếp dữ liệu song song.
Giao tiếp dữ liệu nối tiếp có nghĩa là dữ liệu có thể được truyền qua một
cáp hoặc một đường dây ở dạng bit-bit và nó chỉ cần hai cáp được thể hiện
trong hình 3.4. Nó yêu cầu số lượng mạch hay như dây rất ít. Giao tiếp này
hữu ích trong các mạch ghép hơn giao tiếp song song.
+Trong giao tiếp UART có các thông số chính:

- Baud rate (tốc độ baud ): Khoảng thời gian để 1 bit được truyền đi.

47
Phải được cài đặt giống nhau ở cả phần gửi và nhận
- Frame (khung truyền): Khung truyền quy định về mỗi lần truyền bao nhiêu
bit
- Start bit: Là bit đầu tiên được truyền trong 1 Frame. Báo hiệu cho
thiết bị nhận có một gói dữ liệu sắp được truyền đến. Đây là bit bắt
buộc.
- Data: Dữ liệu cần truyền. Bit có trọng số nhỏ nhất LSB được truyền
trước sau đó đến bit MSB.
- Parity bit: Kiểm tra dữ liệu truyền có đúng không.
- Stop bit : Là 1 hoặc các bit báo cho thiết bị rằng các bit đã được gửi
xong. Thiết bị nhận sẽ tiến hành kiểm tra khung truyền nhằm đảm
bảo tính đúng đắn của dữ liệu. Đây là bit bắt buộc.

Hình 3.4: Phương thức truyền thông nối tiếp UART

b) Cách nối dây cho cảm biến vân tay AS608 vào Arduino Mega
2560 theo thứ tự:

- Dây số 1 nối vào nguồn 5V và dây số 2 nối vào chân GND của Arduino.
- Dây số 3 nối vào chân số 19 RX1 và dây số 4 nối chân 18 TX1
của ArduinoMega.

48
Hình 3.5: Cảm biến vân tay kết nối Arduino Mega

3.2.3. Khối Module thu phát sóng di động SIM 900A

Để điều khiển mở cửa từ xa em đã sử dụng module Sim 800l. Tuy tính


kinh tế khi chọn module này là không cao nhưng module vẫn có những ưu
điểm. Nếu hệ thống mất điện, module vẫn có thể gửi dữ liệu khi sử dụng nguồn
dự phòng, hệ thống mạng GPRS được phủ sống liên tục. Nếu ta di chuyển đến
nơi khác vẫn có thể cập mở cửa dễ dàng mà không cần phải cấu hình lại hệ
thống.

c) Cách nối dây.

- Hai chân nguồn VCC và GND được kết nối với khối cấp nguồn để
hoạt động ổn định lâu dài.
- TX được nối vào chân RX0 và RX nối vào TX0 của Arduino Mega
để truyềnnhận dữ liệu theo chuẩn UART.
- Chân nguồn GND của sim 900A nối chung với GND của Mega.

49
Hình 3.6: Module SIM900A kết nối Arduino Mega

3.2.4. Khối Module đọc thẻ từ RFID-RC522


d) Chuẩn giao tiếp SPI và cách kết nối

Giao tiếp ngoại vi nối tiếp (SPI) là một loại giao thức kiểu Master – Slave
cung cấp một giao diện đơn giản và chi phí thấp giữa vi điều khiển và các thiết
bị ngoại vi của nó.
SPI là một kiểu truyền thông nối tiếp kiểu đồng bộ tức là nó sử dụng tín
hiệu đồng hồ chuyên dụng để đồng bộ hóa bộ phát và bộ thu hoặc Master và
Slave. Bộ phát và bộ thu được kết nối với dữ liệu riêng biệt và tín hiệu đồng
hồ sẽ giúp bộ thu khi tìm kiếm dữ liệu trên bus.
Đối với giao tiếp khoảng cách ngắn, giao tiếp nối tiếp đồng bộ sẽ là lựa
chọn tốt hơn và trong đó giao tiếp ngoại vi nối tiếp hoặc SPI nói riêng là lựa
chọn tốt nhất. Khi chúng ta nói truyền thông khoảng cách ngắn, nó thường có
nghĩa là giao tiếp với một thiết bị hoặc giữa các thiết bị trên cùng một board
mạch in (PCB).
Trong giao thức SPI, các thiết bị được kết nối trong một mối quan hệ

50
Master – Slave trong một giao diện đa điểm. Trong loại giao diện này, một
thiết bị được coi là Master của bus (thường là một vi điều khiển) và tất cả các
thiết bị khác (IC ngoại vi hoặc thậmchí các vi điều khiển khác) đều được coi
là Slave.

Hình 3.7: Phương thức giao tiếp SPI

Trong giao thức SPI, có thể chỉ có một thiết bị Master nhưng nhiều thiết bị
Slave. Bus SPI bao gồm 4 tín hiệu hoặc chân, ta có thể thấy rõ trên hình
3.7. Chúng là:

- Master - Out/Slave - In (MOSI hay SI): Cổng ra của bên Master,


cổng vào của bên Slave, dành cho việc truyền dữ liệu từ thiết bị
Master đến thiết bị Slave .

- Master – In / Slave – Out (MISO hay SO): Cổng vào của bên
Master, cổng ra của bên Slave, dành cho việc truyền dữ liệu từ
thiết Slave đến thiết bị Master.
- Serial Clock (SCK hay SCLK): Xung giữ nhịp cho giao tiếp SPI

- Chip Select (CS) hay Slave Select (SS): Chọn chip.

e) Kết nối module RFID-RC522 với Arduino mega 2560 qua

51
giao tiếp SPI, ta sử dụng 7 chân của module RFID để kết nối:
o Chân SDA nối với chân 53

o Chân SCK nối với chân 52

o Chân MOSI nối với chân 51

o Chân MISO nối với chân 50

o Chân GND nối với chân GND

o Chân RST nối với chân 49

o Chân VCC nối với chân 3.3V của Arduino.

Hình 3.8: Module đọc thẻ từ kết nối Arduino Mega

52
3.2.5. Khối bàn phím:

Kết nối 8 chân của ma trận bàn phím với 8 chân của Arduino Mega 2560
(như hình3.8).

Hình 3.9: Hình ảnh thực tế của bàn phím ma trận 4x4

Chân quét các cột:

- Chân C1 nối với chân số 25.

- Chân C2 nối với chân số 24.

- Chân C3 nối với chân số 23.

- Chân C4 nối với chân số 22

Chân quét các hàng :

- Chân R1 nối với chân 29.

- Chân R2 nối với chân 27.

- Chân R3 nối với chân 28.

- Chân R4 nối với chân 26.

53
3.2.6. Khối nguồn

f) Nguồn

- Ta sử dụng nguồn 5V từ USB để cấp cho vi xử lý Arduino Mega.

- Nguồn 5V cấp cho module Sim900A

- Nguồn 12V để cấp cho khóa điện.

- Nguồn Pin 9V để làm nguồn dự phòng khi mất điện.

Hình 3.10: Hình ảnh nguồn Adapter 12V 3A thực tế

54
Hình 3.11: Nguồn pin 9V dự phòng

Hình 3.12: Dây cáp cấp nguồn cho Arduino

3.2.7. Khối khoá điện tử:


g) Relay 12V

Hình 3.13: Hình ảnh relay thực tế

55
Relay là thiết bị đóng cắt cơ bản, nó được sử dụng rất nhiều trong cuộc
sống và trong các thiết bị điện tử.

Cấu tạo Relay gồm 2 phần:

+ Cuộn hút:

- Tạo ra năng lượng từ trường để hút các tiếp điểm về phía mình

- Tùy vào điện áp làm việc người ta chia Relay ra DC: 5V,
12V, 24V-AC:110V, 220V

+ Cặp tiếp điểm:

- Khi không có từ trường. Tiếp điểm 1 được tiếp xúc với 2 nhờ lực
của lò xo. Tiếp điểm thường đóng.
- Khi có năng lượng từ trường thì tiếp điểm 1 bị hút sang tiếp điểm 3

+ Cách đấu nối:

- Đấu chung chân dương và chân âm của relay với bo mạch xử lý

- Chân S đấu vào chân số 6. Chân nhận tín hiệu kích.

- Chân ON đấu với nguồn dương, và đấu nối tiếp với khóa điện ,
một đầu còn lại đấu vào chân COM.

56
h) Khóa điện tử 12V

Hình 3.14: Khóa điện 12V

Khóa chốt điện từ LY-03 đi kèm gá chốt (như Hình 3.14), có chức năng hoạt
động như một ổ khóa cửa sử dụng Solenoid để kích đóng mở bằng điện, được
sử dụng nhiều trong nhà thông minh hoặc các loại tủ, cửa phòng, cửa kho…
khóa sử dụng điện áp 12VDC, là loại thường đóng (cửa đóng) với chất lượng
tốt, độ bền cao. Khóa chốt điện từ này có thể sử dụng chung với các mạch
chức năng tạo thành một hệ thống thông minh.
Thông số kỹ thuật:
- Vật liệu: Thép không gỉ

- Nguồn điện: 12V DC

- Dòng điện làm việc: 0.8A

- Công suất: 9.6W

- Yêu cầu nguồn cấp: 12VDC/1A

- Kích thước: L54xD38xH28

57
CHƯƠNG 4: THI CÔNG HỆ THỐNG

4.1. Lưu đồ giải thuật:

Hình 4.1: Lưu đồ giải thuật

4.2. Giới thiệu phần mềm lập trình ARDUINO IDE

Arduino IDE là phần mềm giúp ta lập trình cho các dòng sản phẩm của
Arduino như Arduino Uno, Arduino Mega, nano,.. Lập trình trên Arduino
IDE là cách tiếp cận đơn giản cho những người đam mê điện tử và muốn tạo
ra những sản phẩm nhúng ấn tượng mà không cần quá nhiều kiến thức chuyên
sâu về điện tử. Môi trường phát triển tích hợp Arduino IDE là một ứng dụng
đa nền tảng được viết bằng Java.
58
Hình 4.2: Giao diện phần mềm lập trình Arduino IDE

Giao diện của phần mềm Arduino IDE (như hình 4.2) có nhiều phần, tuy
nhiên chúng ta chú ý đến những phần quan trọng như được nêu ra trong hình
trên. Chức năng của từng phần như sau:
+ Nút kiểm tra chương trình

Dùng để kiểm tra xem chương trình được viết có lỗi không. Nếu chương
trình bị lỗi thì phần mềm Arduino IDE sẽ hiển thị thông tin lỗi ở vùng thông
báo thông tin.
+ Nút nạp chương trình xuống bo Arduino

Dùng để nạp chương trình được viết xuống mạch Arduino. Trong quá
trình nạp, chương trình sẽ được kiểm tra lỗi trước sau đó mới thực hiện nạp
xuống mạch Arduino.
+ Hiển thị màn hình giao tiếp với máy tính

Khi nhấp vào biểu tượng cái kính lúp thì phần giao tiếp với máy tính sẽ được
mở ra. Phần này sẽ hiển thị các thông số mà người dùng muốn đưa lên màn

59
hình. Muốn đưa lên màn hình phải có lệnh Serial.print() mới có thể đưa
thông số cần hiển thị lên màn hình
+ Vùng lập trình

Vùng này để người lập trình thực hiện việc lập trình cho chương trình của
mình.

+ Vùng thông báo thông tin:

Có chức năng thông báo các thông tin lỗi của chương trình hoặc các vấn
đề liên quan đến chương trình được lập.
+ Sử dụng một số menu thông dụng trên phần mềm Arduino IDE

Có vài menu trong phần mềm IDE, tuy nhiên thông dụng nhất vẫn là
menu File, ngoài những tính năng như mở một file mới hay lưu một file, phần
menu này có một mục đáng chú ý là Example. Phần Example (ví dụ) đưa ra
các ví dụ sẵn để người lập trình có thể tham khảo, giảm bớt thời gian lập trình.

4.3. Lập trình code và nạp cho vi điều khiển


4.3.1. Đăng ký dấu vân tay cho cảm biến AS608

Để đăng ký dấu vân tay và lưu vào bộ nhớ của cảm biến vân tay ta cần
tài thư viện #include <Adafruit_Fingerprint.h> về để lập trình.
Kết nối cảm biến với vi xử lý và bật màn hình giao tiếp Serial để biết thông tin.

Tiến hành nạp code. (Nội dung code và chú thích em có đính kèm ở
phần phụ lục cuối cùng của đồ án)

60
Hình 4.3: Đăng ký vân tay thành công

4.3.2. Xóa dấu vân tay trong bộ nhớ của AS608

Code:

#include <Adafruit_Fingerprint.h>
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&Serial2);

void setup()
{
Serial.begin(57600);
while (!Serial); // For Yun/Leo/Micro/Zero/...delay(100);
Serial.println("\n\nDelete Finger");

// set the data rate for the sensor serial portfinger.begin(57600);

if(finger.verifyPassword()){ Serial.println("Found fingerprint sensor!");


} else {
Serial.println("Did not find fingerprint sensor :(");while (1);
}
}

61
uint8_t readnumber(void) {uint8_t num = 0;
while (num == 0) {
while (! Serial.available());num = Serial.parseInt();
}
return num;
}

void loop()// run over and over again


{
Serial.println("Please type in the ID # (from 1 to 127) you want to delete...");uint8_t
id = readnumber();
if (id == 0) {// ID #0 not allowed, try again!return;
}

Serial.print("Deleting ID #");Serial.println(id);

deleteFingerprint(id);
}

uint8_t deleteFingerprint(uint8_t id) {uint8_t p = -1;

p = finger.deleteModel(id);

if (p == FINGERPRINT_OK) {
Serial.println("Deleted!");
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("Communication error");return p;
} else if (p == FINGERPRINT_BADLOCATION) {
Serial.println("Could not delete in that location");return p;
} else if (p == FINGERPRINT_FLASHERR) {
Serial.println("Error writing to flash");return p;
} else {
Serial.print("Unknown error: 0x"); Serial.println(p, HEX);return p;
}
}

4.3.3. Nạp code cho Ardiuno Mega 2560

Tiến hành kết nối: cảm biến vân tay, module RFID, ma trận phím
, relay vớiardiuno mega 2560.
(Phần code là chú thích em có đính kèm ở dưới)

62
Sau khi nạp code ta tiến hành nhập mật khẩu từ 1>8, ấn vân tay và quẹt
thẻ RFID. Bật màn hình Serial lên và xem kết quả.

Hình 4.4: Chạy thử 3 chức năng mở cửa


Màn hình đọc được mật khẩu là:
12345678UID của thẻ là: 61 FE B4 63
Mở khóa vân tay với vân tay số 1 và 6.

63
4.4. Mô hình sau khi đã hoàn thành:

Sau quá trình nghiên cứu và thiết kế , nhóm em thi công mô hình có kích
thước đáy 35x35cm, độ cao 15cm, các mạch chức năng được phân bổ như
hình chụp sau:

Hình 4.5: Mặt trước mô hình

64
Hình 4.6: Mặt trong mô hình

65
Hình 4.7: Module SIM900A trên mô hình thực tế

Trong mô hình, để phục vụ mở khóa cửa thông qua cuộc gọi đi động, nhóm
em sử dụng module SIM900A. Khi có cuộc gọi đến, module sẽ gửi thông tin số
điện thoại người gọi đến Arduino, nếu trùng với số điện thoại đã cài đặt sẵn,
cửa sẽ mở khóa trong 5 giây kể từ khi có thông báo cuộc gọi và sẽ khóa trở lại
sau 10 giây.

66
Hình 4.8: Module đọc thẻ từ trên mô hình thực tế

Module đọc thẻ từ được sử dụng để đọc UID của thẻ từ, sau đó đối chiếu với
UID đã được cài đặt trong arduino. Nếu UID thẻ từ trùng khớp với UID được
cấu hình sẵn, cửa sẽ được mở khóa ngay lập tức, giữ cửa mở trong 5 giây sau
đó khóa cửa.

67
Hình 4.9: Cảm biến vân tay trên mô hình thực tế

Cảm biến vân tay sẽ quét hình ảnh vân tay, thông qua các bước xử lí sẽ thu
được mẫu vân tay để so sánh với vân tay đã được đăng kí. Nếu vân tay trùng
khớp với một trong những mẫu vân tay đã được đăng kí trước, cửa sẽ mở khóa
trong 5 giây và khóa lại sau 10 giây. Để module nhận dạng chính xác, vị trí tay
cần đặt hướng nghiêng 45 độ trên bề mặt cảm biến, đảm bảo bề mặt cảm biến
vân tay không có vết bẩn.

68
Hình 4.10: Module bàn phím trên mô hình thực tế

Trong mô hình, module bàn phím sẽ được sử dụng để nhập mật khẩu gồm 8
số. Khi nhập mật khẩu, trên màn hình LCD sẽ hiển thị mật khẩu dưới dạng dấu (*),
mật khẩu nhập vào sẽ được so sánh với mật khẩu đã được cấu hình trong arduino,
nếu mật khẩu đúng, cửa sẽ mở trong 5 giây, sau đó sẽ khóa lại sau 5 giây tiếp theo
kèm theo thông báo trên màn hình. Nếu mật khẩu sai, thông báo sẽ xuất hiện trên
màn hình cho biết răng mật khẩu không chính xác.

69
4.5. Kết quả chạy thực tế:

4.6. STT 4.7. Linh kiện 4.8. Số lần 4.9. Số lần 4.10. Số 4.11. Kết
chạy đạt lần lỗi quả

4.12. 1 4.13. Cảm biến 4.14. 10 4.15. 9 4.16. 1 4.17. Đạt


vân tay

4.18. 2 4.19. Thẻ từ 4.20. 10 4.21. 10 4.22. 0 4.23. Đạt


RFID

4.24. 3 4.25. Passcode 4.26. 10 4.27. 10 4.28. 0 4.29. Đạt

4.30. 4 4.31. Cuộc gọi 4.32. 10 4.33. 7 4.34. 3 4.35. Đạt

Ghi chú:
- Vân tay đôi khi không nhận diện được nếu ngón tay bị ẩm ướt hoặc bề mặt
đầu đọc cảm biến không sạch, cần giữ ngón tay khô ráo và bề mặt cảm biến
không có vết bẩn, bề mặt ngón tay cần đặt ngón tay song song với mặt kính.
- Đầu đọc thẻ từ và passcode hoạt động ổn định, không xảy ra lỗi.
- Tính năng mở khoá qua cuộc gọi đôi khi bị lỗi do tín hiệu di động không đủ
mạnh.

70
CHƯƠNG 5: KẾT LUẬN

Trên đây là báo cáo đồ án tốt nghiệp của nhóm về đề tài “Thiết kế và thi
công mô hình nhà thông minh” và đi sâu vào phần khóa cửa thông minh. Với
đồ án này nhóm đã nghiên cứu và thiết kế ra được một loại khóa tích hợp nhiều
chức năng khóa và mở khóa áp dụng các công nghệ phù hợp với thời đại công
nghệ hiện nay như mở khóa bằng vân tay, mở khóa qua mật khẩu nhập từ bàn
phím, mở khóa bằng thẻ từ, mở khóa qua tin nhắn. Tất cả được tích hợp trên
board mạch vi xử lý Arduino MEGA 2560.
Khóa cửa thông minh đa năng này có nhiều ưu điểm so với các thiết kế
khác cùng loại. Đầu tiên phải kể đến nó mang nhiều ưu điểm tương tự như các
loại của thông minh như: tính an toàn cao, tiện lợi, có khả năng điều khiển từ
xa, tiết kiệm thời gian... Hơn nữa so với các thiết kế khác trước đó thì nó có
khá nhiều tính năng, có thế có nhiều cách để mở khóa nếu có 1 vài tính năng
gặp trục trặc. Tiếp theo, ưu điểm mà em có thể kể đến đó là chi phí của sản
phẩm thì khá thấp. Có khả năng cạnh tranh nếu thực sự được đưa ra thị trường.
Với xu thế ngày càng nhiều người dùng sử dụng các loại cửa thông minh
để đáp ứng nhu cầu bảo mật và bảo vệ tài sản riêng của họ trong thời đại hiện
nay, em tin rằng thiết kế cửa thông minh của mình của mình của thế đáp ứng
được nhu cầu đó.

71
TÀI LIỆU THAM KHẢO

Các trang web:

1. https://www.arduino.cc/
2. https://vi.wikipedia.org/

3. https://arduinokit.vn/

4. https://nshopvn.com/product/cam-bien-nhan-dang-van-tay/

5. https://hshop.vn/products/module-sim900a

6. https://lionlock.vn/danh-muc/khoa-cua-thong-minh/
7. https://www.elprocus.com/fingerprint-sensor-working-and-
applications/

72
PHỤ LỤC

CODE NẠP VÀ CHÚ THÍCH

1. Code đăng ký dấu vân tay cho cảm biến AS608


#include <Adafruit_Fingerprint.h>
SoftwareSerial mySerial(2, 3); // TX/RX
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
uint8_t id;
void setup()
{
Serial.begin(9600);
while (!Serial); // For Yun/Leo/Micro/Zero/...
delay(100);
Serial.println("\n\nAdafruit Fingerprint sensor enrollment");

// set the data rate for the sensor serial port


finger.begin(57600);

if (finger.verifyPassword()) {
Serial.println("Found fingerprint sensor!");
} else {
Serial.println("Did not find fingerprint sensor :(");
while (1) { delay(1); }
}
}

uint8_t readnumber(void) {
uint8_t num = 0;

while (num == 0) {
while (! Serial.available());
num = Serial.parseInt();
}
return num;
}

void loop() // run over and over again


{
Serial.println("Ready to enroll a fingerprint!");
Serial.println("Please type in the ID # (from 1 to 127) you want to save this finger
as...");

73
id = readnumber();
if (id == 0) {// ID #0 not allowed, try again!
return;
}
Serial.print("Enrolling ID #");
Serial.println(id);
while (! getFingerprintEnroll() );
}
uint8_t getFingerprintEnroll() {
int p = -1;
Serial.print("Waiting for valid finger to enroll as #"); Serial.println(id);
while (p != FINGERPRINT_OK) {
p = finger.getImage();
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image taken");
break;
case FINGERPRINT_NOFINGER:
break;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
break;
case FINGERPRINT_IMAGEFAIL:
Serial.println("Imaging error");
break;
default:
Serial.println("Unknown error");
break;
}
}
// OK success!
p = finger.image2Tz(1);
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image converted");
break;
case FINGERPRINT_IMAGEMESS:
Serial.println("Image too messy");
return p;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
return p;
case FINGERPRINT_FEATUREFAIL:

74
Serial.println("Could not find fingerprint features");
return p;
case FINGERPRINT_INVALIDIMAGE:
Serial.println("Could not find fingerprint features");
return p;
default:
Serial.println("Unknown error");
return p;
}

Serial.println("Remove finger");
delay(2000);
p = 0;
while (p != FINGERPRINT_NOFINGER) {
p = finger.getImage();
}
Serial.print("ID "); Serial.println(id);
p = -1;
Serial.println("Place same finger again");
while (p != FINGERPRINT_OK) {
p = finger.getImage();
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image taken");
break;
case FINGERPRINT_NOFINGER:
break;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
break;
case FINGERPRINT_IMAGEFAIL:
Serial.println("Imaging error");
break;
default:
Serial.println("Unknown error");
break;
}
}

// OK success!

p = finger.image2Tz(2);
switch (p) {

75
case FINGERPRINT_OK:
Serial.println("Image converted");
break;
case FINGERPRINT_IMAGEMESS:
Serial.println("Image too messy");
return p;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
return p;
case FINGERPRINT_FEATUREFAIL:
Serial.println("Could not find fingerprint features");
return p;
case FINGERPRINT_INVALIDIMAGE:
Serial.println("Could not find fingerprint features");
return p;
default:
Serial.println("Unknown error");
return p;
}

// OK converted!
Serial.print("Creating model for #"); Serial.println(id);

p = finger.createModel();
if (p == FINGERPRINT_OK) {
Serial.println("Prints matched!");
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("Communication error");
return p;
} else if (p == FINGERPRINT_ENROLLMISMATCH) {
Serial.println("Fingerprints did not match");
return p;
} else {
Serial.println("Unknown error");
return p;
}

Serial.print("ID "); Serial.println(id);


p = finger.storeModel(id);
if (p == FINGERPRINT_OK) {
Serial.println("Stored!");
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("Communication error");

76
return p;
} else if (p == FINGERPRINT_BADLOCATION) {
Serial.println("Could not store in that location");
return p;
} else if (p == FINGERPRINT_FLASHERR) {
Serial.println("Error writing to flash");
return p;
} else {
Serial.println("Unknown error");
return p;
}
}

77
2. Code xóa dấu vân tay trong bộ nhớ của AS608
#include <Adafruit_Fingerprint.h>
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&Serial2);
void setup()
{
Serial.begin(57600);
while (!Serial); // For Yun/Leo/Micro/Zero/...delay(100);
Serial.println("\n\nDelete Finger");

// set the data rate for the sensor serial portfinger.begin(57600);


if (finger.verifyPassword()) { Serial.println("Found fingerprint sensor!");
} else {
Serial.println("Did not find fingerprint sensor :(");while (1);
}
}
uint8_t readnumber(void) {uint8_t num = 0;
while (num == 0) {
while (! Serial.available());num = Serial.parseInt();
}
return num;
}
void loop() // run over and over again
{
Serial.println("Please type in the ID # (from 1 to 127) you want to delete...");uint8_t
id = readnumber();
if (id == 0) {// ID #0 not allowed, try again!return;
}
Serial.print("Deleting ID #");Serial.println(id); deleteFingerprint(id);
}
uint8_t deleteFingerprint(uint8_t id) {uint8_t p = -1;
p = finger.deleteModel(id);
if (p == FINGERPRINT_OK) {
Serial.println("Deleted!");
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("Communication error");return p;
} else if (p == FINGERPRINT_BADLOCATION) {
Serial.println("Could not delete in that location");return p;
} else if (p == FINGERPRINT_FLASHERR) {
Serial.println("Error writing to flash");return p;
} else {
Serial.print("Unknown error: 0x"); Serial.println(p, HEX);return p;
}
}

78
3. Code nạp cho ARDIUNO MEGA 2560

#include <Wire.h> // giao tiếp với hình LCD #include <LiquidCrystal_I2C.h> //


thư viện I2C LCD#include <Keypad.h> // thư viện bàn phím
#include <SPI.h> // thư viện giao tiếp SPI #include <MFRC522.h> // thư viện
module RFID

#include <Adafruit_Fingerprint.h> // thư viện cảm biến vân tayint relay=6; // khóa
cửa
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&Serial2); // nhận tín hiệu từ
cảm biến vân tay đến màn hình Serial
#define SS_PIN 53 // khai báo chân SS của RFID #define RST_PIN 49 // khai báo
chân Reset củaRFID
MFRC522 mfrc522(SS_PIN, RST_PIN); // khai báo tên module RFID
// bàn phím
// độ dài mật khẩu
#define Password_Length 9
// mảng lưu mật khẩu
char Data[Password_Length];
// mật khẩu
char Master[Password_Length] = "12345678";
// đếm ký tự
byte data_count = 0;
// ký tự nhập từ bàn phímchar customKey;
// số lượng dòng và cộtconst byte ROWS = 4; const byte COLS = 4;
// mảng đại diện cho bàn phím char hexaKeys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
// kết nối bàn phím với ardiuno
byte rowPins[ROWS] = {29, 27, 28, 26};
byte colPins[COLS] = {25, 24, 23, 22};
//tạo đối tượng bàn phím

79
Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins,
ROWS, COLS);
// khởi tạo màn lCD LiquidCrystal_I2C lcd(0x27, 16, 2);
// sim 800l
char inchar; // chữ số trong số điện thoại gọi đếnint onoff=0; // trạng thái cuộc gọi,
on=1, off=0 void setup() // hàm khởi tạo chương trình
{
lcd.backlight(); // bật đèn nền LCDlcd.init();
Serial.begin(9600); // bật màn hình Serial trên máy tính Serial2.begin(9600); //khởi
tạo tốc độ giao tiếp Mega với cảm biến vân taySerial3.begin(9600); //khởi tạo tốc
độ giao tiếp Mega với sim 800l pinMode(6, OUTPUT); // khai báo khóa cửa điện là
đầu ra
// tiến hành cho phép module sim nhận cuộc gọi delay(200); // thời gian nhận cuộc
gọi Serial3.print("AT+CLIP=1\r"); // lệnh nhận cuộc gọidelay(100);
//RFID
SPI.begin(); // bắt đầu giao tiếp SPI mfrc522.PCD_Init(); // xóa dữ liệu
MFRC522
Serial.println(" ĐỒ ÁN TỐT NGHIỆP - KHÓA THÔNG MINH "); // đang đợi thẻ
Serial.println(" đang tiến hành đợi thẻ RFID "); // đnag đợi thẻ
Serial.println();
// VAN TAY
while (!Serial);delay(100);
// cài đặt tốc độ nhận diện vân tayfinger.begin(57600);

80
if (finger.verifyPassword())// nếu có dấu vân tay
{
Serial.println("Found fingerprint sensor"); // đang tìm kiếm cảm biến
} else
{
Serial.println("Did not find fingerprint sensor"); // không tìm thấy cảm biếnwhile
(1) { delay(1); }
}
finger.getTemplateCount();
Serial.print("Sensor contains "); // cảm biến đang nhận diện
Serial.print(finger.templateCount);
Serial.println(" template(s)"); // vân tay số s Serial.println("Waiting for valid
finger...");// đợi vân tay
}
void loop() //vòng lặp chương trình chính
{
banphim();cuocgoi(); rfid();
vantay();
}
void clearData() // xóa dữ liệu trên bàn phím
{
// đi qua mảng và xóa dữ liệuwhile (data_count != 0)
{
Data[data_count--] = 0;
}
return;
}
void banphim() // chương trình bàn phím
{ lcd.setCursor(0, 0); // dòng 1
lcd.print("Enter Password:"); // in ra dòng 1 LCDcustomKey =
customKeypad.getKey(); // nhấn nútif (customKey) {
// nhập phím đếm vào mảng và đếm tăng dầnData[data_count] = customKey;
lcd.setCursor(data_count, 1); lcd.print(Data[data_count]);
Serial.println(Data[data_count]);
data_count++; // độ dài tăng lên 1 sau mỗi lần nhấn số
}
//kiểm tra đã đạt độ dài mật khẩu chưa
if (data_count == Password_Length - 1)
{
lcd.clear(); //xóa dữ liệu LCDif (!strcmp(Data, Master))
{
// mật khẩu đúng

81
lcd.print(" MAT KHAU DUNG ");Serial.println("mật khẩu đúng"); lcd.setCursor(0,
1);
lcd.print(" CUA DANG MO ");
// bật relay 5s
digitalWrite(relay, HIGH); // mở cửa delay(5000); digitalWrite(relay,LOW); //
khóa cửa
}
else
{
// mật khẩu sai
lcd.print(" MAT KHAU SAI ");Serial.println("mật khẩu sai");
delay(1000);
}
// xóa dữ liệu LCDlcd.clear(); clearData();
}}
void rfid() // chương trình đọc UID thẻ RFID
{
if ( ! mfrc522.PICC_IsNewCardPresent()) // nếu có thẻ mới
{
return; // quay lại
}
// Select one of the cards
if ( ! mfrc522.PICC_ReadCardSerial()) // nếu đọc được UID của thẻ
{
return;
}
//Show UID on serial monitorSerial.print("UID tag :"); String content= "";
byte letter;
for (byte i = 0; i < mfrc522.uid.size; i++)
{
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
Serial.print(mfrc522.uid.uidByte[i], HEX);
content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
content.concat(String(mfrc522.uid.uidByte[i], HEX));
}
Serial.println(); Serial.print("Message : ");content.toUpperCase();
if (content.substring(1) == "61 FE B4 63" ) //mã UID của thẻ đúng
{ lcd.setCursor(0, 0);
lcd.print(" RFID - MO CUA "); Serial.println("Authorized access");Serial.println();
digitalWrite(relay,HIGH); delay(5000); digitalWrite(relay,LOW);
}
else // nếu không đúng thẻ
{

82
lcd.setCursor(0, 0);
lcd.print(" THE RFID - SAI "); Serial.println(" Access denied");delay(1000);
}}
void vantay() // chương trình đọc dấu vân tay
{
getFingerprintIDez();
delay(5); // không cần đọc vân tay ở tốc độ tối đa
int getFingerprintIDez() { uint8_t p = finger.getImage();
if (p != FINGERPRINT_OK) return -1;
p = finger.image2Tz();
if (p != FINGERPRINT_OK) return -1;
p = finger.fingerFastSearch();
if (p != FINGERPRINT_OK) return -1;
// found a match!
Serial.print("Found ID #"); // hiển thị ID số đã được lưu trong cảm biến vân tay
Serial.print(finger.fingerID);
Serial.print(" with confidence of ");Serial.println(finger.confidence);
lcd.setCursor(0, 0);
lcd.print(" VAN TAY-MO CUA"); digitalWrite(relay, HIGH); // mở cửa
delay(5000);
digitalWrite(relay, LOW); // đóng cửaSerial.println("Unlocked");
return finger.fingerID;
}
void doSomething() // hàm nhận cuộc gọi
{
if (onoff==0)// nếu có cuộc gọi đến từ số chủ nhà
{
digitalWrite(6, HIGH); lcd.setCursor(0, 0); lcd.print("CUOC GOI-MO CUA ");
delay(10000); digitalWrite(6, LOW);
onoff=1;// chuyển sang trạng thái không có cuộc gọi
}
else
{
lcd.setCursor(0, 0);
lcd.print(" RING- DONG CUA ");
delay(2000); digitalWrite(6, LOW);
onoff=0; // chuyển sang trạng thái ban đầu
}
}
void cuocgoi()
{
if(Serial3.available() >0) // nếu như có cuộc gọi đến
{

83
inchar=Serial3.read(); //Ví dụ với số điện thoại 0855665278
if (inchar=='0')
{
delay(10); inchar=Serial3.read();if (inchar=='3')
{
delay(10); inchar=Serial3.read();if (inchar=='4')
{
delay(10); inchar=Serial3.read();if (inchar=='6')
{
delay(10); inchar=Serial3.read();if (inchar=='1')
{
delay(10); inchar=Serial3.read();if (inchar=='7')
{

delay(10); inchar=Serial3.read();if (inchar=='1')


{
delay(10); inchar=Serial3.read();if (inchar=='5')
{
delay(10); inchar=Serial3.read();if (inchar=='6')
{
delay(10); inchar=Serial3.read();if (inchar=='3')
{
Serial3.println("do sometehing");delay(10);
doSomething();
}
}
}
}
}
}
}
}
}
}
}
}

84
5.1. 4. Code nạp dùng cho hệ thống báo cháy

#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal_I2C.h>
#define ONE_WIRE_BUS 5
#include "SoftwareSerial.h"
SoftwareSerial sim800a(2,3);
LiquidCrystal_I2C lcd(0x27,20,4);
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
#define nhiet_do_dat 40
String SDT="0941428567";
int gas = 6;
int speaker =7; byte degree[8] = {0B01110,
0B01010,
0B01110,
0B00000,
0B00000,
0B00000,
0B00000,
0B00000
};
//*****************************************************
void setup(void)
{
Serial.begin(9600); sensors.begin(); sim800a.begin(9600);
pinMode(gas, INPUT);
pinMode(speaker,OUTPUT);lcd.init();
lcd.backlight();lcd.clear();
lcd.setCursor(0,0);
lcd.print("Do An Tot Nghiep");lcd.setCursor(0,1);
lcd.print(" 2022-2023");
delay(3000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("GVHD: ");
lcd.setCursor(0,1);
lcd.print(" ThS.TD Cuong");
delay(3000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Nhiet do:");
lcd.setCursor(0,1);
lcd.print("MQ135:");
lcd.createChar(1, degree);
}
//*************************************************************
void loop(void)

85
{
//cam bien DS18B20
sensors.requestTemperatures();
Serial.print("Nhiet do");
Serial.println(sensors.getTempCByIndex(0));
float nhiet_do =(sensors.getTempCByIndex(0));
lcd.setCursor(10,0);
lcd.print(round(nhiet_do));
lcd.print(" ");
lcd.write(1);
lcd.print("C");
if (nhiet_do > nhiet_do_dat)
{
digitalWrite(speaker,HIGH);
// call
at("AT",1000);
at("ATD"+SDT+";",15000);at("ATH",1000);
}
else
{
digitalWrite(speaker,LOW);
}
//*************************************************************
//cam bien MQ135
if (digitalRead(gas) == HIGH)
{
lcd.setCursor(7,1);
lcd.print("B/Thuong");
digitalWrite(speaker,LOW);
}
else
{
lcd.setCursor(7,1);
lcd.print("Co Gas ");
digitalWrite(speaker,HIGH);
//SMS
at("AT",1000);
at("AT+CMGF=1",1000);
at("AT+CSCS=\"GSM\"",1000);
at("AT+CMGS=\"" + SDT+"\"",2000);
at("Chu y Phat hien co khi gas",1000);
sim800a.write(26);
}
}
void at(String _atcm,unsigned long _dl)
{
sim800a.print(_atcm+"\r\n");
delay(_dl);
}

86
87

You might also like