1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Thiết kế hệ thống Điều khiển máy lạnh sử dụng các dịch vụ từ aws

77 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 77
Dung lượng 4,57 MB

Nội dung

Vận dụng những kiến thức về tín hiệu, thiết kế mạch và thiết lập server, ứng dụng di động, đồ án này sẽ đưa ra giải pháp để những sản phẩm thuần về hồng ngoại trở nên như một thiết bị Io

Trang 1

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

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT

THÀNH PHỐ HỒ CHÍ MINH

ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT MÁY TÍNH

GVHD: THS HUỲNH HOÀNG HÀ SVTH: VŨ NGUYỄN ĐỨC MẠNHTHIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN MÁY LẠNH

SỬ DỤNG CÁC DỊCH VỤ TỪ AWS

Trang 2

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH

KHOA ĐIỆN – ĐIỆN TỬ

ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT MÁY TÍNH

Trang 3

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH

KHOA ĐIỆN – ĐIỆN TỬ

ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT MÁY TÍNH

Trang 5

LỜI CẢM ƠN

Tôi xin cám ơn thầy Huỳnh Hoàng Hà đã hướng dẫn và động viên tôi trong suốt quá trình thực hiện đồ án Thầy đã đưa ra những hướng dẫn và lời khuyên kịp thời, quý báu để tôi có thể hoàn thành đồ án này một cách tốt nhất Tôi cũng xin gửi lời cám ơn tới quý thầy cô của Khoa Điện – Điện Tử đã luôn tận tình giảng dạy cho tôi những kiến thức vô cùng bổ ích, quý báu trong thời gian học vừa qua Qua những buổi học, tôi được củng cố và trau dồi nền tảng kiến thức để vận dụng và thực hiện đồ án tốt nghiệp cũng như áp dụng vào môi trường kỹ sư

Bên cạnh đó, tôi cũng xin cám ơn những sự giúp đỡ của bạn bè, các anh chị đã giúp đỡ và hỗ trợ tôi trong thời gian thực hiện đề tài

Trong quá trình thực hiện đề tài, tuy nỗ lực hết sức nhưng vì kinh nghiệm

và khả năng còn hạn hẹp nên không thể tránh khỏi những thiếu sót Tôi rất mong nhận được những ý kiến đóng góp của quý thầy cô để đề tài được hoàn thiện hơn

Trân trọng Sinh viên thực hiện đề tài

Vũ Nguyễn Đức Mạnh

Trang 6

TÓM TẮT

Trong cuộc sống hiện tại ngày nay, không ít những sản phẩm tích hợp IoT ra đời nhằm để phục vụ và nâng cao đời sống Những sản phẩm thuần về hồng ngoại dần mất đi vị thế của mình Vận dụng những kiến thức về tín hiệu, thiết kế mạch và thiết lập server, ứng dụng di động, đồ án này sẽ đưa ra giải pháp để những sản phẩm thuần về hồng ngoại trở nên như một thiết bị IoT và xây dựng nên một hệ thống đủ tối ưu, bảo mật để người dùng có thể dễ dàng giảm sát và sử dụng các thiết bị hồng ngoại

Trang 7

MỤC LỤC

LỜI CẢM ƠN i

TÓM TẮT ii

MỤC LỤC iii

DANH MỤC HÌNH ẢNH v

DANH MỤC BẢNG viii

CÁC TỪ VIẾT TẮT viiix

CHƯƠNG 1: TỔNG QUAN 1

1.1 GIỚI THIỆU 1

1.2 MỤC TIÊU ĐỀ TÀI 1

1.3 GIỚI HẠN ĐỀ TÀI 2

1.4 BỐ CỤC ĐỀ TÀI 2

CHƯƠNG 2: LÝ THUYẾT 3

2.1 GIỚI THIỆU LINH KIỆN 3

2.2 TỔNG QUAN VỀ TÍN HIỆU IR 6

2.1.1 Giới thiệu về tín hiệu IR 6

2.1.2 Cách hoạt động 6

2.3 TỔNG QUAN VỀ AWS 7

2.2.1 Giới thiệu về AWS 7

2.2.2 Cognito Service 8

2.2.3 Lambda Service 9

2.2.4 DynamoDB Service 10

2.2.5 API Gateway Service 10

2.2.6 Giao thức MQTT 11

2.2.7 IoT Core Service 12

2.4 TỔNG QUAN VỀ FLUTTER FRAMEWORK 13

2.3.1 Giới thiệu về Flutter framework 13

2.3.2 Ưu điểm và nhược điểm 14

CHƯƠNG 3: XÂY DỰNG VÀ THIẾT KẾ HỆ THỐNG 16

3.1 YÊU CẦU HỆ THỐNG 16

3.2 SƠ ĐỒ KHỐI HỆ THỐNG 17

Trang 8

3.2.1 Sơ đồ khối tổng quan 17

3.2.2 Thiết kế từng khối 18

3.3 THIẾT KẾ HỆ THỐNG 21

3.3.1 Thiết kế server 21

3.3.2 Thiết kế phần cứng 30

3.3.3 Thiết kế ứng dụng di động 34

3.4 THU THẬP TÍN HIỆU IR 45

CHƯƠNG 4: KẾT QUẢ 45

4.1 KẾT QUẢ MÔ HÌNH THI CÔNG 50

4.2 ĐÁNH GIÁ HỆ THỐNG 58

CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 60

5.1 KẾT LUẬN 60

5.2 HƯỚNG PHÁT TRIỂN 60

TÀI LIỆU THAM KHẢO 62

Trang 9

DANH MỤC HÌNH ẢNH

Hình 2.1: Module ESP32-C3 DevKit M-1 3

Hình 2.2: Ngoại hình của SHT3x 4

Hình 2.3: Ngoại hình của TSOP38438 5

Hình 2.4: Cấu trúc của một tín hiệu IR theo giao thức NEC 6

Hình 2.5: Dữ liệu thô sau khi giải mã IR 7

Hình 2.6: Kiến trúc của Netflix 8

Hình 2.7: Bảng quản lý thông tin người dùng trên AWS Cognito 9

Hình 2.8: Giao diện làm việc trên Lambda 10

Hình 2.9: Bảng dữ liệu trên DynamoDB 10

Hình 2.10: Giao diện quản lý và phát triển API Gateway 11

Hình 2.11: Ví dụ minh họa về MQTT 12

Hình 2.12: Bảng quản lý thiết bị trên IoT Core 13

Hình 2.13: Giao diện phần mềm test giao thức MQTT trên IoT Core 13

Hình 2.14: Logo của Flutter và Dart 14

Hình 3.1: Mô hình hệ thống điều khiển thiết bị qua ứng dụng di động 16

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

Hình 3.3: Sơ đồ khối server 19

Hình 3.4: Sơ đồ khối phần cứng 20

Hình 3.5: Sơ đồ khối ứng dụng di động 21

Hình 3.6: Sơ đồ luồng dữ liệu server 22

Hình 3.7: Giao diện quản lý tài khoản trên AWS Cognito service 23

Hình 3.8: Cấu trúc code trên AWS Lambda service 24

Hình 3.9: Cấu trúc API gồm các path để thực hiện các tác vụ khác nhau 25

Hình 3.10: Query params được kèm theo request 26

Hình 3.11: Cấu trúc dữ liệu dành cho dữ liệu phần cứng 27

Hình 3.12a: Cấu trúc dữ liệu dành cho dữ liệu tín hiệu IR của remote 28

Hình 3.12b: Cấu trúc dữ liệu tín hiệu IR từ remote LG AKB75075801 28

Trang 10

Hình 3.13: Cấu trúc dữ liệu dành cho dữ liệu quyền của tài khoản người dùng và

phần cứng 28

Hình 3.14: Thiết lập policy khi tạo “thing” trên AWS IoT Core 29

Hình 3.15: Cấu trúc chuỗi json được gửi lên từ ESP32 đến AWS IoT Core 30

Hình 3.16: Cấu trúc chuỗi json được gửi từ AWS IoT Core xuống cho ESP32 30

Hình 3.17: Sơ đồ nguyên lý khối phần cứng 31

Hình 3.18: Sơ đồ nguyên lý module ESP32-C3 DevKit M-1 32

Hình 3.19: Lưu đồ hoạt động phần cứng 33

Hình 3.20: Chứng chỉ và chìa khóa, cấu trúc code được áp dụng vào Arduino 34

Hình 3.21: Kiến trúc Bloc sử dụng phương pháp cubit 35

Hình 3.22: Kiến trúc Bloc-cubit được sử dụng trong code ứng dụng di động 35

Hình 3.23: Giao diện đăng nhập của ứng dụng 36

Hình 3.24: Giao diện đăng ký của ứng dụng 37

Hình 3.25: Giao diện nhập mã xác nhận 38

Hình 3.26: Giao diện chính của ứng dụng cùng chú thích 39

Hình 3.27: Widget thiết bị (phần cứng) 40

Hình 3.28: Giao diện thiết lập wifi cho phần cứng 41

Hình 3.29: Pop-up nhập thông tin wifi 42

Hình 3.30: Màn hình nhập tên và remote 43

Hình 3.31: Màn hình điều khiển chi tiết 44

Hình 3.32: Lưu đồ hoạt động của ứng dụng 45

Hình 3.33: Lưu đồ thu thập tín hiệu IR 46

Hình 3.34: Các bảng dữ liệu trên AWS DynamoDB 47

Hình 4.1: Bản vẽ PCB được vẽ trên phần mềm KiCad 50

Hình 4.2: Phần cứng đang hoạt động sau khi đóng hộp 51

Hình 4.3: Dữ liệu cảm biến được đồng bộ từ phần cứng đến ứng dụng 51

Hình 4.4: Tín hiệu đo được tại chân GPIO7 của module ESP32 52

Hình 4.5: Dữ liệu của tín hiệu IR được gửi qua IoT Core 53

Hình 4.6: Cơ sở dữ liệu của hệ thống 53

Hình 4.7: Email chứa mã xác thực 54

Trang 11

Hình 4.8: Các lỗi được báo trên màn hình đăng ký 55 Hình 4.9: Ký hiệu loading được thêm vào khi server thực hiện yêu cầu điều khiển 56 Hình 4.10: Màn hình điều khiển loading sau khi tương tác 57 Hình 4.11: Mã QR chứa json thông tin bluetooth được tạo bởi công cụ của Espressif 58

Trang 12

DANH MỤC BẢNG

Bảng 2.1: Bảng thống số kỹ thuật Kit ESP32-C3 DevKit M-1 4Bảng 2.2: Bảng thống số kỹ thuật SHT30 5 Bảng 2.3: Bảng thông số kỹ thuật TSOP38438 5 Bảng 3.1: Tín hiệu IR của remote LG AKB75075801 sau khi được lưu vào AWS DynamoDB 47 Bảng 4.1: Bảng thời gian phản hồi của AWS API Gateway service 53 Bảng 4.2: Dung lượng trung bình của một item trong các bảng dữ liệu 54

Trang 13

CÁC TỪ VIẾT TẮT

Từ viết tắt Ý nghĩa

Trang 14

CHƯƠNG 1

TỔNG QUAN 1.1 GIỚI THIỆU

Năm 2022, các ông lớn trong làng công nghệ như Amazon, Google, Samsung và Zigbee đã cho ra mắt giao thức Matter Một giao thức tổng hợp những công nghệ đã

có sẵn để các thiết bị ở các hệ sinh thái khác nhau có thể giao tiếp được với nhau và cho phép các thiết bị ngoài hệ sinh thái có thể gia nhập được Điều này đánh dấu một bước ngoặc cho nền công nghệ, đặc biệt là về mảng IoT Sau sự kiện này, các thương hiệu đã chạy đua để cho ra các sản phẩm mới có tích hợp công nghệ IoT Điều dĩ nhiên, các thiết bị được điều khiển thuần bởi sóng IR dần đang bị các thiết

bị IoT chiếm thị phần Theo đó, các hãng máy lạnh trên thị trường dần được sử dụng nhiều trong các smarthome Tuy nhiên việc đa dạng mẫu mã máy lạnh và smarthome trên thị trường đều đang không sử dụng chung một giao thức, một chuẩn thống nhất để điều khiển các thiết bị.[1]

Vì vậy, đồ án này sẽ đề ra một giải pháp nhằm thiết kế hệ thống tích hợp cho phép người dùng điều khiển nhiều lại máy lạnh khác nhau trong cùng một môi trường Điều này sẽ mang lại sự thuận tiện hơn, đồng thời tiết kiệm năng lượng bằng cách thu thập dữ liệu từ môi trường để người dùng có thể giám sát và điều chỉnh máy lạnh một cách hợp lý và hiệu quả

1.2 MỤC TIÊU ĐỀ TÀI

Trong đề tài này, sinh viên thực hiện đề tài đặt ra những mục tiêu như sau:

- Thiết kế hệ thống có khả năng điều khiển máy lạnh bằng tín hiệu IR

- Hệ thống có thể bật và tắt máy lạnh, đổi chế độ, thay đổi nhiệt độ và điều khiển hướng gió tự động hoặc cố định

- Ứng dụng di động để giám sát điều kiện môi trường và điều khiển thiết bị

- Ứng dụng di động có thể kết nối bluetooth đến phần cứng và thiết lập wifi cho phần cứng

- Thiết kế và xây dựng server theo kiến trúc serverless, sử dụng các dịch vụ AWS

Trang 15

- Server phải lưu trữ và quản lý được dữ liệu xác thực của người dùng, trạng thái tài khoản của người dùng

- Cơ sở dữ liệu gồm các bảng:

+ Dữ liệu của phần cứng sau khi đã thiếp lập wifi

+ Dữ liệu về quyền của người dùng đối với phần cứng

+ Dữ liệu của các tín hiệu IR từ các remote máy lạnh

- Ứng dụng giao tiếp được với server qua các API

- Server và phần cứng giao tiếp được với nhau qua giao thức MQTT

1.3 GIỚI HẠN ĐỀ TÀI

Đề tài dừng lại ở việc xây dựng một thiết bị có thể đọc được dữ liệu nhiệt độ, độ

ẩm thực tế của căn phòng; một ứng dụng để người dùng có thể xem các thông tin về điều kiện môi trường, điều kiện căn phòng và điều khiển máy lạnh ; xây dựng một server với cấu trúc serverless có thể lưu trữ, xử lý dữ liệu và giao tiếp được với phần cứng

1.4 BỐ CỤC ĐỀ TÀI

Nội dung chính của đề tài được trình bày với 5 chương chính:

- Chương 1: TỔNG QUAN: Khái quát vấn đề, mục tiêu đề tài

- Chương 2: CƠ SỞ LÝ THUYẾT: Giới thiệu về IR, giới thiệu các dịch vụ và nền tảng để xây dựng server và ứng dụng di động

- Chương 3: THIẾT KẾ HỆ THỐNG: Sơ đồ khối, sơ đồ nguyên lý, lưu đồ hoạt động của hệ thống

- Chương 4: KẾT QUẢ: Kết quả hoạt động của hệ thống và nhận xét kết quả đạt được

- Chương 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN: Kết luận về độ hoàn thiện của hệ thống so với mục tiêu đề ra và các hướng phát triển của đề tài trong tương lai

Trang 16

CHƯƠNG 2

LÝ THUYẾT 2.1 GIỚI THIỆU LINH KIỆN

Hệ thống điều khiển thiết bị bằng tín hiệu IR được thiết kế với mục đích hỗ trợ người dùng giám sát và điều khiển các thiết bị từ xa Ngoài ra, hệ thống phải hiển thị trực quan và chính xác nhiệt độ, độ ẩm của căn phòng Để làm được điều này, các linh kiện cần thiết để xây dựng nên phần cứng của hệ thống bao gồm:

Module ESP32-C3 DevKit M-1: module sử dụng dòng chip ESP32-C3 giá rẻ của Espressif Tuy nhiên, dòng chip này đang khá phổ biến trong tới gian gần đây bởi những ưu điểm của nó Có thể kể tới như:

- Hỗ trợ ngoại vi mạnh mẽ khi các bộ UART, I2C, ADC có thể được thiết lập ở bất kì GPIO nào Số lượng chân GPIO cũng nhiều hơn đáng kể so với ESP8266

- Chip còn hỗ trợ BLE 5.0 với phạm vi khá rộng, cùng với đó là Wifi 802.11 b/g/n hỗ trợ kết nối các mạng wifi 2.4GHz [5]

Hình 2.1: Module ESP32-C3 DevKit M-1 [5]

Trang 17

Bảng 2.1: Bảng thống số kỹ thuật Kit ESP32-C3 DevKit M-1

Hình 2.2: Ngoại hình của SHT3x [6]

`

Trang 18

Hình 2.3: Ngoại hình của TSOP38438 [7]

Bảng 2.3: Bảng thông số kỹ thuật TSOP38438

Trang 19

2.2 TỔNG QUAN VỀ TÍN HIỆU IR

2.1.1 Giới thiệu về tín hiệu IR

Tín hiệu IR, hay còn được gọi là tia hồng ngoại là một bức xạ sóng điện từ trong dãy quang phổ điện từ Đây cũng là một phương thức giao tiếp phổ biến và dễ sử dụng Tia hồng ngoại này có bước sóng dài hơn ánh sáng khả kiến một chút, vì vậy

mà mắt người không thể nhìn thấy được

Giao tiếp bằng tia hồng ngoại là phương thức giao tiếp hiệu quả vì chúng không thể bị nhiễu điện từ Bước sóng quan học của hồng ngoại từ 870nm đến 950nm Tuy nhiên, tín hiệu này dễ bị nhiễu với đèn, nhiệt độ và cả những vật thể cũng có thể ảnh hưởng đến tín hiệu hồng ngoại Vì vậy, cách thức điều chế là chìa khóa để giảm thiểu độ nhiễu tín hiệu hồng ngoại Để thiết bị nhận tín hiệu nhận biết được tín hiệu này, điều cần có một bộ phát tín hiệu nhấp nháy theo một tần số cố định Đối với các điều khiển remote, tần số thường được sử dụng từ 35kHz tới 40kHz, nhưng phổ biến nhất là 38kHz Nếu bộ nhận tín hiệu được lập trình để nhận các tín hiệu trong dải tần số này, nó sẽ có khả năng bỏ qua các tín hiệu nhiễu từ các tần số khác

2.1.2 Cách hoạt động

Khi nhắc đến IR, hai thuật ngữ luôn được nhắc đến là “mark” và “space” Trong

đó, “mark” là tín hiệu mức cao 1, “space” là tín hiệu mức thấp 0

Để đi sâu vào cách hoạt động của IR, sinh viên thực hiện đề tài lấy giao thức NEC làm ví dụ

Hình 2.4: Cấu trúc của một tín hiệu IR theo giao thức NEC [3]

Tất cả gói tin IR đều có các thành phần sau: header mark, header space, dữ liệu truyền đi Cụ thể, các header sẽ nói với thiết bị nhận IR rằng dữ liệu sẽ được truyền

Trang 20

tới, chuẩn bị để đọc dữ liệu Header của gói tin IR gồm 9 mili giây mark và 4.5 mili giây space, và kết thúc gói tin sẽ là 560 micro giây mark

Mỗi giao thức sẽ có tín hiệu đại diện cho bit 0 và 1 khác nhau Trong giao thức NEC, bit 1 sẽ có độ dài tổng cộng 2.25 mili giây, trong đó, mark kéo dài 560 micro giây và space kéo dài 1690 micro giây; bit 0 sẽ có độ dài 1.12 mili giây, mark và space đều kéo dài 560 micro giây [3]

Đó là về dạng sóng Khi giải mã tín hiệu IR, dữ liệu thô nhận được sẽ là 1 dãy các

số mà mỗi số biểu trưng cho thời gian của mark và space

Hình 2.5: Dữ liệu thô sau khi giải mã IR

Như hình 2.4, ta thấy tín hiệu IR là một chuỗi các mark và space xen kẽ với nhau Tương ứng như thế, trong dữ liệu thô, các dãy số sẽ xen kẽ độ dài của mark và space

Ngoài giao thức NEC, tín hiệu IR dành cho máy lạnh còn có các giao thức khác

và chủ yếu các hãng máy lạnh sẽ tự tạo nên một giao thức riêng cho dòng sản phẩm của mình

2.3 TỔNG QUAN VỀ AWS

2.2.1 Giới thiệu về AWS

AWS (viết tắt cho Amazon Web Service) là nền tảng điện toán đoán mây được

“gã khổng lồ” Amazon phát triển và cung cấp từ tháng 7 năm 2022 Nền tảng này cung cấp cho các doanh nghiệp, dự án các dịch vụ về lưu trữ, tính toán, cơ sở dữ liệu, phân tích dữ liệu, trí tuệ nhân tạo với chi phí dựa trên nhu cầu sử dụng Hiện tại, AWS đang cung cấp hơn 200 dịch vụ Trong đồ án này, 5 dịch vụ được sử dụng

để làm backend: Cognito, DynamoDB, Lambda, API Gateway, IoT Core

AWS hiện đang được rất nhiều các nhãn hàng tin tưởng sử dụng Có thể kể đến như nền tảng phim trực tuyến Netflix Cụ thể, Netflix đã sử dụng Amazon S3 và Amazon Redshift để làm kho lưu trữ dữ liệu và nền tảng dữ liệu của mình Bên cạnh

Trang 21

đó, Netflix cũng sử dụng Amazon S3 và Amazon CloudFront để vận hành dịch vụ video streaming Chính vì lý do đó, sinh viên thực hiện đề tài đã chọn sử dụng các dịch vụ từ AWS để xây dựng server cho hệ thống [15]

Hình 2.6: Kiến trúc của Netflix [15]

2.2.2 Cognito Service

Cognito là dịch vụ cung cấp giải pháp lưu trữ thông tin tài khoản, thông tin người dùng và quản lý xác thực [8] Cognito có thể nhận yêu cầu đăng nhập trực tiếp bằng tên người dùng hoặc email và mật khẩu, qua Facebook, Apple hoặc Google

Nhờ Cognito, tôi có thể quản lý được các luồng truy cập vào cơ sở dữ liệu, qua đó

có thể bảo mật Mỗi người dùng vào mỗi lần đăng nhập sẽ được cấp token, và để truy cập vào cơ sở dữ liệu, người dùng phải gửi các token này lên AWS AWS sẽ xác thực token và cho phép người dùng truy cập hoặc không

Trang 22

Hình 2.7: Bảng quản lý thông tin người dùng trên AWS Cognito

2.2.3 Lambda Service

Do đồ án này sử dụng kiến trúc serverless cho backend nên AWS Lambda là một dịch vụ vô cùng phù hợp Dịch vụ này sử dụng các tài nguyên có sẵn để hỗ trợ đẩy code của tôi và thực hiện các thuật toán [9] Khi sử dụng Lambda, sinh viên thực hiện đề tài không cần quan tâm đến việc triển khai hạ tầng server như thế nào, công việc vốn của những DevOps Lambda cũng sẽ hỗ trợ quản lý CPU, bộ nhớ và các tài nguyên khắc Nhờ vậy mà tôi có thể tập trung vào việc phát triển server, ứng dụng Bên cạnh đó, Lambda có thể được thích hợp từ nhiều dịch vụ khác như Cognito, DynamoDB, IoT Core

Ngoài những ưu điểm, Lambda cũng có những mặt hạn chế Dung lượng bộ nhớ

mà Lambda có thể hỗ trợ chỉ giới hạn trong mức từ 128 MB đến 10240 MB, điều này rất hạn chế khi xây dựng trên một hệ thống lớn Bên cạnh đó, Lambda không xử

lý các yêu cầu có dung lượng lớn hơn 128 kB Log chỉ được ghi vào dịch vụ CloudWatch của AWS, mà dịch vụ này đòi hỏi chi phí không quá rẻ

Tuy có những mặt hạn chế, AWS Lambda vẫn là một dịch vụ rất phù hợp để xây dựng một hệ thống IoT với kiến trúc serverless Lambda sẽ đóng vai trò trung tâm của backend khi nó sẽ đóng vai trò xử lý toàn bộ thuật toán và phản hồi về cho ứng dụng và thiết bị IoT

Trang 23

Hình 2.8: Giao diện làm việc trên Lambda 2.2.4 DynamoDB Service

DynamoDB là một dịch vụ cơ sở dữ liệu NoSQL Dịch vụ này mang lại hiệu suất cao và nhanh, vì vậy mà dịch vụ này có thể được sử dụng cho bất kỳ hệ thống lớn nhỏ nào Khi sử dụng DynamoDB, admin có thể truy xuất bất kì số lượng dữ liệu với bất kì số lượng yêu cầu [10] Tuy nhiên, DynamoDB quy ước 1 item dữ liệu chỉ

có thể có dung lượng tối đa 400kB

Hình 2.9: Bảng dữ liệu trên DynamoDB 2.2.5 API Gateway Service

Sinh viên thực hiện đề tài đã có Lambda để thực hiện thuật toán logic, có DynamoDB để truy xuất dữ liệu Tôi cần có thêm một “cánh cửa” để phân luồng và cho phép ứng dụng truy cập vào các dịch vụ AWS, API Gateway sẽ là “cánh cửa”

Trang 24

đó [11] API Gateway hỗ trợ 2 loại API: HTTP/REST và Websocket Ngoài ra, API Gateway hỗ trợ xác thực bằng token, điều này có thể tăng tính bảo mật cho backend API Gateway còn hỗ trợ truy xuất dữ liệu từ query string, header và body request Khi nhận được yêu cầu truy xuất có kèm theo những biến trên, API Gateway sẽ gửi chúng tới Lambda để xử lý việc truy xuất và sau đó trả dữ liệu về cho ứng dụng

Hình 2.10: Giao diện quản lý và phát triển API Gateway 2.2.6 Giao thức MQTT

Giao thức MQTT là một giao thức truyền các gói tin, cụ thể ở đây là “message”, theo mô hình subscribe – publish Giao thức này khá phổ biến với các thiết bị IoT và phù hợp để sử dụng trong môi trường mạng không ổn định [4] Các message được gửi đến server hay còn được gọi là “broker”, trung tâm của MQTT Các message được gửi lên phải thuộc ít nhất một “topic” trên broker Sau khi message được gửi lên broker, broker sẽ xếp các message vào hàng đợi, sau đó đẩy xuống các client subscribe vào topic tương ứng

Trang 25

Hình 2.11: Ví dụ minh họa về MQTT 2.2.7 IoT Core Service

IoT core cung cấp dịch vụ giúp cho các thiết bị IoT có khả năng kết nối với các thiết bị khác và với các dịch vụ khác của AWS Iot Core cũng cung cấp một phần mềm hỗ trợ kết nối các thiết bị Khi các thiết bị kết nối với IoT Core thành công, IoT Core có thể kết nối các thiết bị tới các dịch vụ khác của AWS

IoT Core và thiết bị giao tiếp chủ yếu bằng giao thức MQTT vì tính linh hoạt, hiệu quả Khi thiết bị đã kết nối IoT Core, tôi có thể nhận được các dữ liệu đọc từ sensor và lưu chúng vào cơ sở dữ liệu, hoặc tôi có thể điều khiển thiết bị thực hiện việc gì đó thông qua ứng dụng cực kì nhanh chóng

Để kết nối được với IoT Core Thiết bị cần phải có những tập chứng nhận và chìa khóa để có thể được cấp quyền kết nối vào IoT Core [12] Những tập chứng nhận và chìa khóa này chỉ có khi nhà phát triển tạo thành công thiết bị trên IoT Core

Trang 26

Hình 2.12: Bảng quản lý thiết bị trên IoT Core

Bên cạnh đó, để tiện lợi cho các nhà phát triển, kỹ sư, IoT Core cung cấp phần mềm hỗ trợ quản lý các “tin nhắn” đã được gửi đi hoặc được nhận về và gửi “tin nhắn” trực tiếp ngay trên giao diện

Hình 2.13: Giao diện phần mềm test giao thức MQTT trên IoT Core

2.4 TỔNG QUAN VỀ FLUTTER FRAMEWORK

2.4.1 Giới thiệu về Flutter framework

Flutter là một framework mã nguồn mở được phát triển bởi Google Qua Flutter, các kỹ sư có thể xây dựng nên ứng dụng đa nền tảng chỉ với một nguồn code duy nhất Flutter được ra mắt vào năm 2018 gây được nhiều sự chú ý của các kĩ sư và nhà phát triển Hiện tại Flutter hỗ trợ xây dựng giao diện ứng dụng trên 6 nền tảng: Android, iOS, web, MacOS, Windows và Linux Ngôn ngữ lập trình được sử dụng trong Flutter là Dart [14][15]

Trang 27

Hình 2.14: Logo của Flutter và Dart 2.4.2 Ưu điểm và nhược điểm

Tôi sẽ so sánh Dart của Flutter với Java hoặc Kotlin của Android, hoặc, Swift của iOS

Về mặt ưu điểm:

- Flutter là một framework mạnh về giao diện Giao diện được “vẽ” bởi Flutter

sẽ có chất lượng khá tốt, hài hòa và quá trình xây dựng giao diện cũng không quá khó

- Do Flutter là mã nguồn mở, nên có rất nhiều thư viện từ các nhà phát triển trên toàn thế giới Từ các thư viện về giao diện, đến các thư viện về các chức năng cho IoT

- Flutter có chức năng “hot reload” Nhà phát triển có thể reload màn hình đang xây dựng một cách nhanh chóng mà không cần phải relaunch app như bên Java và Swift

Về mặt khuyết điểm:

- Do Flutter là ngôn ngữ lập trình ra mắt vào 2018, nên framework này chưa quá hoàn thiện nếu so với Java/Kotlin và Swift Chính vì tính hạn chế này mà các thư viện về IoT chưa hỗ trợ quá tốt các chức năng chuyên sâu

- Các ứng dụng Flutter thường ngốn nhiều tài nguyên máy hơn là các ứng dụng được xây dụng từ các framework chính chủ Bên cạnh đó việc tối ưu hóa ứng dụng cũng không dễ dàng gì

Trang 28

Nhưng nhìn về tổng thể, Flutter là một framework đáng tin cậy cho các nhà phát triển bởi tính đa nền tảng của nó Flutter tuy là một ngôn ngữ lập trình mới và còn kha khá nhược điểm, tuy nhiên, Google vẫn luôn sửa chữa và cải tiến để Flutter hoàn thiện hơn theo thời gian

Trang 29

đó, để có thể hiển thị một cách trực quan nhiệt độ phòng, hệ thống phải đọc được các dữ liệu từ cảm biến và cập nhật dữ liệu môi trường theo thời gian thực để người dùng có thể theo dõi và điều chỉnh lại máy lạnh thông qua ứng dụng di động cho phù hợp Các yêu cầu trên mang tính tương đối và chưa có một chuẩn thiết kế hệ thống điều khiển máy lạnh như vậy Vì thế, sinh viên thực hiện chọn các thông số tương đối và phù hợp

Hình 3.1: Mô hình hệ thống điều khiển thiết bị qua ứng dụng di động

Hệ thống điều khiển máy lạnh từ xa nhằm cung cấp giải pháp để người dùng điều khiển nhiều thiết bị máy lạnh trong một môi trường mà không cần bận tâm về chuẩn

Trang 30

của máy lạnh mình đang sử dụng Hệ thống phải thiết lập được wifi cho ESP32 thông qua bluetooth bằng ứng dụng di động Sau khi phần cứng đã kết nối được wifi, khối phần cứng phải đọc được dữ liệu nhiệt độ, độ ẩm từ cảm biến và cập nhật

dữ liệu lên server Server sẽ nhận dữ liệu này bằng giao thức MQTT thông qua dịch

vụ AWS IoT Core và lưu vào cơ sở dữ liệu Bên cạnh đó, phần cứng có khả năng đọc và giải mã được tín hiệu IR phát ra từ remote để phục vụ cho việc thu thập dữ liệu và cập nhật vào cơ sở dữ liệu Sau khi đã có dữ liệu các tín hiệu IR, phần cứng phải có khả năng nhận message từ server có kèm tín hiệu IR và phát chính xác tín hiệu để điều khiển được máy lạnh

Như đã đề cập tại phần Mục tiêu đề tài Hệ thống phải điều khiển được các chức năng cơ bản của máy lạnh bao gồm:

- Điều khiển tắt và mở máy lạnh

- Chuyển chế độ máy lạnh, các chế độ máy lạnh thường có như cool, fan và dry

- Điều chỉnh được nhiệt độ của máy lạnh

- Điều khiển được hướng gió của máy lạnh

Hệ thống có thể điều khiển nhiều loại máy lạnh khác nhau khi hệ thống đã học được các tín hiệu từ các remote của các loại máy lạnh đó Tuy nhiên, để cụ thể hóa,

LG AKB75075801 để làm đối tượng điều khiển cho hệ thống

Về phía ứng dụng, ứng dụng phải hiển thị và thực hiện các chức năng về xác thực, giao diện chính để giám sát và điều khiển máy lạnh Từ giao diện chính, người dùng có thể đăng xuất tài khoản hiện tại Hơn nữa, người dùng có thể chuyển tới các màn hình có chức năng thiết lập wifi cho phần cứng và màn hình điều khiển máy lạnh chi tiết gồm các chế độ, nhiệt độ và các tính năng khác Đồng thời, dữ liệu trên ứng dụng được cập nhật liên tục từ việc lấy các dữ liệu mới nhất

3.2 SƠ ĐỒ KHỐI HỆ THỐNG

3.2.1 Sơ đồ khối tổng quan

Trước tiên, để có cái nhìn tổng quát, sinh viên thực hiện đề tài đi vào thiết kế sơ

đồ khối tổng quan của hệ thống:

Trang 31

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

Hệ thống gồm 3 khối chính, các khối này sẽ giao tiếp với nhau để mang lại tính

ổn định và hiệu quả cho hệ thống:

- Khối server: Khối sẽ đảm nhận vai trò chính là trung gian chính để ứng dụng di động và khối phần cứng có thể giao tiếp được với nhau Bên cạnh đó, các dữ liệu người dùng từ ứng dụng di động và dữ liệu từ cảm biến của khối phần cứng sẽ được khối server lưu trữ

- Khối phần cứng: Khối sẽ có chức năng chính là khối sẽ điều khiển trực tiếp máy lạnh và được điều khiển bởi khối server Khối này cũng có nhiệm vụ cập nhật dữ liệu nhiệt độ, độ ẩm từ cảm biến và cập nhật lên khối server Bên cạnh đó, tôi cũng dùng khối phần cứng để có thể thu thập tín hiệu IR từ các remote máy lạnh

- Khối ứng dụng di động: Khối này sẽ hiển thị nhiệt độ môi trường, hiển thị các

dữ liệu từ khối phần cứng Bên cạnh đó, khối sẽ đóng vai trò giao tiếp với khối phần cứng thông qua BLE để khối phần cứng có thể kết nối với wifi

3.2.2 Thiết kế từng khối

* Khối server

Khối server được thiết kế dựa trên các dịch vụ AWS

Trang 32

Hình 3.3: Sơ đồ khối server

Khối server được thiết kế với 5 khối chính tương ứng với 5 dịch vụ AWS

- Khối Cognito: chịu trách nhiệm lưu trữ thông tin xác thực của người dùng, đồng thời đóng vai trò bảo mật API bằng token Bên cạnh đó, admin có thể giám sát và quản lý hoạt động cũng như thông tin người dùng

- Khối API Gateway: được ví như “cánh cổng” để ứng dụng di động có thể giao tiếp với server Như đã đề cập ở trên, API Gateway sẽ kiểm tra yêu cầu được gửi đến từ ứng dụng có token được sinh ra bởi Cognito và quyết định chấp nhận hay từ chối yêu cầu

- Khối Lambda: là trung tâm của server Đây sẽ là khối sẽ truy xuất dữ liệu, thực hiện các phép toán logic trước khi trả dữ liệu về cho ứng dụng Lambda cũng sẽ gửi

và nhận các “message” với phần cứng qua IoT Core

- Khối DynamoDB: hay khối cơ sở dữ liệu Tại đây, tất cả dữ liệu về phần cứng, remote, quyền của người dùng với phần cứng sẽ được lưu trữ và sẵn sàng được truy xuất bởi Lambda bất kì lúc nào

- Khối IoT Core: sẽ là trung gian để Lambda và phần cứng giao tiếp với nhau Với giao thức MQTT, IoT Core sẽ nhận dữ liệu nhiệt độ, độ ẩm đọc được từ cảm biến của phần cứng, gửi đến Lambda và cập nhật vào DynamoDB Bên cạnh đó, khi

Trang 33

người dùng điều chỉnh trên ứng dụng, Lambda sẽ yêu cầu IoT Core gửi message đến phần cứng để phần cứng phát tín hiệu IR đến máy lạnh

Trang 34

Hình 3.5: Sơ đồ khối ứng dụng di động

- Khối xác thực: sẽ chứa các màn hình đăng nhập, đăng ký Khối này cũng sẽ có nhiệm vụ lưu token vào bộ nhớ đệm ngay sau khi người dùng đăng nhập thành công

- Khối trung tâm: sẽ hiển thị nhiệt độ môi trường, danh sách các thiết bị kèm tên, nhiệt độ cảm biến và điều khiển nhanh Đồng thời, khối trung tâm sẽ điều hướng khi người dùng muốn đăng xuất, thiết lập phần cứng hoặc điều khiển chi tiết phần cứng

- Khối điều khiển: sẽ có các nút để điều khiển phần cứng phát tín hiệu IR

- Khối thiết lập: mang nhiệm vụ kết nối Bluetooth với ESP32 và gửi thông tin wifi mà người dùng muốn kết nối cho ESP32

3.3 THIẾT KẾ HỆ THỐNG

3.3.1 Thiết kế server

Trang 35

Hình 3.6: Sơ đồ luồng dữ liệu server

Ứng dụng di động sẽ gửi yêu cầu đăng nhập đăng ký lên Cognito bằng giao thức Amplify Auth do chính AWS phát triển Thông tin đăng ký sẽ gồm các tên, email và mật khẩu Sau khi đăng ký xong, Cognito sẽ gửi mã xác nhận về email mà người dùng đã nhập Người dùng phải nhập mã này vào ứng dụng để kích hoạt tài khoản

và có quyền đăng nhập Thông tin đăng nhập sẽ gồm email và password Sau khi đăng nhập thành công, Cognito sẽ trả về cho ứng dụng JWT token Ứng dụng sẽ dùng token này kèm vào các request khi gọi vào API

* Thiết kế và thiết lập AWS Cognito service

Như đã đề cập, hệ thống đang yêu cầu người dùng đăng nhập bằng email, vì vậy, AWS Cognito cũng phải được cấu hình để quản lý thông tin bằng email Trong phần cấu hình, bước đầu tôi sẽ thiết lập email sẽ được người dùng sử dụng để đăng nhập

Hệ thống không thể để người dùng chọn những mật khẩu đơn giản như “12345678” hay “abcxyz” Những mật khẩu này cấu trúc khá đơn giản và dễ đoán Điều này sẽ xảy ra tình trạng người dùng sẽ bị đánh mất tài khoản, nghiêm trọng hơn có thể ảnh

Trang 36

hưởng đến bảo mật của server Vì vậy để hệ thống thêm bảo mật, sinh viên thực hiện đề tài thiết lập yêu cầu mật khẩu phải có ít nhất 8 kí tự và bao gồm ít nhất 1 chữ

số, 1 kí tự, 1 chữ viết hoa, 1 chữ viết thường

Sau khi thiết lập AWS Cognito thành công, AWS sẽ cung cấp một giao diện mà admin có thể quản lý tài khoản người dùng như hình 3.7

Hình 3.7: Giao diện quản lý tài khoản trên AWS Cognito service

* Thiết kế và thiết lập AWS Lambda service

Tiếp đến, một hàm cần được khởi tạo trên AWS Lambda service để server có thể sẵn sàng hoạt động trước khi khởi tạo API Sinh viên chọn NodeJS làm SDK chính

để xây dựng Lambda NodeJS sẽ mang lại cho server tốc độ phản hồi anh, dễ dàng

mở rộng server và các thư viện hỗ trợ NodeJS rất mạnh mẽ

Tôi có thể tạo nhiều function Lambda để thực hiện từng tác vụ riêng Tuy nhiên điều này sẽ chiếm nhiều tài nguyên trên AWS hơn, khiến cho chi phí duy trì cao hơn

và quy trình sửa chữa bào trì phức tạp hơn Vì vậy , để tối ưu AWS Lambda, sinh viên thực hiện đã chọn cách tạo một function Lambda duy nhất, trong function đó sẽ chứa những function nhỏ hơn để xử lý các tác vụ Sinh viên thực hiện đã xây dựng cấu trúc code đơn giản theo từng chức năng trên Lambda như hình 3.8

Trang 37

Hình 3.8: Cấu trúc code trên AWS Lambda service

Khi hoạt động, AWS Lambda sẽ thực hiện các dòng code trong file index.js đầu tiên Sau đó, phụ thuộc vào nhiệm vụ mà người dùng yêu cầu server thực hiện, Lambda sẽ gọi đến các function trong các file phụ khác như: truy xuất hoặc tạo dữ liệu phần cứng trong get.js hoặc post.js trong mục “devices”, gửi lệnh yêu cầu IoT Core gửi message đến phần cứng trong sendCommand.js trong mục iotcore Trong các function thực hiện tác vụ này, sinh viên thực hiện đã thêm các dòng code kiểm tra những param mà user gửi lên nếu đầy đủ và phù hợp thì mới gửi yêu cầu truy xuất, cập nhật cơ sở dữ liệu về cơ sở dữ liệu, sau đó trả dữ liệu về cho ứng dụng di động để báo rằng tác vụ đã được thực thi thành công

* Thiết kế và thiết lập AWS API Gateway service

Ứng dụng di động và server sẽ giao tiếp với nhau qua API Các request từ ứng dụng ngoài kèm theo token, cần kèm theo các query param Các param này sẽ là cơ

sở để Lambda có thể truy xuất và cập nhật chính xác các dữ liệu vào cơ sở dữ liệu Các request sẽ được gửi lên các API Gateway thông qua giao thức HTTPS API

Trang 38

Gateway sẽ kiểm tra token với Cognito rồi mới chấp nhận request và gửi qua cho Lambda Trong API Gateway, cần phân rõ:

- API sẽ thực hiện các yêu cầu liên quan tới truy xuất, tạo dữ liệu của phần cứng trên cơ sở dữ liệu

- API thực hiện điều khiển phần cứng và cập nhật trạng thái phần cứng lên cơ sở

dữ liệu

- API thực hiện truy xuất danh sách remote

- API thực hiện liên kết dữ liệu người dùng và dữ liệu phần cứng, cấp quyền cho người dùng đối với phần cứng

Khi khởi tạo API, API Gateway sẽ cho phép các nhà phát triển khởi tạo các loại API như: HTTP API, Websocket API, REST API và Private REST API Để tiết kiệm chi phí, cũng như các API có thể giao tiếp được với các dịch vụ của AWS, đặc biệt là Lambda, ứng dụng có thể gọi đến API một cách dễ dàng mà không cần VPN, sinh viên thực hiện đề tài chọn xây dựng REST API

Sau khi khởi tạo API Service thành công, tôi cần tạo các path để có thể deploy API Như đã đề cập ở trên, API cần rõ ràng, phân biệt để xử lý một nhiệm vụ khác nhau, vì vậy, các path sẽ được phân biệt như hình 3.9

Hình 3.9: Cấu trúc API gồm các path để thực hiện các tác vụ khác nhau

Ngày đăng: 19/12/2024, 14:35

w