BỘ GIÁO DỤC & ĐÀO TẠO
TRƢỜNG ĐẠI HỌC SƢ PHẠM KỸ THUẬT TP. HỒ CHÍ MINH
KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH
---------------------------------
ĐỒ ÁN TỐT NGHIỆP
NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ TRUYỀN THÔNG
ĐỀ TÀI:
ỨNG DỤNG CHATBOT VÀO
ĐIỀU KHIỂN NHÀ THÔNG MINH
GVHD: TS. Nguyễn Mạnh Hùng
SVTH: Nguyễn Minh Hùng MSSV: 14141139
Tp. Hồ Chí Minh - 06/2018
BỘ GIÁO DỤC & ĐÀO TẠO
TRƢỜNG ĐẠI HỌC SƢ PHẠM KỸ THUẬT TP. HỒ CHÍ MINH
KHOA ĐIỆN – ĐIỆN T
91 trang |
Chia sẻ: huong20 | Ngày: 13/01/2022 | Lượt xem: 520 | Lượt tải: 0
Tóm tắt tài liệu Đồ án Ứng dụng chatbot vào điều khiển nhà thông minh, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH
---------------------------------
ĐỒ ÁN TỐT NGHIỆP
NGÀNH KỸ THUẬT ĐIỆN TỬ TRUYỀN THÔNG
ĐỀ TÀI:
ỨNG DỤNG CHATBOT VÀO ĐIỀU
KHIỂN NHÀ THÔNG MINH
GVHD: TS. Nguyễn Mạnh Hùng
SVTH: Nguyễn Minh Hùng MSSV: 14141139
Tp. Hồ Chí Minh - 06/2018
i
TRƢỜNG ĐH SPKT TP. HỒ CHÍ MINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
KHOA ĐIỆN-ĐIỆN TỬ ĐỘC LẬP - TỰ DO - HẠNH PHÚC
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH ----o0o----
Tp. HCM, ngày 28 tháng 06 năm 2018
NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
Họ tên sinh viên: Nguyễn Minh Hùng MSSV: 14141139
Chuyên ngành: Kỹ thuật Điện Tử Truyền Thông Mã ngành: 14141
Hệ đào tạo: Đại học chính quy Mã hệ: 1
Khóa: 2014 Lớp: 14141DT3B
I. TÊN ĐỀ TÀI: ỨNG DỤNG CHATBOT VÀO ĐIỀU KHIỂN NHÀ THÔNG MINH
II. NHIỆM VỤ
1. Các số liệu ban đầu:
- 1 chatbot đƣợc tạo ra trên nền tảng Dialogflow.
- 1 kit raspberry Pi3 B.
- 1 Mạch dimmer điều khiển độ sáng của bóng đèn.
- 2 Module Relay 5V 2 kênh điều khiển đóng/mở đèn, quạt.
- 1 động cơ servo MG90S điều khiển đóng/mở cửa.
- 1 Module cảm biến nhiệt độ, độ ẩm DHT11.
2. Nội dung thực hiện:
- Tìm hiểu nền tảng Dialogflow và tạo ra chatbot dựa trên nền tảng này.
- Tìm hiểu kit Raspberry Pi 3 và ngôn ngữ lập trình Python.
- Tạo webhook để nhận dữ liệu từ Dialogflow, xử lí dữ liệu để trả lại đồng thời điều
khiển thiết bị trong nhà.
- Thiết kế và thi công mạch điều khiển dimmer.
- Tìm hiểu cách điều khiển động cơ servo, cảm biến nhiệt độ, độ ẩm DHT11.
- Thi công mô hình nhà thông minh, kết nối các module lại với nhau.
III. NGÀY GIAO NHIỆM VỤ: 16/03/2018
IV. NGÀY HOÀN THÀNH NHIỆM VỤ: 28/06/2018
V. HỌ VÀ TÊN CÁN BỘ HƢỚNG DẪN: TS. Nguyễn Mạnh Hùng
CÁN BỘ HƢỚNG DẪN BM. ĐIỆN TỬ CÔNG NGHIỆP – Y SINH
ii
TRƢỜNG ĐH SPKT TP. HỒ CHÍ MINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
KHOA ĐIỆN-ĐIỆN TỬ ĐỘC LẬP - TỰ DO - HẠNH PHÚC
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH ----o0o----
Tp. HCM, ngày 28 tháng 06 năm 2018
LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP
Họ tên sinh viên: Nguyễn Minh Hùng
Lớp: 14141DT3B MSSV: 14141139
Tên đề tài: Ứng dụng chatbot và điều khiển nhà thông minh
Xác nhận
Tuần/ngày Nội dung
GVHD
Tuần 1 Gặp GVHD để nghe phổ biến yêu cầu làm đồ án,
(16/03 - 23/03) tiến hành chọn đồ án
Tuần 2 GVHD tiến hành xét duyệt đề tài
Tuần 3 Viết tóm tắt yêu cầu đề tài đã chọn: đề tài làm cái
gì, nội dung thiết kế, các thông số giới hạn của đề
tài
Tuần 4 Tiến hành thiết kế sơ đồ khối, giải thích chức
năng các khối
Tuần 5 - Tìm hiểu các khái niệm liên quan đến đề tài
nhƣ API, webhook
- Thực hiên thiết kế trên Dialogflow
Tuần 6 - Cài đặt các gói thƣ viện cần thiết cho Raspberry
- Thực hiện tạo webhook và xử lí dữ liệu nhận
đƣợc
Tuần 7 - Thực hiện code phần back-end để hoàn thiện
yêu cầu xử lí trả về dữ liệu cho Dialogflow, điều
Tuần 8
khiển phần cứng.
Tuần 9 - Sử dụng ngrok để public server online
iii
Tuần 10 - Thiết kế sơ đồ nguyên lí mạch dimmer
- Tiến hành vẽ PCB, chọn linh kiện
- Tiến hành thi công mạch
- Kiểm tra mạch thi công
Tuần 11 - Thi công mô hình đồ án
Tuần 12 - Kiểm tra, đánh giá mô hình
Tuần 13 - Viết báo cáo những nội dung đã làm
Tuần 14 - Hoàn thiện báo cáo và gởi cho GVHD để xem
xét góp ý lần cuối trƣớc khi in và báo cáo
Tuần 15 Tiến hành làm silde báo cáo và các nhiệm vụ liên
quan đến đồ án tốt nghiệp
GV HƢỚNG DẪN
(Ký và ghi rõ họ và tên)
iv
LỜI CAM ĐOAN
----- -----
Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi và đƣợc sự hƣớng
dẫn khoa học của Ts. Nguyễn Mạnh Hùng. Các nội dung nghiên cứu, kết quả trong
đề tài này là do tôi tự thực hiện dựa vào một số tài liệu trƣớc đó và không sao chép
từ tài liệu hay công trình đã có trƣớc đó. Những thông tin phục vụ cho đề tài đƣợc
chính tác giả thu thập từ các nguồn khác nhau có ghi rõ trong phần tài liệu tham
khảo.
Tôi xin chịu mọi trách nhiệm về công trình nghiên cứu của riêng mình!
Sinh viên thực hiện
Nguyễn Minh Hùng
v
LỜI CẢM ƠN
----- -----
Trong thời gian làm đồ án tốt môn học, 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è.
Em xin gửi lời cảm ơn chân thành đến Ts. Nguyễn Mạnh Hùng, giảng viên Bộ
môn Điện Tử Công Nghiệp – Y Sinh - Trƣờng ĐH Sƣ Phạm Kỹ Thuật TP.HCM,
ngƣời đã tận tình hƣớng dẫn, chỉ bảo em trong suốt quá trình làm đồ án.
Em cũng xin chân thành cảm ơn các thầy cô giáo trong trƣờng ĐH Sƣ Phạm
Kỹ Thuật TP.HCM nói chung, các thầy cô trong Bộ môn Điện Tử Công Nghiệp – Y
Sinh nói riêng đã dạy dỗ cho 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 em có đƣợc cơ sở lý thuyết vững vàng và tạo điều kiện giúp đỡ
em trong suốt quá trình học tập.
Cuối cù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 em trong suốt quá trình học tập và hoàn thành
đồ án môn học.
Sinh viên thực hiện
Nguyễn Minh Hùng
vi
MỤC LỤC
Trang bìa ..................................................................................................................... i
Nhiệm vụ đồ án .......................................................................................................... ii
Lịch trình ................................................................................................................... iii
Cam đoan..................................................................................................................... v
Lời cảm ơn ................................................................................................................ vi
Mục lục ..................................................................................................................... vii
Liệt kê hình vẽ ........................................................................................................... xi
Liệt kê bảng vẽ ........................................................................................................ xiv
Tóm tắt ...................................................................................................................... xv
Chƣơng 1. TỔNG QUAN ......................................................................................... 1
1.1 ĐẶT VẤN ĐỀ ............................................................................................... 1
1.2 MỤC TIÊU .................................................................................................... 1
1.3 NỘI DUNG NGHIÊN CỨU ......................................................................... 2
1.4 GIỚI HẠN ..................................................................................................... 2
1.5 BỐ CỤC ........................................................................................................ 3
Chƣơng 2. CƠ SỞ LÝ THUYẾT ............................................................................. 4
2.1 TỔNG QUAN VỀ CHATBOT ..................................................................... 4
2.1.1 Khái niệm về chatbot .............................................................................. 4
2.1.2 Phân loại chatbot ..................................................................................... 4
2.1.3 Xử lý ngôn ngữ tự nhiên (Natural Language Processing) ...................... 5
2.2 TỔNG QUAN VỀ API .................................................................................. 5
2.2.1 Khái niệm về API ................................................................................... 5
2.2.2 Mô hình của một API.............................................................................. 6
2.2.3 Các tác vụ thực hiện qua API ................................................................. 6
2.3 WEBHOOK ................................................................................................... 7
2.3.1 Khái niệm Webhook ............................................................................... 7
2.3.2 Hoạt động của Webhook......................................................................... 7
2.4 TỔNG QUAN VỀ DIALOGFLOW ............................................................. 8
2.4.1 Giới thiệu về Dialogflow ........................................................................ 8
2.4.2 Cấu trúc của Dialogflow ......................................................................... 9
a. Agent ........................................................................................................... 10
vii
b. Intent ........................................................................................................... 10
c. Entities ......................................................................................................... 15
d. Fulfillment ................................................................................................... 17
e. Integrations .................................................................................................. 17
2.5 RASPBERRY PI 3 ...................................................................................... 18
2.5.1 Giới thiệu về Board Raspberry Pi ......................................................... 18
2.5.2 Phần cứng của Raspberry Pi 3 .............................................................. 18
a. Nguồn cung cấp ........................................................................................... 20
b. Các cổng giao tiếp ....................................................................................... 20
c. Các chân giao tiếp GPIO của kit ................................................................. 22
2.5.3 Hệ điều hành Raspbian cho kit Raspberry Pi ....................................... 23
2.6 ĐỘNG CƠ SERVO ..................................................................................... 24
2.6.1 Giới thiệu động cơ servo ....................................................................... 24
2.6.2 Nguyên lý hoạt động của động cơ servo ............................................... 25
2.7 CẢM BIẾN NHIỆT ĐỘ DHT11 ................................................................. 27
2.8 MODULE RELAY 2 CHANNEL 5V ......................................................... 27
2.9 MOSFET ..................................................................................................... 28
2.9.1 Cấu tạo Mosfet ...................................................................................... 29
2.9.2 Nguyên lí hoạt động .............................................................................. 30
Chƣơng 3. TÍNH TOÁN VÀ THIẾT KẾ .............................................................. 31
3.1 GIỚI THIỆU ................................................................................................ 31
3.2 TÍNH TOÁN VÀ THIẾT KẾ HỆ THỐNG ................................................ 31
3.2.1 Thiết kế sơ đồ khối hệ thống ................................................................ 31
a. Sơ đồ khối hệ thống .................................................................................... 31
b. Sơ đồ mô hình hệ thống .............................................................................. 32
3.2.2 Tính toán và thiết kế mạch .................................................................... 32
a. Thiết kế khối Dialogflow ............................................................................ 33
b. Thiết kế khối điều khiển raspberry ............................................................. 33
c. Thiết kế khối điều khiển động lực ............................................................... 33
d. Thiết kế khối nguồn .................................................................................... 35
Chƣơng 4. THI CÔNG HỆ THỐNG ..................................................................... 36
4.1 GIỚI THIỆU ................................................................................................ 36
viii
4.2 THIẾT KẾ DIALOGFLOW ........................................................................ 36
4.2.1 Lƣu đồ giải thuật ................................................................................... 36
4.2.2 Thiết kế cho yêu cầu điều khiển ON-OFF ............................................ 37
a. Tạo mới Agent............................................................................................. 37
b. Tạo entities .................................................................................................. 38
c. Tạo Intent .................................................................................................... 39
d. Fulfillment ................................................................................................... 42
e. Integrations .................................................................................................. 43
4.2.3 Mở rộng cho điều khiển ON-OFF ........................................................ 44
a. Thêm mới entities ........................................................................................ 44
b. Thêm mới intent .......................................................................................... 45
4.2.4 Kết quả hoàn chỉnh trên Dialogflow ..................................................... 46
a. Intents .......................................................................................................... 46
b. Entities ........................................................................................................ 46
4.3 LẬP TRÌNH TRÊN RASPBERRY PI 3 ..................................................... 46
4.3.1 Giới thiệu ngôn ngữ lập trình Python ................................................... 46
a. Lịch sử của Python ...................................................................................... 47
b. Các phiên bản Python đã phát hành ............................................................ 47
c. Đặc điểm của ngôn ngữ lập trình Python .................................................... 48
4.3.2 Giới thiệu phần mềm lập trình Python 3 IDLE .................................... 49
4.3.3 Lƣu đồ giải thuật ................................................................................... 50
4.3.4 Viết chƣơng trình hệ thống ................................................................... 51
4.3.5 Public server lên internet bằng ngrok ................................................... 52
4.4 THI CÔNG MẠCH ĐIỀU KHIỂN DIMMER ............................................ 53
4.4.1 Sơ đồ mạch PCB Dimmer..................................................................... 54
4.4.2 Thi công mạch ...................................................................................... 55
4.5 ĐÓNG GÓI VÀ THI CÔNG MÔ HÌNH .................................................... 56
4.5.1 Đóng gói bộ điều khiển ......................................................................... 56
4.5.2 Thi công mô hình .................................................................................. 57
4.6 KẾT QUẢ VẬN HÀNH HỆ THỐNG ........................................................ 61
4.7 TÀI LIỆU HƢỚNG DẪN, THAO TÁC ..................................................... 63
4.7.1 Tài liệu hƣớng dẫn sử dụng .................................................................. 63
ix
4.7.2 Quy trình thao tác ................................................................................. 63
Chƣơng 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ ................................................ 65
5.1 DIALOGFLOW ........................................................................................... 65
5.1.1 Dialogflow ............................................................................................ 65
5.1.2 Các khái niệm liên quan........................................................................ 65
5.2 RASPBERRY PI 3 ...................................................................................... 66
5.2.1 Raspberry Pi 3 ....................................................................................... 66
5.2.2 Công cụ ngrok ....................................................................................... 66
5.3 PHẦN CỨNG .............................................................................................. 66
5.3.1 Mạch điều khiển dimmer ...................................................................... 66
5.3.2 Động cơ Servo ...................................................................................... 67
5.3.3 Module Relay 2 kênh 5V ...................................................................... 67
5.3.4 Module cảm biến DHT11 ..................................................................... 67
5.4 NHẬN XÉT VÀ ĐÁNH GIÁ ..................................................................... 67
Chƣơng 6. KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN .......................................... 69
6.1 KẾT LUẬN ................................................................................................. 69
6.2 HƢỚNG PHÁT TRIỂN .............................................................................. 69
TÀI LIỆU THAM KHẢO ...................................................................................... 70
PHỤ LỤC ................................................................................................................. 71
x
LIỆT KÊ HÌNH VẼ
Hình Trang
Hình 2.1: Khái niệm chatbot ....................................................................................... 4
Hình 2.2: Khái niệm về API ........................................................................................ 5
Hình 2.3: Giới thiệu Dialogflow ................................................................................. 8
Hình 2.4: Các phần của Dialogflow ............................................................................ 9
Hình 2.5: Các mục trong một Intent ......................................................................... 10
Hình 2.6: Hình ảnh mục context ............................................................................... 11
Hình 2.7: Hình ảnh mục Events ................................................................................ 12
Hình 2.8: Hình ảnh mục Training Phrases ................................................................ 12
Hình 2.9: Hình ảnh của mục Action & Parameters ................................................... 13
Hình 2.10: Hình ảnh mục Responses ........................................................................ 14
Hình 2.11: Hình ảnh của mục Fulfillment ................................................................ 15
Hình 2.12: Hình ảnh của mục Entities ...................................................................... 16
Hình 2.13: Các nền tảng tích hợp trong Integrations ................................................ 17
Hình 2.14: Board Raspberry Pi ................................................................................. 18
Hình 2.15: Phần cứng của Raspberry Pi ................................................................... 19
Hình 2.16: Các cổng giao tiếp trên Raspberry .......................................................... 21
Hình 2.17: Sơ đồ chân GPIO .................................................................................... 22
Hình 2.18: Hình ảnh thực tế các chân GPIO ............................................................. 23
Hình 2.19: Giao diện hệ điều hành Raspbian ............................................................ 24
Hình 2.20: Hình ảnh động cơ Servo .......................................................................... 24
Hình 2.21: Điều khiển động cơ servo bằng Duty Cycle ........................................... 26
Hình 2.22: Cảm biến nhiệt độ - độ ẩm DHT11 ......................................................... 27
Hình 2.23: Module Relay 2 channel 5V ................................................................... 28
Hình 2.24: Hình ảnh Mosfet...................................................................................... 29
Hình 2.25: Các cực của Mosfet ................................................................................. 29
Hình 2.26: Hình ảnh các loại Mosfet ........................................................................ 30
Hình 3.1: Sơ đồ khối hệ thống .................................................................................. 31
Hình 3.2: Sơ đồ thiết kế mô hình .............................................................................. 32
Hình 3.3: Sơ đồ các khối điều khiển động lực .......................................................... 33
Hình 3.4: Sơ đồ nguyên lí mạch dimmer .................................................................. 34
xi
Hình 4.1: Lƣu đồ thiết kế trên Dialogflow ................................................................ 36
Hình 4.2: Tạo mới Agent .......................................................................................... 37
Hình 4.3: Cài đặt các thông số cho Agent ................................................................. 38
Hình 4.4: Thực hiện tạo mới Entities ........................................................................ 38
Hình 4.5: Hình ảnh entities on-off ............................................................................ 39
Hình 4.6: Hình ảnh entities led ................................................................................. 39
Hình 4.7: Tạo mới intents ......................................................................................... 40
Hình 4.8: Bảng Action và Parameters ....................................................................... 41
Hình 4.9: Mục Responses ......................................................................................... 41
Hình 4.10: Kích hoạt Fulfillment cho Intent ............................................................. 42
Hình 4.11: Đặt link webhook trong mục Fulfillment................................................ 42
Hình 4.12: Tùy chỉnh trong Integrations ................................................................... 43
Hình 4.13: Giao diện trò chuyện chatbot .................................................................. 43
Hình 4.14: Thêm mới entities room .......................................................................... 44
Hình 4.15: Thêm mới entities status ......................................................................... 44
Hình 4.16: Thêm mới Intent on-off:condition .......................................................... 45
Hình 4.17: Kết quả thao tác trên Intent mới .............................................................. 45
Hình 4.18: Kết quả hoàn thành Intent ....................................................................... 46
Hình 4.19: Kết quả hoàn thành Entities .................................................................... 46
Hình 4.20: Ngôn ngữ Python .................................................................................... 47
Hình 4.21: Giao diện Python 3 IDLE ....................................................................... 49
Hình 4.22: Thao tác file trên giao diện Python 3 IDLE ............................................ 49
Hình 4.23: Các phần của giao diện ........................................................................... 50
Hình 4.24: Lƣu đồ điều khiển trên Raspberry Pi ...................................................... 51
Hình 4.25: Giới thiệu ngrok ...................................................................................... 53
Hình 4.26: Hình ảnh chạy ngrok ............................................................................... 53
Hình 4.27: Sơ đồ mạch in PCB ................................................................................. 54
Hình 4.28: Sơ đồ linh kiện 3D .................................................................................. 54
Hình 4.29: Hình ảnh mạch thi công .......................................................................... 55
Hình 4.30: Hình ảnh mạch sau thi công .................................................................... 56
Hình 4.31: Đóng gói bộ điều khiển ........................................................................... 56
Hình 4.32: Thi công khối đèn xoay chiều ................................................................. 57
xii
Hình 4.33: Kết nối đèn với module Relay ................................................................ 57
Hình 4.34: Kết nối đèn với mạch dimmer ................................................................. 58
Hình 4.35: Kết nối Module DHT11 vào đúng vị trí.................................................. 59
Hình 4.36: Đặt đúng động cơ servo vào vị trí ........................................................... 59
Hình 4.37: Kết nối với Raspberry Pi ......................................................................... 60
Hình 4.38: Hình ảnh mô hình thi công hoàn chỉnh ................................................... 60
Hình 4.39: Điều khiển thiết bị thông qua giao diện .................................................. 61
Hình 4.40: Kết quả sau khi nhận yêu cầu điều khiển ................................................ 61
Hình 4.41: Yêu cầu điều khiển đóng mở cửa ............................................................ 62
Hình 4.42: Thực hiện mở cửa ................................................................................... 62
Hình 4.43: Truy vấn thông tin nhiệt độ ..................................................................... 63
Hình 4.44: Lƣu đồ hƣớng dẫn sử dụng ..................................................................... 64
xiii
LIỆT KÊ BẢNG
Bảng Trang
Bảng 2.1: Bảng thông số kỹ thuật của Raspberry Pi ................................................. 20
Bảng 2.2: Các chân của Servo................................................................................... 25
Bảng 2.3: Hình ảnh xung tƣơng ứng với góc quay ................................................... 26
Bảng 4.1: Các phiên bản Python đã phát hành ......................................................... 47
Bảng 4.2: Danh sách linh kiện .................................................................................. 55
xiv
TÓM TẮT
Trong những năm gần đây ngƣời ta thƣờng nhắc nhiều đến AI (trí tuệ nhân
tạo) và những ứng dụng rộng rãi của chúng. Nhóm em rất thích thú khi biết những
thành tựu mà AI(trí tuệ nhân tạo) sẽ mang lại trong tƣơng lai, đặc biệt là những ứng
dụng hiệu quả của chatbot trong kinh doanh và khoa học kỹ thuật. Và để bắt kịp xu
hƣớng đó, nhóm chúng em quyết định chọn chatbot làm đối tƣợng nghiên cứu và
ứng dụng cụ thể vào điều khiển nhà thông minh.
Nhà thông minh đƣợc thiết kế sử dụng Raspberry Pi 3 cho việc điều khiển và
giám sát những thiết bị trong nhà thông qua việc giao tiếp với chatbot. Việc mô
phỏng các thiết bị trong nhà đƣợc thể hiện bằng làm mô hình ngôi nhà và các thiết
bị điện bên trong. Một số thiết bị đƣợc điều khiển thông qua việc trò chuyện với
chatbot:
Điều khiển mở/tắt các thiết bị dân dụng.
Điều khiển tuyến tính các thiết bị.
Giám sát nhiệt độ và độ ẩm trong nhà.
Có thể mở/tắt tất cả các thiết bị cùng 1 lúc hoặc từng thiết bị.
Đóng mở cửa bằng động cơ servo.
xv
CHƢƠNG 1. TỔNG QUAN
Chƣơng 1. TỔNG QUAN
1.1 ĐẶT VẤN ĐỀ
Trong những năm gần đây ngƣời ta thƣờng nhắc nhiều đến AI (trí tuệ nhân
tạo) và những ứng dụng rộng rãi của chúng. Nhóm em rất thích thú khi biết những
thành tựu mà AI (trí tuệ nhân tạo) sẽ mang lại trong tƣơng lai, đặc biệt là những ứng
dụng hiệu quả của chatbot trong kinh doanh và khoa học kỹ thuật. Và để bắt kịp xu
hƣớng đó, nhóm chúng em quyết định chọn chatbot làm đối tƣợng nghiên cứu và
ứng dụng cụ thể vào điều khiển nhà thông minh.
Chatbot là một lĩnh vực của trí tuệ nhân tạo, chatbot thực hiện hội thoại thông
minh giữa máy tính với ngƣời dùng thông qua trò chuyện trực tiếp. Với việc cung
cấp thông tin cho từng ngữ cảnh để điều khiển các thiết bị khác nhau qua internet.
Đồng thời ngày nay mạng lƣới Internet đang ngày càng trở nên phổ biến, điều đó
khiến cho việc điều khiển thiết bị từ xa qua mạng Internet trở nên dễ dàng và tiện
lợi hơn.
Nhà thông minh đƣợc thiết kế sử dụng Raspberry Pi 3 cho việc điều khiển và
giám sát những thiết bị trong nhà thông qua việc giao tiếp với chatbot. Ngoài việc
điều khiển các thiết bị trong nhà bằng app android nhƣ những đề tài về smarthome
đã có, ngƣời dùng có thể giao tiếp với chatbot về mọi thứ và điều khiển thiết bị
trong gia đình thông qua việc trò chuyện với chatbot. So với việc điều khiển bằng
thao tác cứng nhắt trên các app android thông thƣờng nhƣ các đề tài về IoT đã có
trƣớc đây, ngƣời dùng có thể trò chuyện với chatbot nhƣ một trợ lí ảo giúp ngƣời
dùng quản lí và điều khiển hoạt động của ngôi nhà. Vì những lý do đó, nhóm sinh
viên quyết định thực hiện đề tài “Ứng dụng chatbot vào điều khiển nhà thông
minh”.
1.2 MỤC TIÊU
Tạo ra đƣợc chatbot giao tiếp với ngƣời dùng và thực hiện nhiệm vụ khi có
yêu cầu từ ngƣời dùng thông qua mạng internet. Đồ án đƣợc nghiên cứu, khảo sát,
xây dựng với mục định áp dụng những kiến thức đã học và tìm hiểu đƣợc để thiết
kế, tạo ra một hệ thống chatbot để điều khiển thiết bị 1 cách hoàn chỉnh.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 1
CHƢƠNG 1. TỔNG QUAN
Một số chức năng của hệ thống điều khiển bằng hệ thống chatbot:
Điều khiển mở/tắt các thiết bị dân dụng.
Điều khiển tuyến tính các thiết bị.
Giám sát nhiệt độ và độ ẩm trong nhà.
Có thể mở/tắt tất cả các thi...ình 2.24: Hình ảnh Mosfet
2.9.1 Cấu tạo Mosfet
Mosfet có cấu trúc bán dẫn cho phép điều khiển bằng điện áp với dòng điện
điều khiển cực nhỏ.
Hình 2.25: Các cực của Mosfet
Cấu tạo của Mosfet ngƣợc Kênh N
G : Gate gọi là cực cổng
S : Source gọi là cực nguồn
D : Drain gọi là cực máng
Trong đó : G là cực điều khiển đƣợc cách lý hoàn toàn với cấu trúc bán dẫn
còn lại bởi lớp điện môi cực mỏng nhƣng có độ cách điện cực lớn dioxit-silic
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 29
CHƢƠNG 2. CƠ SỞ LÝ THUYẾT
(Sio2). Hai cực còn lại là cực gốc (S) và cực máng (D). Cực máng là cực đón các
hạt mang điện.
Mosfet có điện trở giữa cực G với cực S và giữa cực G với cực D là vô cùng
lớn , còn điện trở giữa cực D và cực S phụ thuộc vào điện áp chênh lệch giữa cực G
và cực S ( UGS )
Khi điện áp UGS = 0 thì điện trở RDS rất lớn, khi điện áp UGS > 0 => do hiệu
ứng từ trƣờng làm cho điện trở RDS giảm, điện áp UGS càng lớn thì điện trở RDS
càng nhỏ.
Kí hiệu Mosfet:
Hình 2.26: Hình ảnh các loại Mosfet
2.9.2 Nguyên lí hoạt động
Mosfet hoạt động ở 2 chế độ đóng và mở. Do là một phần tử với các hạt mang
điện cơ bản nên Mosfet có thể đóng cắt với tần số rất cao. Nhƣng mà để đảm bảo
thời gian đóng cắt ngắn thì vấn đề điều khiển lại là vẫn đề quan trọng.
Đối với kênh P : Điện áp điều khiển mở Mosfet là Ugs0. Dòng điện sẽ
đi từ S đến D.
Đối với kênh N : Điện áp điều khiển mở Mosfet là Ugs >0. Điện áp
điều khiển đóng là Ugs<=0. Dòng điện sẽ đi từ D xuống S.
Do đảm bảo thời gian đóng cắt là ngắn nhất ngƣời ta thƣờng : Đối với Mosfet
Kênh N điện áp khóa là Ugs = 0 V còn Kênh P thì Ugs=~0.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 30
CHƢƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ
Chƣơng 3. TÍNH TOÁN VÀ THIẾT KẾ
3.1 GIỚI THIỆU
Nhà thông minh đƣợc thiết kế sử dụng raspberry pi 3 cho việc điều khiển và
giám sát những thiết bị trong nhà thông qua việc giao tiếp với chatbot. Sau khi nhận
đƣợc yêu cầu của ngƣời dùng, chatbot gửi thông tin đến raspberry để thực hiện điều
khiển phần cứng, đồng thời xử lí đƣa ra câu trả lời cho ngƣời dùng.
Các yêu cầu điều khiển từ ngƣời dùng bao gồm :
- Đóng mở các thiết bị nhƣ đèn, quạt.
- Điều khiển dimmer để điều khiển độ sáng của bóng đèn.
- Thực hiện đóng mở cửa bằng động cơ servo
- Gửi thông tin về nhiệt độ, độ ẩm của căn phòng khi có yêu cầu của
ngƣời dùng.
3.2 TÍNH TOÁN VÀ THIẾT KẾ HỆ THỐNG
3.2.1 Thiết kế sơ đồ khối hệ thống
a. Sơ đồ khối hệ thống
Request POST
User Dialogflow Fulfillment Webhook
Response 200 OK
Raspberry
(Python)
Khối
nguồn
Device
Hình 3.1: Sơ đồ khối hệ thống
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 31
CHƢƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ
User: Là ngƣời dùng trò chuyện trực tiếp với chatbot.
Dialogflow: Nhận yêu cầu của ngƣời dùng, và sau khi xử lí thì sẽ trả
lời cho yêu cầu của ngƣời dùng.
Fulfillment: Là nơi cho phép Dialogflow gửi thông tin đến webhook.
Webhook: Là nơi tiếp nhận thông tin từ Dialogflow.
Rasberry Pi: Xử lí thông tin nhận đƣợc để điều khiển phần cứng, đồng
thời trả về response ngƣợc lại cho Dialogflow.
Divice: Là khối công suất, thực hiện yêu cầu điều khiển của ngƣời
dùng.
Khối nguồn: Cung cấp nguồn cho raspberry và khối công suất hoạt
động.
b. Sơ đồ mô hình hệ thống
Hình 3.2: Sơ đồ thiết kế mô hình
3.2.2 Tính toán và thiết kế mạch
Phần này, nhóm tiến hành thiết kế, tính toán ra sơ đồ nguyên lí cho từng khối.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 32
CHƢƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ
a. Thiết kế khối Dialogflow
Đây là khối giúp chatbot trò chuyện với ngƣời dùng và phân tích câu nói của
ngƣời dùng bằng Natural Language Processing(NLP) thành dữ liệu dƣới định dạng
file Json, từ đó gửi đến webhook để xử lí và nhận câu trả lời tƣơng ứng từ webhook
để hiển thị cho ngƣời dùng.
b. Thiết kế khối điều khiển raspberry
Là khối quan trọng nhất, có chức năng tạo ra webhook để nhận dữ liệu đƣợc
gửi từ Dialogflow thông qua internet, từ đó tiến hành phân tích, xử lí dữ liệu để điều
khiển thiết bị trong nhà theo yêu cầu của ngƣời dùng, đồng thời xử lí để gửi lại câu
trả lời cho Dialogflow.
c. Thiết kế khối điều khiển động lực
Sơ đồ các khối trong mạch điều khiển động lực :
Raspberry Pi 3
Module Mạch
Servo Cảm biến
Relay Dimmer
Hình 3.3: Sơ đồ các khối điều khiển động lực
Module Relay:
Các thiết bị trong nhà sử dụng điện áp xoay chiều 220V nên để điều khiển
đóng ngắt, ta dùng Module Relay. Vì ngõ ra điều khiển của raspberry là 3,3V nên ta
chọn mạch Relay có áp điều khiển là 5V.
Ta có cƣờng độ dòng điện định mức qua đèn là : I = = = 0.05 A (3.1)
đm
Ta chọn ICont > 2.5 x Iđm = 0.125 A. Ta chọn Module relay có I = 10 A (3.2)
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 33
CHƢƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ
Mạch dimmer :
Sơ đồ nguyên lí :
Hình 3.4: Sơ đồ nguyên lí mạch dimmer
Giá trị điện áp trung bình sau khi qua cầu chỉnh lƣu:
VAVG = √ .VRMS )/ = 0.9 x 220 = 198 V (3.3)
Cƣờng độ dòng điện khi Mosfet ngƣng dẫn là :
I = = 1.9 mA (3.4)
Cƣờng độ dòng điện qua led phát quang oppto : I = = = 10 mA (3.5)
Khối cảm biến :
Để giám sát nhiệt độ, độ ẩm trong nhà và trả về kết quả khi có yêu cầu của
ngƣời dùng, ta dùng một cảm biến DHT11. DHT11 sử dụng nguồn đƣợc cấp trực
tiếp từ Raspberry Pi.
Khối Servo :
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 34
CHƢƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ
Để thực hiện yêu cầu đóng mở cửa, ta sử dụng động cơ servo MG90S để điều
khiển góc quay phù hợp thực hiện yêu cầu đóng mở cửa.
d. Thiết kế khối nguồn
Sử dụng nguồn 220V AC cung cấp trực tiếp cho raspberry pi3 và các thiết bị
sử dụng điện xoay chiều.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 35
CHƢƠNG 4. THI CÔNG HỆ THỐNG
Chƣơng 4. THI CÔNG HỆ THỐNG
4.1 GIỚI THIỆU
Chƣơng này gồm phần thi công trên màn hình và kết quả thi công mạch
dimmer và xây dựng mô hình nhà thông minh.
4.2 THIẾT KẾ DIALOGFLOW
4.2.1 Lƣu đồ giải thuật
Lƣu đồ khi ngƣời dùng yêu cầu điều khiển các thiết bị đến chatbot thông qua
text trò chuyện :
Can you help you?
Yêu cầu điều khiển
thiết bị N
Prompt
Y
Y
Ngƣời dùng nhập đầy
đủ thông tin N
Y
Gửi dữ liệu đến
Webhook
Nhận dữ liệu đã xử lí
ở Webhook N
Y
Hiển thị Reponse
Hình 4.1: Lƣu đồ thiết kế trên Dialogflow
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 36
CHƢƠNG 4. THI CÔNG HỆ THỐNG
Giải thích lƣu đồ:
Bƣớc 1: Để trò chuyện đƣợc với chatbot, ngƣời dùng phải truy cập đƣợc
internet và có đƣợc link để trò chuyện với chatbot.
Bƣớc 2: Phân tích câu nói ngƣời dùng để phát hiện yêu cầu điều khiển thiết bị,
nếu ngƣời dùng nhập chƣa đầy đủ thông tin để điều khiển thì chatbot sẽ hỏi lại
ngƣời dùng để ngƣời dùng cung cấp đầy đủ thông tin.
Bƣớc 3: Lƣu thông tin dƣới dạng file Json rồi gửi đến địa chỉ webhook đã lƣu
ở mục Fulfillment để xử lí.
Bƣớc 4: Nhận kết quả trả lại từ webhook và hiển thị cho ngƣời dùng.
Bƣớc 5: Sẵn sàng nhận yêu cầu trò chuyện hay điều khiển tiếp theo từ ngƣời
dùng.
4.2.2 Thiết kế cho yêu cầu điều khiển ON-OFF
a. Tạo mới Agent
Để bắt đầu với Dialogflow, ta tiến hành tạo mới Agent. Ở đây, nhóm em tạo
Agent tên là finalproject, sau khi chọn các cài đặt cần thiết nhƣ múi giờ +7 thì tiến
hành lƣu lại Agent.
Hình 4.2: Tạo mới Agent
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 37
CHƢƠNG 4. THI CÔNG HỆ THỐNG
Tiến hành chuyển sang tab Languages để chỉnh ngôn ngữ là English.
Hình 4.3: Cài đặt các thông số cho Agent
Sau khi đã thiết lập các thông số, tiến hành lƣu lại và chuyển sang phần giao
diện hỗ trợ cho lập trình viên để tạo 1 chatbot.
b. Tạo entities
Sau khi đã tạo mới Agent, ta chuyển sang tab entities để tạo mới. Ở đây, ta
cần xác định 2 thực thể cần làm việc là điều khiển đèn nào và trạng thái cần điều
khiển của đèn đó. Từ đó ta tạo ra 2 thực thể là @on-off và @led (tên entity do
ngƣời lập trình viên tự đặt sao cho dễ hiểu và sử dụng nhất).
Sau khi đã xác định đƣợc những entities cần tạo, ta tiến hành tạo mới entities.
Hình 4.4: Thực hiện tạo mới Entities
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 38
CHƢƠNG 4. THI CÔNG HỆ THỐNG
Sau khi nhấn vào tạo mới, ta tiến hành đặt tên cho entity và tiến hành nhập vào
các giá trị. Nhƣ hình dƣới đây, đèn chỉ có 2 trạng thái là ON và OFF nên ta điền giá
trị ON và OFF vào refence value, còn phần synonym, ta điền vào các từ đồng
nghĩa hoặc ngầm hiểu là điều khiển on hoặc off đèn tƣơng ứng nhƣ hình dƣới đây:
Hình 4.5: Hình ảnh entities on-off
Sau khi đã hoàn thành, ta tiến hành nhấn Save để lƣu lại. Ta cũng thực hiện
tƣơng tự đối với entity @led.
Hình 4.6: Hình ảnh entities led
c. Tạo Intent
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 39
CHƢƠNG 4. THI CÔNG HỆ THỐNG
Ta tiến hành tạo mới intent để phân tích câu nói của ngƣời dùng đƣa vào, từ
đó ta xử lí và đƣa ra kết quả phù hợp cho ngƣời dùng. Tƣơng tự nhƣ tạo mới
Enities, ta nhấp chọn Create Intent để tạo mới Intent.
Ta tiến hành thao tác để tạo ra Intent on-off giúp chatbot hiểu yêu cầu ON-
OFF các thiết bị từ ngƣời dùng và đƣa ra hành động hợp lí.
Hình 4.7: Tạo mới intents
Ở mục Training Phrases, ta tiến hành nhập các câu nói mà ngƣời dùng có thể
nói để điều khiển thiết bị, Dialogflow sẽ tự động hightlight các giá trị của tham số
trong entities vừa tạo ở trên để trích xuất lấy dữ liệu từ câu nói của ngƣời dùng, từ
đó xử lí và đƣa ra kết quả phù hợp. Ta cũng có thể chỉnh sửa thủ công bằng cách bôi
đen các từ muốn Dialogflow gắn tham số. Các giá trị tham số của Training Phrases
sẽ đƣợc hiển thị trong phần Action and parameters.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 40
CHƢƠNG 4. THI CÔNG HỆ THỐNG
Hình 4.8: Bảng Action và Parameters
Ở đây action là on:off. Action này sẽ giúp chúng ta xác định đâu là Intent
đƣợc gửi tới webhook để có thể xử lí và đƣa ra kết quả phù hợp đối với yêu cầu
ngƣời dùng. Và nhƣ ta thấy ở trên thì hai tham số là on-off và led vừa tạo ở entity
đƣợc sử dụng để lấy giá trị dữ liệu từ ngƣời dùng. Ở đây, ta yêu cầu ngƣời dùng
cung cấp đầy đủ thông tin bằng việc tích vào mục Required.
Tiếp theo là mục Response, đây là nơi chúng ta sẽ trả lời đáp án tƣơng ứng
cho ngƣời dùng mỗi khi Intent đƣợc gọi. Ở đây, nhóm em sử dụng giá trị của tham
số trong chính câu nói của ngƣời dùng để trả lời. Nhƣ hình dƣới đây, ta có thể thấy
đƣợc sau khi ngƣời dùng yêu cầu “Turn on led 1” thì chatbot sẽ trả lời đáp ứng yêu
cầu của ngƣời dùng theo định dạng ta đã đặt ở Text response.
Hình 4.9: Mục Responses
Cuối cùng là mục fulfillment, click on “Enable webhook call for this intent”
để khi Intent đƣợc gọi thì sẽ chuyển thông tin dƣới dạng Json đến webhook, server
sẽ nhận và xử lí thông tin và cuối cùng trả về cho ngƣời dùng câu trả lời cho câu hỏi
tƣơng ứng của ngƣời dùng thay vì trả lời theo định dạng mặc định ở mục Response
ở trên.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 41
CHƢƠNG 4. THI CÔNG HỆ THỐNG
Hình 4.10: Kích hoạt Fulfillment cho Intent
Sau khi đã hoàn thành, ta nhấn Save để lƣu mới Intent.
d. Fulfillment
Hình 4.11: Đặt link webhook trong mục Fulfillment
Đây là nơi đặt link của webhook, Dialogflow sẽ gọi đến địa chỉ này mỗi khi có
Intent đã kích hoạt webhook đƣợc gọi đến. Đây sẽ là nơi tiếp nhận thông tin để
serve có thể xử lí và trả lại kết quả cho Dialogflow để hiển thị cho ngƣời dùng.
Ta cần kích hoạt Enable ở mục webhook và đặt link của webhook cần gọi vào
mục URL, tiến hành nhấn Save để hoàn tất.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 42
CHƢƠNG 4. THI CÔNG HỆ THỐNG
e. Integrations
Ta tích hợp chatbot vào các nền tảng nhắn tin, ở đây nhóm em sử dụng
webdemo do Dialogflow hỗ trợ để tạo giao diện nhắn tin với ngƣời dùng. Enable
web demo để kích hoạt tính năng này.
Hình 4.12: Tùy chỉnh trong Integrations
Sau khi enable web demo, chúng ta sẽ thấy đƣờng link. Chúng ta sẽ trò chuyện
với chatbot thông qua đƣờng link này.
Hình 4.13: Giao diện trò chuyện chatbot
Đây là giao diện khi ta click vào đƣờng dẫn ở trên, ta trò chuyện với chatbot
thông qua hộp thoại này.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 43
CHƢƠNG 4. THI CÔNG HỆ THỐNG
4.2.3 Mở rộng cho điều khiển ON-OFF
a. Thêm mới entities
Trong một số trƣờng hợp ngƣời dùng thay vì yêu cầu điều khiển trực tiếp các
đèn thì ngƣời dùng có thể yêu cầu thắp sáng hay tắt thiết bị ở phòng nào, lúc nào
chúng ta cần lập trình cho chatbot hiểu đƣợc ngƣời dùng đang muốn gì để đáp ứng
đúng yêu cầu ngƣời dùng.
Lúc này ta phải tạo mới 2 enities là @room và @status để đáp ứng nhu cầu
thắp sáng hay tắt của từng phòng.
Hình 4.14: Thêm mới entities room
Hình 4.15: Thêm mới entities status
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 44
CHƢƠNG 4. THI CÔNG HỆ THỐNG
b. Thêm mới intent
Chúng ta tiến hành thêm mới Intent và thao tác tƣơng tự nhƣ các bƣớc ở trên.
Ở đây nhóm em đã tạo ra Intent on-off:condition. Sau đây là hình ảnh của Intent
này:
Hình 4.16: Thêm mới Intent on-off:condition
Vẫn tƣơng tự nhƣ trƣờng hợp ON-OFF thông thƣờng ở trên, khi ngƣời dùng
cung cấp thiếu thông tin thì chatbot sẽ hỏi ngƣời dùng để cung cấp đầy đủ thông tin.
Hình 4.17: Kết quả thao tác trên Intent mới
Các bƣớc tiếp theo, nhóm em thực hiện tƣơng tự nhƣ trƣờng hợp ON-OFF
thông thƣờng ở trên.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 45
CHƢƠNG 4. THI CÔNG HỆ THỐNG
4.2.4 Kết quả hoàn chỉnh trên Dialogflow
Chúng ta thực hiện tƣơng tự nhƣ các bƣớc ở trên để đáp ứng những yêu cầu
của ngƣời dùng nhƣ đóng mở thiết bị, điều khiển dimmer hay đọc giá trị từ cảm
biến. Sau đây là một số hình ảnh thực hành hoàn chỉnh trên Dialogflow.
a. Intents
Hình 4.18: Kết quả hoàn thành Intent
b. Entities
Hình 4.19: Kết quả hoàn thành Entities
4.3 LẬP TRÌNH TRÊN RASPBERRY PI 3
4.3.1 Giới thiệu ngôn ngữ lập trình Python
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 46
CHƢƠNG 4. THI CÔNG HỆ THỐNG
Python là ngôn ngữ lập trình hƣớng đối tƣợng, cấp cao, mạnh mẽ, đƣợc tạo ra
bởi Guido van Rossum. Nó dễ dàng để tìm hiểu và đang nổi lên nhƣ một trong
những ngôn ngữ lập trình nhập môn tốt nhất cho ngƣời lần đầu tiếp xúc với ngôn
ngữ lập trình. Python hoàn toàn tạo kiểu động và sử dụng cơ chế cấp phát bộ nhớ tự
động. Python có cấu trúc dữ liệu cấp cao mạnh mẽ và cách tiếp cận đơn giản nhƣng
hiệu quả đối với lập trình hƣớng đối tƣợng. Cú pháp lệnh của Python là điểm cộng
vô cùng lớn vì sự rõ ràng, dễ hiểu và cách gõ linh động làm cho nó nhanh chóng trở
thành một ngôn ngữ lý tƣởng để viết script và phát triển ứng dụng trong nhiều lĩnh
vực, ở hầu hết các nền tảng.
a. Lịch sử của Python
Python là một ngôn ngữ khá cũ đƣợc tạo ra bởi Guido Van Rossum. Thiết kế
bắt đầu vào cuối những năm 1980 và đƣợc phát hành lần đầu tiên vào tháng 2 năm
1991.
Hình 4.20: Ngôn ngữ Python
b. Các phiên bản Python đã phát hành
Phiên bản Ngày phát hành
Python 1.0 (bản phát hành chuẩn đầu tiên) 01/1994
Python 1.6 (Phiên bản 1.x cuối cùng) 05/09/2000
Python 2.0 (Giới thiệu list comprehension) 16/10/2000
Python 2.7 (Phiên bản 2.x cuối cùng) 03/07/2010
Python 3.0 (Loại bỏ cấu trúc và mô-đun trùng lặp) 03/12/2008
Python 3.6 (Bản mới nhất tính đến thời điểm viết bài) 23/12/2016
Bảng 4.1: Các phiên bản Python đã phát hành
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 47
CHƢƠNG 4. THI CÔNG HỆ THỐNG
c. Đặc điểm của ngôn ngữ lập trình Python
- Ngôn ngữ lập trình đơn giản, dễ học: Python có cú pháp rất đơn giản, rõ
ràng. Nó dễ đọc và viết hơn rất nhiều khi so sánh với những ngôn ngữ lập trình khác
nhƣ C++, Java, C#.
- Miễn phí, mã nguồn mở: Bạn có thể tự do sử dụng và phân phối Python,
thậm chí là dùng cho mục đích thƣơng mại. Vì là mã nguồn mở, bạn không những
có thể sử dụng các phần mềm, chƣơng trình đƣợc viết trong Python mà còn có thể
thay đổi mã nguồn của nó. Python có một cộng đồng rộng lớn, không ngừng cải
thiện nó mỗi lần cập nhật.
- Khả năng di chuyển: Các chƣơng trình Python có thể di chuyển từ nền tảng
này sang nền tảng khác và chạy nó mà không có bất kỳ thay đổi nào. Nó chạy trên
hầu hết tất cả các nền tảng nhƣ Windows, macOS, Linux.
- Khả năng mở rộng và có thể nhúng: Giả sử một ứng dụng đòi hỏi sự phức
tạp rất lớn,bạn có thể dễ dàng kết hợp các phần code bằng C, C++ và những ngôn
ngữ khác (có thể gọi đƣợc từ C) vào code Python. Điều này sẽ cung cấp cho ứng
dụng của bạn những tính năng tốt hơn cũng nhƣ khả năng scripting mà những ngôn
ngữ lập trình khác khó có thể làm đƣợc.
- Ngôn ngữ thông dịch cấp cao: Không giống nhƣ C/C++, với Python, bạn
không phải lo lắng những nhiệm vụ khó khăn nhƣ quản lý bộ nhớ, dọn dẹp những
dữ liệu vô nghĩa,... Khi chạy code Python, nó sẽ tự động chuyển đổi code sang ngôn
ngữ máy tính có thể hiểu. Bạn không cần lo lắng về bất kỳ hoạt động ở cấp thấp
nào.
- Thƣ viện tiêu chuẩn lớn để giải quyết những tác vụ phổ biến: Python có một
số lƣợng lớn thƣ viện tiêu chuẩn giúp cho công việc lập trình của bạn trở nên dễ thở
hơn rất nhiều, đơn giản vì không phải tự viết tất cả code. Những thƣ viện này đƣợc
kiểm tra kỹ lƣỡng và đƣợc sử dụng bởi hàng trăm ngƣời.
- Hƣớng đối tƣợng: Mọi thứ trong Python đều là hƣớng đối tƣợng. Lập trình
hƣớng đối tƣợng (OOP) giúp giải quyết những vấn đề phức tạp một cách trực quan.
Với OOP, bạn có thể phân chia những vấn đề phức tạp thành những tập nhỏ hơn
bằng cách tạo ra các đối tƣợng.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 48
CHƢƠNG 4. THI CÔNG HỆ THỐNG
4.3.2 Giới thiệu phần mềm lập trình Python 3 IDLE
Cả ngôn ngữ lập trình Python 2 và Python 3 đều đƣợc cài đặt sẵn khi cài hệ
điều hành Raspbian nên ta có thể sử dụng cả Python 2 và Python 3 để lập trình. Để
khởi động phần mềm lập trình Python 3 IDLE, ta tiến hành click chọn : Start =>
programing => Python 3 (IDLE). Ngay lập tức giao diện IDLE sẽ đƣợc hiển thị.
Hình 4.21: Giao diện Python 3 IDLE
Giao diện IDLE rất đơn giản và dễ sử dụng, để tạo File mới hoặc Open một
file có sẵn ta click chọn File rồi chọn các mục tƣơng ứng.
Hình 4.22: Thao tác file trên giao diện Python 3 IDLE
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 49
CHƢƠNG 4. THI CÔNG HỆ THỐNG
Hình dƣới đây chỉ ra chức năng các phần và thanh công cụ của Python 3
IDLE:
Hình 4.23: Các phần của giao diện
4.3.3 Lƣu đồ giải thuật
Giải thích lƣu đồ:
Các bƣớc thực hiện đƣợc miêu tả bởi lƣu đồ dƣới (Hình 4.24).
Bƣớc 1: Ta cấp nguồn cho hệ thống, hệ thống bắt đầu khởi động và kết nối với
mạng internet.
Bƣớc 2: Sau khi khởi tạo hệ thống, nếu có dữ liệu đƣợc từ Dialogflow gửi đến
thì hệ thống sẽ thực hiện xử lí, phân tích dữ liệu nhận đƣợc, từ đó thực hiện yêu cầu
điều khiển thiết bị và tạo ra câu trả lời phù hợp với từng yêu cầu điều khiển từ
ngƣời dùng.
Bƣớc 3: Tiếp đến raspberry sẽ gửi câu trả lời đến Dialogflow để hiển thị câu
trả lời cho ngƣời dùng.
Bƣớc 4: Sẵn sàng nhận dữ liệu tiếp theo từ Dialogflow để xử lí và điều khiển
thiết bị.
Lƣu đồ điều khiển trên raspberry:
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 50
CHƢƠNG 4. THI CÔNG HỆ THỐNG
Bắt đầu
Khởi tạo hệ thống
Nhận dữ liệu từ
Webhook N
Y
Xử lý phân tích
Điều khiển thiết bị
N
Gửi dữ liệu cho
Dialogflow N
Y
Hình 4.24: Lƣu đồ điều khiển trên Raspberry Pi
4.3.4 Viết chƣơng trình hệ thống
Ở đây ta tiến hành viết chƣơng trình tạo webhook để nhận dữ liệu từ
Dialogflow và sử dụng dữ liệu đó để điều khiển khối điều khiển động lực, đồng thời
gửi phản hồi về cho Dialogflow. Dƣới đây là một đoạn ngắn của chƣơng trình tạo
webhook, vì soucre code khá dài nên nhóm em xin phép để đầy đủ source code ở
phần phụ lục.
#!/usr/bin/env python
import urllib
import json
import os
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 51
CHƢƠNG 4. THI CÔNG HỆ THỐNG
import RPi.GPIO as GPIO
import Adafruit_DHT
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(16, GPIO.OUT)
GPIO.setup(23, GPIO.OUT)
GPIO.setup(24, GPIO.OUT)
GPIO.setup(25, GPIO.OUT)
GPIO.setup(18, GPIO.OUT)
pwm = GPIO.PWM(18, 500)
pwm.start(100)
GPIO.setup(13, GPIO.OUT)
pwm1 = GPIO.PWM(13, 50)
from flask import Flask
from flask import request
from flask import make_response
# Flask app should start in global layout
app = Flask(__name__)
@app.route('/webhook', methods=['POST'])
def webhook():
req = request.get_json(silent=True, force=True)
print("Request:")
print(json.dumps(req, indent=4))
res = makeWebhookResult(req)
res = json.dumps(res, indent=4)
print(res)
#t = str(res["speech"])
r = make_response(res)
#t= str(r.decode('utf-8'))
print("*")
print (r)
#print ("*")
r.headers['Content-Type'] = 'application/json'
return r
if __name__ == '__main__':
port = int(os.getenv('PORT', 5000))
print("Starting app on port %d" %(port))
app.run(debug=True, port=port, host='0.0.0.0')
4.3.5 Public server lên internet bằng ngrok
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 52
CHƢƠNG 4. THI CÔNG HỆ THỐNG
Ở phần trên ta chỉ mới tạo ra webhook ở local host, để public server lên
internet ta cần dùng ngrok. Vậy ngrok là gì ? Ngrok là công cụ tạo đƣờng hầm
(tunnel) giữa localhost của bạn và internet. Giúp ngƣời khác mạng có thể truy cập
đƣợc localhost của bạn thông qua custom domain của ngrok.
Hình 4.25: Giới thiệu ngrok
Ngrok có bản trả phí lẫn miễn phí, tuy nhiên bản miễn phí sẽ có nhiều hạn chế.
Để có thể sử dụng ngrok ta tiến hành các bƣớc sau:
- Đăng ký tài khoản free trên trang web: https://ngrok.com/
- Download ngrok về máy, tiến hành giải nén.
- Vào folder bạn vừa giải nén, chạy câu lệnh ./ngrok http [port bạn muốn
mở].
Ví dụ kết quả sau khi chạy port 5000 nhƣ hình dƣới:
Hình 4.26: Hình ảnh chạy ngrok
4.4 THI CÔNG MẠCH ĐIỀU KHIỂN DIMMER
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 53
CHƢƠNG 4. THI CÔNG HỆ THỐNG
4.4.1 Sơ đồ mạch PCB Dimmer
Hình 4.27: Sơ đồ mạch in PCB
Hình 4.28: Sơ đồ linh kiện 3D
Dƣới đây là danh sách các linh kiện:
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 54
CHƢƠNG 4. THI CÔNG HỆ THỐNG
Tên linh Kí
kiện hiệu Giá trị
Opto 4N35 OP1
Điện trở R3 6k8
Điện trở R1 100k
Tụ điện C1 100uF/450V
Điện trở R4 330 Ohm
Diode Bridge D1 2A
Diode D2 Diode
Zenner R2 DIODE Zener
Header 2 pin C2 Header2
MOSFET IRF840 Q1 IRF840
Domino J1, J2 KF2
Bảng 4.2: Danh sách linh kiện
4.4.2 Thi công mạch
Một số hình ảnh thi công mạch hoàn chỉnh
Hình 4.29: Hình ảnh mạch thi công
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 55
CHƢƠNG 4. THI CÔNG HỆ THỐNG
Hình 4.30: Hình ảnh mạch sau thi công
4.5 ĐÓNG GÓI VÀ THI CÔNG MÔ HÌNH
4.5.1 Đóng gói bộ điều khiển
Để bảo vệ raspberry pi 3 khỏi tác động bên ngoài, chúng em dùng vỏ nhựa để
bảo vệ raspberry. Đồng thời trên vỏ cũng trang bị quạt tản nhiệt mini để giúp
raspberry hoạt động tốt hơn. Dƣới đây là một số hình ảnh :
Hình 4.31: Đóng gói bộ điều khiển
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 56
CHƢƠNG 4. THI CÔNG HỆ THỐNG
4.5.2 Thi công mô hình
Để tạo mô hình nhà thông minh, nhóm em sử dụng vật liệu là bìa cứng. Sử
dụng các dụng cụ để cắt ghép các phần lại với nhau để tạo mô hình ngôi nhà hoàn
chỉnh. Thực hiện đính các thiết bị đèn vào một khối cố định nhƣ hình dƣới.
Hình 4.32: Thi công khối đèn xoay chiều
Sau đó kết nối đèn với thiết bị điều khiển công suất Relay, dimmer.
Hình 4.33: Kết nối đèn với module Relay
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 57
CHƢƠNG 4. THI CÔNG HỆ THỐNG
Hình 4.34: Kết nối đèn với mạch dimmer
Tiếp đến là rắp ráp cảm biến DHT11 và động cơ servo vào đúng vị trí.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 58
CHƢƠNG 4. THI CÔNG HỆ THỐNG
Hình 4.35: Kết nối Module DHT11 vào đúng vị trí
Hình 4.36: Đặt đúng động cơ servo vào vị trí
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 59
CHƢƠNG 4. THI CÔNG HỆ THỐNG
Cuối cùng ta kết nối các bộ phận với bộ điều khiển raspberry pi 3.
Hình 4.37: Kết nối với Raspberry Pi
Hình 4.38: Hình ảnh mô hình thi công hoàn chỉnh
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 60
CHƢƠNG 4. THI CÔNG HỆ THỐNG
4.6 KẾT QUẢ VẬN HÀNH HỆ THỐNG
Sau khi ngƣời dùng nhập “Turn on led 2” thì ngay lập tức đèn 2 mở, đồng thời
chatbot trả lời lại cho ngƣời dùng.
Hình 4.39: Điều khiển thiết bị thông qua giao diện
Hình 4.40: Kết quả sau khi nhận yêu cầu điều khiển
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 61
CHƢƠNG 4. THI CÔNG HỆ THỐNG
Tƣơng tự khi ngƣời dùng yêu cầu mở cửa.
Hình 4.41: Yêu cầu điều khiển đóng mở cửa
Hình 4.42: Thực hiện mở cửa
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 62
CHƢƠNG 4. THI CÔNG HỆ THỐNG
Và trả lời thông tin nhiệt độ, độ ẩm khi đƣợc ngƣời dùng yêu cầu.
Hình 4.43: Truy vấn thông tin nhiệt độ
4.7 TÀI LIỆU HƢỚNG DẪN, THAO TÁC
4.7.1 Tài liệu hƣớng dẫn sử dụng
- Bƣớc 1: Cấp nguồn cho hệ thống, hệ thống hoạt động sử dụng nguồn 220V
AC.
- Bƣớc 2: Sau khi khởi động hệ thống, tiến hành mở ứng dụng chatbot và trò
chuyện với chatbot thông qua text message.
- Bƣớc 3: Trò chuyện và yêu cầu điều khiển thiết bị đối với chatbot.
4.7.2 Quy trình thao tác
Để giúp ngƣời sử dụng dễ dàng thao tác, dƣới đây là lƣu đồ quy trình vận hành
hệ thống:
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 63
CHƢƠNG 4. THI CÔNG HỆ THỐNG
Hình 4.44: Lƣu đồ hƣớng dẫn sử dụng
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 64
CHƢƠNG 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ
Chƣơng 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ
Để thực hiện yêu cầu đề tài, nhóm em đã tập trung ghiên cứu và hoàn thiện đề
tài đƣợc giao. Quá trình nghiên cứu đƣợc thực hiện trong 15 tuần, trong quá trình đó
nhóm em không những biết đƣợc nhiều kiến thức mới mà còn ôn lại nhiều kiến thức
cũ đã quên. Dƣới đây là những kiến thức mà chúng em học đƣợc.
5.1 DIALOGFLOW
5.1.1 Dialogflow
Biết đƣợc cách sử dụng và khai thác sức mạnh của Dialogflow cung cấp cho
ngƣời lập trình để tạo ra một chatbot thông minh. Biết đƣợc ý nghĩa của từng phần
trong Dialogflow nhƣ:
Agent
Intents
Contexts
Events
Training Phrases
Action and parameters
Responses
Fulfillment
Entities
Integrations
Training
History
Analytics
Prebuilt Agents
5.1.2 Các khái niệm liên quan
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 65
CHƢƠNG 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ
Hiểu đƣợc các khái niệm nhƣ API, webhook, định dạng file Json và cách trích
xuất dữ liệu từ định dạng file Json để phục vụ cho yêu cầu của đề tài.
5.2 RASPBERRY PI 3
5.2.1 Raspberry Pi 3
Biết cách cài đặt hệ điều hành cho raspberry, thiết lập IP tĩnh cho mạng Lan để
điều khiển raspberry qua VNC khi raspberry pi 3 không có kết nối mạng.
Thực hiện cài đặt, cập nhật các gói (package) cần thiết cho raspberry.
Sử dụng ngôn ngữ Python để lập trình, cài đặt các thƣ viện Python cần thiết để
lập trình phục vụ đề tài.
Biết cách sử dụng các hàm các của thƣ viện nhƣ:
GPIO.setwarnings()
GPIO.setmode()
GPIO.setup()
GPIO.PWM()
Hiểu đƣợc điện áp cấp từ Raspberry Pi 3 cũng nhƣ ý nghĩa các chân trên
Raspberry, chẳng hạn nhƣ các chân của Raspberry chỉ đọc đƣợc Input là tín hiệu
Digital, không có chân đọc Analog nhƣ Arduino. Cũng nhƣ tìm hiểu các chuẩn giao
tiếp trên Raspberry.
5.2.2 Công cụ ngrok
Biết cách sử dụng ngrok để public server, thực hiện xem xét quản lí những tác
vụ đã thực hiện trên server.
5.3 PHẦN CỨNG
5.3.1 Mạch điều khiển dimmer
Tìm hiểu nguyên lí của dimmer từ đó thực hành làm mạch mô phỏng dimmer
để điều khiển thiết bị. Từ đó, ôn lại các kiến thức về linh kiện nhƣ Triac, Mosfet.
Biết cách sử dụng phần mềm Altium Designer để vẽ mạch PBC phục vụ cho
đề tài.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 66
CHƢƠNG 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ
Biết cách hoàn thiện một mạch điện tử qua nhiều công đoạn khác nhau.
5.3.2 Động cơ Servo
Tìm hiểu nguyên lí điều khiển động cơ servo bằng PWM để từ đó thực hiện
yêu cầu điều khiển góc quay để đóng mở cửa.
5.3.3 Module Relay 2 kênh 5V
Hiểu đƣợc cách hoạt động của module Relay, tính toán đƣợc dòng cần thiết để
kích hoạt Relay. Từ đó thực hiện tác vụ điều khiển thiết bị.
5.3.4 Module cảm biến DHT11
Biết cách sử dụng module cảm biến nhiệt độ, độ ẩm DHT11 để cung cấp dữ
liệu về nhiệt độ, độ ẩm hiện tại cho đề tài.
5.4 NHẬN XÉT VÀ ĐÁNH GIÁ
Nhóm thực hiện đề tài đã hoàn thành những yêu cầu của đề tài đặt ra, đồ án
nghiên cứu có những ƣu điểm nhƣ:
Đề tài có tính thực tế cao, đặc biệt là trong những năm gần đây việc
ứng dụng các lĩnh vực liên quan đến AI, Machine Learning vào các lĩnh
vực đời sống ngày càng nhiều và đem lại hiệu quả cao.
Chi phí xây dựng hệ thống không cao, tƣơng đối dễ sử dụng và vận
hành. Qúa trình bảo trì hệ thống cũng khá đơn giản.
Giao diện chatbot dễ sử dụng, đặc biệt có thể tích hợp với các nền tảng
nhắn tin nhƣ Facebook message, Skype, Slack,... để tăng tính thiết thực,
gần gũi với ngƣời dùng.
Hệ thống điều khiển trên thời gian thực, khi có yêu cầu điều khiển của
ngƣời dùng thì ngay lập tức điều khiển các thiết bị trong ngôi nhà.
Dựa trên lịch sử chat, ngƣời dùng có thể xem xét lịch sử đóng mở các
thiết bị trong nhà.
Tuy nhiên, hệ thống cũng có những hạn chế nhƣ:
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 67
CHƢƠNG 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ
Hệ thống điều khiển thông qua internet nên yêu cầu phải có đƣờng
truyền mạng ổn định và duy trì lâu dày.
Tính bảo mật hệ thống không cao, bất cứ ai có link trò chuyện đều sẽ
trò chuyện đƣợc với chatbot.
Hệ thống sử dụng API Dialogflow của google để lập trình, nếu google
ngƣng cung cấp API này thì hệ thống không hoạt động.
Sử dụng mới ngrok sẽ cho địa chỉ url khác nhau nên mỗi lần thay đổi
cần phải cung cấp địa chỉ webhook mới trong phần fulfillment của
Dialogflow.
Độ trễ của hệ thống phụ thuộc vào tốc độ và độ ổn định của đƣờng
truyền.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 68
CHƢƠNG 6. KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN
Chƣơng 6. KẾT LUẬN VÀ HƢỚNG PHÁT
TRIỂN
6.1 KẾT LUẬN
Từ những yêu cầu đã đặt ra ở chƣơng 1, nhóm thực hiện đề tài nhận xét hệ
thống hoạt động khá
Các file đính kèm theo tài liệu này:
- do_an_ung_dung_chatbot_vao_dieu_khien_nha_thong_minh.pdf