Professional Documents
Culture Documents
---------------------------------
ĐỒ ÁN TỐT NGHIỆP
NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ TRUYỀN THÔNG
ĐỀ TÀI:
ĐỒ ÁN TỐT NGHIỆP
NGÀNH KỸ THUẬT ĐIỆN TỬ TRUYỀN THÔNG
ĐỀ TÀI:
i
- Viết báo cáo.
- Báo cáo đề tài.
III. NGÀY GIAO NHIỆM VỤ: 18/02/2019
IV. NGÀY HOÀN THÀNH NHIỆM VỤ: 30/06/2019
V. HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: ThS. Nguyễn Đình Phú
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 6 năm 2019
Xác nhận
Tuần/ngày Nội dung
GVHD
Tuần 1 Gặp GVHD để trao đổi về đề tài đồ án, tiến hành
(18/2 – 24/2) chọn đề tài
Tuần 3
Viết đề cương chi tiết, lịch trình thực hiện
(4/3 – 10/3)
Tuần 5
Tìm hiểu module Wifi ESP32
(18/3 – 24/3)
Tuần 7
Tìm hiểu hệ điều hành Android, Web Server
(1/4 – 7/4)
iii
Tuần 8
Thiết kế ứng dụng, giao diện Web
(8/4 – 14/4)
Tuần 9
Lập trình ESP32 điều khiển được thiết bị điện
(15/4 – 21/4)
Tuần 12
Tiến hành vẽ và thi công mạch phần cứng
(6/5 – 12/5)
Tuần 13
Tiến hành vẽ và thi công mạch phần cứng
(13/5 – 19/5)
Tuần 16, 17
Hoàn thiện báo cáo và mô hình
(3/6 – 16/6)
GV HƯỚNG DẪN
(Ký và ghi rõ họ và tên)
iv
LỜI CAM ĐOAN
Chúng tôi xin cam kết khóa luận tốt nghiệp này là đề tài do chính chúng tôi
nghiên cứu và thực hiện. Chúng tôi chỉ dựa trên mà không sao chép từ bất kì tài liệu
hay công trình nào đã được thực hiện trước đó. Nếu có bất kỳ vi phạm nào, chúng tôi
xin hoàn toàn chịu trách nhiệm.
v
LỜI CẢM ƠN
Chúng em xin chân thành gửi lời cảm ơn sâu sắc đến Thầy Nguyễn Đình Phú.
Trong suốt quá trình thực hiện đề tài này, Thầy luôn là người đồng hành cùng chúng
em với sự chỉ dẫn tận tình, những lời góp ý nhận xét và những kinh nghiệm quý báu
được Thầy truyền đạt lại đã tạo điều kiện thuận lợi để chúng em hoàn thành tốt đề tài.
Chúng em xin cảm ơn đến các Thầy, Cô trong khoa Điện – Điện tử đã giảng
dạy cho chúng em những kiến thức nền tảng để chúng em có tiền đề thực thiện đề tài
này.
Cảm ơn cha mẹ đã tạo điều kiện tốt nhất, là động lực mạnh mẽ để con hoàn
thành khóa luận này.
Xin chân thành cảm ơn.
vi
MỤC LỤC
vii
2.3.6. Cách thức hoạt động ..........................................................................12
ix
4.2.1. Thi công board mạch .........................................................................52
5.3.2. Điều khiển và giám sát thiết bị, cảm biến qua Web Server ..............77
5.3.3. Điều khiển và giám sát thiết bị, cảm biến qua ứng dụng Android ....79
x
Chương 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ..............................................82
6.1. KẾT LUẬN .................................................................................................82
xi
LIỆT KÊ HÌNH
Hình 2.1. Internet of things .........................................................................................5
Hình 2.2. Ứng dụng của IoT .......................................................................................6
Hình 2.3. Smart Home .................................................................................................7
Hình 2.4. IoT trong giao thông vận tải .......................................................................7
Hình 2.5. IoT trong y tế ...............................................................................................8
Hình 2.6. IoT trong nông nghiệp .................................................................................9
Hình 2.7. Smart City....................................................................................................9
Hình 2.8. Biểu tượng Wifi .........................................................................................10
Hình 2.9. Cấu trúc liên kết ngang hàng ....................................................................11
Hình 2.10. Cấu trúc liên kết dựa trên AP .................................................................12
Hình 2.11. Cách thức hoạt động của mạng Wifi .......................................................13
Hình 2.12. Cách thức giao tiếp trong mạng Wifi ......................................................13
Hình 2.13. Biểu tượng Android .................................................................................15
Hình 2.14. Một số ứng dụng Android .......................................................................18
Hình 2.15. Giao thức MQTT .....................................................................................19
Hình 2.16. Hoạt động của client ...............................................................................20
Hình 2.17. Hoạt động của Topic ...............................................................................20
Hình 2.18. Thành phần của một MQTT trong hệ thống IoT .....................................21
Hình 2.19. Một Node - RED cơ bản ..........................................................................23
Hình 2.20. Node – RED và IoT .................................................................................24
Hình 2.21. Giao diện Node – RED ............................................................................24
Hình 2.22. Module ESP32-WOOM-32 .....................................................................26
Hình 2.23. Kiến trúc của ESP32 ...............................................................................26
Hình 2.24. Sơ đồ bố trí chân của module ESP32-WOOM-32 ..................................31
Hình 2.25. Cấu trúc và địa chỉ bộ nhớ của ESP32 ...................................................32
Hình 2.26. Sơ đồ nguyên lý module ESP32-WOOM-32 ...........................................37
Hình 2.27. Sơ đồ nguyên lý thiết bị ngoại vi module ESP32-WOOM-32 .................38
Hình 2.28. Sơ đồ chân DHT11 ..................................................................................38
Hình 2.29. Xung bắt đầu DHT11 ..............................................................................39
Hình 2.30. Gửi xung phản hồi của DHT11 ...............................................................39
Hình 2.31. Gửi dữ liệu chứa bit 0, bit 1 ....................................................................40
xii
Hình 2.32. Kết thúc đọc giá trị của DHT11 ..............................................................40
Hình 3.1. Sơ đồ mô hình hệ thống .............................................................................41
Hình 3.2. Sơ đồ khối hệ thống ...................................................................................42
Hình 3.3. Ảnh thực tế board ESP32-DevKitC ..........................................................43
Hình 3.4. Sơ đồ nguyên lý board điều khiển ESP32-DevKitC ..................................44
Hình 3.5. Relay 5V-10A ............................................................................................45
Hình 3.6. Diode 1N4007, Opto PC817 và transistor C1815 ....................................46
Hình 3.7. Sơ đồ nguyên lý khối công suất ngõ ra .....................................................47
Hình 3.8. Cảm biến DHT11 ......................................................................................48
Hình 3.9. Sơ đồ kết nối cảm biến DHT11 với ESP32 ...............................................48
Hình 3.10. Module nguồn AC-DC.............................................................................49
Hình 3.11. Sơ đồ nguyên lý mạch nguồn ..................................................................50
Hình 3.12. Sơ đồ nguyên lý toàn mạch .....................................................................51
Hình 4.1. Sơ đồ bố trí linh kiện mạch điều khiển ......................................................53
Hình 4.2. Sơ đồ đi dây mạch in lớp trên ...................................................................53
Hình 4.3. Sơ đồ đi dây mạch in lớp dưới ..................................................................54
Hình 4.4. Sơ đồ 3D mạch điều khiển ........................................................................54
Hình 4.5. Mạch điều khiển sau khi lắp linh kiện.......................................................56
Hình 4.6. Ảnh hộp dựng mạch điều khiển .................................................................56
Hình 4.7. Mô hình mặt trong và mặt ngoài hệ thống ................................................57
Hình 4.8. Lưu đồ điều khiển thiết bị..........................................................................58
Hình 4.9. Lưu đồ Web Server ....................................................................................60
Hình 4.10. Biểu tượng VSCode .................................................................................61
Hình 4.11. Giao diện trang Web tải VSCode ............................................................62
Hình 4.12. Giao diện khởi động VSCode ..................................................................63
Hình 4.13. Cài đặt PlatformIO IDE ..........................................................................63
Hình 4.14. Tạo dự án lập trình cho board ESP32-DevKitC .....................................64
Hình 4.15. Giao diện lập trình ..................................................................................64
Hình 4.16. Đăng ký tài khoản Cloud MQTT .............................................................65
Hình 4.17. Tạo một dự án mới trong Cloud MQTT ..................................................66
Hình 4.18. Thông tin cần thiết cho dự án trong Cloud MQTT .................................66
Hình 4.19. Một số dự án sau khi tạo .........................................................................66
xiii
Hình 4.20. Thông tin chi tiết cho một dự án .............................................................67
Hình 4.21. Nơi giám sát và điều khiển dữ liệu..........................................................67
Hình 4.22. Khởi động Node – RED...........................................................................68
Hình 4.23. Màn hình giao diện thiết kế Web ............................................................69
Hình 4.24. Tạo kết nối với Server .............................................................................69
Hình 4.25. Cấu hình địa chỉ kết nối ..........................................................................69
Hình 4.26. Một nút điều khiển cơ bản .......................................................................70
Hình 4.27. Cấu hình cho một nút ..............................................................................70
Hình 4.28. Tiến hành deploy giao diện .....................................................................71
Hình 4.29. Giao diện nút điều khiển .........................................................................71
Hình 4.30. Ứng dụng MQTT Dashboard ..................................................................71
Hình 4.31. Bảng thuộc tính MQTT Dashboard ........................................................72
Hình 4.32. Tạo một Broker .......................................................................................73
Hình 4.33. Thiết kế và chỉnh sửa giao diện ứng dụng ..............................................73
Hình 4.34. Quy trình thao tác ...................................................................................74
Hình 5.1. Mô hình hệ thống khi được cấp nguồn 220VAC .......................................76
Hình 5.2. Các thiết bị khi chưa được bật trên màn hình điều khiển .........................77
Hình 5.3. Các thiết bị được bật trên màn hình điều khiển ........................................77
Hình 5.4. Nhiệt độ và độ ẩm bộ điều khiển hiển thị trên giao diện Web ..................78
Hình 5.5. Trạng thái thiết bị được giám sát trên Cloud MQTT ................................78
Hình 5.6. Giao diện ứng dụng Android khi các thiết bị tắt, bật và giá trị cảm biến 79
Hình 5.7. Mô hình khi bật các thiết bị ......................................................................79
xiv
LIỆT KÊ BẢNG
Bảng 2.1: Thống kê các thiết bị điện trong phòng học và công suất tiêu thụ.............4
Bảng 2.2: Các phiên bản module của ESP32 ...........................................................25
Bảng 2.3: Thông số kỹ thuật cơ bản của module ESP32-WOOM-32 .......................27
Bảng 2.4: Định nghĩa các chân module ESP32-WOOM-32 .....................................28
Bảng 2.5: Các thông số đề nghị cho module ESP32-WOOM-32 .............................36
Bảng 3.1: Thông số kỹ thuật Relay ...........................................................................45
Bảng 3.2: Thông số kỹ thuật module cảm biến DHT11 ............................................48
Bảng 3.3: Dòng điện của các linh kiện sử dụng trong mạch điều khiển ..................49
Bảng 4.1: Danh sách linh kiện sử dụng ....................................................................55
Bảng 4.2: Thông tin server MQTT ............................................................................67
Bảng 5.1: Số liệu thực nghiệm ..................................................................................80
xv
TÓM TẮT
Công nghệ đã trở thành một phần không thể thiếu trong cuộc sống hiện đại. IoT,
hiện đã và đang phát triển mạnh mẽ trong những năm gần đây, nó đơn giản là một hệ
thống bao gồm tất cả mọi thứ xung quanh chúng ta được kết nối với nhau thông qua
Internet. Xu hướng này làm cho mọi thứ trở nên dễ dàng hơn bao giờ hết, khi mà sự
tương tác giữa con người và thiết bị được tối ưu hóa nhất có thể. Điều khiển, giám
sát thiết bị từ xa là một trong những ứng dụng phổ biến nhất của xu hướng này.
Với mục đích tiếp cận xu hướng trên và mong muốn nắm bắt những công nghệ
mới nên nhóm chúng tôi quyết định thực hiện đề tài “Thiết kế và thi công mô hình
điều khiển thiết bị điện”. Đề tài này sẽ là một hệ thống hoàn thiện bao gồm phần
cứng phần mềm, và có thể đáp ứng được cho các phòng học, phòng thí nghiệm, hộ
gia đình, …
Nội dung chính của đề tài
• Sử dụng board ESP32-DevKitC làm mạch điều khiển trung tâm.
• Điều khiển thiết bị trên ứng dụng Android và giao diện Web thông qua Internet.
• Giám sát trạng thái hoạt động của thiết bị qua Web Server.
• Lưu trữ trạng thái điều khiển của thiết bị.
xvi
CHƯƠNG 1. TỔNG QUAN
Qua khảo sát thực tế tại một số phòng học tại trường, nhóm sẽ thiết kế hệ thống
điều khiển cho một phòng học có 12 thiết bị bao gồm 4 đèn, 4 quạt, 3 loa và 1 tivi.
1.3. NỘI DUNG NGHIÊN CỨU
• Nội dung 1:
Tìm hiểu công nghệ Wifi. Các đặc điểm của công nghệ, cách thức giao tiếp và
chế độ hoạt động.
• Nội dung 2:
Tìm hiểu hệ điều hành Android.
• Nội dung 3:
Tìm hiểu cách gửi và nhận dữ liệu thông qua máy chủ Server MQTT.
• Nội dung 4:
Tìm hiểu module ESP32, thiết kế hệ thống giao tiếp.
• Nội dung 5:
Tính toán, thiết kế và thi công mạch phần cứng, phần mềm.
• Nội dung 6:
Thiết kế mô hình, lắp ráp các khối điều khiển.
• Nội dung 7:
Chạy thử, kiểm tra, cân chỉnh tối ưu hệ thống.
• Nội dung 8:
Đánh giá kết quả thực hiện.
• Nội dung 9:
Viết báo cáo luận văn tốt nghiệp.
• Nội dung 10:
Bảo vệ luận văn.
1.4. GIỚI HẠN
Mô hình giới hạn cho các thiết bị điện trong phòng học như: đèn, quạt, tivi, loa
hiển thị trạng thái hoạt động thông qua đèn báo trên mô hình.
Hệ thống điều khiển được 4 thiết bị điện 220VAC cho mỗi module.
Giao tiếp giữa ESP32, đồng bộ điều khiển thiết bị với ứng dụng Android và với
Web Server.
Giám sát được nhiệt độ và độ ẩm của bộ điều khiển.
1.5. BỐ CỤC
• Chương 1: Tổng Quan
Trình bày tổng quan về lý do chọn đề tài, mục tiêu, nội dung nghiên cứu, các
giới hạn và bố cục đồ án.
• Chương 2: Cơ Sở Lý Thuyết
Giới thiệu các lý thuyết liên quan, các linh kiện, thiết bị sử dụng và cách thức
giao tiếp với nhau.
• Chương 3: Thiết Kế Và Tính Toán
Thiết kế hệ thống, sơ đồ khối, sơ đồ nguyên lý chức năng từng khối và thực hiện
tính toán.
• Chương 4: Thi Công Hệ Thống
Thi công board mạch, thiết kế lưu đồ, giải thuật, chương trình. Thi công mô
hình hoàn chỉnh.
• Chương 5: Kết Quả, Nhận Xét Và Đánh Giá
Trình bày những kết quả đạt được sau thời gian thực hiện, một số hình ảnh từ
hệ thống. Đồng thời đưa ra nhận xét, đánh giá cho toàn bộ hệ thống.
• Chương 6: Kết Luận Và Hướng Phát Triển
Đưa ra những kết luận sau khi hoàn thiện sản phẩm, các hướng phát triển nâng
cấp hệ thống trong tương lai.
Chương 2. CƠ SỞ LÝ THUYẾT
2 TV LCD 32 inches 70
4 Loa 60
5 Quạt trần 75
Từ bảng trên, ta thấy mức độ tiêu thụ điện năng của từng thiết bị được sử dụng.
Nếu không sử dụng một cách phù hợp thì không chỉ gây lãng phí điện năng mà còn
làm giảm tuổi thọ của thiết bị. Với số lượng lớn phòng học ở các trường Đại học thì
mức độ thiệt hại này càng lớn. Do đó, chúng ta cần có một hệ thống điều khiển thông
minh và giám sát chặt chẽ các thiết bị điện nhằm góp phần nâng cao hiệu quả sử dụng,
tiết kiệm điện năng. Và đề tài này sẽ giải quyết vấn đề đó.
Về cơ bản, IoT là một hệ thống mạng lưới mà trong đó tất cả các thiết bị, đối
tượng được kết nối Internet thông qua thiết bị mạng (network devices) hoặc các bộ
định tuyến (routers). IoT cho phép các đối tượng được điều khiển từ xa dựa trên hệ
thống mạng hiện tại. Công nghệ tiên tiến này giúp giảm công sức vận hành của con
người bằng cách tự động hóa việc điều khiển các thiết bị.
• Thiết bị
Mỗi thiết bị sẽ bao gồm một hoặc nhiều cảm biến để phát hiện các thông số của
ứng dụng và gửi chúng đến Platform.
• IoT – Platform
Nền tảng này là một phần mềm được lưu trữ trực tuyến còn được gọi là điện
toán đám mây, các thiết bị được kết nối với nhau thông qua nó.
Nền tảng này thu thập dữ liệu từ thiết bị, toàn bộ dữ liệu được phân tích, xử lý,
phát hiện nếu có lỗi phát sinh trong quá trình hệ thống vận hành.
• Kết nối Internet
Để giao tiếp được trong IoT, kết nối Internet của các thiết bị là một điều bắt
buộc. Wifi là một trong những phương thức kết nối Internet phổ biến.
• Ứng dụng
Ứng dụng là giao diện để người dùng điều khiển.
• IEEE 802.11g
Giới thiệu năm 2003.
Sóng vô tuyến với tần số 2.4GHz.
Kết hợp tính năng của hai tiêu chuẩn a và b.
Tốc độ 54Mbps.
Tương thích với chuẩn 802.11b.
2.3.3. Thành phần của mạng Wifi
• Access Point (AP)
AP là bộ thu phát không dây LAN (Local – Area Network), hoặc là trạm cơ sở
có thể kết nối đồng thời một hoặc nhiều thiết bị không dây với Internet.
• Wifi Card
Cho phép chấp nhận tín hiệu không dây và thông tin chuyển tiếp.
• Safeguards
Khả năng bảo vệ: tường lửa và phần mềm chống virus giúp giữ an toàn thông
tin cho người dùng.
2.3.4. Cấu trúc liên kết
• Peer to peer
Là cấu trúc liên kết ngang hàng, không bắt buộc AP, các thiết bị bên trong có
thể giao tiếp trực tiếp với nhau.
Phù hợp để thiết lập mạng không dây một cách nhanh chóng và dễ dàng.
• Infrastructure Mode
Là cấu trúc liên kết dựa trên AP, liên lạc với nhau qua địa điểm truy cập (Access
Point). Bất kỳ thông tin truy cập nào đều phải thông qua AP.
Nếu một trạm di động như máy tính hoặc điện thoại muốn giao tiếp với một
trạm di động khác đầu tiên cần phải gửi thông tin đến AP, sau đó AP sẽ gửi ngược lại
trạm di động đó.
2.3.5. Hotspot
Hotspot là một khu vực dễ dàng truy cập mạng không dây.
Hotspot được trang bị kết nối Internet với băng thông rộng và có một hoặc nhiều
AP cho phép người dùng truy cập Internet không dây.
Phiên bản Beta đầu tiên của bộ công cụ phát triển phần mềm Android SDK được
Google phát hành năm 2007 và Android 1.0 ra đời năm 2008.
2.4.2. Lịch sử
Từ khi phát hành cho đến nay, Android đã trải qua nhiều phiên bản khác nhau,
có nhiều sự thay đổi, cải tiến để đáp ứng nhu cầu của người sử dụng.
Các phiên bản Android: Cupcake (1.5), Donut (1.6), Eclair (2.0), Froyo (2.2),
Gingerbread (2.3), Honeycomb (3.0), Ice Cream Sandwich (4.0) Jelly Bean (4.1 –
4.3.1), KitKat (4.4 – 4.4.4), Lollipop (5.0 – 5.1.1), Marshmallow (6.0 – 6.0.1), Nougat
(7.0 – 7.1), Oreo (8.0 – 8.1), Pie (9.0) và phiên bản mới nhất là Q (10.0).
2.4.3. Tính năng
Giao diện người dùng đẹp, trực quan.
Kết nối Bluetooth, Wifi, LTE, NFC, …
Hổ trợ truyền thông: MP3, WAV, JPEG, PNG, GIF, …
Trình duyệt Web: dựa trên công cụ WebKit nguồn mở kết hợp JavaScript V8.
Cảm ứng đa điểm.
Đa ngôn ngữ.
Đa tác vụ: người dùng có thể thực hiện đồng thời nhiều nhiệm vụ khác nhau
chạy song song cùng lúc.
GCM: Google Cloud Messaging là dịch vụ cho phép các nhà phát triển gửi tin
nhắn đến người dùng của họ mà không cần giải pháp đồng bộ.
Wifi Direct: công nghệ cho phép khám phá các ứng dụng và ghép nối trực tiếp
với nhau.
• Libraries
Thư viện nơi chứa tất cả các mã nguồn cung cấp những tính năng chính của hệ
điều hành Android dựa trên thư viện Java dành riêng để phát triển Android. Một số
thư viện như:
- android.app: cung cấp quyền truy cập vào mô hình ứng dụng, là nền tảng của
tất cả ứng dụng Android.
- android.database: được sử dụng để truy cập dữ liệu.
- android.opengl: giao diện OpenGL, 3D.
- android.view: xây dựng các khối cơ bản trên giao diện người dùng.
- android.widget: tập hợp tất cả thành phần giao diện cơ bản được xây dựng sẵn
như nút nhấn, công tắc,…
- android.webkit: cho phép khả năng duyệt Web được tích hợp vào các ứng
dụng.
• Android runtime
Là tầng cùng với tầng thư viện cung cấp một tập các thư viện cốt lõi để lập trình
viên phát triển ứng dụng bằng ngôn ngữ Java. Đồng thời cung cấp một máy ảo có tên
là Dalvik, một loại máy ảo Java được thiết kế tối ưu hóa cho Android, nó sử dụng
tính năng cốt lõi của Linux như quản lý bộ nhớ và đa luồng.
• Android framework
Là tầng thể hiện các tính năng cao cấp của Android (kết nối, thông báo, truy
xuất dữ liệu). Các nhà phát triển được phép sử dụng các dịch vụ này trong ứng dụng
của họ. Bao gồm các dịch vụ chính:
- Quản lý hoạt động: kiểm soát tất cả các hoạt động của ứng dụng.
- Cung cấp nội dung: cho phép ứng dụng chia sẽ dữ liệu với các ứng dụng khác.
- Quản lý tài nguyên: cung cấp quyền truy cập vào các tài nguyên như cài đặt
màu, bố cục giao diện người dùng.
- Quản lý thông báo: cho phép các ứng dụng hiển thị cảnh báo và thông báo cho
người dùng.
• Application
Tất cả các ứng dụng Android được tìm thấy ở lớp trên cùng và ứng dụng cũng
được viết trên chính tầng này. Ví dụ như ứng dụng danh bạ, tin nhắn, trình duyệt, …
2.4.5. Thành phần của ứng dụng Android
Thành phần của một ứng dụng Android là tập hợp các khối cần thiết của một
ứng dụng Android, bao gồm 4 thành phần chính:
• Hoạt động (Activities)
Đại diện cho một màn hình với giao diện người dùng, thực hiện các hành động
trên màn hình. Ví dụ như ứng dụng Danh bạ có một hoạt động hiển thị danh sách tên,
số điện thoại người liên lạc, đồng thời có một hoạt động khác là gọi hoặc nhắn tin.
Nếu một ứng dụng có nhiều hoạt động thì mỗi hoạt động phải được đánh dấu để biết
khi nào thì hoạt động nào được thực hiện.
• Dịch vụ (Services)
Là hành động chạy song song các ứng dụng. Ví dụ một dịch vụ có thể phát nhạc
trong khi người dùng đang ở trong một ứng dụng khác, không chặn tương tác của
người dùng với hoạt động đó.
• Máy thu phát sóng (Broadcast Receivers)
Bộ thu phát sóng có nhiệm vụ trả lời tin nhắn từ các ứng dụng khác hoặc từ hệ
thống. Ví dụ các ứng dụng có thể phát sóng để cho hệ thống biết dữ liệu đã được tải
xuống thiết bị hay chưa.
• Các nhà cung cấp nội dung (Content Providers)
Cung cấp dữ liệu từ ứng dụng này sang ứng dụng khác theo yêu cầu, dữ liệu có
thể được lưu trữ trong hệ thống hoặc cơ sở dữ liệu hoặc ở một nơi khác.
• Nhược điểm
Các thiết bị tiêu tốn nhiều năng lượng hơn khi sử dụng hệ điều hành này do chạy
song song nhiều chương trình nền.
Nhiều ứng dụng chứa virus và phần mềm độc hại.
Thông tin người dùng có thể bị đánh cắp bởi một vài ứng dụng giả mạo.
2.5.2. Lịch sử
MQTT được tạo ra bởi tiến sĩ Andy Stanford-Clark của IBM và Arlen Nipper
của Arcom vào năm 1999 như là một cách hiệu quả, đáng tin cậy để kết nối các thiết
bị được sử dụng trong ngành dầu khí với các máy chủ doanh nghiệp từ xa nhằm điều
khiển giám sát và thu thập dữ liệu từ các cảm biến.
• Server (Broker)
Server trong MQTT gọi là một Broker được xem là trung tâm, là điểm giao của
các kết nối đến từ client. Nhiệm vụ chính của Broker là nhận đăng ký từ các client về
các chủ đề (topic), nhận tin nhắn (message), sắp xếp các message theo hàng đợi rồi
chuyển chúng đến một địa chỉ dựa trên việc đăng ký của client. Nhiệm vụ phụ của
Broker là có thể đảm nhận thêm một vài tính năng liên quan đến truyền thông như:
bảo mật message, lưu trữ message.
• Topic
Là nơi mà một client muốn đặt hoặc truy xuất message. Cụ thể khi một message
được publish vào một Topic thì những subscriber của Topic đó sẽ nhận được message
này.
• Message
Là đơn vị trao đổi dữ liệu mà thiết bị nhận được khi Subscribing (đăng ký) một
Topic hoặc gửi đi khi Publishing một Topic.
• QoS0
Đảm bảo mức thấp nhất, dữ liệu được gửi đi đúng một lần và sẽ không được
kiểm tra đã đến các Broker hay chưa.
• QoS1
Đảm bảo đã đến nơi nhận, ít nhất một lần được xác nhận.
• QoS2
Mức đảm bảo cao nhất, Broker đảm bảo các dữ liệu có QoS2 sẽ đến nơi nhận
chỉ đúng một lần duy nhất, không bị trùng lặp, không thất lạc dữ liệu, đồng thời tốn
băng thông hơn hai cách trên.
2.5.5. Broker trong IoT
Một trong những thành phần của hệ thống IoT là Platform (điện toán đám mây),
nó chịu trách nhiệm kết nối các thiết bị với nhau, cho phép người dùng kiểm soát và
giám sát các thiết bị của mình. Và Broker cũng chính là Platform, nó nằm trong hệ
thống IoT.
Có hai cách tạo ra một Broker:
• Tự tạo Broker MQTT trên máy tính, raspberry, server, …
• Sử dụng các dịch vụ MQTT Broker có sẳn như CloudMQTT.
Hình 2.18. Thành phần của một MQTT trong hệ thống IoT
2.5.6. Ưu điểm
Đây là một giao thức nhẹ. Do đó, dễ dàng thực hiện trong phần mềm và nhanh
chóng trong việc truyền nhận dữ liệu, ít bị ảnh hưởng bởi tốc độ mạng.
Giao thức dựa trên kỹ thuật tin nhắn, vì vậy tốc độ khá nhanh.
Gói dữ liệu truyền được tối ưu hóa.
Sử dụng nguồn điện năng thấp, tiếp kiệm năng lượng cho thiết bị được kết nối.
Thời gian thực, đây là điều đặc biệt quan trọng trong các dự án IoT.
2.5.7. Bảo mật
MQTT được thiết kế một cách nhẹ và linh hoạt nhất có thể. Do đó nó chỉ có một
lớp bảo mật ở tầng ứng dụng: bảo mật xác thực (xác thực các client được quyền truy
cập đến Broker). Tuy nhiên, MQTT vẫn có thể được cài đặt kết hợp với các giải pháp
bảo mật đa tầng khác như kết hợp với VNP ở tầng mạng học hoặc SSLL/TLS ở tầng
transport.
MQTT được thiết kế nhằm phục vụ truyền thông machine-to-machine nhưng
trên thực tế chứng minh nó lại hoạt động một cách linh hoạt hơn mong đợi. Nó hoàn
toàn có thể áp dụng cho các kịch bản truyền thông khác nhau: machine to machine,
app to app. Chỉ cần có một Broker phù hợp và MQTT Client được cài đặt đúng cách,
các thiết bị xây dựng trên nhiều nền tảng khác nhau có thể giao tiếp được với nhau
một cách dễ dàng.
2.6. GIỚI THIỆU NODE – RED
2.6.1. Giới thiệu
Node – RED là một công cụ lập trình mạnh mẽ kết nối các thiết bị phần cứng,
API (Application Programming Interface) và dịch vụ trực tuyến như một phần của
ứng dụng IoT.
Cung cấp một trình soạn thảo trực quan cho phép nhà phát triển có thể cấu hình
tùy chỉnh các chức năng bằng cách sử dụng các node (nút) từ bất kỳ trình duyệt nào
trên máy tính.
Mỗi ứng dụng Node – RED bao gồm các node được liên kết với nhau dưới dạng
input, output và operation.
Thành phần
Wifi Giao thức 802.11 b/g/n (802.11n lên đến 150 Mbps)
AFH
Phần cứng Giao tiếp module Thẻ SD, UART, SPI, SDIO, I2C, Led PWM,
Motor PWM, I2S
IR, Counter, GPIO, cảm biến cảm ứng,
ADC, DAC
GND 15 P Ground
NC 32 - -
GND 38 P Ground
• Tổ chức bộ nhớ
2.7.1.4.4. Wifi
ESP32 thực hiện giao thức TCP/IP và Wifi 802.11 b/g/n, quản lý năng lượng
được xử lý để giảm thiểu thời gian thực hiện các tác vụ. Các thư viện của Wifi cung
cấp để định cấu hình và giám sát chức năng kết nối mạng ESP32, nó cấu hình cho:
- Chế độ trạm (hay chế độ STA hoặc chế độ Wifi client): ESP32 kết nối với một
điểm truy cập.
- Chế độ AP (hay chế độ Soft-AP hoặc chế độ điểm truy cập): các trạm kết nối
với ESP32.
- Chế độ kết hợp AP-STA (ESP32 đồng thời là điểm truy cập và là trạm được
kết nối với các điểm truy cập khác).
- Các chế độ bảo mật khác nhau cho các chế độ trên (WPA, WPA2, WEP, …).
- Quét các điểm truy cập (chủ động và thụ động).
- Chế độ giám sát các gói Wifi của tiêu chuẩn IEEE802.11.
2.7.1.4.5. Bluetooth
ESP32 tích hợp bộ điều khiển liên kết Bluetooth, thực hiện các giao thức như
điều chế, giải điều chế, xử lý gói, xử lý luồng bit, …
2.7.1.4.6. RTC và quản lý năng lượng thấp
Với việc sử dụng công nghệ quản lý năng lượng tiên tiến, ESP32 có thể chuyển
đổi giữa các chế độ năng lượng khác nhau. Bao gồm các chế độ:
• Chế độ hoạt động
Chip được bật, có thể truyền, nhận.
• Chế độ ngủ modem
CPU được hoạt động và xung đồng hồ có thể cấu hình. Wifi/Bluetooth bị tắt.
• Chế độ ngủ light
CPU tạm dừng hoạt động. Bộ nhớ RTC và các thiết bị ngoại vi RTC cũng như
bộ xử lý đồng thời ULP vẫn chạy. Bất kỳ sự kiện đánh thức nào sẽ đánh thức chip
hoạt động.
• Chế độ ngủ sâu
Chỉ bật bộ nhớ RTC và thiết bị ngoại vi RTC. Dữ liệu kết nối Wifi và Bluetooth
được lưu trữ trong bộ nhớ RTC.
• Chế độ ngủ đông
Bộ tạo dao động nội 8MHz và bộ đồng xử lý ULP bị tắt. Bộ nhớ RTC khôi phục
bị tắt. Chỉ có bộ đếm thời gian RTC và một số RTC GPIO nhất định hoạt động.
2.7.1.5. Thiết bị ngoại vi và cảm biến của ESP32
• GPIO (General Purpose Input/Output Interface)
ESP32 với số lượng lớn chân GPIO tùy thuộc vào từng phiên bản module, mỗi
chân được tích hợp nhiều chức năng khác nhau bằng cách lập trình thanh ghi. Có một
số loại chân GPIO như: chỉ đọc dữ liệu số (0 hoặc 1), cho phép analog, cho phép cảm
ứng điện dung, …
Hầu hết các chân GPIO số (digital) có thể được cấu hình điện trở kéo lên (pull-
up) hoặc kéo xuống (pull-down) hoặc trở kháng cao. Mỗi chân có thể có nhiều chức
năng khác nhau như SDIO, UART, SPI, …
DHT11 chỉ sử dụng 1 dây để giao tiếp. Quá trình giao tiếp được chia làm 3
bước: đầu tiên là gửi yêu cầu đến cảm biến, kế đến cảm biến sẽ gửi xung phản hồi và
sau đó nó bắt đầu gửi dữ liệu tổng cộng 40bit đến vi điều khiển.
• Bắt đầu xung
• Dữ liệu
KHỐI
NGUỒN
Ứng dụng
Web Server
Android
Model SRD-05VDC
Số chân 5
Thiết kế
Sử dụng transistor đóng ngắt loại NPN C1815, đồng thời ở giữa hai đầu cuộn
dây mỗi Relay gắn thêm 1 diode loại 1N4007 để tránh điện áp ngược dòng (tối đa
1000V).
Ngoài ra, để đảm bảo an toàn, sử dụng Opto PC817 (cách ly quang). Cấu tạo
bao gồm 1 bộ phát quang (diode phát quang) và 1 cảm biến quang (photo transistor),
mục đích để cách ly giữa mạch điều khiển điện áp thấp với ngõ ra công suất có điện
áp cao. Khi có sự cố như cháy, chập mạch, ... ở tầng công suất cũng không ảnh hưởng
đến tầng điều khiển.
Chọn R1 = 390Ω
Điện trở R2 cho transistor Q1:
- Dòng điện tối thiểu qua cuộn dây:
Ucuộn dây 5V
ICUỘN DÂY = = ≈ 70 mA (3.2)
Rcuộn dây 70
- Transistor Q:
IC = ICUỘN DÂY = 70 mA
Chọn Hfe = 60
Ic 70mA
IB = = = 1.17 mA (3.3)
Hfe 60
V−0.7 5−0.7
R2 = = ≈ 3.7KΩ (3.4)
IB 1.17
Chọn R2 = 3.9KΩ
Thiết kế
Cảm biến DHT11 gồm 4 chân được kết nối như sau:
- Chân VCC được nối với nguồn 5VDC.
- Chân GND nối với chân GND của nguồn.
- Chân DATA nối với chân GPIO của vi điều khiển (ESP32) qua một điện trở
kéo lên nguồn.
STT Tên linh kiện Số lượng Dòng tiêu thụ Tổng dòng
(mA) điện (A)
3 Relay 4 80 0.32
Từ bảng trên tổng dòng tiêu thụ cho toàn bộ mạch điều khiển là 0.49A vì vậy
nhóm sử dụng module nguồn AC-DC 5V-0.6A là hoàn toàn đủ để đáp ứng cho toàn
mạch điều khiển.
Thiết kế
• Sơ đồ mạch in
Sơ đồ đi dây mạch in lớp trên:
• Sơ đồ 3D
1 Board ESP32-DevKitC 5V 1
4 Opto PC817 5V 4
5 Diode 1N4007 1A 4
6 Transistor C1815 5V 4
7 Relay 5V-10A 4
11 Điện trở 5Ω 1
12 Tụ 10uF 1
14 Header 2 - 2
15 Header 8 - 1
Hình 4.5. Mạch điều khiển sau khi lắp linh kiện
Bộ điều khiển trung tâm được đóng gói trong một hộp nhỏ gọn. Hộp này hoàn
toàn cách ly với điện áp 220VAC điều khiển cho ngõ ra công suất. Do đó, đảm bảo
tính an toàn trong quá trình sử dụng.
4.3.2. Thi công mô hình
Mô hình là một hộp nhựa có đèn báo nguồn 220VAC và đèn báo trạng thái hoạt
động của từng thiết bị, đồng thời có phích cắm để nối với các thiết bị điện. Hộp điều
khiển được đặt gọn trong mô hình này.
Bắt đầu
Kết nối S
thành công
• Giải thích
Mạch điều khiển thực hiện được trong 3 trường hợp:
Khi người dùng tác động vào giao diện trên ứng dụng Android, thì thiết bị tương
ứng được bật tắt, đồng thời sẽ gửi trạng thái của thiết bị vừa được tác động lên Server.
Khi người dùng tác động vào giao diện Web, thì ESP sẽ nhận tín hiệu từ Web,
thiết bị tương ứng được bật tắt, đồng thời sẽ gửi trạng thái của thiết bị vừa được tác
động qua Server.
Khi người dùng gửi lệnh từ Web Server, để điều khiển được thiết bị thì ESP sẽ
nhận tín hiệu từ Web Server, thiết bị tương ứng sẽ được bật tắt và trạng thái điều
khiển cũng được lưu trữ lại.
ESP32 sẽ tiến hành kết nối Internet (Wifi), và thiết lập kết nối với Server. Đợi
khi kết nối thành công. Nếu có trao đổi dữ liệu với Server (người dùng tác động vào
giao diện ứng dụng Android hoặc có tín hiệu từ Server hoặc giao diện Web gửi
xuống), thì thiết bị sẽ được điều khiển theo yêu cầu người dùng. Ở bất kỳ trường hợp
điều khiển nào thì trạng thái điều khiển của thiết bị cũng đều được lưu lại trên Web
Server.
4.4.1.2. Lưu đồ giải thuật Web Server
• Lưu đồ
Bắt đầu
Hoạt động S
truyền nhận
dữ liệu?
Kết thúc
• Giải thích
Người dùng truy cập vào Web Server sau khi hệ thống đã được cấu hình, và kết
nối thành công với Server. Hệ thống sẽ liên tục gửi yêu cầu lên Server để xem có hoạt
động truyền nhận dữ liệu hay không. Nếu có thì dữ liệu sẽ được Publish vào Broker,
đồng thời trạng thái của thiết bị được lưu trữ lại để có thể giám sát được.
• Ưu điểm
Tích hợp nhiều ngôn ngữ lập trình.
Mở file nhanh, tìm kiếm nhanh, tiện lợi.
Hổ trợ làm việc trên nhiều file cùng một lúc.
Giao diện trực quan, đẹp mắt.
Hệ thống quản lý mã nguồn với Git.
Công cụ gỡ lỗi mạnh mẽ.
Tự động nhận dạng ngôn ngữ lập trình từ các file.
Nhẹ, có khả năng mở rộng.
Gợi ý code thông minh.
Chạy trên bất kì hệ điều hành nào.
Sức mạnh của VSCode nằm ở chổ có nhiều tiện ích miễn phí trong mục mở
rộng ứng dụng, trong đó có tiện ích mở rộng để lập trình cho vi điều khiển, module,
board phát triển.
• Cài đặt phần mềm
- Bước 1: Truy cập địa chỉ: https://code.visualstudio.com/ tải phiên bản phù hợp
với hệ điều hành của máy tính.
- Bước 2: Sau khi hoàn tất cài đặt, tiến hành khởi động phần mềm.
- Bước 4: Tạo một dự án mới từ PlatformIO để lập trình cho board ESP32-
DevKitC.
Hình 4.18. Thông tin cần thiết cho dự án trong Cloud MQTT
Server m.12.cloudmqtt.com
User njiexcgi
Password t42k_aJXkDGY
Port 19950
• Ưu điểm
Đồng bộ việc điều khiển thiết bị, Node – RED và Cloud MQTT.
Tạo và điều chỉnh giao diện điều khiển trực quan, thẩm mỹ.
Tương thích với nhiều board mạch có điều khiển Internet.
• Thuộc tính
- Button: gửi thông tin dữ liệu.
- Multiselect: cung cấp một lựa chọn các message đã được lưu trước đó.
- Toggle: chuyển trạng thái của topic, như bật tắt thiết bị.
- Text: gửi và nhận bất kỳ loại chuỗi nào.
- Progress: gửi giá trị trong phạm vi cố định và hiển thị giá trị nhận được.
- Date and Time: lưu lại ngày và giờ gần nhất khi điều khiển thiết bị.
- Color: lựa chọn màu sắc cho giao diện từ bảng màu RGB.
- Line chart: hiển thị biểu đồ từ dữ liệu nhận được.
Thiết kế
- Bước 1: Từ màn hình ứng dụng tạo một Broker (server) với thông số.
Cấp nguồn
Điều khiển
thiết bị
5.3.2. Điều khiển và giám sát thiết bị, cảm biến qua Web Server
• Điều khiển
Giao diện màn hình điều khiển khi tất cả thiết bị tắt:
Hình 5.2. Các thiết bị khi chưa được bật trên màn hình điều khiển
Giao diện màn hình điều khiển khi tất cả thiết bị được bật:
Hình 5.3. Các thiết bị được bật trên màn hình điều khiển
• Giám sát
Hình 5.4. Nhiệt độ và độ ẩm bộ điều khiển hiển thị trên giao diện Web
Hình 5.5. Trạng thái thiết bị được giám sát trên Cloud MQTT
5.3.3. Điều khiển và giám sát thiết bị, cảm biến qua ứng dụng Android
Giao diện màn hình điều khiển khi thiết bị tắt, khi được bật và giá trị của nhiệt
độ, độ ẩm.
Hình 5.6. Giao diện ứng dụng Android khi các thiết bị tắt, bật và giá trị cảm biến
Công việc Số lần thao Số lần thành Thời gian đáp Đánh giá
tác công ứng
Điều khiển thiết bị 50 48 2 – 3 giây Đạt
qua ứng dụng
Qua những số liệu được thống kê ở bảng trên, nhóm đánh giá hệ thống về cơ
bản đã đáp ứng được mục tiêu đặt ra. Hệ thống hoạt động ổn định sau nhiều lần chạy,
kiểm tra thử trong nhiều trường hợp. Mô hình nhỏ gọn, thẩm mỹ, nhưng vẫn đảm bảo
tính an toàn cao, dễ dàng lắp đặt và sử dụng. Nhưng để đưa hệ thống này áp dụng vào
thực tế thì nhóm cần phải hoàn thiện một số phần như sau: tăng tốc độ điều khiển
cũng như phản hồi, tối ưu hóa mô hình, thêm một số chức năng như: giám sát nơi
điều khiển, cảnh báo chống trộm, báo cháy, …
PHỤ LỤC
SOURCE CODE
Chương trình điều khiển
Hàm main
#include <Arduino.h>
#include "InfoWifiMQTT.h"
#include "configDHT.h"
#include "configHardware.h"
#include "configMQTT.h"
void setup()
{
SetupHardware();
SetupMQTT();
SetupDHT();
}
void loop()
{
ClientLoop();
// publish a message roughly every second.
if (millis() - lastMillis > 10000)
{
lastMillis = millis();
MQTTPublish(TOPIC_PUB_TEMP,String(temp));
MQTTPublish(TOPIC_PUB_HUMI,String(humi));
}
}
File Header
//Cấu hình thông tin thiết lập Server:
#include <Arduino.h>
#include <Arduino.h>
#include "InfoWifiMQTT.h"
#include "configHardware.h"
#include <WiFi.h>
#include <MQTT.h>
#include <Arduino.h>
#define DEN1 16
#define DEN2 4
#define DEN3 0
#define DEN4 2
#define ON HIGH
#define OFF LOW
void SetupHardware();
void TurnOn(uint8_t light);
void TurnOff(uint8_t light);
#include <Arduino.h>
#include "DHT.h"
#define DHTPIN 15
#define DHTTYPE DHT11
void SetupDHT();
float ReadHumi();
float ReadTemp();
#include <configMQTT.h>
WiFiClient net;
MQTTClient client;
if(WiFi.status() == WL_CONNECTED){
Serial.println(String("Connected ") + String(NameWifi));
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 86
PHỤ LỤC
}
if(time >=10){
return;
}
}
}
void Connect()
{
Serial.print("checking wifi...");
while (WiFi.status() != WL_CONNECTED)
{
CheckWifi(NAME_WIFI_1,PASS_WIFI_1);
CheckWifi(NAME_WIFI_2,PASS_WIFI_2);
CheckWifi(NAME_WIFI_3,PASS_WIFI_3);
}
Serial.print("\nconnecting...");
while (!client.connect(CLIENT_ID, USER_NAME, PASS_MQTT))
{
Serial.print(".");
delay(1000);
}
Serial.println("\nconnected!");
}
void PublishTopic()
{
client.publish(TOPIC_PUB_LIGHT_1,TOPIC_PUB_STATUS_OFF);
client.publish(TOPIC_PUB_LIGHT_2,TOPIC_PUB_STATUS_OFF);
client.publish(TOPIC_PUB_LIGHT_3,TOPIC_PUB_STATUS_OFF);
client.publish(TOPIC_PUB_LIGHT_4,TOPIC_PUB_STATUS_OFF);
}
void SubscribeTopic()
{
client.subscribe(TOPIC_SUB_LIGHT_1);
client.subscribe(TOPIC_SUB_LIGHT_2);
client.subscribe(TOPIC_SUB_LIGHT_3);
client.subscribe(TOPIC_SUB_LIGHT_4);
}
TurnOff(light);
client.publish(status,TOPIC_PUB_STATUS_OFF);
}
}
void SetupMQTT()
{
WiFi.begin(NAME_WIFI_1, PASS_WIFI_1);
client.begin(HOST_NAME,PORT, net);
client.onMessage(messageReceived);
Connect();
PublishTopic();
SubscribeTopic();
}
void ClientLoop()
{
client.loop();
delay(10); // <- fixes some issues with WiFi stability
if (!client.connected())
{
Connect();
}
}
#include "configHardware.h"
void SetupHardware()
{
pinMode(DEN1,OUTPUT);
pinMode(DEN2,OUTPUT);
pinMode(DEN3,OUTPUT);
pinMode(DEN4,OUTPUT);
TurnOff(DEN1);
TurnOff(DEN2);
TurnOff(DEN3);
TurnOff(DEN4);
Serial.begin(115200);
}
#include "configDHT.h"
DHT dht(DHTPIN,DHTTYPE);
void SetupDHT()
{
dht.begin();
}
float ReadHumi()
{
float humi = dht.readHumidity();
if(isnan(humi)){
Serial.println(F("Failed to read humidyty from DHT sensor!"));
return -1;
}
else{
Serial.print(F("Humidity: "));
Serial.print(humi);
Serial.println(F("%"));
return humi;
}
}
float ReadTemp()
{
float temp = dht.readTemperature();
if(isnan(temp)){
Serial.println(F("Failed to read temperature from DHT sensor!"));
return -1;
}
else{
Serial.print(F("Temperature: "));
Serial.print(temp);
Serial.println(F("C "));
return temp;
}
}