Để thực hiện được đề tài, em đã sử dụng: Arduino trung tâm để xử lý các tín hiệu từ website, thẻ từ, bàn phím và quyết định việc mở cửa Các ESP để gửi dữ liệu lưu trữ lên SQL, nhận d
Trang 1TRƯỜNG CÔNG NGHỆ KHOA ĐIỆN – ĐIỆN TỬ
HUỲNH VĂN PHƯƠNG
THIẾT KẾ GIẢI PHÁP PHẦN MỀM VÀ QUẢN LÝ CSDL CHO HỆ THỐNG CỬA ĐIỆN TỬ BẢO MẬT ỨNG DỤNG CÔNG
NGHỆ IOT
ĐỒ ÁN TỐT NGHIỆP NGÀNH ĐIỆN TỰ ĐỘNG
Trang 2KHOA ĐIỆN – ĐIỆN TỬ
Trang 3TRƯỜNG ĐẠI HỌC DUY TÂN CỘNG HOÀ XÃ HỘI CHỦ NGHĨA
VIỆT NAM
Độc lập - Tự do – Hạnh phúc
KHOA ĐIỆN ĐIỆN TỬ
PHIẾU NHẬN XÉT ĐỒ ÁN TỐT NGHIỆP
(Dành cho giảng viên hướng dẫn)
Họ và tên sinh viên: Huỳnh Văn Phương MSSV:25211702222
Tên đề tài: Thiết kế giải pháp phần mềm và quản lý CSDL cho hệ thống
cửa điện tử bảo mật ứng dụng công nghệ IoT
Ngành đào tạo: Điện tự động
Họ và tên GV hướng dẫn: Ts Tôn Thất Đồng
Ý KIẾN NHẬN XÉT
1 Nhận xét về tinh thần, thái độ làm việc của sinh viên:
2 Nhận xét về kết quả thực hiện của ĐATN: 2.1.Kết cấu, cách thức trình bày ĐATN:
2.2 Nội dung đồ án: (Cơ sở lý luận, tính thực tiễn và khả năng ứng dụng của đồ án, các hướng nghiên cứu có thể tiếp tục phát triển)
2.3.Kết quả đạt được:
Trang 4
2.4 Những tồn tại (nếu có):
1 Hình thức và kết cấu ĐATN 30
Đúng format với đầy đủ cả hình thức và nội dung
của các mục
10
Mục tiêu, nhiệm vụ, tổng quan của đề tài 10
Tính cấp thiết của đề tài 10
Khả năng ứng dụng kiến thức toán học, khoa học và
kỹ thuật, khoa học xã hội…
5
Khả năng thực hiện/phân tích/tổng hợp/đánh giá 10
Khả năng thiết kế chế tạo một hệ thống, thành phần,
hoặc quy trình đáp ứng yêu cầu đưa ra với những
ràng buộc thực tế
15
Khả năng cải tiến và phát triển 15
Khả năng sử dụng công cụ kỹ thuật, phần mềm
Trang 5PHIẾU NHẬN XÉT ĐỒ ÁN CỦA GIẢNG VIÊN PHẢN BIỆN
(Dành cho giảng viên hướng dẫn)
Họ và tên sinh viên: Huỳnh Văn Phương
Tên đề tài: Thiết kế giải pháp phần mềm và quản lý CSDL cho hệ thống cửa điện tử
bảo mật ứng dụng công nghệ IoT
Nhận xét – ý kiến: (GV nêu những nhận xét chung, những sai sót trong thuyết
minh, bản vẽ hoặc những góp ý cho (nhóm) sinh viên):
Câu hỏi: 1
2
3
Giảng viên phản biện
(Ký và ghi rõ họ tên)
Trang 6TÓM TẮT KHOÁ LUẬN
Đề tài mà em đã chọn có tên là “Hệ thống cửa bảo mật ứng dụng IoT”
Để thực hiện được đề tài, em đã sử dụng:
Arduino trung tâm để xử lý các tín hiệu từ website, thẻ từ, bàn phím và quyết định việc mở cửa
Các ESP để gửi dữ liệu lưu trữ lên SQL, nhận dữ liệu từ arduino cũng như thu thập hình ảnh và lưu trữ lên Google Drive
Module sim để thực hiện việc gửi tin nhắn và gọi điện cảnh báo mỗi khi có trường hợp đột nhập
Sau khi hoàn thành và kiểm tra thì kết quả là hệ thống chạy ổn định đảmbảo yêu cầu bảo mật, đôi khi có chút chậm do tín hiệu wifi, chất lượng thiết bịcũng như các dây kết nối
Trang 7NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
Mục tiêu dự kiến sẽ đạt được:
Nghiên cứu chế tạo ra được mô hình smartlock tối ưu và hiệu quả nhất
Nghiên cứu và chọn thiết bị, linh kiện cho tốt ưu và hiệu quả nhất
Tăng cường bảo mật và tiết kiệm thời gian cho người sử dụng smartlock
Thiết kế được giao diện người dùng hệ thống đơn giản thân thiện với người dùng để quản lí tài khoản người dùng, lịch sử mở cửa, screen short lưu vào database Thực hiện điều chỉnh chế độ bảo mật và điều khiển đóng mở cửa từ
xa trên hệ thống web
Đảm bảo yêu cầu về bảo mật: xử lí bảo mật ứng dụng module sim để thực hiện việc gửi tin nhắn và gọi điện cảnh báo mỗi khi có hợp đột nhập, lập trình Arduino chức năng lớp bảo mật
Nhiệm vụ đồ án tốt nghiệp: (các nội dung sẽ thực hiện trong đề tài):
Thiết kế sơ đồ khối chức năng chính của hệ thống: khối xử lí âm thanh, khối truyền nhận không dây, khối hiển thị, khối bàn phím, khối nhận diện thẻ từ, khối camera, khối cảnh báo di động, khối cảnh báo âm thanh
Tìm hiểu kĩ và lựa chọn thiết bị phù hợp với các khối chức năng đã thiết kế
Tìm hiểu, nghiên cứu lập trình cùng bạn làm chung và nạp code cho các thiếtbị: Lập trình web html, lập trình logic Arduino và ESP cam
Lắp mạch: thiết kế sơ đồ nối mạch cho hệ thống, sau đó tiến hành nối mạch theo sơ đồ đã thuyết kế
Lưu đồ giải thuật: vẽ lưu đồ giải thuật cho chương trình chính của hệ thống,
vẽ lưu đồ chương trình quẹt thẻ, vẽ lưu đồ chương trình nhập mật khẩu, vẽ lưu đồ chương trình quản lí qua website và lưu đồ điều khiển khóa cửa
Kiểm tra sửa lỗi, tối ưu hóa, nâng cấp thêm tính năng hệ thống: kiểm tra, sửa lỗi, tối ưu những phần chưa ổn định của hệ thống và nâng cấp thêm tính nănghay cho hệ thống
Trang 8LỜI CẢM ƠN
Đồ án này có thể xem là kết quả của quá trình học tập, tích luỹ kiến thứccủa em trong những năm học vừa qua Nhưng kiến thức chỉ là lý thuyết để có thểthực hiện được đồ án này em đã nhận được sự giúp đỡ và hỗ trợ rất nhiều từ cácthầy cô Sự hướng dẫn, chỉ dạy từ quý thầy cô đã giúp em có thể hoàn thànhđược đồ án này một cách trọn vẹn như những gì đã đặt ra trước khi bắt đầu tìmhiểu và thực hiện
Chính vì lẽ đó, em xin gửi lời cảm ơn đến Khoa Điện điện tử nói chung cũng như Chuyên ngành điện tự động đã tạo điều kiện để sinh viên em có thể
thực hiện đồ án nhằm củng cố lại kiến thức đã học đồng thời tìm hiểu, nghiêncứu những kiến thức mới để có thể áp dụng vào công việc trong tương lai
Đặc biệt, em xin chân thành cảm ơn thầy Tôn Thất Đồng đã tận tính
hướng dẫn, giúp đỡ em trong suốt quá trình thực hiện đồ án Nhờ sự hỗ trợ cũngnhư chỉ dạy của thầy mà em mới có thể hoàn thành đồ án như mong đợi
Em xin cam đoan đây là công trình nghiên cứu của em
Các số liệu, kết quả nêu trong khóa luận là trung thực và chưa từng được
ai công bố trong bất kì công trình nào khác
Một lần nữa, em xin chân thành cảm ơn!
Trang 9LỜI CAM ĐOAN
Tôi xin cam đoan đây là công trình nghiên cứu khoa học độc lập của tôi Những sốliệu trong luận văn là hoàn toàn trung thực, có nguồn gốc rõ ràng và chưa từng được
ai công bố trong bất kỳ công trình nào khác Các kết quả nghiên cứu do chính tôithực hiện dưới sự hướng dẫn của giảng viên hướng dẫn
Tôi xin bày tỏ lòng biết ơn đối với TS Tôn Thất Đồng, người đã tận tình hướng dẫntôi trong suốt quá trình nghiên cứu
Tôi cũng xin chân thành cảm ơn các thầy, cô giáo Trường Đại Học Duy Tân đã hỗtrợ để tôi hoàn thành đồ án tốt nghiệp này
Trang 10MỤC LỤC
PHIẾU NHẬN XÉT ĐỒ ÁN TỐT NGHIỆP i
PHIẾU NHẬN XÉT ĐỒ ÁN CỦA GIẢNG VIÊN PHẢN BIỆN iii
TÓM TẮT KHOÁ LUẬN iv
NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP v
LỜI CẢM ƠN vi
LỜI CAM ĐOAN vii
MỤC LỤC viii
DANH SÁCH HÌNH x
DANH SÁCH BẢNG xi
DANH SÁCH CHỮ VIẾT TẮT xiii
CHƯƠNG 1: TỔNG QUAN 1
1 Bối cảnh của đề tài 1
2 Lý do thực hiện đề tài 1
3 Mục tiêu của đề tài 1
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 3
1 Ngôn ngữ lập trình 3
1.1 Ngôn ngữ Arduino 3
Dễ dàng sử dụng, phù hợp cho người mới: 3
1.2 Ngôn ngữ html 4
2 Các chuẩn giao tiếp 5
2.1 Chuẩn giao tiếp UART 5
3 Arduino UNO R3 11
3.1 Giới thiệu 11
3.2 Năng lượng 12
3.3 Bộ nhớ 13
3.4 Các cổng vào/ra 13
4 NodeMCU ESP32 14
4.1 Giới thiệu 14
4.2 Thông số kỹ thuật 15
5 ESP32-CAM OV2640 16
5.1 Giới thiệu 16
5.2 Thông số kỹ thuật 16
6 Module RFID RC522 17
6.1 Giới thiệu 17
Trang 116.2 Thông số kỹ thuật 18
7 Module bàn phím ma trận 4×4 19
7.1 Giới thiệu 19
7.2 Thông số kỹ thuật và sơ đồ nối dây 19
8 Module SIM800A GSM/GPRS 20
8.1 Giới thiệu 20
8.2 Thông số kỹ thuật 20
9 Servo SG90 21
9.1 Giới thiệu 21
9.2 Thông số kỹ thuật 21
10 Module Tiny RTC I2C 21
10.1 Giới thiệu 21
10.2 Thông số kỹ thuật 22
11 Module mở rộng chân PCF8574T giao tiếp I2C 22
11.1 Giới thiệu 22
11.2 Thông số kỹ thuật 23
12 LCD 1602 tích hợp sẵn module chuyển đổi I2C 23
12.1 Giới thiệu 23
12.2 Thông số kỹ thuật 24
CHƯƠNG 3: NỘI DUNG ĐỀ TÀI 25
1 Chuẩn bị 25
1.1 Thiết kế sơ đồ khối chức năng chính của hệ thống 25
1.2 Lựa chọn thiết bị phù hợp với các khối chức năng 26
2 Thực hiện 33
2.1 Nạp code cho các thiết bị 33
Cài Preferences: 33
2.2 Lắp mạch 36
2.3 Lưu đồ giải thuật 38
2.4 Nguyên lý hoạt động 43
CHƯƠNG 4: KẾT LUẬN 49
1 Kết quả đạt được 49
Mô hình hệ thống cửa: 49
Website quản lý hệ thống: 49
Website camera: 52
2 Hạn chế của đồ án 52
3 Hướng phát triển 53
TÀI LIỆU THAM KHẢO 54
Trang 12DANH SÁCH HÌNH
Hình 1 Chuẩn giao tiếp UART 5
Hình 2 Cách thức hoạt động của UART 7
Hình 3 Cấu trúc packet trong UART 7
Hình 4 Truyền nhận dữ liệu song song với bus dữ liệu 7
Hình 5 Truyền bit vào khung dữ liệu 8
Hình 6 Truyền nhận giữa 2 UART 8
Hình 7 Loại bỏ bit khỏi khung dữ liệu 8
Hình 8 Chuyển dữ liệu nối tiếp thành song song gửi đến bus dữ liệu 9
Hình 9 Chuẩn giao tiếp I2C 9
Hình 10 Cấu trúc tin nhắn truyền trong I2C 10
Hình 11 Arduino UNO R3 11
Hình 12 NodeMCU ESP32 15
Hình 13 ESP32-CAM OV2640 16
Hình 14 Module RFID-RC522 18
Hình 15 Bàn phím ma trận 4x4 19
Hình 16 Sơ đồ nối dây của bàn phím 19
Hình 17 Module sim 800A 20
Hình 18 Servo SG90 21
Hình 19 Module Tiny RTC I2C 22
Hình 20 Module mở rộng chân PCF8574T giao tiếp I2C 23
Hình 21 LCD 1602 tích hợp sẵn module chuyển đổi I2C 24
Hình 22 Giao diện Arduino IDE 32
Hình 23 Chọn Preferences 33
Hình 24 Cài Preferences cho Arduino IDE 33
Hình 25 Set Tools cho Aduino UNO R3 34
Hình 26 Set Tools cho NodeMCU ESP32 34
Hình 27 Set Tools cho ESP32-CAM OV2640 35
Hình 28 Sơ đồ nối mạch 35
Hình 29 Mạch sau khi lắp 36
Hình 30 Mô hình hệ thống cửa hoàn chỉnh 47
Hình 31 Giao diện đăng nhập của website 47
Hình 32 Giao diện trang chủ (có thể tương tác với hệ thống) 48
Hình 33 Giao diện quản lý thông tin người dùng 48
Hình 34 Giao diện quản lý lịch sử mở cửa của hệ thống 49
Hình 35 Giao diện quản lý dữ liệu camera 49
Hình 36 Giao diện website camera 50
Trang 13DANH SÁCH BẢNG
Bảng 1 Cấu trúc gói dữ liệu UART 6
Trang 14DANH SÁCH CHỮ VIẾT TẮT
BLE Bluetooth Low Energy Bluetooth năng lượng thấp
EEPROM Electrically Eraseble Programmable
Read Only Memory
Bộ nhớ chỉ đọc lập trình có thểxóa bằng điện
ESP Electronic Stability Program Hệ thống cân bằng điện tử
I2C Inter – Integrated Circuit Giao thức giao tiếp nối tiếp đồng
bộ
IC Integrated Circuit Vi mạch
IoT Internet of Things Internet vạn vật
PWM Pulse Width Modulation Điều chế độ rộng xung
RAM Random Access Memory Bộ nhớ khả biến (bộ nhớ đệm)
RFID Radio Frequency Identification Nhận dạng qua tần số vô tuyến
RTC Real Time Clock Đồng hồ thời gian thực
SPI Serial Peripheral Interface Giao diện ngoại vi nối tiếp
SRAM Static Random Access Memory Bộ nhớ truy cập ngẫu nhiên tĩnh
TX Transmit Truyền
UART Universal Asynchronous Receiver /
Transmitter Thu-phát không đồng bộ đa năng
Vin Voltage Input Điện áp vào
CSDL Database Cơ sở dữ liệu
Trang 15CHƯƠNG 1: TỔNG QUAN
1 Bối cảnh của đề tài
Hiện nay, vấn nạn trộm cắp tài sản, đánh cắp thông tin cá nhân cũng như
tổ chức thông qua các thiết bị điện tử bị mất đang là một trong những vấn đềnhức nhối và đáng báo động Bằng chứng là chúng ta có thể dễ dàng bắt gặp rấtnhiều vụ như vậy trên các bản tin thời sự hằng ngày Có rất nhiều nguyên nhândẫn đến sự việc này như là cửa ra vào không chắc chắn, dễ dàng xâm nhập; nạnnhân thiếu cảnh giác, bất cẩn; vấn đề bảo mật chưa được chú trọng quan tâm.Nhìn chung tất cả các nguyên nhân trên đều xuất phát từ cửa ra vào bởi đây gầnnhư là con đường duy nhất và dễ dàng nhất để những kẻ xấu có thể xâm nhậpvào nhà, cơ quan thực hiện hành vi trộm cắp Chính vì lẽ đó, cần có giải phápbảo mật cửa để khắc phục cũng như hạn chế vấn đề này
Đề tài gần gũi phù hợp với kiến thức và khả năng sinh viên
Đề tài tạo điều kiện để có thể áp dụng được những kiến thức đã học về vi điều khiển, IoT, lập trình vi điều khiển, các giao thức giao tiếp giữa vi điều khiển,…
Đề tài cũng có nhiều kiến thức mới có thể tìm hiểu, nghiên cứu và áp dụng trong tương lai
3 Mục tiêu của đề tài
Mục tiêu mà em đặt ra khi thực hiện đề tài là:
Thiết kế được hệ thống chạy ổn định đầy đủ các chức năng đề ra
Trang 16 Có thể ứng dụng thực tế và đưa vào sử dụng trong tương lai
Trang 17CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
vì vậy, dù không biết nhiều về điện tử cũng vẫn có thể lập trình để tạo ra nhữngứng dụng thú vị
Thêm vào đó, vì ngôn ngữ lập trình Arduino là một platform đã được tiếnhành chuẩn hóa, nên đã có rất nhiều các bo mạch mở rộng Những bo mạch nàygọi là shield dùng để cắm chồng lên bo mạch Arduino Có thể hình dung đơngiản rằng nó là “Library” của các ngôn ngữ lập trình khác trên thế giới
1.1.2 Ưu điểm
Ngôn ngữ lập trình Arduino rất rẻ: Lập trình Arduino là một ngôn ngữ
lập trình quen thuộc mà có thể dễ dàng tiếp cận cực kỳ dễ dàng mà khôngtốn quá nhiều chi phí So với những người anh em khác, ngôn ngữ lậptrình Arduino khá rẻ và không yêu cầu thêm nhiều phụ phí khi sử dụng
Có thể dễ dàng mua được một bộ ngôn ngữ lập trình Arduino chỉ với giávài trăm ngàn
Dễ dàng sử dụng, phù hợp cho người mới:
o Ngôn ngữ lập trình Arduino hiện đang sử dụng phiên bản đơn giảnhóa của ngôn ngữ C++ Đây chính là một trong những ưu thế cực
kỳ lớn của Arduino so với những chương trình phần mềm thiết kếkhác Thêm vào đó, hiện nền tảng Arduino có sử dụng phần mềmIDE dành cho người mới học lập trình
o Không chỉ thế, cộng đồng trực tuyến về lập trình Arduino rất lớn
Trang 18Có hàng triệu người dùng và tổ chức trên thế giới đều đang sửdụng nó Bởi vậy, có rất nhiều bài hướng dẫn và các dự án có sẵntrên Internet dễ dàng có thể tìm kiếm để học và bắt đầu nghiên cứumột cách đơn giản.
Đa nền tảng: Không phải tự nhiên phần mềm lập trình Arduino lại thu
hút và phổ biến đến như vậy Một phần lớn là do lập trình Arduino IDE cókhá nhiều nền tảng Điều này đồng nghĩa với việc có thể khởi động ngônngữ này trên Windows, Macintosh OSX Thậm chí với cả hệ điều hànhLinux so với các hệ thống vi điều khiển khác chỉ chạy Windows cũng cóthể sử dụng và khởi động Arduino
Tính đa dạng: Ngoài việc tìm hiểu ngôn ngữ lập trình Arduino là gì,
người ta còn quan tâm xem nó có đa dạng hay không Nền tảng lập trìnhArduino có nhiều biến thể khác nhau Sự đa dạng của nền tảng mã nguồn
mở của Arduino không bị hạn chế về không gian, bộ nhớ và sức mạnh xửlý
1.2 Ngôn ngữ html
1.2.1 Giới thiệu
HTML có tên đầy đủ là Hypertext Markup Language nghĩa là ngôn ngữđánh dấu siêu văn bản HTML thường được sử dụng để tạo và cấu trúc các phầntrong trang web và ứng dụng, phân chia các đoạn văn, heading, link,blockquotes,…
HTML không phải là một ngôn ngữ lập trình mà chỉ là một ngôn ngữđánh dấu Điều này đồng nghĩa với việc HTML không thể thực hiện các chứcnăng “động” Nói cách khác, HTML tương tự như phần mềm Microsoft Word, chỉ
có tác dụng định dạng các thành phần có trong website
1.2.2 Cấu trúc
Một file code HTML được cấu thành bởi các phần tử HTML và các cặpthẻ Song song đó, HTML gồm có nhiều dạng thẻ khác nhau và mỗi thẻ sẽ cónhiệm vụ và ý nghĩa riêng Ngoài ra, mỗi thẻ sẽ được bắt đầu và kết thúc bằng
Trang 19dấu ngoặc nhọn “<, >” Các chữ giữa các dấu ngoặc này gọi là phần tử Về cơbản, cấu trúc của một trang HTML sẽ gồm 3 phần như sau:
Phần khai báo loại file code có cấu trúc thẻ là <!DOCTYPE html>: Xuất
hiện ở đầu hoặc trên cùng của file HTML Qua phần này, người dùng sẽbiết được trình duyệt đang sử dụng để tạo trang là phiên bản HTML nào.Phần khai báo ban đầu, khai báo về meta, little, javascript, css,… có cấu
trúc bắt đầu bằng thẻ <head> và kết thúc với thẻ <head>: Chứa tiêu đề
và các khai báo có biểu tượng và một số vấn đề phức tạp khác Bên cạnh
đó, còn cần phải có kiến thức chuyên môn về lập trình
Lập trình tương tác cho trang web: Thông qua HTML, có thể lập trình
tương tác giữa người dùng với trang web Để làm được điều này, cầndùng code JavaScript JavaScript sẽ tạo ra những hiệu ứng khi người dùngnhấp và di chuyển chuột trên website
2 Các chuẩn giao tiếp
2.1. Chuẩn giao tiếp UART
2.1.1 Giới thiệu
UART là một giao thức truyền thông phần cứng sử dụng giao tiếp nối tiếpkhông đồng bộ với tốc độ có thể định cấu hình Không đồng bộ có nghĩa làkhông có tín hiệu đồng hồ để đồng bộ hóa các bit đầu ra từ thiết bị truyền đi đếnbên nhận
Trong giao tiếp UART, hai UART giao tiếp trực tiếp với nhau UART truyềnchuyển đổi dữ liệu song song từ một thiết bị điều khiển như CPU thành dạng nốitiếp, truyền nó nối tiếp đến UART nhận, sau đó chuyển đổi dữ liệu nối tiếp trởlại thành dữ liệu song song cho thiết bị nhận
Trang 20Hình 1 Chuẩn giao tiếp UART
Hai đường dây mà mỗi thiết bị UART sử dụng để truyền dữ liệu đó là:
Transmitter (Tx)
Receiver (Rx)
UART truyền dữ liệu không đồng bộ, có nghĩa là không có tín hiệu đồng hồ
để đồng bộ hóa đầu ra của các bit từ UART truyền đến việc lấy mẫu các bit bởi
UART nhận Thay vì tín hiệu đồng hồ, UART truyền thêm các bit start và stop
vào gói dữ liệu được chuyển
Các bit này xác định điểm bắt đầu và điểm kết thúc của gói dữ liệu để UART nhận
biết khi nào bắt đầu đọc các bit
Khi UART nhận phát hiện một bit start, nó bắt đầu đọc các bit đến ở một
tần số cụ thể được gọi là tốc độ truyền (baud rate) Tốc độ truyền là thước đo tốc
độ truyền dữ liệu, được biểu thị bằng bit trên giây (bps – bit per second) Cả hai
UART đều phải hoạt động ở cùng một tốc độ truyền Tốc độ truyền giữa UART
truyền và nhận chỉ có thể chênh lệch khoảng 10% trước khi thời gian của các bit
Phương pháp truyền Bất đồng bộ
Truyền nối tiếp hay song song? Nối tiếp
Số lượng thiết bị chủ tối đa 1
Số lượng thiết bị tớ tối đa 1
Bảng 1 Cấu trúc gói dữ liệu UART
Trang 212.1.2 Cách thức hoạt động
UART sẽ truyền dữ liệu nhận được từ một bus dữ liệu (Data Bus) Bus dữliệu được sử dụng để gửi dữ liệu đến UART bởi một thiết bị khác như CPU, bộnhớ hoặc vi điều khiển Dữ liệu được chuyển từ bus dữ liệu đến UART truyền ởdạng song song Sau khi UART truyền nhận dữ liệu song song từ bus dữ liệu, nó
sẽ thêm một bit start, một bit chẵn lẻ và một bit stop, tạo ra gói dữ liệu Tiếptheo, gói dữ liệu được xuất ra nối tiếp từng bit tại chân Tx UART nhận đọc gói
dữ liệu từng bit tại chân Rx của nó UART nhận sau đó chuyển đổi dữ liệu trở lạidạng song song và loại bỏ bit start, bit chẵn lẻ và bit stop Cuối cùng, UARTnhận chuyển gói dữ liệu song song với bus dữ liệu ở đầu nhận
Hình 2 Cách thức hoạt động của UART
Dữ liệu truyền qua UART được tập hợp thành gói (packet) Mỗi gói chứa 1 bitstart, 5 đến 9 bit dữ liệu (tùy thuộc vào UART), một bit chẵn lẻ (parity bit) tùychọn và 1 hoặc 2 bit stop
Hình 3 Cấu trúc packet trong UART
2.1.3 Các bước truyền dữ liệu UART
Trang 22 UART truyền nhận dữ liệu song song từ bus dữ liệu.
Hình 4 Truyền nhận dữ liệu song song với bus dữ liệu
UART truyền thêm bit start, bit chẵn lẻ và bit dừng vào khung dữ liệu
Hình 5 Truyền bit vào khung dữ liệu
Toàn bộ gói được gửi nối tiếp từ UART truyền đến UART nhận UART nhận lấy mẫu đường dữ liệu ở tốc độ truyền được định cấu hình trước
Trang 23Hình 6 Truyền nhận giữa 2 UART
UART nhận loại bỏ bit start, bit chẵn lẻ và bit stop khỏi khung dữ liệu
Hình 7 Loại bỏ bit khỏi khung dữ liệu
UART nhận chuyển đổi dữ liệu nối tiếp trở lại thành song song và
chuyển nó đến bus dữ liệu ở đầu nhận
I2C là một giao thức truyền thông nối tiếp, vì vậy dữ liệu được truyềntừng bit dọc theo một đường duy nhất (đường SDA)
Giống như SPI, I2C là đồng bộ, do đó đầu ra của các bit được đồng bộhóa với việc lấy mẫu các bit bởi một tín hiệu xung nhịp được chia sẻ giữa master
và slave Tín hiệu xung nhịp luôn được điều khiển bởi master
2.1.4 Cách thức hoạt động
Với I2C, dữ liệu được truyền trong các tin nhắn Tin nhắn được chia thành cáckhung dữ liệu Mỗi tin nhắn có một khung địa chỉ chứa địa chỉ nhị phân của địachỉ slave và một hoặc nhiều khung dữ liệu chứa dữ liệu đang được truyền Thôngđiệp cũng bao gồm điều kiện khởi động và điều kiện dừng, các bit đọc / ghi và cácbit ACK / NACK giữa mỗi khung dữ liệu:
Trang 24Hình 10 Cấu trúc tin nhắn truyền trong I2C
Điều kiện khởi động: Đường SDA chuyển từ mức điện áp cao xuống mứcđiện áp thấp trước khi đường SCL chuyển từ mức cao xuống mức thấp
Điều kiện dừng: Đường SDA chuyển từ mức điện áp thấp sang mức điện
áp cao sau khi đường SCL chuyển từ mức thấp lên mức cao
Khung địa chỉ: Một chuỗi 7 hoặc 10 bit duy nhất cho mỗi slave để xácđịnh slave khi master muốn giao tiếp với nó
Bit Đọc / Ghi: Một bit duy nhất chỉ định master đang gửi dữ liệu đếnslave (mức điện áp thấp) hay yêu cầu dữ liệu từ nó (mức điện áp cao)
Bit ACK / NACK: Mỗi khung trong một tin nhắn được theo sau bởi mộtbit xác nhận / không xác nhận Nếu một khung địa chỉ hoặc khung dữ liệuđược nhận thành công, một bit ACK sẽ được trả lại cho thiết bị gửi từthiết bị nhận
2.1.5 Các bước truyền dữ liệu I2C
Master gửi điều kiện khởi động đến mọi slave được kết nối bằng cáchchuyển đường SDA từ mức điện áp cao sang mức điện áp thấp trước khichuyển đường SCL từ mức cao xuống mức thấp
Master gửi cho mỗi slave địa chỉ 7 hoặc 10 bit của slave mà nó muốn giaotiếp, cùng với bit đọc / ghi
Mỗi slave sẽ so sánh địa chỉ được gửi từ master với địa chỉ của chính nó.Nếu địa chỉ trùng khớp, slave sẽ trả về một bit ACK bằng cách kéo dòngSDA xuống thấp cho một bit Nếu địa chỉ từ master không khớp với địachỉ của slave, slave rời khỏi đường SDA cao
Master gửi hoặc nhận khung dữ liệu
Sau khi mỗi khung dữ liệu được chuyển, thiết bị nhận trả về một bit ACKkhác cho thiết bị gửi để xác nhận đã nhận thành công khung
Để dừng truyền dữ liệu, master gửi điều kiện dừng đến slave bằng cáchchuyển đổi mức cao SCL trước khi chuyển mức cao SDA
Trang 253 Arduino UNO R3
3.1 Giới thiệu
Arduino UNO có thể sử dụng 3 vi điều khiển họ 8bit AVR là ATmega8,ATmega168, ATmega328 Bộ não này có thể xử lí những tác vụ đơn giản nhưđiều khiển đèn LED nhấp nháy, xử lí tín hiệu cho xe điều khiển từ xa, làm mộttrạm đo nhiệt độ - độ ẩm và hiển thị lên màn hình LCD,… hay những ứng dụngkhác
Hình 11 Arduino UNO R3
Trang 26Thông số kỹ thuật
Vi điều khiển ATmega328 họ 8bit
Điện áp hoạt động 5V DC (chỉ được cấp qua cổng USB)
Tần số hoạt động 16 MHz
Dòng tiêu thụ khoảng 30mA
Điện áp vào khuyên dùng 7-12V DC
Điện áp vào giới hạn 6-20V DC
Số chân Digital I/O 14 (6 chân hardware PWM)
Số chân Analog 6 (độ phân giải 10bit)
Dòng tối đa trên mỗi chân I/O 30 mA
Arduino UNO có thể được cấp nguồn 5V thông qua cổng USB hoặc cấp
nguồn ngoài với điện áp khuyên dùng là 7-12V DC và giới hạn là 6-20V
Thường thì cấp nguồn bằng pin vuông 9V là hợp lí nhất nếu không có sẵn nguồn
từ cổng USB Nếu cấp nguồn vượt quá ngưỡng giới hạn trên, sẽ làm hỏng
Arduino UNO
Các chân năng lượng:
GND (Ground): cực âm của nguồn điện cấp cho Arduino UNO.
Khi dùng các thiết bị sử dụng những nguồn điện riêng biệt thìnhững chân này phải được nối với nhau
5V: cấp điện áp 5V đầu ra Dòng tối đa cho phép ở chân này là
500mA
Trang 27 3.3V: cấp điện áp 3.3V đầu ra Dòng tối đa cho phép ở chân này là
50mA
Vin (Voltage Input): để cấp nguồn ngoài cho Arduino UNO, bạn
nối cực dương của nguồn với chân này và cực âm của nguồn vớichân GND
IOREF: điện áp hoạt động của vi điều khiển trên Arduino UNO có
thể được đo ở chân này Và dĩ nhiên nó luôn là 5V Mặc dù vậy vẫnkhông được lấy nguồn 5V từ chân này để sử dụng bởi chức năngcủa nó không phải là cấp nguồn
RESET: việc nhấn nút Reset trên board để reset vi điều khiển
tương đương với việc chân RESET được nối với GND qua 1 điệntrở 10KΩ
3.3 Bộ nhớ
Vi điều khiển Atmega328 tiêu chuẩn cung cấp cho người dùng:
32KB bộ nhớ Flash: những đoạn lệnh bạn lập trình sẽ được lưu trữ trong
bộ nhớ Flash của vi điều khiển Thường thì sẽ có khoảng vài KB trong sốnày sẽ được dùng cho bootloader nhưng đừng lo, bạn hiếm khi nào cầnquá 20KB bộ nhớ này đâu
2KB cho SRAM (Static Random Access Memory): giá trị các biến bạn
khai báo khi lập trình sẽ lưu ở đây Bạn khai báo càng nhiều biến thì càng cầnnhiều bộ nhớ RAM Tuy vậy, thực sự thì cũng hiếm khi nào bộ nhớ RAMlại trở thành thứ mà bạn phải bận tâm Khi mất điện, dữ liệu trên SRAM
Trang 28chỉ có 2 mức điện áp là 0V và 5V với dòng vào/ra tối đa trên mỗi chân là 40mA.
Ở mỗi chân đều có các điện trở pull-up từ được cài đặt ngay trong vi điều khiểnATmega328 (mặc định thì các điện trở này không được kết nối)
Một số chân digital có các chức năng đặc biệt như sau:
2 chân Serial: 0 (RX) và 1 (TX): dùng để gửi (transmit – TX) và nhận
(receive – RX) dữ liệu TTL Serial Arduino Uno có thể giao tiếp với thiết
bị khác thông qua 2 chân này Kết nối bluetooth thường thấy nói nôm nachính là kết nối Serial không dây Nếu không cần giao tiếp Serial, khôngnên sử dụng 2 chân này nếu không cần thiết
Chân PWM (~): 3, 5, 6, 9, 10, và 11: cho phép xuất ra xung PWM với độ
phân giải 8bit (giá trị từ 0 → 28-1 tương ứng với 0V → 5V) bằng hàmanalogWrite() Nói một cách đơn giản, có thể điều chỉnh được điện áp ra ởchân này từ mức 0V đến 5V thay vì chỉ cố định ở mức 0V và 5V nhưnhững chân khác
Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK) Ngoài
các chức năng thông thường, 4 chân này còn dùng để truyền phát dữ liệubằng giao thức SPI với các thiết bị khác
LED 13: trên Arduino UNO có 1 đèn led màu cam (kí hiệu chữ L) Khi
bấm nút Reset, sẽ thấy đèn này nhấp nháy để báo hiệu Nó được nối vớichân số 13 Khi chân này được người dùng sử dụng, LED sẽ sáng
Arduino UNO có 6 chân analog (A0 → A5) cung cấp độ phân giải tín hiệu
10bit (0
→ 210-1) để đọc giá trị điện áp trong khoảng 0V → 5V Với chân AREF trênboard, bạn có thể để đưa vào điện áp tham chiếu khi sử dụng các chân analog.Tức là nếu cấp điện áp 2.5V vào chân này thì có thể dùng các chân analog để đođiện áp trong khoảng từ 0V → 2.5V với độ phân giải vẫn là 10bit
Đặc biệt, Arduino UNO có 2 chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếpI2C/TWI với các thiết bị khác
4 NodeMCU ESP32
4.1 Giới thiệu
Trang 29Kit RF thu phát Wifi BLE ESP32 NodeMCU LuaNode32 được phát triển trên nềnmodule trung tâm là ESP32 với công nghệ Wifi, BLE và nhân ARM SoC tích hợp mớinhất hiện nay, kit có thiết kế phần cứng, firmware và cách sử dụng tương tự KitNodeMCU ESP8266, với ưu điểm là cách sử dụng dễ dàng, ra chân đầy đủ, tích hợpmạch nạp và giao tiếp UART CP2102, Kit Wifi BLE ESP32 NodeMCULuaNode32 là sự lựa chọn hàng đầu trong các nghiên cứu, ứng dụng về Wifi, BLE
o 448KBytes - SRAM: 520 KBytes
o 8 KBytes SRAM in RTC SLOW
o 8 KBytes SRAM in RTC FAST
o 1 Kbit of EFUSE, 256 bits MAC
WiFi: 802.11 b/g/n/d/e/i/k/r (802.11n up to 150 Mbps)
Bluetooth v4.2 BR/EDR và BLE specification
Trang 30 Wi-Fi mode: Station/softAP/SoftAP+station/P2P
SPI Flash: Mặc định 32Mbit
RAM: Internal520KB + PSRAM 4M bên ngoài
Trang 31 Bluetooth: tiêu chuẩn Bluetooth4.2BR / EDR và BLE
o Bật đèn flash và điều chỉnh độ sáng tối đa: 310mA @ 5V
o Sleep Deep: Mức tiêu thụ điện năng thấp nhất có thể đạt 6mA @ 5V
o Modem-bed: lên tới 20mA @ 5V
o Sleep Light: lên tới 6,7mA@5V
Bảo vệ: WPA / WPA2 / WPA2-Enterprise / WPS
Trang 32Module RFID RC522 hoạt động với tần số 13.56mhz không tiếp xúc,được thiết kế bởi NXP sử dụng chip tiêu thụ điện năng thấp và kích thước nhỏgọn, là sự lựa chọn tốt nhất trong sự phát triển các ứng dụng thông minh nhưmáy đo và thiết bị cầm tay di động Module này có thể lắp trực tiếp trong cácthiết bị cầm tay để sản xuất hàng loạt Mô-đun sử dụng nguồn điện 3.3V và cóthể giao tiếp trực tiếp với bất kỳ bo mạch CPU nào bằng cách kết nối thông quagiao tiếp SPI, khoảng cách đọc tốt.
Nhiệt độ hoạt động: -20~80oC
Nhiệt độ lưu trữ: -40~85oC
Trang 33 Độ ẩm: 5% -95%
Giao tiếp: SPI
Trang 347 Module bàn phím ma trận 4×4
7.1 Giới thiệu
Module bàn phím ma trận 4×4 gồm có 16 nút bấm được sắp xếp theo matrận 4 hàng, 4 cột Các nút bấm trong cùng một hàng và một cột được nối vớinhau, vì vậy bàn phím matrix 4×4 sẽ có tổng cộng 8 ngõ ra
Hình 15 Bàn phím ma trận 4x4
7.2 Thông số kỹ thuật và sơ đồ nối dây
Kích thước: 1.69 in x 1.54 in x 0.39 in (4.3 cm x 3.9 cm x 1.0 cm)
Khối lượng: 0.39 oz (11 g)
Sơ đồ nối dây:
Hình 16 Sơ đồ nối dây của bàn phím
Trang 35Hình 17 Module sim 800A
8.2 Thông số kỹ thuật
Sử dụng module GSM GPRS Sim800A
Nguồn cấp đầu vào: 5 – 18VDC, lớn hơn 1A
Mức tín hiệu giao tiếp: TTL (3.3-5VDC) hoặc RS232
Tích hợp chuyển mức tín hiệu TTL Mosfet tốc độ cao
Tích hợp IC chuyển mức tín hiệu RS232 MAX232
Tích hợp nguồn xung với dòng cao cung cấp cho Sim800A
Sử dụng khe Micro Sim
Thiết kế mạch nhỏ gọn, bền bỉ, chống nhiễu
Trang 369 Servo SG90
9.1 Giới thiệu
Động cơ servo SG90 được dùng để xoay và có thể đạt được góc quaychính xác trong khoảng từ 90o – 180o Việc điều khiển này có thể ứng dụng để láirobot, di chuyển các tay máy lên xuống, quay một cảm biến để quét khắpphòng…