Tải bản đầy đủ (.pdf) (24 trang)

Tài liệu báo cáo Hệ thống nhà thông minh

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

TRƯỜNG ĐẠI HỌC BÁCH KHOA TP HCM
KHOA KHOA HỌC VÀ KỸ THUẬT MÁY TÍNH
------------

ĐỒ ÁN MÔN HỌC
THIẾT KẾ LUẬN LÝ
Tài liệu báo cáo

Hệ thống nhà thông minh
Sinh viên thực hiện:
Trần Việt Toản
Nguyễn Nhật Minh
Trần Nhựt Tân
Vũ Đức Duy
Huỳnh Phúc Nghị
Trần Thanh Lộc
Giảng viên hướng dẫn:

Tp. Hồ Chí Minh, Tháng 07/2018

1613611
1612041
1613096
1610516
1612233
1611910
Tiến sĩ Phạm Quốc Cường


Mục lục
1 Chương 1: Giới thiệu đề tài.


1.1 Tổng quan tài liệu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Quy mô đề tài. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2 Công nghệ - Cơ sở lý thuyết
2.1 Phần cứng được sử dụng. . . . . . . . . . . . . .
2.1.1 ESP32 . . . . . . . . . . . . . . . . . . .
2.1.2 STM32F103 . . . . . . . . . . . . . . . .
2.1.3 ACS712T . . . . . . . . . . . . . . . . .
2.1.4 Module cảm ứng điện dung HTTM . . . .
2.2 Tạo Server bằng Node JS và Module Express. . .
2.2.1 Node JS. . . . . . . . . . . . . . . . . . .
2.2.2 Module Express. . . . . . . . . . . . . . .
2.3 Database Postgres sql . . . . . . . . . . . . . . .
2.3.1 Ưu điểm của Postgres sql . . . . . . . . .
2.3.2 Tại sao sử dụng Postgres sql . . . . . . .
2.4 Các giao thức truyền nhận dữ liệu. . . . . . . . .
2.4.1 Giao thức Socket. . . . . . . . . . . . . .
2.4.2 Giao thức MQTT. . . . . . . . . . . . . .
2.5 React. . . . . . . . . . . . . . . . . . . . . . . .
2.5.1 React là gì? . . . . . . . . . . . . . . . .
2.5.2 Ưu điểm của React. . . . . . . . . . . . .
2.5.3 React và Angular - Cái nhìn tổng quan về
nhiều . . . . . . . . . . . . . . . . . . . .
2.6 Thuật toán Kalman . . . . . . . . . . . . . . . .
2.7 Mã QR . . . . . . . . . . . . . . . . . . . . . . .
2.7.1 Mã QR là gì? . . . . . . . . . . . . . . .
2.7.2 Ưu điểm của mã QR . . . . . . . . . . .
3 Cấu
3.1
3.2
3.3


trúc
Môi trường hệ thống . . .
Mô hình logic của hệ thống
Các khối chức năng . . . .
3.3.1 Sử dụng website . .
3.3.2 Điều khiển trực tiếp
3.4 Database . . . . . . . . . .

4 Hiện thực
4.1 Phần cứng . . . . . .
4.1.1 ESP8266 . . .
4.1.2 STM32F103 .
4.1.3 ACS712T . .
4.1.4 Cảm biến điện
4.2 Phần mềm . . . . . .
4.2.1 HTTP API . .
4.2.2 Socket API .
4.2.3 MQTT API .

. . .
. . .
. . .
. . .
dung
. . .
. . .
. . .
. . .


5
5
5
5
5
5
6
7
8
8
8
8
9
9
9
9
9
9
10
10
10

. .
. .
. .
. .
. .
. .
. .
. .

. .
. .
. .
. .
. .
. .
. .
. .
. .
hai
. .
. .
. .
. .
. .

. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .

. . .
. . .
. . .
công
. . .
. . .
. . .
. . .
. . .

. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
nghệ
. . .
. . .

. . .
. . .
. . .

. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
đang
. . .
. . .
. . .
. . .
. . .

. . .
. . .

. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
được
. . .
. . .
. . .
. . .
. . .

. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .

. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
sử dụng
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .

11
12
12
12
12

.
.
.
.
.
.

.

.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.

.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.

.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.


.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.

.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.

.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.


12
12
12
13
13
13
14

. . . . .
. . . . .
. . . . .
. . . . .
HTTM
. . . . .
. . . . .
. . . . .
. . . . .

.
.
.
.
.
.
.
.
.

.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.

.
.
.
.
.
.
.
.

15
15
15
15
15
15
16
16
17
17

.
.
.
.
.
.

.
.
.

.
.
.

.
.
.
.
.
.

.
.
.
.
.
.


Trường ĐH Bách Khoa TP. HCM – Khoa Khoa học và Kỹ thuật Máy tính

4.3
4.4
5 Kết
5.1
5.2
5.3

Giao tiếp Serial giữa ESP8266 và STM32F103 . . . . . . . . . . . . . . . . . . . . .
Xử lý nhiễu khi đo cường độ dòng điện . . . . . . . . . . . . . . . . . . . . . . . . .


18
18

quả
Yêu cầu người dùng . . . . .
Yêu cầu hệ thống . . . . . .
Hướng dẫn sử dụng . . . . .
5.3.1 Giao diện người dùng
5.3.2 Hướng dẫn cài đặt .
5.3.3 Cách thức hoạt động

18
18
18
19
19
20
20

Tài liệu tham khảo

Báo cáo đồ án Thiết kế luận lý

.
.
.
.
.
.


.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.

.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.

.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.

.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.


.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.

.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.

.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

23

Trang 2/23


Danh sách bảng



Danh sách hình vẽ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

Sơ đồ chân Esp8266 . . . . . . . . .
Sơ đồ chân STM32F103. . . . . . .
Mạch đo dòng ACS712T. . . . . . .
Module cảm ứng điện dung HTTM.
Code usuability . . . . . . . . . . .
Scalability . . . . . . . . . . . . . .
So sánh hiệu suất hai công nghệ. . .
Môi trường hệ thống. . . . . . . . .
Mô hình logic hệ thống. . . . . . . .
Điều khiển thiết bị . . . . . . . . . .

Giám sát thiết bị . . . . . . . . . . .
Điều khiển trực tiếp . . . . . . . . .
Sơ đồ Database của hệ thống. . . .
Sản phẩm sau khi được hoàn thiện.
Trang đăng nhập . . . . . . . . . .
Trang điều khiển . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.


.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.


.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

5

6
7
8
10
11
11
12
13
13
13
14
14
19
19
20


Trường ĐH Bách Khoa TP. HCM – Khoa Khoa học và Kỹ thuật Máy tính

1

Chương 1: Giới thiệu đề tài.

1.1

Tổng quan tài liệu.

Mục đích của tài liệu này là giới thiệu và mô tả chi tiết về dự án Nhà Thông Minh (Smart Home). Tài
liệu sẽ giải thích mục đích và tính năng của hệ thống, giao diện của hệ thống, mô hình cấu trúc và
cách hoạt động của hệ thống. Tài liệu này được dành cho người sử dụng hệ thống và các developers

muốn chỉnh sửa và nâng cấp hệ thống.

1.2

Quy mô đề tài.

Hệ thống Nhà Thông Minh (Smart Home) cung cấp cho người dùng sự tiện dụng của hệ thống
Internet of Things (IoT) trong việc điều khiển các thiết bị trong nhà. Nó cho phép người sử dụng
có thể điều khiển thiết bị từ xa thông qua mạng internet, bật tắt các thiết bị trong nhà như đèn,
quạt, máy lạnh thông qua giao diện web trực quan và dễ sử dụng. Hệ thống còn có thể thông báo
với người dùng về trạng thái hiện tại của thiết bị, kiểm tra tính ổn định của thiết bị, phát hiện bất
thường trong hoạt động của thiết bi. Nhờ có hệ thống này, người dùng có thể kiểm soát được hoạt
động của toàn bộ thiết bị trong nhà, giúp tăng hiệu suất sử dụng điên của gia đình và đảm bảo cho
các thiết bị hoạt động tốt và lâu bền hơn. Hệ thống có thể được sử dụng trong bất kỳ hệ thống thiết
bị điện nào, do đó nó dễ dàng đáp ứng được nhu cầu của nhiều loại mô hình nhà khác nhau và việc
thiết lập hê thống cũng trở nên nhanh hơn, có thể mở rộng quy mô nhanh chóng hơn.

2

Công nghệ - Cơ sở lý thuyết

2.1
2.1.1

Phần cứng được sử dụng.
ESP32

• Một số tính năng:

Hình 1: Sơ đồ chân Esp8266


Báo cáo đồ án Thiết kế luận lý

Trang 5/23


Trường ĐH Bách Khoa TP. HCM – Khoa Khoa học và Kỹ thuật Máy tính

– CPU ESP8266.
– Hỗ trợ kết nối WiFi.
– Tương thích Arduino .
– Có thể lập trình được bằng C/C++, Arduino IDE, Micropython, NodeMCU - Lua.
– Nguồn 9-24V hay 5V từ USB.
– 11 IO, 1 Analog in.
– 4 Mbytes Flash.
– Module ESP-12F chỉ 3.3VDC (tối đa 3.6 VDC ).
• Một số ưu điểm:
– Mạch tích hợp nhiều tính năng => dễ nâng cấp mở rộng thêm chức năng cho sản phẩm.
– Kết nối wifi ổn định.
– Chuẩn giao tiếp nối tiếp UART với tốc độ Baud lên đến 115200.
– Hỗ trợ cả 2 giao tiếp TCP và UDP.
– Có bảo mật phần cứng.
2.1.2

STM32F103

• Một số tính năng:

Hình 2: Sơ đồ chân STM32F103.


– Board ARM 32 Cortex M3 CPU dòng Performance, tần số hoạt động lên tới 72 MHz, với
64 KB Flash Memory, 32 kHz Real time clock crystal.
– Hỗ trợ 20 KB RAM, lớn hơn so với các dòng ATmega khác.
– On-board Mini USB interface.
– Bộ xử lý nhỏ gọn (5.3x2.2cm) nhưng mạnh mẽ với 48 chân I/O.
– Một nút reset, một LED chân PC13.
– Hỗ trợ mạch nạp ST-Link, J-Link, USB to COM.

Báo cáo đồ án Thiết kế luận lý

Trang 6/23


Trường ĐH Bách Khoa TP. HCM – Khoa Khoa học và Kỹ thuật Máy tính

– Sử dụng nguồn 3.3V.
– Debug mode: Serial wire debug (SWD) và JTAG.
• Một số ưu điểm:
– Mạch tích hợp nhiều tính năng, thiết bị ngoại vi.
– Dung lượng Ram lớn.
– Sử dụng điện áp thấp an toàn, hệ thống bảo vệ xung clock.
– Tính bảo mật cao do Bộ nhớ Flash của STM32 có thể được khóa để chống truy cập đọc
Flash thông qua cổng debug.
2.1.3

ACS712T

Hình 3: Mạch đo dòng ACS712T.

Cảm biến dòng điện ACS712 là một IC cảm biến dòng tuyến tính dựa trên hiệu ứng Hall. ACS xuất

ra 1 tín hiệu analog, Vout biến đổi tuyến tính theo sự thay đổi của dòng điện được lấy mẫu thứ cấp
DC (hoặc AC), trong phạm vi đã cho.
Một số ưu điểm:
• Thời gian tăng của đầu ra để đáp ứng với đầu vào là 5µs.
• Điện trở dây dẫn trong là 1.2mΩ.
• Nguồn vận hành đơn là 5V.
• Độ nhạy đầu ra từ 63-190mV/A.
• Điện áp ra cực kỳ ổn định.

Báo cáo đồ án Thiết kế luận lý

Trang 7/23


Trường ĐH Bách Khoa TP. HCM – Khoa Khoa học và Kỹ thuật Máy tính

2.1.4

Module cảm ứng điện dung HTTM

Hình 4: Module cảm ứng điện dung HTTM.

Module cảm ứng điện dung HTTM làm việc dựa trên nguyên lí cảm biến điện dung. Các phần
cảm biến có lớp cách điện. Module dễ sử dụng, chỉ cần cấp nguồn vào 2 chân VCC và GND, sau đó
người dùng chỉ cần chạm vào màn hình module thì module sẽ đổi màu. Module có cấu hình đẹp mắt
với 3 màu xanh, vàng, hồng và chi phí thấp.
Một số ưu điểm:
• Điện áp làm việc: 2.7 - 6V.
• Nhiệt độ hoạt động: 30 - 70 ℃.
• Điện áp đầu ra pin: 3.3V ± 0.1V.

• Dòng ra tối đa lớn: 500mA, có thể dùng để điều khiển relay, optocouplers, đèn LED, ...
• Gồm 3 màu: xanh, vàng, hồng.

2.2
2.2.1

Tạo Server bằng Node JS và Module Express.
Node JS.

• Node JS là môi trường lập trình server mã nguồn mở có thể chạy trên nhiều platforms (Windows,
Linux, Mac OS) sử dụng mã Javascript để tạo server.
• Tạo sao sử dụng Node JS?
– Có thể sinh ra nội dung của các trang web động.
– Có thể tạo, mở, đọc, viêt, đóng file trên server.
– Có thể thu thập các mẫu dữ liệu.
– Có thể thêm, xóa, thay đổi dữ liệu trên cơ sở dữ liệu.
2.2.2

Module Express.

Express là một application framework cung cấp nhiều tính năng mạnh mẽ trên nền tảng web và di
động.
Express hỗ trợ các phương thức HTTP và middleware tạo ra 1 API rất mạnh mẽ và sử dụng dễ dàng
hơn.Khi mới tiếp cận với Express mình thực sự bị cuốn hút bởi các API của nó,từ cách sử dụng
route,template. . . đều khá dễ tùy chọn và làm việc.

Báo cáo đồ án Thiết kế luận lý

Trang 8/23



Trường ĐH Bách Khoa TP. HCM – Khoa Khoa học và Kỹ thuật Máy tính

2.3

Database Postgres sql

2.3.1

Ưu điểm của Postgres sql

• Là một chuẩn SQL phù hợp với hệ quản trị cơ sở dữ liệu quan hệ: PostgreSQL là hệ quản trị
cơ sở dữ liệu quan hệ mã nguồn mở, miễn phí và mạnh mẽ
• Cộng đồng mạnh: PostgreSQL được hỗ trợ bởi một cộng đồng nhiệt tình và đầy kinh nghiệm.
• Hỗ trợ mạnh mẽ từ các bên thứ 3: Bất kể các tính năng tiên tiến thì PostgreSQL đều được hỗ
trợ bởi các công cụ tuyệt vời của bên thứ 3 trong việc quản lý cơ sơ dữ liệu.
• Đối tượng hóa: PostgreSQL không chỉ là một hệ quản trị cơ sở dữ liệu quan hệ, mà nó còn đối
tượng hóa dữ liệu.
2.3.2

Tại sao sử dụng Postgres sql

• Toàn vẹn dữ liệu: Khi độ tin cậy và tính toàn vẹn dữ liệu là tuyệt đối cần thiết thì PostgreSQL
là lựa chọn tốt hơn hết.
• Sự đồng bộ: Trong tương lai, nếu có phải chuyển từ hệ quản trị cơ sở dữ liệu quan hệ này sang
một hệ quản trị cơ sở dữ liệu khác nhứ Oracle thì PostgreSQl cho việc chuyển đổi trong tương
lại đó.

2.4
2.4.1


Các giao thức truyền nhận dữ liệu.
Giao thức Socket.

Socket là một giao diện lập ứng dụng mạng . Thông qua giao diện này, chúng ta có thể lập trình
điều khiển, truyền thông giữa 2 máy sử dụng giao thức TCP IP và UDP.
Socket là thiết bị truyền thông hai chiều gửi và nhận dữ liệu từ máy khác.
Trong project này ta sử dụng giao thức TCP IP.
Đặc điểm:
• Có một đường kết nối (địa chỉ IP) giữa hai tiến trình.
• Một tiến trình phải đợi tiến trình còn lại yêu cầu kết nối.
• Mô hình client/server thì server lắng nghe và chấp nhận từ client.
• Mỗi thông điệp gửi có xác nhận trả về.
• Các gói thông tin đi tuần tự.
2.4.2

Giao thức MQTT.

Mqtt (Message Queuing Telementry Transport) là một giao thức gởi dạng publish/subscribe sử dụng
cho các thiết bị Internet of Things với băng thông thấp, độ tin cậy cao và khả năng được sử dụng
trong mạng lưới không ổn định.
Kiến trúc mức cao (high-level) của MQTT gồm 2 thành phần chính là Broker là Clients. Trong đó:
• Broker được coi là trung tâm. Nhiệm vụ chính của broker là nhận mesage từ publisher, xếp các
message theo hàng đợi rồi chuyển chúng tới một địa chỉ cụ thể.

Báo cáo đồ án Thiết kế luận lý

Trang 9/23



Trường ĐH Bách Khoa TP. HCM – Khoa Khoa học và Kỹ thuật Máy tính

• Client thì được chia thành 2 nhóm là publisher và subscriber. Client là các software components
hoạt động tại edge device nên chúng được thiết kế để có thể hoạt động một cách linh hoạt.
Client chỉ làm ít nhất một trong 2 việc là publish các message lên một topic cụ thể hoặc
subscribe một topic nào đó để nhận message từ topic này.
Quality of Service (QoS): MQTT hỗ trợ 3 mức QoS nhầm đảm bảo sự chắc chắn trong việc gửi và
nhận giữa clietn và broker. Bao gồm:
• QoS-0: Tất cả các message có QoS 0 sau khi được gửi đi bởi publisher sẽ không được kiểm tra
xem đã đến broker hay chưa.
• QoS-1: Message được đảm bảo rằng đã đến nơi nhận ít nhất 1 lần.
• QoS-2: Broker sẽ đảm bảo các message có QoS-2 sẽ đến nơi nhận chỉ 1 lần duy nhất, không
trùng lặp, không thất lạc.

2.5
2.5.1

React.
React là gì?

React.js là 1 thư viện JavaScript tạo ra bởi Facebook.
Như khái niệm trên trang web chính thức “A JavaScript library for building user interface”, React.js
là một thư viện sinh ra để xây dựng giao diện người dùng (UI). Nó không phải là Framework mà chỉ
là thư viện.
Ngoài Facebook và Instagram – nơi làm ra và maintain React.js, Yahoo hay Airbnb là những ví dụ
nổi bật có sử dụng thư viện này. Hiện nay, đây là một thư viện thu hút được rất nhiều sự quan tâm.
2.5.2

Ưu điểm của React.


• Khả năng tái sử dụng code.

Hình 5: Code usuability

Báo cáo đồ án Thiết kế luận lý

Trang 10/23


Trường ĐH Bách Khoa TP. HCM – Khoa Khoa học và Kỹ thuật Máy tính

• Khả năng mở rộng.

Hình 6: Scalability

Đặc tính của React.js là khiến các component luôn ở trạng thái stateless một cách nhiều nhất có
thể, khiến ta dễ dàng quản lí chúng.
Các component nhận data từ lớp mẹ và dựa vào đó để xây dựng View. Điểm mấu chốt ở đây là bản
thân các component không mang một trạng thái nào. Nó chỉ có việc xuất ra hiển thị dựa vào những
đầu vào từ bên ngoài (thường là từ component mẹ). Do đó những component đó sẽ dễ quản lí, dễ
test và dễ tái sử dụng.
Tất nhiên là nếu tất cả các component đều stateless thì chẳng khác nào 1 trang HTML tĩnh, vì
thế ta cần cả những component có state nữa. Tuy nhiên, quan điểm của React.js là tối giản những
component như vậy và xây dựng UI dựa vào những component stateless là chủ yếu.
2.5.3

React và Angular - Cái nhìn tổng quan về hai công nghệ đang được sử dụng nhiều

Hình 7: So sánh hiệu suất hai công nghệ.


React có tốc độ render nhanh hơn Angular và khi có sự thay đổi về dữ liệu thì React có hiệu suất
cao hơn hẳn Angular vì nó không nhất thiết phải thay đổi render của cả mô hình như Angular mà
chỉ thay đổi những chỗ thực sự cần thiết.

Báo cáo đồ án Thiết kế luận lý

Trang 11/23


Trường ĐH Bách Khoa TP. HCM – Khoa Khoa học và Kỹ thuật Máy tính

2.6

Thuật toán Kalman

Thuật toán nổi tiếng Kalman filtering hay còn gọi là linear quadratic estimation (LQE) là một phương
pháp thuật toán lọc nhiễu ra khỏi thông tin, và nó được dùng rất nhiều trong các lĩnh vực điều khiển,
hàng không, quân sự, vũ trụ, v.v, ví dụ như để ước lượng và điểu khiển quĩ đạo của tên lửa, của phi
thuyền. Nó còn được dùng trong rất nhiều lĩnh vực khác, từ nhận dạng tiếng nói cho đến marketing.

2.7
2.7.1

Mã QR
Mã QR là gì?

QR Code viết tắt của Quick response code có thể hiểu là mã phản hồi nhanh là 1 dạng mã vạch 2
chiều có thể được đọc và hiểu bởi các máy quét mã QR code hoặc đơn giản là 1 chiếc smartphone
có cài ứng dụng đọc mã vạch QR.
2.7.2


Ưu điểm của mã QR

• Một mã QR có thể chứa đựng thông tin một địa chỉ web (URL), thời gian diễn ra một sự kiện,
thông tin liên hệ (như vCard), địa chỉ email, tin nhắn SMS, nội dung ký tự văn bản hay thậm
chí là thông tin định vị vị trí địa lý.
• So với các mã vạch thẳng một chiều truyền thống thì mã QR có thể chứa được nhiều thông
tin hơn so với cùng một kích thước, có thể quét từ 2 chiều cả ngang và dọc mà không bị ảnh
hưởng bởi chất liệu mà nó đang sử dụng.

3
3.1

Cấu trúc
Môi trường hệ thống

Người dùng sẽ truy cập vào web site bằng 1 đường dẫn URL, thông qua các nút điều khiển trên giao
diện của trang web người dùng có thể điểu khiển thiết bị đóng ngắt điện bằng module ESP32 và
STM32. Ngoài ra người dùng cũng có thể điều khiển thiết bị trực tiếp bằng cách chạm vào touch
module trên ESP32. Trên trang web người dùng cũng có thể giám sát được tình trạng của thiết bị
bằng module xác định dòng điện chạy qua thiết bị điện.

Hình 8: Môi trường hệ thống.

3.2

Mô hình logic của hệ thống

Dưới đây là sơ đồ logic của hệ thống (các mũi tên ký hiệu chiều di chuyển của dữ liệu):
Báo cáo đồ án Thiết kế luận lý


Trang 12/23


Trường ĐH Bách Khoa TP. HCM – Khoa Khoa học và Kỹ thuật Máy tính

Hình 9: Mô hình logic hệ thống.

3.3
3.3.1

Các khối chức năng
Sử dụng website

Use case: Điều khiển thiết bị.
Sơ đồ:

Hình 10: Điều khiển thiết bị

Mô tả: Người dùng truy cập vào trang web, nhấn vào nút điều khiển thiết bị điện để tắt hoặc mở
thiết bị
Use case: Giám sát thiết bị
Sơ đồ:

Hình 11: Giám sát thiết bị

Mô tả: Người dùng truy cập vào trang web có thể xem được đèn đang tắt hay mở.

3.3.2


Điều khiển trực tiếp

Use case: Điều khiển thiết bị.
Sơ đồ:
Mô tả: Người chạm vào nút touch để bật hoặc tắt thiết bị.

Báo cáo đồ án Thiết kế luận lý

Trang 13/23


Trường ĐH Bách Khoa TP. HCM – Khoa Khoa học và Kỹ thuật Máy tính

Hình 12: Điều khiển trực tiếp

3.4

Database

Database gồm các bảng với các trường như sơ đồ bên dưới.

Hình 13: Sơ đồ Database của hệ thống.

Trong đó:
• Bảng User: là bảng dùng để chứa các record của người dùng. Bao gồm:
– id: Mỗi user khi đăng ký tài khoản sẽ có một id và các id này không trùng với nhau.
– username: Tên tài khoản dùng để đăng nhập, không trùng với các username khác.
– password: Password dùng để đăng nhập.
• Bảng Device: là bảng dùng để chứa các record của thiết bị. Bao gồm:
– id: Mỗi thiết bị khi mua về sẽ có một id để quản lý.

– name: Tên thiết bị được điều khiển.
– status: Trạng thái của thiết bị bật/tắt.
– timerStatusTurnOn: trạng thái hẹn giờ để bật thiết bị, nếu bằng true thì khi tới thời điểm
timeOn thiết bị sẽ tự động bật, nếu bằng false thì không có gì xảy ra.
– timerStatusTurnOff: trạng thái hẹn giờ để bật thiết bị, nếu bằng true thì khi tới thời điểm
timeOff thiết bị sẽ tự động bật, nếu bằng false thì không có gì xảy ra.
– timeOn: thời điểm hen giờ để bật thiết bị.
– timeOff: thời điểm hẹn giờ để tắt thiết bị.
– user_id: Id của user.
• Bảng Session: là bảng dùng để chứa các record của user đang đăng nhập vào hệ thống trong
một phiên làm việc.
– sid: Id của mỗi lần user đăng nhập trên một thiết bị điều khiển (web, app).
Báo cáo đồ án Thiết kế luận lý

Trang 14/23


Trường ĐH Bách Khoa TP. HCM – Khoa Khoa học và Kỹ thuật Máy tính

– sesss: Dữ liệu của phiên đăng nhập (username, timeStatus, ...).
– expire: Thời gian duy trì của phiên đăng nhập.
• Bảng Register: là bảng dùng để chứa các record của các thiết bị đã đăng ký và chờ người sở
hữu thêm thiết bị đó vào tài khoản của họ. Khi người dùng mua thiết bị về và bật thiết bị lên
thì nó sẽ gửi lên server để thêm thiết bị này vào Register, sau đó người dùng sẽ phải dùng web
hoặc app để thêm thiết bị đó vào tài khoản của họ hay nói cách khác là chuyển thông tin của
thiết bị từ bảng Register sang bảng Deviảng
– id: ID của thiết bị.
– expire: Thời điểm hết hiệu lực của record, nếu sau thời gian này mà người dùng thêm
thiết bị này thì sẽ không được chấp nhận.
– active: biến Boolean dùng để chỉ record đã hết hiệu lực hay chưa, true là record còn hiệu

lực và ngược lại.

4
4.1
4.1.1

Hiện thực
Phần cứng
ESP8266

Nhóm sử dụng ESP38266 như một vật trung gian để nhận giữ liệu từ server bằng phương thức giao
tiếp MQTT thông qua mạng wifi, sau đó truyền sang module STM32 để xử lý và điểu khiển các
thiết bị khác bằng phương thức giao tiếp UART qua 2 chân GPIO 3-RX và 1-TX.
Sử dụng chân 04-GPIO nối với một module touch, khi chạm vào sẽ sinh ra tính hiệu Đóng/Ngắt
relay để truyền sang STM32 điều khiển relay.
Module STM32 sẽ giám sát tình trạng của dòng điện qua thiết bị bằng module detect dòng rồi gửi
thông tin về ESP8266, khi có sự thay đổi của dòng ESP8266 sẽ gửi thông tin lên server để cập nhật
lại trạng thái của nút nhấn trên giao diện web.

4.1.2

STM32F103

Nhóm sử dụng STM32F103 như bộ xử lí trung tâm, đọc và xử lí tín hiệu từ module cảm biến dòng
rồi feedback trạng thái thiết bị về cho server
STM 32 đồng thời nhận tín hiệu touch từ ESP8266 bằng giao thức UART thông qua chân A9(TX)
A10(RX) để điều khiển trạng thái của thiết bị qua relay đóng ngắt

4.1.3


ACS712T

Nhóm sử dụng module đo dòng để kiểm tra dòng điện chạy qua thiết bị được điều khiển. Thông tin
đo được sẽ được truyền đến STM32F103 để xử lí xa hơn. Module này được kết nối với STM qua
chân analog A0.
4.1.4

Cảm biến điện dung HTTM

Nhóm sử dụng module cảm biến điện dung để nối với chân GPIO 10 của ESP8266 để thuận tiện cho
việc điều khiển và tạo sự thú vị cho sản phẩm.

Báo cáo đồ án Thiết kế luận lý

Trang 15/23


Trường ĐH Bách Khoa TP. HCM – Khoa Khoa học và Kỹ thuật Máy tính

4.2

Phần mềm

4.2.1

HTTP API

Client truy cập vào link Url để thực hiện các chức năng của web app.
1. URL: /signin
• Method: POST

• Mô tả: Đăng nhập
• Tham số:
– username: tên tài khoản - string
– password: mật khẩu - string
• Response:
– id: Định danh của tài khoản trong Database - string.
– devices: Danh sách thiết bị có trong tài khoản - array
2. URL: /signup
• Method: POST
• Mô tả: Đăng ký tài khoản
• Tham số:
– username: tên tài khoản - string
– password: mật khẩu - string
• Response:
– id: Định danh của tài khoản trong database - string
3. URL: /signout
• Method: GET
• Mô tả: Đăng xuất khỏi tài khoản
• Tham số: none
• Response:
– HTTP status code: 200
4. URL: /getDevice
• Method: POST
• Mô tả: Lấy danh sách thiết bị của tài khoản sau khi đăng nhập.
• Tham số: none
• Response:
– devices: Danh sách thiết bị có trong tài khoản - array.
5. URL: /addDevice
• Method: POST
• Mô tả: Thêm thiết bị vào tài khoản.

Báo cáo đồ án Thiết kế luận lý

Trang 16/23


Trường ĐH Bách Khoa TP. HCM – Khoa Khoa học và Kỹ thuật Máy tính

• Tham số:
– id: Định danh của thiết bị mua - string
– name: Tên của thiết bị do người dùng đặtđặt - string
• Response:
– HTTP status code: 200
6. URL: /removeDevice
• Method: POST
• Mô tả: Xóa thiết bị khỏi tài khoản.
• Tham số:
– id: Định danh của thiết bị - string
• Response:
– HTTP status code: 200
4.2.2

Socket API

Các API sử dụng chung 1 topic tên là "webToServer" dùng để gửi data từ server đến client và
"serverToWeb" dùng để gửi data từ client đến server.
Đinh dạng của dữ liệu như sau:
• id: Định danh của thiết bị của người dùng - string.
• content: chứa nội dung tác vụ cần làm đối với thiết bị đó - string. Content gồm những giá tri
như sau:







4.2.3

"ON": Bật thiết bị.
"OFF": Tắt thiết bị.
"setTurnOn": Hẹn giờ bật thiết bị.
"setTurnOff": Hẹn giờ tắt thiết bị.
"cancelTurnOn": Hủy hẹn giờ bật thiết bị.
"cancelTurnOff": Hủy hẹn giờ tắt thiết bị.

MQTT API

Dữ liệu từ server đến client (ESP8266): server gửi tín hiệu cho client thông báo yêu cầu thay đổi
trạng thái của thiết bị với là topic "ESP8266". Dữ liệu từ client (ESP8266) đến server: client gửi tín
hiệu lên server thông báo trạng thái hiện tại của thiết bị với topic là "espToServer".
Định dạng của data như sau:
• id: Định danh của thiết bị của người dùng - string.
• content: chứa nội dung tác vụ cần làm đối với thiết bị đó - string. Content gồm những giá tri
như sau:
– "ACTIVE": Khi khởi động thiết bị thì thiết bị gửi đến server để kích hoạt.
– "ACTIVED": Nếu thiết bị đã được kích hoạt thì server sẽ gửi đến thiết bị để thiết bị bắt
đầu hoạt động bình thường.
– "ON" và "OFF": Server gửi đến để điều khiển bật tắt thiết bị và thiết bị gửi lại để
feedback trạng thái thật của nó.
Báo cáo đồ án Thiết kế luận lý


Trang 17/23


Trường ĐH Bách Khoa TP. HCM – Khoa Khoa học và Kỹ thuật Máy tính

4.3

Giao tiếp Serial giữa ESP8266 và STM32F103

Kết nối giữa ESP8266 và STM32F103 thông qua giao tiếp UART. Chân GPIO 9 (TX của STM) kết
nối với chân GPIO 3 (RX của ESP8266) và GPIO 10 (RX của STM) kết nối với GPIO 1 (TX của
ESP8266).
Khi server gửi tín hiệu điều khiển thiết bị về ESP8266 thông qua MQTT channel, ESP8266 sẽ sinh
ra tín hiệu Serial để truyền đến mạch STM32. Định dạng của dữ liệu truyền đến STM32 là String và
có 2 giá trị là “ON” và “OFF”.
Ở phía STM32, sau khi nhận được tín hiệu từ ESP266, nó sẽ điều khiển thiết bị dựa trên trạng thái
nhận được. Để đảm bảo thiết bị hoạt động đúng theo sự điều khiển, module đo dòng ACS712T 5A
được đưa vào để đo cường độ dòng điện chạy qua thiết bị đó, sau đó sẽ feedback ngược về STM32.
STM32 sẽ liên tục gửi về cho ESP8266 trạng thái hoạt động của thiết bị sau mỗi khoảng thời gian
nhằm đồng bộ dữ liệu trên toàn bộ hệ thống. Nhờ đó ở bên client (web), người dùng sẽ có được
trạng thái hiện tại của thiết bị.

4.4

Xử lý nhiễu khi đo cường độ dòng điện

Dữ liệu thu được từ module đo dòng là raw data nên gây ra nhiều khó khăn trong việc xử lý, chủ yếu
là xử lý nhiễu.
Để giải quyết vấn đề trên, thuật toán xử lý nhiễu nổi tiếng Kalman filtering hay còn gọi là linear
quadratic estimation (LQE) được đưa vào sử dụng. Sau khi đưa qua 1 tầng Kalman thì dữ liệu đã

trở nên ổn định và có thể được sử dụng để quyết định trạng thái thật của thiết bị.
Nhờ thuật toán Kalman, module STM32 đã có thể lấy được chính xác hoạt động của thiết bị và dựa
vào giá trị này, sau mỗi khoảng thời gian, STM32 sẽ gửi “ON” hoặc “OFF” về ESP8266 để tiến hành
đồng bộ dữ liệu.

5
5.1

Kết quả
Yêu cầu người dùng

Phải là người có quyền điều khiển thiết bị.
Là người có đường dẫn đến trang web và có thể sử dụng trang web kết nối với internet.
Là người nắm được vị trí nút touch và thiết bị được điều khiển.

5.2

Yêu cầu hệ thống

Server phải hoạt động liên tục 24/24 để có thể cập nhật trang thái thiết bị và điều khiển nó bất cứ
khi nào người dùng truy cập và sử dụng trang web.
Server hoạt động ở tốc độ ổn định với độ trễ tối đa 1 giây sau khi người dùng thao tác.
Việc quản lý thiết bị thông qua internet được bảo đảm an toàn thông qua giao thức HTTPS được
cung cấp miễn phí bởi Heroku. Nên bất cứ thông tin được truyền giữa các node sẽ được mã hóa và
không bị làm giả.
ESP8266 phải kết nối với wifi ổn định, hoạt động 24/24.
Touch có độ nhạy phù hợp, không quá nhạy tránh trường hợp nhiễu làm đóng ngắt thiết bị liên tục
gây giảm tuổi thọ cho các phần cứng, và ngược lại tránh gây khó khăn cho người dùng.

Báo cáo đồ án Thiết kế luận lý


Trang 18/23


Trường ĐH Bách Khoa TP. HCM – Khoa Khoa học và Kỹ thuật Máy tính

Hình 14: Sản phẩm sau khi được hoàn thiện.

5.3

Hướng dẫn sử dụng

5.3.1

Giao diện người dùng

Giao diện web phải hiển thị được nút bấm gồm 2 trạng thái bật/tắt.
Thông tin trên web được hiển thị trong thời gian thực.

Hình 15: Trang đăng nhập

Báo cáo đồ án Thiết kế luận lý

Trang 19/23


Trường ĐH Bách Khoa TP. HCM – Khoa Khoa học và Kỹ thuật Máy tính

Hình 16: Trang điều khiển


5.3.2

Hướng dẫn cài đặt

• Khi người dùng mua 1 thiết bị, nó sẽ được dán 1 mã QR để add thiết bị vào tài khoản của
người dùng đó.
• Sau khi mua về, đầu tiên người dùng bật thiết bị lên, nó sẽ tạo 1 access point giống như wifi
của router để máy tính hoặc điện thoại có thể kết nối được.
• Người dùng sau khi kết nối vào access point thì truy cập vào địa chỉ ip của thiết bị là 192.168.1.1
rồi nhập tên và mật khẩu của mạng wifi của người dùng đang sử dụng.
• Sau khi thiết bị kết nối được với wifi thì nó sẽ tự động sau mỗi 5s publish 1 message chứa
thông tin của thiết bị đến broker và server sẽ nhận được thông tin này.
• Sau khi server nhận được thông tin từ thiết bị, nó sẽ được lưu vào 1 record trong database của
server, nếu sau 30s mà server không nhận được message từ thiết bị đó nữa thì sẽ xóa ra khỏi
database.
• Sau khi server có được thông tin của thiết bị đã đăng kí, người dùng truy cập vào trang web
rồi scan mã QR được dán trên thiết bị, rồi server sẽ tìm kiếm trong database để chọn đúng
record chứa thiết bị đó và quá trình đăng ký hoàn tất, nếu không tìm thấy thì báo lỗi.
5.3.3

Cách thức hoạt động

∇ Thiết lập ban đầu:
– Người dùng truy cập vào app hoặc web do nhà phát hành cung cấp.
– Đăng ký tài khoản mới.
– Scan mã QR được dán trên thiết bị và nhập các thông tin về thiết bị.
Báo cáo đồ án Thiết kế luận lý

Trang 20/23



Trường ĐH Bách Khoa TP. HCM – Khoa Khoa học và Kỹ thuật Máy tính

∇ Điều khiển bằng web:
– Kích hoạt: Khi người dùng truy cập vào trang web.
– Điều kiện web hoạt động tốt: Web hiển thị nút điều khiển thiết bị và trạng thái của nó.
– Các bước sử dụng:
1.
2.
3.
4.

Truy cập vào trang web.
Người dùng xem trạng thái của thiết bị (đang tắt hay mở).
Đăng nhập vào hệ thống.
Sử dụng các chức năng của hệ thống. Bao gồm:
∗ Click vào nút nhấn để đổi trạng thái cho thiết bị.
∗ Hẹn giờ bật tắt thiết bị bằng cách chọn hoặc nhập trực tiếp. Sau đó click chọn
nút kích hoạt.
5. Chờ kết quả trả về tình trạng mới của thiết bị.
– Trường hợp ngoại lệ:
∗ Xảy ra ở bước 1:
1. Nếu không thể truy cập vào đường link, có thể nhiều người đang truy cập.
2. Liên hệ với người cung cấp web, có thể đường link đã có lỗi.
∗ Xảy ra ở bước 4:
1. Nếu không nhận được tín hiệu trả lại đúng, có thẻ hệ thống đang quá tải, hãy
chờ 1 thời gian.
2. Liên hệ với nhà cung cấp để xem xét lại hệ thống phần cứng.
∇ Giám sát thiết bị qua web:
– Kích hoạt: Khi người dùng truy cập vào trang web.

– Điều kiện web hoạt động tốt: Web hiển thị nút điều khiển thiết bị và trạng thái của nó.
– Các bước sử dụng:
1. Truy cập vào trang web.
2. Người dùng xem trạng thái của thiết bị (đang tắt hay mở).
– Trường hợp ngoại lệ:
∗ Xảy ra ở bước 1:
1. Nếu không thể truy cập vào đường link, có thể nhiều người đang truy.
2. Liên hệ với người cung cấp web, có thể đường link đã hỏng.
∗ Xảy ra ở bước 2:
1. Nếu không nhận được tín hiệu trả lại đúng, liên hệ với nhà cung cấp để xem xét
lại hệ thống.
∇ Điều khiển bằng touch:
– Kích hoạt: Khi người dùng chạm vào module touch.
– Điều kiện web hoạt động tốt: Nút touch hoạt động, đèn báo sáng.
– Các bước sử dụng:
1. Chạm vào nút touch.
2. Xem trạng thái của thiết bị sau khi chạm.
Báo cáo đồ án Thiết kế luận lý

Trang 21/23


Trường ĐH Bách Khoa TP. HCM – Khoa Khoa học và Kỹ thuật Máy tính

– Trường hợp ngoại lệ:
∗ Xảy ra ở bước 2:
1. Nếu không thấy thiết bị thay đổi trạng thái, có thể chưa đủ độ tiếp xúc, hãy
chạm lại và để lâu hơn.
2. Kiểm tra lại các kết nối phần cứng, có thể bị lỏng dây.
3. Liên hệ với nhà cung cấp để sửa chữa.


Báo cáo đồ án Thiết kế luận lý

Trang 22/23


Trường ĐH Bách Khoa TP. HCM – Khoa Khoa học và Kỹ thuật Máy tính

Tài liệu
1. Internet Of Things (IoT): cho người mới bắt đầu.
/>2.Giao thức MQTT.
/>3. Thư viện MQTT.js.
/>4.Lập trình socket.
/>5. Thư viện socket.io.
/>6. Thư viện React.js.
/>7. Giới thiệu về Node.js.
/>-lap-trinh-nodejs
8. Thư viện Express.js.
/>9. STM32F103 Datasheet.
/>10. Lập trình MQTT trên ESP8266.
/>11. Thuật toán Kalman.
/>-cho-moi-du-su-dung-cam-bien
12. Module cảm biến dòng điện.
/>acs712-voi-arduino
13. QR react.
/>14. PostgresSQL Documentation.
/>
Báo cáo đồ án Thiết kế luận lý

Trang 23/23




×