1. Trang chủ
  2. » Luận Văn - Báo Cáo

Xây dựng giao diện Website hiển thị dữ liệu từ một cảm biến nhiệt độ và độ ẩm.

49 9 0

Đ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

Tiêu đề Xây dựng giao diện Website hiển thị dữ liệu từ một cảm biến nhiệt độ và độ ẩm.
Tác giả Nguyễn Quang Hưng, Trần Quang Hữu, Đặng Ngọc Khánh, Nguyễn Đăng Khoa, Đỗ Trung Kiển
Người hướng dẫn Trần Thị Thanh Thủy
Trường học Học viện công nghệ bưu chính viễn thông
Chuyên ngành Mạng cảm biến
Thể loại báo cáo bài tập lớn
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 49
Dung lượng 4,7 MB

Cấu trúc

  • CHƯƠNG 1: TỔNG QUAN VỀ IOT, WEBSITE VÀ (10)
    • 1.1: Khái niệm IoT (10)
      • 1.1.1: Định nghĩa (10)
      • 1.1.2: IoT trong kỹ thuật (11)
      • 1.1.3: Đặc tính của hệ thống IoT (12)
      • 1.1.4: Yêu cầu của hệ thống IoT (13)
      • 1.1.5: Mô hình của hệ thống IoT (14)
    • 1.2: Khái niệm Website (15)
      • 1.2.1: Định nghĩa (15)
      • 1.2.2: Phân loại (16)
    • 1.3: Khái niệm giao diện IoT (18)
  • CHƯƠNG 2: KIẾN TRÚC WEBSITE VÀ (19)
    • 2.1: Thiết kế kiến trúc Website (19)
    • 2.2: Giao thức MQTT (19)
      • 2.2.1: Khái niệm (19)
      • 2.2.2: Mục đích (20)
      • 2.2.3: MQTT Broker và MQTT Client (20)
      • 2.2.4: Cách thức hoạt động của giao thức MQTT (21)
      • 2.2.5: Nguyên tắc hoạt động của MQTT (23)
      • 2.2.6: Tầm quan trọng của giao thức MQTT (23)
      • 2.2.7: Một số ứng dụng MQTT đã được triển khai (24)
    • 2.3: Ngôn ngữ JavaScript và Node.js (24)
      • 2.3.1: Ngôn ngữ JavaScript (24)
      • 2.3.2: Node.js (26)
    • 2.4: Hệ quản trị cơ sở dữ liệu MySQL (29)
      • 2.4.1: Khái niệm (29)
      • 2.4.2: Thuật ngữ thường gặp của MySQL (30)
      • 2.4.3: Ưu, nhược điểm của MySQL (30)
      • 2.4.4: Phương thức hoạt động của MySQL (31)
      • 2.4.5: Quy trình thiết kế cơ sở dữ liệu (32)
  • CHƯƠNG 3: XÂY DỰNG HỆ THỐNG PHẦN CỨNG, (33)
    • 3.1: Xây dựng hệ thống phần cứng (33)
      • 3.1.1: Vi điều khiển ESP32 (33)
      • 3.1.2: Cảm biến nhiệt độ, độ ẩm DHT11 (35)
      • 3.1.3: Chương trình thu thập và gửi dữ liệu cảm biến (37)
    • 3.2: Xây dựng MQTT Broker (38)
      • 3.2.1: HiveMQ MQTT Broker (38)
      • 3.2.2: Tạo MQTT Broker (39)
    • 3.3: Xây dựng cơ sở dữ liệu (39)
      • 3.3.1: Phần mềm XAMPP (39)
      • 3.3.2: Tạo cơ sở dữ liệu (40)
    • 3.4: Xây dựng giao diện Web Dashboard (41)
      • 3.4.1: Xây dựng giao diện Website hiển thị giá trị cảm biến (41)
      • 3.4.2: Xây dựng giao diện Website hiển thị dữ liệu thu thập (43)
  • CHƯƠNG 4: SẢN PHẨM THỰC TẾ, KIỂM THỬ VÀ (44)
  • KẾT LUẬN (44)
    • 4.1: Sản phẩm thực tế (44)
      • 4.1.1: Phần cứng (44)
      • 4.1.2: Giao diện Web Dashboard (44)
    • 4.2: Kiểm thử (45)
      • 4.2.1: Kiểm thử phần cứng (45)
      • 4.2.2: Kiểm thử giao diện Web Dashboard (46)
    • 4.3: Kết luận (46)
      • 4.3.1: Kết quả đạt được (46)
      • 4.3.2: Những hạn chế còn tồn tại (46)
      • 4.3.3: Phương hướng phát triển (47)
  • TÀI LIỆU THAM KHẢO (47)

Nội dung

Xây dựng giao diện Website hiển thị dữ liệu từ một cảm biến nhiệt độ và độ ẩm.Xây dựng giao diện Website hiển thị dữ liệu từ một cảm biến nhiệt độ và độ ẩm.Xây dựng giao diện Website hiển thị dữ liệu từ một cảm biến nhiệt độ và độ ẩm.Xây dựng giao diện Website hiển thị dữ liệu từ một cảm biến nhiệt độ và độ ẩm.Xây dựng giao diện Website hiển thị dữ liệu từ một cảm biến nhiệt độ và độ ẩm.

TỔNG QUAN VỀ IOT, WEBSITE VÀ

Khái niệm IoT

Công nghệ IoT (Internet Of Things) là hệ thống thiết bị được trang bị cảm biến, cho phép thu thập, xử lý và trao đổi dữ liệu qua Internet hoặc các mạng truyền thông Bằng cách kết nối các "Things" trong khái niệm vật lý và mạng liên kết, IoT tập trung vào việc truyền tải thông tin và khả năng tương tác giữa các thiết bị.

Công nghệ IoT đóng vai trò quan trọng trong cuộc cách mạng công nghệ thông tin, cho phép kết nối các "Things" trong mạng và cung cấp dịch vụ tiên tiến Trước đây, hệ thống thông tin chỉ có hai chiều "Bất kỳ lúc nào" và "Bất kỳ nơi nào", nhưng với IoT, chúng ta đã mở rộng thêm chiều mới là "Bất kỳ vật gì", tạo ra kết nối vạn vật.

Hình 1: Kết nối vạn vật.

Trong hệ thống IoT, "Things" đề cập đến các thiết bị có khả năng nhận diện thông tin từ môi trường và kết nối vào mạng thông tin Những thiết bị này có chức năng thu thập, cung cấp, lưu trữ và xử lý thông tin.

Thiết bị IoT là thành phần chính trong hệ thống IoT, có khả năng giao tiếp với mạng thông qua việc thu thập, lưu trữ và xử lý thông tin Các thiết bị này không chỉ thu thập nhiều loại thông tin khác nhau mà còn chia sẻ dữ liệu với các thiết bị khác trong mạng Ngoài ra, một số thiết bị còn thực hiện các hoạt động chấp hành dựa trên thông tin nhận được từ mạng, góp phần nâng cao hiệu quả hoạt động của hệ thống IoT.

Hình 2: Giao tiếp trong một hệ thống IoT.

Trong một hệ thống IoT, các thiết bị có thể giao tiếp với nhau thông qua gateway, hoặc không cần gateway mà sử dụng mạng lưới thông tin liên lạc trực tiếp Ngoài ra, chúng cũng có thể kết nối và tương tác thông qua mạng nội bộ.

1.1.3: Đặc tính của hệ thống IoT Đặc tính cơ bản của IoT bao gồm: Tính kết nối liên thông (interconnectivity) trong IoT cho phép bất cứ điều gì cũng có thể kết nối với nhau thông qua mạng lưới thông tin và cơ sở hạ tầng liên lạc tổng thể Hệ thống IoT cũng có khả năng cung cấp các dịch vụ liên quan đến “Things”, như bảo vệ sự riêng tư và đảm bảo tính nhất quán giữa Physical Thing và Virtual Thing Để cung cấp được dịch vụ này, cả công nghệ phần cứng và công nghệ phần mềm sẽ phải thay đổi.

Tính không đồng nhất của các thiết bị IoT xuất phát từ sự khác biệt về phần cứng và mạng Dù vậy, những thiết bị này vẫn có khả năng tương tác nhờ vào việc liên kết các mạng và phần mềm.

Tính linh hoạt trong mạng IoT được thể hiện qua khả năng tự động thay đổi trạng thái của các thiết bị, như chuyển đổi giữa chế độ ngủ và hoạt động, cũng như khả năng kết nối hoặc ngắt kết nối Bên cạnh đó, số lượng thiết bị trong mạng cũng có thể biến đổi theo thời gian.

Quy mô lớn của IoT liên quan đến việc quản lý và giao tiếp giữa hàng triệu thiết bị trong hệ thống, vượt xa số lượng máy tính kết nối Internet hiện tại Điều này dẫn đến việc truyền tải một khối lượng thông tin khổng lồ từ các thiết bị, vượt qua khả năng giao tiếp của con người.

1.1.4: Yêu cầu của hệ thống IoT

Một hệ thống IoT phải thoả mãn các yêu cầu sau:

Kết nối trong hệ thống IoT dựa trên sự nhận diện, nghĩa là mỗi "Thing" cần có một ID riêng biệt Hệ thống này phải hỗ trợ kết nối giữa các "Things", với các kết nối được thiết lập dựa trên định danh (ID) của từng "Thing".

Khả năng cộng tác: hệ thống IoT khả năng tương tác qua lại giữa các mạng và

Khả năng tự quản lý của mạng bao gồm các yếu tố như tự quản lý, tự cấu hình, tự phục hồi, tự tối ưu hóa và cơ chế bảo vệ tự động Những tính năng này là cần thiết để mạng có thể thích ứng với nhiều lĩnh vực ứng dụng, môi trường truyền thông khác nhau và đa dạng thiết bị.

Dịch vụ thoả thuận cho phép thu thập, giao tiếp và xử lý tự động dữ liệu giữa các "Things" theo các quy tắc do người vận hành thiết lập hoặc do người dùng tùy chỉnh.

Hệ thống IoT có khả năng tự động xác định và theo dõi vị trí, cung cấp các dịch vụ dựa trên vị trí Tuy nhiên, những dịch vụ này có thể bị giới hạn bởi các quy định pháp luật và cần tuân thủ các yêu cầu về an ninh.

Bảo mật trong IoT là một thách thức lớn do sự kết nối của nhiều "Things", dẫn đến nguy cơ cao về rò rỉ thông tin, xác thực không chính xác và khả năng thay đổi hoặc làm giả dữ liệu.

Bảo vệ tính riêng tư là yếu tố quan trọng trong hệ thống IoT, nơi mỗi "Thing" đều có chủ sở hữu và người sử dụng Dữ liệu thu thập từ các "Things" có thể chứa thông tin cá nhân nhạy cảm Do đó, các hệ thống IoT cần đảm bảo an toàn cho thông tin trong quá trình truyền tải, thu thập, lưu trữ, khai thác và xử lý dữ liệu.

Khái niệm Website

Một website là tập hợp các trang web và nội dung liên quan, được xác định bởi một tên miền chung và xuất bản trên ít nhất một máy chủ web Các trang web thường tập trung vào một chủ đề hoặc mục đích cụ thể như tin tức, giáo dục, thương mại, giải trí hoặc mạng xã hội Liên kết siêu văn bản giữa các trang web giúp người dùng điều hướng, bắt đầu từ trang chủ Tính đến tháng 5 năm 2023, năm trang web được truy cập nhiều nhất là Google Search, YouTube, Facebook, Twitter và Instagram.

Hình 4: Mô hình Website cơ bản.

Một trang web là một tài liệu có cấu trúc, với thành phần cốt lõi là tệp văn bản được viết bằng HTML (HyperText Markup Language), ngôn ngữ này xác định nội dung của trang Ngoài ra, nội dung đa phương tiện như hình ảnh, video và các trang web khác có thể được nhúng trực tiếp vào trang web.

Hình 5: Mô hình trang web cơ bản.

Trang web sử dụng các tệp CSS (Cascading Style Sheets) để xác định cách trình bày nội dung, cung cấp một giải pháp thay thế cho việc nhúng thông tin trực tiếp vào mã HTML.

Trang web có thể tích hợp JavaScript hoặc WebAssembly, cho phép trình duyệt thực thi và tạo ra hành vi động Những trang web này hoạt động giống như phần mềm ứng dụng, được gọi là ứng dụng web.

Website được chia làm 2 loại: Website tĩnh và Website động.

Website tĩnh là loại website mà các trang được lưu trữ trên máy chủ và gửi đến trình duyệt của người dùng dưới dạng HTML CSS được sử dụng để điều chỉnh giao diện của HTML, trong khi hình ảnh thường được tích hợp để tạo nên trải nghiệm trực quan mong muốn Ngoài ra, âm thanh và video cũng có thể được xem là nội dung "tĩnh" nếu chúng phát tự động hoặc không yêu cầu sự tương tác từ người dùng.

Hình 6: Mô hình Website tĩnh.

Các trang web tĩnh có thể tích hợp các thành phần phía máy chủ (SSI) để cải thiện khả năng chỉnh sửa, như việc chia sẻ thanh menu chung trên nhiều trang Mặc dù sử dụng SSI, hành vi của trang web đối với người đọc vẫn giữ tính tĩnh, do đó không được phân loại là trang web động.

Website động là những trang web thường xuyên và tự động được thay đổi hoặc tùy chỉnh Có nhiều hệ thống phần mềm như CGI, Java Servlets, Java Server Pages (JSP), Active Server Pages và ColdFusion (CFML) để phát triển website động Ngoài ra, nhiều khung ứng dụng web và hệ thống mẫu cũng có sẵn cho các ngôn ngữ lập trình phổ biến như Perl, PHP, Python và Ruby, giúp việc tạo ra các trang web động phức tạp trở nên nhanh chóng và dễ dàng hơn.

Hình 7: Mô hình Website động.

Các trang web động cho phép người dùng tương tác thông qua biểu mẫu HTML, quản lý cookie của trình duyệt và tạo ra các trang phản ánh lịch sử nhấp chuột Để thực hiện điều này, HTML động sử dụng mã JavaScript nhằm hướng dẫn trình duyệt Web cách thay đổi nội dung trang một cách linh hoạt.

Khái niệm giao diện IoT

Giao diện IoT, hay giao diện Web Dashboard, là công cụ quan trọng trong nền tảng IoT, giúp người dùng theo dõi và tương tác với các thiết bị kết nối thông qua đồ thị, biểu đồ và các yếu tố giao diện khác.

Hình 8: Một số IoT Dashboard.

Web Dashboard trong nền tảng IoT giúp hiển thị dữ liệu từ các cảm biến một cách trực quan, bao gồm cả thông tin lịch sử và thời gian thực Người dùng có thể kết hợp các tập dữ liệu để khám phá mối tương quan và lập trình hành động dựa trên quy tắc, tối ưu hóa việc sử dụng dữ liệu đã thu thập.

Khả năng giám sát thiết bị IoT thời gian thực cho phép người sử dụng theo dõi vị trí và dữ liệu mà thiết bị đang thu thập Thông qua bảng điều khiển, người dùng có thể xem và điều khiển thiết bị từ xa, đồng thời chia sẻ dữ liệu với khách hàng một cách hiệu quả.

KIẾN TRÚC WEBSITE VÀ

Thiết kế kiến trúc Website

Trước khi bắt tay vào việc xây dựng Website, việc thiết kế kiến trúc Website là rất quan trọng Trong bài viết này, nhóm chúng tôi sẽ trình bày cách thức xây dựng kiến trúc Website một cách chi tiết.

Dữ liệu được thu thập từ cảm biến DHT11 thông qua vi điều khiển ESP32 và gửi về server MQTT Broker qua giao thức MQTT MQTT Broker sau đó chuyển tiếp dữ liệu đến máy chủ Web, nơi dữ liệu được lưu trữ trong cơ sở dữ liệu MySQL Đồng thời, dữ liệu cũng được hiển thị trên Web Dashboard thông qua giao thức WebSocket Khi người dùng yêu cầu dữ liệu từ Web Dashboard, Web Server sẽ sử dụng kỹ thuật AJAX để truy vấn và trả về dữ liệu từ cơ sở dữ liệu.

Giao thức MQTT

MQTT (Message Queuing Telemetry Transport) là một giao thức nhắn tin nhẹ, lý tưởng cho việc liên lạc giữa các thiết bị và hệ thống máy tính Ban đầu, MQTT được phát triển cho các mạng SCADA và các kịch bản sản xuất với băng thông thấp Gần đây, giao thức này đã trở nên phổ biến nhờ sự bùng nổ của Internet-of-Things (IoT).

MQTT là một giao thức truyền thông nhẹ và đơn giản, được thiết kế đặc biệt cho các ứng dụng IoT (Internet of Things) Giao thức này nhằm mục đích truyền tải thông tin nhanh chóng và hiệu quả giữa các thiết bị trong mạng IoT, đồng thời tối ưu hóa băng thông và tiết kiệm năng lượng.

2.2.3: MQTT Broker và MQTT Client

MQTT gồm 2 phần chính là Broker và Client:

2.2.3.1: MQTT Broker: Định nghĩa: MQTT Broker là một máy chủ (server) hoặc dịch vụ trung gian (intermediary service) mà các thiết bị MQTT kết nối tới để gửi và nhận các tin nhắn. Nhiệm vụ chính của broker là đảm bảo rằng thông điệp được định tuyến đúng đắn tới đích.

Điều phối (Routing) là quá trình mà Broker xác định vị trí gửi tin nhắn dựa trên các chủ đề (topics) Nó quyết định thiết bị nào trong số các thiết bị kết nối sẽ nhận được tin nhắn, đảm bảo thông tin được phân phối chính xác và hiệu quả.

MQTT Broker có chức năng lưu trữ tin nhắn, cho phép gửi lại các tin nhắn này cho các thiết bị mới kết nối sau khi chúng đăng ký một chủ đề mới.

 Quản lý kết nối : Broker theo dõi trạng thái kết nối của các thiết bị và quản lý chúng.

Broker chịu trách nhiệm chứng thực và kiểm soát quyền truy cập, đảm bảo rằng chỉ những người dùng được phép mới có quyền truy cập vào các chủ đề liên quan.

2.2.3.2: MQTT Client. Định nghĩa: MQTT Client là bất kỳ thiết bị nào (có thể là cảm biến, máy tính, điện thoại, hoặc bất kỳ thiết bị nào khác) được cài đặt phần mềm MQTT client, cho phép nó gửi và nhận tin nhắn thông qua giao thức MQTT.

 Kết nối đến MQTT Broker: MQTT Client kết nối tới một MQTT Broker để gửi và nhận thông điệp.

 Publish (Xuất bản): MQTT Client có thể gửi tin nhắn tới các chủ đề (topics) trên broker.

 Subscribe (Đăng ký): MQTT Client có thể đăng ký nhận tin nhắn từ các chủ đề mà nó quan tâm.

Xử lý tin nhắn trong giao thức MQTT yêu cầu MQTT Client sử dụng phần mềm hoặc ứng dụng chuyên dụng MQTT Broker đóng vai trò là máy chủ trung gian, quản lý và định tuyến các tin nhắn giữa các thiết bị Các MQTT Client, là thiết bị hoặc phần mềm cài đặt giao thức MQTT, cho phép gửi và nhận tin nhắn thông qua MQTT Broker.

2.2.4: Cách thức hoạt động của giao thức MQTT

Giao thức MQTT hoạt động theo cách sau:

Máy khách MQTT thiết lập kết nối bằng cách gửi thông điệp CONNECT đến trình truyền tải MQTT, bao gồm thông tin như tên người dùng, mật khẩu và các cài đặt cần thiết Sau khi nhận được thông điệp CONNECT, trình truyền tải MQTT xác nhận và thiết lập kết nối thông qua thông điệp CONNACK.

Máy khách MQTT có khả năng xuất bản thông điệp tới một chủ đề cụ thể bằng cách gửi thông điệp PUBLISH, chứa nội dung và tên chủ đề, cho phép các máy khách khác đã đăng ký theo dõi nhận thông điệp này Thông điệp có thể là dữ liệu từ cảm biến, trạng thái thiết bị hoặc bất kỳ thông tin nào mà máy khách muốn chia sẻ Để nhận thông điệp, máy khách MQTT cần gửi thông điệp SUBSCRIBE, trong đó chứa tên chủ đề mà họ muốn theo dõi Khi trình truyền tải MQTT nhận được thông điệp SUBSCRIBE, nó sẽ ghi nhớ các chủ đề đã đăng ký và chuyển tiếp thông điệp tương ứng đến máy khách đó.

Khi trình truyền tải MQTT nhận thông điệp PUBLISH từ một máy khách, nó sẽ chuyển tiếp thông điệp này đến tất cả các máy khách đã đăng ký theo dõi chủ đề tương ứng, cho phép các máy khách nhận thông điệp thông qua các thông điệp PUBLISH.

Hình 12: Mô hình giao thức MQTT cơ bản.

2.2.5: Nguyên tắc hoạt động của MQTT

Nguyên tắc hoạt động của MQTT dựa trên mô hình "publisher-subscriber", trong đó các thiết bị IoT đóng vai trò là người gửi (publisher) hoặc người nhận (subscriber) Các bước chính của hoạt động MQTT bao gồm việc đăng ký, gửi và nhận thông điệp giữa các thiết bị, giúp tối ưu hóa việc truyền tải dữ liệu trong mạng IoT.

Publisher là thiết bị hoặc ứng dụng chịu trách nhiệm gửi tin nhắn đến các chủ đề Khi muốn gửi tin nhắn, publisher kết nối với broker và chỉ định chủ đề nhận tin.

Subscriber là thiết bị hoặc ứng dụng cho phép người dùng đăng ký nhận tin nhắn từ các chủ đề cụ thể Khi người dùng muốn nhận thông tin từ một chủ đề, họ sẽ kết nối với broker và thực hiện đăng ký cho chủ đề đó.

2.2.6: Tầm quan trọng của giao thức MQTT

Giao thức MQTT có tầm quan trọng lớn trong lĩnh vực IoT vì các lợi ích mà nó mang lại:

MQTT là giao thức nhẹ và hiệu quả, được tối ưu hóa để tiết kiệm tài nguyên và tối ưu hóa việc truyền dữ liệu Với việc sử dụng ít tài nguyên và băng thông mạng, MQTT giúp giảm thiểu tải cho các thiết bị IoT và mạng.

Ngôn ngữ JavaScript và Node.js

JavaScript là ngôn ngữ lập trình quan trọng giúp tạo ra các trang web tương tác, từ việc làm mới bảng tin trên mạng xã hội đến hiển thị hình ảnh động và bản đồ tương tác Với khả năng cải thiện trải nghiệm người dùng, JavaScript đóng vai trò là một trong những công nghệ cốt lõi của World Wide Web, hoạt động như một ngôn ngữ kịch bản phía máy khách.

Trước đây, các trang web tĩnh giống như các trang trong sách, chỉ hiển thị thông tin theo bố cục cố định và không đáp ứng được nhu cầu của người dùng như các trang web hiện đại JavaScript đã trở thành một công nghệ quan trọng phía trình duyệt, giúp tăng cường tính linh hoạt cho các ứng dụng web Nhờ vào JavaScript, các trình duyệt có khả năng phản hồi tương tác của người dùng và thay đổi bố cục nội dung trên trang web một cách linh hoạt.

Hình 13: Mã JavaScript dùng để hiển thị danh sách các ngày trong tuần.

Khi JavaScript phát triển, các nhà phát triển đã tạo ra thư viện và khung lập trình, mở rộng việc sử dụng ngôn ngữ này ra ngoài trình duyệt web Hiện nay, người dùng có thể áp dụng JavaScript cho cả phát triển phía máy khách và máy chủ.

JavaScript là một ngôn ngữ lập trình được phân loại là ngôn ngữ viết tập lệnh hoặc ngôn ngữ diễn giải Mã JavaScript được diễn giải trực tiếp bởi công cụ JavaScript, chuyển đổi nó thành mã ngôn ngữ máy cơ bản Công cụ JavaScript là chương trình máy tính thực thi mã JavaScript.

JavaScript phía máy khách là cách JavaScript hoạt động trong trình duyệt của người dùng, với công cụ JavaScript được tích hợp trong mã trình duyệt Tất cả các trình duyệt web phổ biến đều có các công cụ JavaScript riêng Các nhà phát triển ứng dụng web sử dụng JavaScript để viết mã với các hàm liên kết với nhiều sự kiện khác nhau, chẳng hạn như nhấp chuột hoặc di chuột, cho phép thực hiện các thay đổi đối với HTML và CSS.

JavaScript phía máy chủ là việc sử dụng ngôn ngữ lập trình này để xử lý logic trong máy chủ back-end Công cụ JavaScript hoạt động trực tiếp trên máy chủ, cho phép truy cập cơ sở dữ liệu và thực hiện các phép toán logic, đồng thời phản hồi các sự kiện do hệ điều hành kích hoạt Lợi ích lớn nhất của việc viết tập lệnh phía máy chủ là khả năng tùy chỉnh linh hoạt phản hồi của trang web, dựa trên yêu cầu và quyền truy cập của người dùng cũng như thông tin mà họ yêu cầu từ trang web.

Thư viện JavaScript là tập hợp mã viết sẵn giúp các nhà phát triển web tái sử dụng để thực hiện các hàm chuẩn Mã từ thư viện này được tích hợp vào dự án khi cần thiết Nếu xem mã ứng dụng JavaScript như một ngôi nhà, thì các thư viện JavaScript giống như đồ nội thất sẵn có, giúp cải thiện chức năng và tính thẩm mỹ cho ngôi nhà đó.

Node.js là môi trường runtime mã nguồn mở cho JavaScript, cho phép chạy ứng dụng web bên ngoài trình duyệt Được phát triển bởi Ryan Dahl vào năm 2009, Node.js là giải pháp lý tưởng cho các ứng dụng xử lý nhiều dữ liệu nhờ vào mô hình sự kiện không đồng bộ.

Node.js cho phép phát triển ứng dụng web bằng JavaScript, sử dụng cho cả công cụ dòng lệnh và lập trình kịch bản phía máy chủ Việc chạy mã JavaScript trên máy chủ giúp tạo nội dung trang web động trước khi gửi đến trình duyệt của người dùng Điều này tạo ra mô hình "JavaScript everywhere", giúp thống nhất quá trình phát triển ứng dụng web với một ngôn ngữ duy nhất, thay vì phải sử dụng nhiều ngôn ngữ khác nhau cho lập trình phía máy chủ và phía khách.

2.3.2.3: Cấu trúc của Node.js.

Các mô-đun trong NodeJS, giống như thư viện JavaScript, cung cấp nhiều chức năng quan trọng cho các ứng dụng Để sử dụng một mô-đun trong NodeJS, người dùng cần áp dụng hàm request() và đặt tên mô-đun trong dấu ngoặc đơn NodeJS sở hữu nhiều mô-đun thiết yếu, hỗ trợ các chức năng cơ bản cho phát triển ứng dụng web.

Bảng điều khiển cung cấp cách thức gỡ lỗi tương tự như bảng điều khiển JavaScript cơ bản trong trình duyệt, cho phép in các thông báo ra stdout và stderr.

NodeJS được phát triển dựa trên lập trình đơn luồng, nhưng mô-đun Cluster cho phép thực hiện đa luồng Cluster tạo ra các quy trình con chia sẻ cùng một cổng máy chủ và chạy đồng thời, giúp tối ưu hóa hiệu suất ứng dụng.

In Node.js, global variables, also known as global scopes, are accessible across all modules and include functions, modules, strings, and more Common global variables that users may encounter include dirname, filename, exports, module, and require.

Xử lý lỗi trong Node.js là một phần quan trọng trong quá trình thực thi lệnh, với các loại lỗi như lỗi JavaScript tiêu chuẩn, lỗi hệ thống, lỗi người dùng và lỗi xác nhận Để đảm bảo ứng dụng hoạt động bình thường, các lỗi này cần được xử lý kịp thời và nhanh chóng thông qua các exception.

Streaming là công cụ cho phép người dùng đọc và ghi dữ liệu liên tục Buffer thường được sử dụng để xử lý các Stream chứa dữ liệu nhị phân Stream được chia thành 4 loại khác nhau.

 Readable: Là loại stream mà từ đó dữ liệu có thể đọc được

 Writable: Là loại stream mà dữ liệu có thể được viết lên đó

 Duplex: Là loại stream có thể đọc và viết được

 Transform: Là loại stream có thể thao tác dữ liệu trong khi nó đang được đọc hoặc viết.

Domain: Đây là một mô-đun giúp chặn các lỗi chưa được xử lý trong quá trình hoạt động, và có thể chia thành hai phương thức đó là:

 Internal Binding (lệnh chạy trong phương thức run): Error emitter thực thi code trong phương thức run.

 External Binding (được thêm trực tiếp vào miền bằng mã, thông qua phương thức thêm): Error emitter được thêm thẳng vào domain qua phương thức add của nó.

Hệ quản trị cơ sở dữ liệu MySQL

MySQL là một hệ quản trị cơ sở dữ liệu mã nguồn mở phổ biến, được sử dụng rộng rãi trên toàn cầu Hệ thống này cho phép người dùng lưu trữ, truy xuất và quản lý dữ liệu trong môi trường ứng dụng MySQL được phát triển bởi một nhóm nhà phát triển độc lập và hiện đang được Oracle Corporation sở hữu và duy trì.

MySQL hỗ trợ nhiều ngôn ngữ lập trình như PHP, Java, Python và C++, giúp các ứng dụng web và ứng dụng khác dễ dàng tương tác với cơ sở dữ liệu Nó cung cấp các tính năng quan trọng như tạo, sửa đổi và xóa cơ sở dữ liệu, truy vấn dữ liệu, quản lý người dùng và quyền truy cập, đồng thời đảm bảo tính toàn vẹn và an ninh của dữ liệu.

MySQL sở hữu một cộng đồng lớn mạnh và phong phú, cung cấp nhiều tài liệu, diễn đàn và hỗ trợ từ người dùng Chính vì vậy, MySQL đã trở thành một trong những lựa chọn hàng đầu cho các ứng dụng web, ứng dụng di động và các dự án phát triển phần mềm khác.

2.4.2: Thuật ngữ thường gặp của MySQL

Cơ sở dữ liệu (Database) là một tập hợp dữ liệu được tổ chức theo cùng một cấu trúc trong một bộ dữ liệu chung (dataset) Cơ sở dữ liệu được sắp xếp và liên kết chặt chẽ, tương tự như một bảng tính.

 Open source: Được hiểu là mã nguồn mở, Open source cho phép mọi người dùng sử dụng, cài đặt và tùy chỉnh nó.

Mô hình client-server là cấu trúc hoạt động của phần mềm RDBMS, trong đó máy tính cài đặt và vận hành phần mềm này được gọi là client (máy khách) Khi cần truy cập dữ liệu, client sẽ kết nối với máy chủ (server) RDBMS, tạo thành một hệ thống tương tác hiệu quả.

MySQL Server là một hệ thống máy tính hoặc một nhóm máy tính được cài đặt phần mềm MySQL, cho phép người dùng lưu trữ dữ liệu và cung cấp khả năng truy cập cho các máy khách để quản lý thông tin hiệu quả.

MySQL client là phần mềm dùng để thực hiện truy vấn tới MySQL server và nhận kết quả Nói cách khác, MySQL Client có thể được hiểu là đoạn mã PHP script chạy trên một máy tính hoặc trên cùng một server, giúp kết nối tới cơ sở dữ liệu MySQL.

2.4.3: Ưu, nhược điểm của MySQL

2.4.3.1: Ưu điểm. Được sử dụng rộng rãi bởi các website lớn với lượt truy cập ‘khủng’, MySQL có được những ưu điểm và tiện ích nổi bật vượt xa các phần mềm khác như:

MySQL là một hệ quản trị cơ sở dữ liệu dễ sử dụng và thân thiện với người dùng Phần mềm này tương thích với nhiều hệ điều hành khác nhau, cung cấp nhiều chức năng tiện ích mạnh mẽ cho người sử dụng.

 Bảo mật cao: MySQL sở hữu khá nhiều tính năng bảo mật, bao gồm các loại hình bảo mật cấp cao.

 Đa tính năng: MySQL cung cấp nhiều tính năng mà bất cứ hệ quản trị CSDL quan hệ nào cũng phải mong đợi

MySQL sở hữu khả năng vận hành mạnh mẽ, cho phép xử lý một khối lượng dữ liệu lớn một cách hiệu quả Hơn nữa, người dùng có thể dễ dàng mở rộng hệ thống khi có nhu cầu, đảm bảo tính linh hoạt và khả năng phát triển cho các ứng dụng.

 Nhanh chóng: Tốc độ hoạt động của MySQL nhanh hơn các phần mềm khác nhờ các tiêu chuẩn được tích hợp sẵn

 Có thể khôi phục dữ liệu: MySQL cho phép người dùng khôi phục dữ liệu, tránh khỏi ảnh hưởng của các sự cố.

 Bị giới hạn: MySQL bị hạn chế về một vài tính năng mà các ứng dụng có thể sẽ cần đến.

 Độ tin cậy không quá cao: So với các hệ quản trị CSDL quan hệ khác, độ tin cậy của MySQL không quá cao.

 Bị hạn chế về dung lượng: Số bản ghi trong MySQL càng tăng thì truy xuất dữ liệu càng trở nên khó khăn do hạn chế về dung lượng.

2.4.4: Phương thức hoạt động của MySQL

Hình 16: Kiến trúc của MySQL.

SQL commands (Transact-SQL) are the MySQL language used for data exchange between the Client machine and the MySQL Server There are four types of MySQL languages utilized.

 Ngôn ngữ định nghĩa dữ liệu (Data Definition Language).

 Ngôn ngữ truy vấn dữ liệu (Structured Query Language).

 Ngôn ngữ thao tác dữ liệu (Data Manipulation Language).

 Ngôn ngữ điều khiển dữ liệu (Data Control Language).

MySQL lưu trữ dữ liệu trong các bảng, mỗi bảng chứa nhiều hàng (bản ghi) và cột (trường dữ liệu) có liên quan đến nhau.

MySQL cung cấp các câu lệnh phong phú để kết nối, yêu cầu và lấy dữ liệu phục vụ cho trang web như:

 Chỉnh sửa cơ bản các hàng trong 1 quan hệ: chèn, xóa, cập nhật.

 Thêm, xóa và sửa đổi các đối tượng trong của cơ sở dữ liệu.

Kiểm soát quyền truy cập vào cơ sở dữ liệu và các đối tượng liên quan là rất quan trọng để đảm bảo tính bảo mật, tính nhất quán và các ràng buộc của cơ sở dữ liệu được duy trì.

2.4.5: Quy trình thiết kế cơ sở dữ liệu

Phân tích yêu cầu là quá trình xác định và ghi lại rõ ràng các cơ sở dữ liệu cần thiết, bao gồm mục đích sử dụng, dữ liệu sẽ được lưu trữ và cách các mục dữ liệu liên quan đến nhau Điều này thường đòi hỏi một nghiên cứu chi tiết về các yêu cầu ứng dụng, cùng với việc tổ chức các cuộc trao đổi và thảo luận với những người ở các vai trò khác nhau, những người sẽ sử dụng và tương tác với cơ sở dữ liệu và ứng dụng.

Thiết kế khái niệm: Khi xác định yêu cầu của cơ sở dữ liệu, chúng ta tinh gọn chúng thành một mô tả chính thức cho thiết kế cơ sở dữ liệu.

Logical design: Ánh xạ thiết kế cơ sở dữ liệu vào một hệ quản trị cơ sở dữ liệu thực tế và các bảng cơ sở dữ liệu.

XÂY DỰNG HỆ THỐNG PHẦN CỨNG,

Xây dựng hệ thống phần cứng

ESP32 là một dòng vi điều khiển giá rẻ và tiết kiệm năng lượng, hỗ trợ WiFi và Bluetooth dual-mode Sử dụng bộ vi xử lý Tensilica Xtensa LX6 với cả hai biến thể lõi kép và lõi đơn, ESP32 tích hợp nhiều thành phần như công tắc antenna, RF balun, bộ khuếch đại công suất và bộ lọc Sản phẩm này được phát triển bởi Espressif Systems, một công ty có trụ sở tại Thượng Hải, và được sản xuất bởi TSMC với công nghệ 40 nm, kế thừa từ vi điều khiển ESP8266.

3.1.1.2: Cấu tạo và nguyên tắc hoạt động.

KIT ESP32 được trang bị bộ vi xử lý Xtensa 32-bit LX6 với cấu trúc lõi kép hoặc lõi đơn, hoạt động ở tần số tối đa 240 MHz (160 MHz cho các phiên bản ESP32-S0WD và ESP32-U4WDH) và đạt hiệu suất lên đến 600 MIPS (200 MIPS cho ESP32-S0WD/ESP32-U4WDH).

IC CP2102 là một cổng giao tiếp USB-UART, cho phép chuyển đổi dữ liệu giữa giao tiếp USB và UART, giúp kết nối vi điều khiển với máy tính dễ dàng hơn Với tốc độ truyền lên đến 1Mbps, CP2102 là lựa chọn lý tưởng cho các ứng dụng điện tử.

KIT sử dụng IC ổn áp AMS1117, có khả năng cung cấp dòng điện tối đa 1A Điện áp đầu ra của IC này có thể điều chỉnh từ 1,5V đến 5V.

 Điện áp nguồn (USB): 5V DC.

 Đầu vào/Đầu ra điện áp: 3.3V DC.

 Công suất tiêu thụ: 5μA trong hệ thống treo chế độ.A trong hệ thống treo chế độ.

 Hiệu suất: Lên đến 600 DMIPS.

 Tần số: lên đến 240MHz.

 Wifi: 802.11 B/g/n/E/I (802.11N @ 2.4 GHz lên đến 150 Mbit/S).

 Bluetooth: 4.2 BR/EDR BLE 2 chế độ điều khiển.

 Bộ nhớ: 448 Kbyte ROM, 520 Kbyte SRAM, 6 Kbyte SRAM trên RTC và QSPI Hỗ trợ đèn flash / SRAM chip.

 GPIO kỹ thuật số: 24 chân.

 Kỹ thuật số Analog: 12bit SAR loại ADC, hỗ trợ các phép đo lên đến 18 kênh.

 Bảo mật: IEEE 802.11, bao gồm cả WFA, WPA/WPA2 và WAPI.

 Phần cứng tăng tốc mật mã học: AES, SHA-2, RSA.

Hình 18: Sơ đồ chân KIT ESP32.

3.1.2: Cảm biến nhiệt độ, độ ẩm DHT11

Cảm biến DHT11 là thiết bị chuyên dụng để đo nhiệt độ và độ ẩm trong môi trường, có khả năng đo nhiệt độ từ 0 đến 50 độ C và độ ẩm trong khoảng 20% đến 90%, với độ chính xác tương đối cao.

3.1.2.2: Cấu tạo và nguyên tắc hoạt động.

Cảm biến DHT11 sử dụng một cặp cảm biến, bao gồm một cảm biến đo nhiệt độ và một cảm biến đo độ ẩm.

Hình 20: Điện trở nhiệt NTC.

DHT11 sử dụng điện trở nhiệt để đo nhiệt độ, với điện trở có trở kháng thay đổi rõ rệt dưới tác động của nhiệt độ, khác biệt so với điện trở thông thường "NTC" (Hệ số nhiệt độ âm) cho thấy trở kháng giảm khi nhiệt độ tăng Để đo độ ẩm, DHT11 có thành phần với hai điện cực phủ chất hấp thụ độ ẩm, khi hút hơi nước, chất này giải phóng ion, tăng khả năng dẫn điện giữa các điện cực.

Hình 21: Cảm biến độ ẩm.

Sự thay đổi trở kháng giữa hai điện cực có mối quan hệ nghịch đảo với độ ẩm tương đối Cụ thể, khi độ ẩm không khí tăng lên, trở kháng giữa các điện cực sẽ giảm, ngược lại, khi độ ẩm giảm, trở kháng giữa các điện cực sẽ tăng.

 Phạm vi đo nhiệt độ: Từ 0ºC đến 50ºC.

 Độ chính xác khi đo nhiệt độ: +/-2ºC.

 Phạm vi đo độ ẩm: 20% đến 80%.

 Độ chính xác khi đo độ ẩm: +/-5%.

 Thời gian lấy mẫu: 1 giây.

Hình 22: Sơ đồ chân cảm biến DHT11.

3.1.3: Chương trình thu thập và gửi dữ liệu cảm biến

Sử dụng Arduino IDE, chúng em tiến hành viết phần mềm cho nút cảm biến sử dụng vi điều khiển ESP32.

Hình 23: Chương trình thu thập và gửi dữ liệu cảm biến.

Trong chương trình, chúng tôi sử dụng các thư viện Adafruit_Sensor, DHT và Wire để thu thập dữ liệu từ cảm biến DHT11 Thư viện WiFi và WiFiClientSecure thiết lập kết nối WiFi giữa ESP32 và SSID đã định sẵn Để kết nối MQTT giữa ESP32 và MQTT Broker, chúng tôi sử dụng thư viện PubSubClient Thư viện ArduinoJson giúp chuyển đổi mảng dữ liệu thành định dạng JSON (JavaScript Object Notation), trong khi thư viện SimpleTimer được áp dụng để thực thi các chương trình con theo thời gian đã được định trước.

Cảm biến DHT11 được kết nối với chân 16 của ESP32, cho phép chương trình đọc dữ liệu mỗi giây Dữ liệu thu được sẽ được hiển thị trên màn hình Serial qua kết nối UART giữa Chip CP2101 và máy tính Sau mỗi năm giây, chương trình sẽ gửi dữ liệu lên MQTT Broker.

Xây dựng MQTT Broker

HiveMQ là nền tảng truyền nhận dữ liệu dựa trên giao thức MQTT, nổi bật với tốc độ nhanh, hiệu quả và độ tin cậy cao Nền tảng này hỗ trợ truyền dữ liệu hai chiều giữa các thiết bị Internet of Things, giúp tối ưu hóa kết nối và giao tiếp trong hệ sinh thái IoT.

HiveMQ Cloud là nền tảng MQTT hoàn toàn được quản lý trên đám mây, giúp người dùng triển khai ứng dụng IoT mọi lúc, mọi nơi mà không cần lo lắng về việc thiết lập hay bảo trì hạ tầng Với HiveMQ Cloud, các nhà phát triển có thể nhanh chóng bắt tay vào việc xây dựng ứng dụng IoT dựa trên MQTT.

Hình 25: Giao diện HiveMQ Cloud.

Sau khi tạo Cluster, HiveMQ cung cấp URL Cluster và Port để kết nối với MQTT Broker Trước khi thực hiện kết nối, người dùng cần truy cập vào Access Management để tạo tài khoản có quyền Publish và Subscribe Người dùng có thể sử dụng Web Client để thực hiện việc Publish hoặc Subscribe các Topic một cách trực tiếp.

Xây dựng cơ sở dữ liệu

XAMPP là ứng dụng lý tưởng để thiết lập và quản lý máy chủ nội bộ (localhost), cung cấp một giải pháp toàn diện cho việc tạo máy chủ Web với các thành phần tích hợp như Apache, PHP, MySQL, FTP Server và Mail Server Với XAMPP, người dùng có thể dễ dàng giả lập môi trường hosting để thử nghiệm website ngay trên máy tính cá nhân mà không cần phải đầu tư vào hosting hoặc VPS.

3.3.2: Tạo cơ sở dữ liệu

Hình 27: Cơ sở dữ liệu.

Chúng em đã tạo cơ sở dữ liệu mang tên data_mangcambien, trong đó bao gồm một bảng gọi là datasensors Bảng datasensors chứa ba cột dữ liệu quan trọng.

 Cột time kiểu timestamp có mục đích lưu thời gian dữ liệu được ghi vào cơ sở dữ liệu.

 Cột temperature kiểu float có mục đích lưu trữ dữ liệu nhiệt độ nhận được.

 Cột humidity kiểu float có mục đích lưu trữ dữ liệu độ ẩm nhận được.

Xây dựng giao diện Web Dashboard

3.4.1: Xây dựng giao diện Website hiển thị giá trị cảm biến

Using Visual Studio Code, we developed both the front-end and back-end of the website The front-end interface, designed with HTML and CSS, displays the sensor values effectively.

Hình 28: Front-end của Website.

Sau khi xây dựng bằng HTML, phần front-end sẽ được chuyển đổi sang định dạng EJS để sử dụng trong phần back-end của website Các thẻ div có class card-header sẽ được gán id riêng biệt nhằm thay đổi màu sắc khi nhiệt độ và độ ẩm vượt quá ngưỡng đã được lập trình.

Front-end cung cấp thông tin thời gian hiện tại, cùng với giá trị nhiệt độ và độ ẩm hiện tại, thông qua API của OpenWeatherMap tại thành phố Hà Nội.

Hình 29: Các module Node.js được sử dụng.

Back-end của website được xây dựng bằng Express.js, một khung ứng dụng web back end cho phép phát triển các API RESTful với Node.js Express hỗ trợ người dùng thiết lập các lớp trung gian để xử lý các yêu cầu HTTP, đồng thời cho phép định nghĩa router để thực hiện các hành động khác nhau dựa trên phương thức HTTP và URL Ngoài ra, Express cũng cho phép trả về các trang HTML dựa trên các tham số đã được chỉ định.

EJS, hay "Embedded JavaScript," là ngôn ngữ mẫu được sử dụng trong phát triển ứng dụng web, cho phép tạo ra các trang web động bằng cách kết hợp mã JavaScript với HTML Ngôn ngữ này thường được sử dụng cùng với Node.js và các framework như Express để xây dựng giao diện người dùng linh hoạt dựa trên dữ liệu từ máy chủ.

Moment.js là một thư viện dùng để thao tác xử lý datetime trong JavaScript. Moment.js được thiết kế hoạt động trong cả Browser và Node.js.

MQTT.js là thư viện MQTT cho JavaScript, hoạt động hiệu quả trên cả trình duyệt và Node.js Thư viện này mang đến giải pháp đơn giản và đáng tin cậy để kết nối với các MQTT Brokers, cho phép người dùng dễ dàng publish và subscribe các topics MQTT.

MySQL.js là một trình điều khiển JavaScript giúp người dùng kết nối với cơ sở dữ liệu MySQL Được phát triển bằng JavaScript, MySQL.js cho phép thực hiện các truy vấn SQL và nhận kết quả trả về.

Socket.IO là thư viện sự kiện cho ứng dụng web thời gian thực, cho phép giao tiếp hai chiều đồng thời giữa máy khách và máy chủ Thư viện này được phát triển dựa trên giao thức WebSockets, công nghệ hỗ trợ kết nối trực tiếp giữa client và server thông qua TCP socket.

3.4.2: Xây dựng giao diện Website hiển thị dữ liệu thu thập

Giao diện Website hiển thị dữ liệu thu thập được xây dựng tương tự như giao diện hiển thị giá trị cảm biến, bao gồm cả Front-end và Back-end Tuy nhiên, điểm khác biệt chính là giao diện này sử dụng kỹ thuật AJAX để truy xuất dữ liệu từ cơ sở dữ liệu MySQL.

DataTables.js là một plug-in cho thư viện jQuery Javascript, được sử dụng để xử lý và hiển thị bảng biểu trên các trang HTML Công cụ này cho phép người dùng thực hiện các chức năng như phân trang, tìm kiếm và sắp xếp dữ liệu theo nhiều cột khác nhau.

Ngày đăng: 14/11/2023, 20:05

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w