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 2 CHƯƠNG 2 LÝ THUYẾT 2. 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.1: Module ESP32-C3 DevKit M-1 [5] 3 Bảng 2.1: Bảng thống số kỹ thuật Kit ESP32-C3 DevKit M-1 Đặc tính Thông số CPU 32-bit RISC-V single core processor, 160 MHz ROM 384 kB RAM 400 kB Flash 4MB GPIO 22 SPI 3 UART 2 I2C 1 I2S 1 Cảm biến SHT3x: Cảm biến nhiệt đồ và độ ẩm với kích thước nhỏ nhưng lại mang lại độ chính xác và độ ổn định khá cao khi sai số của dữ liệu đo được tương đối thấp.
Cảm biến hỗ trợ giao diện I2C, phù hợp để sử dụng với ESP32-C3. SHT3x được sử dụng rộng rãi trong các lĩnh vực công nghiệp, y tế và các lĩnh vực khác.2: Ngoại hình của SHT3x [6] ` 4 Bảng 2.2: Bảng thống số kỹ thuật SHT30 Đặc tính Thông số Điện áp sử dụng 2.5 V Chuẩn giao tiếp I2C Khoảng nhiệt độ -40 độ C – 125 độ C Sai số nhiệt độ 0.2 độ C Khoảng độ ẩm 0% - 100% RH Sai số độ ẩm 2% RH Cảm biến TSOP38438: Cảm biến thu tín hiệu IR nhỏ gọn nhưng hoạt động hiệu quả. Cảm biến sẽ nhận biết các tín hiệu IR ở tần số 38kHz [7].3: Ngoại hình của TSOP38438 [7] Bảng 2.3: Bảng thông số kỹ thuật TSOP38438 Đặc tính Thông số Điện áp sử dụng -0.3 V – 6 V Dòng điện sử dụng 3mA Tần số thu được 38kHz 5 2. TỔNG QUAN VỀ TÍN HIỆU IR 2.
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. 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ụ.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 6 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.
TỔNG QUAN VỀ AWS 2. 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 7 đó, 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.6: Kiến trúc của Netflix [15] 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.7: Bảng quản lý thông tin người dùng trên AWS Cognito 2. 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.8: Giao diện làm việc trên Lambda 2. 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.9: Bảng dữ liệu trên DynamoDB 2. 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” 10 đó [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.10: Giao diện quản lý và phát triển API Gateway 2. 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.