1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

NGHIÊN CỨU, XÂY DỰNG IOT GATEWAY PHỤC VỤ TRONG NÔNG NGHIỆP CÔNG NGHỆ CAO

89 4 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 đề Nghiên cứu, xây dựng IoT Gateway phục vụ trong nông nghiệp công nghệ cao
Tác giả Hoàng Trung Thông
Người hướng dẫn TS. Trần Ngọc Quý
Trường học Học viện Kỹ thuật Mật mã
Chuyên ngành Kỹ thuật Điện tử Viễn thông
Thể loại Đồ án tốt nghiệp
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 89
Dung lượng 10,32 MB
File đính kèm XÂY DỰNG IOT GATEWAY NÔNG NGHIỆP CAO.zip (10 MB)

Cấu trúc

  • CHƯƠNG 1. CƠ SỞ LÝ THUYẾT (15)
    • 1.1. Đặt vấn đề (15)
    • 1.2. IoT Gateway (16)
      • 1.2.1. Khái niệm về IoT Gateway (16)
      • 1.2.2. Sơ đồ tổng quát của IoT Gateway (18)
    • 1.2. Các tính năng chính của IoT Gateway (0)
    • 1.3. Các công nghệ thiết kế IoT Gateway (0)
      • 1.3.1 Thiết kế khối điều khiển trung tâm (0)
      • 1.3.2. Các công nghệ truyền thông (0)
    • 1.4. Giao thức đa truy nhập (0)
    • 1.5. Các IoT Gateway hiện nay (0)
      • 1.5.1. Gateway 4G/5G công nghiệp Teltonika TRB500 (0)
      • 1.5.2. IoT Lotoda Gateway (0)
  • CHƯƠNG 2. THIẾT KẾ IOT GATEWAY (29)
    • 2.1. Sơ đồ tổng quát thiết kế IoT Gateway (29)
      • 2.1.1. Chức năng yêu cầu (29)
      • 2.1.2. Sơ đồ tổng quát thiết kế (29)
      • 2.2.2. IoT Gateway nhận dữ liệu từ nhiều IoT Node áp dụng giao thức TDMA (35)
      • 2.2.3. IoT Gateway gửi dữ liệu lên Cloud Firebase (37)
      • 2.2.4. Lưu đồ thuật toán IoT Gateway (38)
    • 2.3. Thiết kế IoT Node (39)
      • 2.3.1. IoT Node gửi dữ liệu đến IoT Gateway (39)
      • 2.3.2. Lưu đồ thuật toán Node (40)
    • 2.4. Thiết kế cơ sở dữ liệu để lưu trữ dữ liệu với Firebase (42)
    • 2.5. Thiết kế giao diện ứng dụng quản lý cho IoT Gateway (46)
  • CHƯƠNG 3. TRIỂN KHAI IOT GATEWAY, THỬ NGHIỆM (49)
    • 3.1. Triển khai IoT Gateway (49)
      • 3.1.1. Linh kiện phần cứng (49)
      • 3.1.2. Sơ đồ thiết kế mạch (61)
    • 3.2. Triển khai IoT Node (63)
      • 3.2.3. Mạch đi dây PCB (67)
      • 3.2.4. Mạch thiết kế 3D (68)
    • 3.3. Thử nghiệm IoT Gateway (68)
      • 3.3.1. Sơ đồ thử nghiệm (68)
      • 3.3.2. Kết quả thử nghiệm (69)
      • 3.3.3. Đánh giá kết quả thử nghiệm (74)
  • TÀI LIỆU THAM KHẢO (0)
  • PHỤ LỤC (0)

Nội dung

Điểm báo cáo đồ án 9.5 KMA (Ngành nông nghiệp là một ngành truyền thống của nước ta nhưng hiện vẫn chưa đạt được sự phát triển mạnh mẽ. Nguyên nhân chủ yếu là do lối canh tác truyền thống, đối mặt với nhiều hạn chế và thiếu hiệu quả. Để đổi mới và thúc đẩy sự phát triển, việc áp dụng công nghệ và kỹ thuật mới trở thành một hướng đi quan trọng, mang đến làn gió mới cho ngành nông nghiệp của chúng ta. Sự ứng dụng của Internet of Things (IoT) trong lĩnh vực nông nghiệp hứa hẹn mang lại nhiều ưu điểm cho người nông dân, đặc biệt là trong việc nâng cao hiệu quả trồng trọt và kinh tế)

CƠ SỞ LÝ THUYẾT

Đặt vấn đề

Ngành nông nghiệp là một ngành truyền thống của nước ta nhưng hiện vẫn chưa đạt được sự phát triển mạnh mẽ Nguyên nhân chủ yếu là do lối canh tác truyền thống, đối mặt với nhiều hạn chế và thiếu hiệu quả Để đổi mới và thúc đẩy sự phát triển, việc áp dụng công nghệ và kỹ thuật mới trở thành một hướng đi quan trọng, mang đến "làn gió mới" cho ngành nông nghiệp của chúng ta Sự ứng dụng của Internet of Things (IoT) trong lĩnh vực nông nghiệp hứa hẹn mang lại nhiều ưu điểm cho người nông dân, đặc biệt là trong việc nâng cao hiệu quả trồng trọt và kinh tế Trong bối cảnh khí hậu ngày càng trở nên khắc nghiệt, việc tự theo dõi thời tiết và can thiệp để chăm sóc cây trồng theo sự biến đổi của khí hậu đòi hỏi nhiều thời gian và công sức, và thường không đạt được hiệu quả cao Tuy nhiên, sự can thiệp của máy móc và hệ thống cảm biến có thể giúp người nông dân giám sát một cách chính xác và hiệu quả nhất.

Hiện nay, IoT được tích hợp vào nông nghiệp ở mọi giai đoạn, từ sản xuất đến đóng gói và phân phối nông sản đến người tiêu dùng Nhận ra lợi ích và tính ứng dụng cao của IoT trong ngành nông nghiệp, đặc biệt là đối với quản lý cây trồng, tôi đã quyết định chọn đề tài "Nghiên cứu và xây dựng IoT Gateway phục vụ trong nông nghiệp công nghệ cao" Hệ thống này sẽ thu thập thông tin, dữ liệu từ các cảm biến thông qua các IoT node, truyền thông qua kết nối LoRa đến trung tâm xử lý của IoT Gateway Dữ liệu sau đó sẽ được gửi lên Cloud và hiển thị trực tiếp cho người dùng thông qua ứng dụng Blynk Ý tưởng cốt lõi này hứa hẹn mang lại sự tiện lợi và thông tin chính xác để hỗ trợ người nông dân trong quá trình quản lý và chăm sóc cây trồng.

IoT Gateway

1.2.1 Khái niệm về IoT Gateway

IoT Gateway công nghiệp là một trong những phần thiết bị thiết yếu trong hệ sinh thái IoT, hỗ trợ sự phát triển theo cấp số nhân của vô vàn các thiết bị IoT

Nói một cách dễ hiểu, Gateway IoT là một trung tâm trung tâm quản lý tất cả các thiết bị, cảm biến và thiết bị truyền động IoT được kết nối Gateway hoạt động như một lối vào tổng hợp, xử lý và lọc ra tất cả dữ liệu và thông tin được gửi bởi các thiết bị IoT khác nhau trước khi được gửi đến đám mây.

Các Gateway IoT tiên tiến hơn có khả năng thực hiện các ứng dụng điện toán phức tạp như trí tuệ nhân tạo Trong trường hợp này, các Gateway IoT xử lý hầu hết dữ liệu và có khả năng chạy ra quyết định thời gian thực ở biên mà không cần bất kỳ sự hỗ trợ nào từ đám mây.

IoT Gateway công nghiệp cho phép kết nối không dây của các thiết bị công nghiệp cũ và từ xa với cơ sở hạ tầng thông minh thế hệ tiếp theo.

IoT Gateway công nghiệp được thiết kế chắc chắn và dành cho các hệ thống quan trọng và môi trường công nghiệp nơi các nút cảm biến hoặc thiết bị

I / O được sử dụng để thu thập dữ liệu IoT Gateway có thể được định cấu hình với một loạt các giao thức khác nhau cho phép chúng giao tiếp với các nút cảm biến đầu cuối này hoặc các thiết bị I / O. Ưu điểm chính của việc triển khai các IoT Gateway công nghiệp là chúng giảm bớt gánh nặng đặt lên cloud và các trung tâm dữ liệu từ việc phải xử lý khối lượng lớn dữ liệu được tạo ra bởi các cảm biến và thiết bị IIoT Họ có thể thu thập, lọc, xử lý và phân tích dữ liệu cục bộ, loại bỏ nhu cầu gửi tất cả dữ liệu thô được thu thập lên cloud để xử lý và phân tích.

Bằng cách thu thập và xử lý dữ liệu cục bộ, các tổ chức triển khai Gateway kết nối IoT sẽ tiết kiệm đáng kể băng thông internet vì ít dữ liệu thô phải được gửi đến cloud hơn Điều này cực kỳ có lợi cho các tổ chức là một mạng internet được đo lường, trả tiền cho băng thông mà họ sử dụng.

Việc đưa IoT Gateway công nghiệp vào các ứng dụng quan trọng trong công nghiệp và sứ mệnh giúp giải quyết vấn đề về khả năng tương tác của các hệ thống legacy và giúp tránh chi phí cực kỳ lớn cho việc thay thế cơ sở hạ tầng hiện có bằng thiết bị thế hệ tiếp theo.

Cuối cùng, việc áp dụng IoT Gateways cung cấp khả năng truy cập dữ liệu ẩn trước đây từ cảm biến, bộ điều khiển nhúng và thiết bị IO có thể có giá trị đối với nhiều quy trình và ứng dụng của doanh nghiệp như:

Tối ưu hóa sản xuất

Tự động hóa tòa nhà (Building Automation)

Việc hiện thực hóa dữ liệu này cho phép các ứng dụng phòng điều khiển,ứng dụng doanh nghiệp và các ứng dụng kinh doanh khác xem xét, theo dõi và xem xét dữ liệu để đưa ra các quyết định kinh doanh quan trọng, cải tiến và tối ưu hóa quy trình.

1.2.2 Sơ đồ tổng quát của IoT Gateway

Gateway cung cấp cầu nối giữa các công nghệ truyền thông khác nhau, nghĩa là chúng ta có thể nói rằng Gateway hoạt động như một phương tiện để mở ra các kết nối giữa đám mây và bộ điều khiển (cảm biến/thiết bị) trong Internet of Things (IoT) Với sự trợ giúp của các cổng, có thể thiết lập liên lạc giữa thiết bị với thiết bị hoặc thiết bị với đám mây Cổng có thể là một thiết bị phần cứng hoặc chương trình phần mềm điển hình Nó cho phép kết nối giữa mạng cảm biến và Internet cùng với việc cho phép giao tiếp IoT, nó còn thực hiện nhiều nhiệm vụ khác như cổng IoT này thực hiện dịch giao thức, tổng hợp tất cả dữ liệu, xử lý cục bộ và lọc dữ liệu trước khi gửi lên đám mây, lưu trữ dữ liệu cục bộ và tự động điều khiển các thiết bị dựa trên một số dữ liệu được nhập vào, cung cấp thêm tính bảo mật cho thiết bị Hình dưới đây cho thấy sơ đồ tổng quản của một IoT Gateway thiết lập giao tiếp giữa các cảm biến và đám mây (Hệ thống dữ liệu):

Hình 1.2 Sơ đồ tổng quát của IoT Gateway

 Cách thức hoạt động của IoT Gateway

Gateway IoT đóng vai trò là cầu nối giữa các loại thiết bị IoT khác nhau và kết nối chúng với hệ thống dữ liệu trung tâm hoặc thậm chí là đám mây Các thiết bị IoT giao tiếp với Gateway IoT bằng cách sử dụng công nghệ không dây tầm ngắn như Zigbee, Z-wave và Bluetooth LE Một số thiết bị IoT cũng sử dụng công nghệ không dây tầm xa như LoRa, WiFi, LTE và LTE-M để giao tiếp với IoT Gateway Sau đó, IoT Gateway kết nối một loạt các cảm biến với Mạng WAN hoặc Đám mây thông qua WAN cáp quang hoặc Ethernet LAN.

Hơn nữa, trong một hệ sinh thái IoT, có thể có hàng trăm đến hàng nghìn thiết bị IoT, cảm biến và thiết bị truyền động với các giao thức và giao diện khác nhau Vô số dữ liệu IoT này đang được tạo ra mỗi giây, tạo ra sự quá tải cho đám mây Các cổng kết nối IoT cũng lọc và dịch dữ liệu đã thu thập thành một giao thức tiêu chuẩn duy nhất để dữ liệu có thể dễ dàng được xử lý trên đám mây và được chuyển tới biên để tính toán hiệu quả hơn Một số giao thức phổ biến mà Gateway IoT dịch là AMQP, DDS, CoAP, MQTT và WebSocket.

Ngoài ra, các Gateway IoT thông minh có khả năng quản lý khối lượng công việc ở biên, nơi chúng có thể thực hiện việc ra quyết định mà không cần kết nối với đám mây Ví dụ, đối với các ứng dụng trên xe vận chuyển thực phẩm bảo quản lạnh Khi các cảm biến bên trong kho cho biết nhiệt độ tăng lên, IoTGateway có thể tự động điều khiển các thiết bị truyền động để hạ nhiệt độ xuống điểm lý tưởng để ngăn hàng hóa bị hư hỏng Gateway IoT có thể giám sát đồng thời các khía cạnh khác nhau của các ứng dụng như ánh sáng, chất lượng không khí, hệ thống an ninh Do đó, lợi ích chính của IoT Gateway là khả năng gửi bản tóm tắt dữ liệu đến mạng bên ngoài để xử lý và phân tích bổ sung.

1.3 Các tính năng chính của IoT Gateway

 Tạo điều kiện giao tiếp với các thiết bị cũ hoặc không có kết nối internet.

 Bộ nhớ đệm dữ liệu, caching và media streaming.

 Xử lý trước dữ liệu (data pre-processing), làm sạch, lọc và tối ưu hóa.

 Tổng hợp dữ liệu thô.

 Liên lạc Device-to-Device / Machine-to-Machine.

 Tính năng kết nối mạng và lưu trữ dữ liệu trực tiếp.

 Trực quan hóa dữ liệu và phân tích dữ liệu cơ bản thông qua các ứng dụng IoT Gateway.

 Tính năng lịch sử dữ liệu ngắn hạn.

 Bảo mật – quản lý truy cập người dùng và các tính năng bảo mật mạng.

 Quản lý cấu hình thiết bị.

Hình 1.3 Các tính năng của IoT Gateway

Thu thập dữ liệu từ các thiết bị IoT và truyền tải dữ liệu đó đến đám mây hoặc các hệ thống nội bộ để phân tích và sử dụng.

Các IoT Gateway hiện nay

2.1 Sơ đồ tổng quát thiết kế IoT Gateway

Vì IoT Gateway thiết kế áp dụng trong ngữ cảnh nông nghiệp thường được sử dụng để kết nối và quản lý các thiết bị cảm biến, các thiết bị thu thập dữ liệu và các thiết bị khác trong hệ thống IoT nông nghiệp Khi thiết kế Gateway, bằng một vi điều khiển có tích hợp WiFi, IoT Gateway có thể cung cấp các chức năng sau:

1 IoT Gateway kết nối với nhiều IoT node:

Giao tiếp với Cảm Biến: IoT Gateway có khả năng kết nối với các cảm biến nông nghiệp như nhiệt độ, độ ẩm, độ pH, ánh sáng,… và các cảm biến khác để thu thập dữ liệu từ môi trường nông nghiệp.

Các IoT node thường được đặt ở xa so với IoT Gateway, do đó các thông số nhiệt độ, độ ẩm, độ pH, ánh sáng,…thường được truyền thông không dây và yêu cầu IoT node tiêu thụ năng lượng thấp.

2 IoT Gateway nhận dữ liệu cục bộ từ các IoT Node:

IoT Gateway nhận dữ liệu cục bộ từ các IoT Node lưu cục bộ tại ROM của vi điều khiển và được xử lý tại chỗ

3 Gửi dữ liệu lên Cloud:

IoT Gateway Gửi gửi dữ liệu lên Firebae và Blynk App: Dữ liệu thu thập từ các IoT Node đã qua xử lý cục bộ và lưu trữ tại IoT Gateway Sau đó, IoT Gateway thực hiện đẩy dữ liệu lên Cloud thông qua Wifi với giao thức TCP

2.1.2 Sơ đồ tổng quát thiết kế

THIẾT KẾ IOT GATEWAY

Sơ đồ tổng quát thiết kế IoT Gateway

Vì IoT Gateway thiết kế áp dụng trong ngữ cảnh nông nghiệp thường được sử dụng để kết nối và quản lý các thiết bị cảm biến, các thiết bị thu thập dữ liệu và các thiết bị khác trong hệ thống IoT nông nghiệp Khi thiết kế Gateway, bằng một vi điều khiển có tích hợp WiFi, IoT Gateway có thể cung cấp các chức năng sau:

1 IoT Gateway kết nối với nhiều IoT node:

Giao tiếp với Cảm Biến: IoT Gateway có khả năng kết nối với các cảm biến nông nghiệp như nhiệt độ, độ ẩm, độ pH, ánh sáng,… và các cảm biến khác để thu thập dữ liệu từ môi trường nông nghiệp.

Các IoT node thường được đặt ở xa so với IoT Gateway, do đó các thông số nhiệt độ, độ ẩm, độ pH, ánh sáng,…thường được truyền thông không dây và yêu cầu IoT node tiêu thụ năng lượng thấp.

2 IoT Gateway nhận dữ liệu cục bộ từ các IoT Node:

IoT Gateway nhận dữ liệu cục bộ từ các IoT Node lưu cục bộ tại ROM của vi điều khiển và được xử lý tại chỗ

3 Gửi dữ liệu lên Cloud:

IoT Gateway Gửi gửi dữ liệu lên Firebae và Blynk App: Dữ liệu thu thập từ các IoT Node đã qua xử lý cục bộ và lưu trữ tại IoT Gateway Sau đó, IoT Gateway thực hiện đẩy dữ liệu lên Cloud thông qua Wifi với giao thức TCP

2.1.2 Sơ đồ tổng quát thiết kế

Hình 2.1 Sơ đồ thiết kế tổng quát IoT Gateway

Lựa chọn công nghệ thiết kế IoT Gateway cụ thể như sau:

1 Khối xử lý trung tâm: Đồ án này chọn sử dụng vi điều khiển ESP32 làm bộ xử lý cho IoT Gateway mang lại nhiều lợi ích quan trọng Với kết nối Wi-Fi tích hợp, ESP32 giúp đơn giản hóa quá trình kết nối mạng không dây Kích thước nhỏ và hiệu suất năng lượng hiệu quả làm cho ESP32 phù hợp cho các ứng dụng IoT với yêu cầu về kích thước và năng lượng Cùng với giá trị chi phí, tạo ra một lựa chọn mạnh mẽ cho việc xây dựng các hệ thống IoT Gateway.

2 Khối giao tiếp với các IoT Node: Module LoRa ra-02 là sự lựa chọn hiệu quả cho việc giao tiếp giữa gateway và node trong mạng IoT Với khả năng truyền tải dữ liệu trên khoảng cách lớn, tiêu thụ năng lượng thấp, và chi phí triển khai hợp lý, LoRa ra-02 giúp tối ưu hóa hiệu suất hệ thống và làm cho các dự án IoT trở nên linh hoạt và hiệu quả.

3 Khối giao tiếp với Cloud: Sau khi Iot Gateway nhận được dữ liệu từ các Nodes thì dữ liệu đó sẽ được gửi lên Cloud (Firebase) và được lưu trữ và duy trì, cung cấp khả năng quản lý và truy xuất dữ liệu linh hoạt

4 Khối giao tiếp với App: Sau khi Iot Gateway thu nhận dữ liệu từ các

Nodes, dữ liệu này được lưu trữ trong Iot Gateway Ứng dụng app Blynk sau đó trích xuất thông tin từ Iot Gateway để hiển thị dữ liệu ra cho người dùng Ngoài ra, ứng dụng Blynk cũng cung cấp khả năng điều khiển các thiết bị, như bật/tắt máy bơm, tạo ra một giao diện linh hoạt cho người dùng quản lý và kiểm soát các thiết bị kết nối.

5 Khối nguồn: Sử dụng nguồn adapter 5V 2A.

2.2 Thiết kế khối xử lý trung tâm Đồ án này chọn sử dụng ESP32 với ích thước nhỏ và hiệu suất năng lượng hiệu quả làm cho ESP32 phù hợp cho các ứng dụng IoT với yêu cầu về kích thước và năng lượng, chi phí Chính vì vậy, đồ án này sử dụng ESP32, để điều khiển toàn bộ hệ thống

2.2.1 IoT Gateway điều khiểu module LoRa để nhận dữ liệu từ IoT Node

Module LoRa RA-02 là một thành phần quan trọng trong các ứng dụng truyền thông không dây dựa trên công nghệ LoRa (Long Range) Để tích hợp module này vào dự án, cần thực hiện một số bước cơ bản. Đầu tiên, kết nối module LoRa RA-02 với vi điều khiển ESP32, thông qua giao diện SPI Kết nối các chân như MISO, MOSI, SCK, NSS/SEL, và DIO0 vào các GPIO.

Sau đó, cần cấu hình module LoRa với các tham số quan trọng Tham số này bao gồm tần số truyền, công suất, độ rộng băng thông, và mã hóa Điều này thường được thực hiện trong hàm setup().

Sau khi cấu hình, có thể bắt đầu truyền dữ liệu bằng cách sử dụng hàm

LoRa.beginPacket() , LoRa.print() , và LoRa.endPacket() Đối với việc nhận dữ liệu từ module LoRa RA-02, thực hiện kiểm tra xem có dữ liệu mới không và sử dụng hàm LoRa.read() để đọc dữ liệu nhận được.

Cuối cùng, để theo dõi trạng thái và debug, có thể sử dụng Serial Monitor. Quan trọng hơn cả trong thủ tục truyền nhận,cần nhớ rằng tần số (trong đoạn mã

LoRa.begin(915E6) ) cần đảm bảo rằng các tham số này phải giống nhau giữa cả node và gateway để chúng có thể giao tiếp được. a Khung truyền của Module LoRa Ra – 02

Khung truyền Lora được biểu diễn như sau:

Sync Word (1B) Destination Address (1B) CRC Coding Rate (1B) Source Address (1B) Length (1B)

251B) Khung truyền của LoRa bao gồm các phần chính sau:

1 Header (Đầu gửi): Bao gồm các thông tin quan trọng như địa chỉ nguồn và đích, chiều dài của gói tin, mã truy cập và các thông số cấu hình khác.

Thiết kế IoT Node

Đồ án này sử dụng Arduino Uno R3, để làm bộ xử lý trung tâm của IoT Node để điều khiển toàn bộ Node

2.3.1 IoT Node gửi dữ liệu đến IoT Gateway

Ban đầu, IoT Node thu thập dữ liệu trong lĩnh vực nông nghiệp, nó tập trung gửi dữ liệu từ các cảm biến môi trường, như cảm biến độ ẩm đất, cảm biến độ ẩm không khí và cảm biến nhiệt độ.

Các cảm biến này được triển khai rộng rãi trong môi trường nông nghiệp để giám sát và đo lường các yếu tố quan trọng đối với sự phát triển của cây trồng Độ ẩm đất cung cấp thông tin về lượng nước có sẵn cho cây cỏ, trong khi độ ẩm không khí và nhiệt độ có thể ảnh hưởng đến quá trình quản lý nhiệt độ của môi trường nông nghiệp.

Sau khi IoT Node đã thu thập dữ liệu từ các cảm biến, nó sử dụng module LoRa Ra-02 để truyền dữ liệu này đến IoT Gateway Module LoRa Ra-02, với khả năng truyền thông xa và tiêu thụ năng lượng thấp, là lựa chọn lý tưởng cho việc kết nối IoT Node với mạng truyền thông Nó giúp đảm bảo rằng dữ liệu từ môi trường nông nghiệp có thể được chuyển đến IoT Gateway một cách hiệu quả và đáng tin cậy.

Các dữ liệu này chuyển đến IoT Gateway, chúng được xử lý, lưu trữ và phân tích Quá trình này cung cấp thông tin quan trọng để hỗ trợ quyết định trong quản lý nông nghiệp, từ việc tối ưu hóa việc tưới cây đến theo dõi điều kiện thời tiết tự nhiên Sự kết hợp giữa IoT Node và LoRa Ra-02 mang lại một hệ thống giám sát môi trường nông nghiệp thông minh và hiệu quả.

2.3.2 Lưu đồ thuật toán Node

Hình 2.6 Lưu đồ thuật toán tại Node

Giải thích lưu đồ: Tại các Node dữ liệu được thu thập dữ liệu từ cảm biến,đống gói, xác định thông tin của Node 1 hay Node 2, rồi tuân thủ giao thức đa truy nhập TDMA để thực hiện truyền trong mỗi lần Một Frame có hai khe thời gian gồm TDMA_slot_1 và TDMA_slot_2, mỗi Frame lấy bằng 1 giây, cập nhật sau mỗi giây, vậy mỗi TDMA_slot_1 và TDMA_slot_2 là 500ms

Hình 2.7 Giải thích lưu đồ tại IoT Node

Thiết kế cơ sở dữ liệu để lưu trữ dữ liệu với Firebase

Firebase là dịch vụ cơ sở dữ liệu hoạt động trên nền tảng đám mây – cloud Kèm theo đó là hệ thống máy chủ cực kỳ mạnh mẽ của Google Chức năng chính là giúp người dùng lập trình ứng dụng bằng cách đơn giản hóa các thao tác với cơ sở dữ liệu Cụ thể là những giao diện lập trình ứng dụng API đơn giản Mục đích nhằm tăng số lượng người dùng và thu lại nhiều lợi nhuận hơn. Đặc biệt, còn là dịch vụ đa năng và bảo mật cực tốt Firebase hỗ trợ cả hai nền tảng Android và IOS

Hình 2.8 Firebase Ưu điểm của Firebase mang lại nhiều lợi ích cho các nhà phát triển Việc tạo tài khoản và sử dụng Firebase rất dễ dàng, đồng thời nền tảng này phát triển nhanh chóng, cung cấp nhiều dịch vụ trong một lần đăng nhập, và được hỗ trợ bởi Google, giúp tối ưu hóa trải nghiệm người dùng Firebase tập trung mạnh mẽ vào phát triển giao diện người dùng, không yêu cầu máy chủ riêng, và tích hợp các tính năng mạnh mẽ như học máy, tạo lưu lượng truy cập, theo dõi lỗi, sao lưu, và nhiều tính năng khác.

Tuy nhiên, cũng có những nhược điểm cần xem xét khi sử dụng Firebase.Đầu tiên, Firebase không phải là mã nguồn mở, điều này có nghĩa là người dùng không có quyền truy cập mã nguồn và không thể tùy chỉnh một số tính năng theo ý muốn Ngoài ra, Firebase không hoạt động ở một số quốc gia và chỉ hỗ trợ cơ sở dữ liệu NoSQL, điều này có thể là một hạn chế đối với các ứng dụng yêu cầu cơ sở dữ liệu quan hệ Truy vấn trong Firebase cũng có thể trở nên chậm khi xử lý dữ liệu lớn, và không phải tất cả các dịch vụ của Firebase đều miễn phí, với giá cả không ổn định và đôi khi đắt đỏ Ngoài ra, Firebase chỉ chạy trên Google Cloud, không cung cấp Dedicated Servers và hợp đồng doanh nghiệp, cũng như không hỗ trợ API GraphQL, điều này có thể làm hạn chế sự linh hoạt của ứng dụng.

Thiết kế IoT Gateway nhằm xây dựng một hệ thống giám sát môi trường để thu thập dữ liệu và lưu trữ chúng trên Firebase

Hình 2.9 Ví dụ về cách tổ chức dữ liệu của Firebase

Cơ sở dữ liệu Firebase khi thực hiện lưu trữ dữ liệu trừ gateway sẽ gồm có các trường: a Các trường firebaseHost và firebaseAuth firebaseHost = "https://iotdatn-2bb3d-default-rtdb.firebaseio.com"; firebaseAuth = "ZD496BCTB5VzFHLjlkvtUYvfi5RTtAEzBvAlINhb"; firebaseHost: là URL của Firebase Realtime Database URL này chính là địa chỉ của cơ sở dữ liệu Firebase của dự án. firebaseAuth là mã xác thực (authentication token) được sử dụng để xác định người dùng và quyền truy cập khi truy cập Firebase Realtime Database.

Mã xác thực này là một chuỗi ký tự dài và duy nhất được tạo ra dựa trên quyền truy cập của dự án Firebase Nó là một phần quan trọng để đảm bảo rằng chỉ những người dùng được ủy quyền mới có thể thực hiện các thao tác đọc và ghi vào cơ sở dữ liệu. b Các trường dữ liệu từ cảm biến

Trong ví dụ trên, có trường khởi tạo timestamp, trong mục này có thể chứa nhiều trường dữ liệu từ các cảm biến và được gọi tên cụ thể và được gửi lên Firebase.

Mỗi node timestamp chứa các thuộc tính như sau:

Hình 2.10 Ví dụ về cấu trúc hiển thị dữ liệu mỗi node timestamp: Chứa giá trị thời gian Unix timestamp để xác định khi nào dữ liệu được thêm vào cơ sở dữ liệu. temperature: Chứa giá trị nhiệt độ từ cảm biến DHT11 (được chuyển đổi thành độ Celsius). humidity: Chứa giá trị độ ẩm từ cảm biến DHT11 (được chuyển đổi thành phần trăm). soil_moisture: Chứa giá trị độ ẩm đất từ cảm biến độ ẩm đất (được chuyển đổi thành phần trăm).

Ngoài ra người dùng còn có thể sử dụng các trường khác dưới đây, nếu dự án cần tới:

Security Rules: Đặt quy tắc an ninh cho cơ sở dữ liệu để đảm bảo chỉ có người dùng được ủy quyền mới có thể thêm, sửa đổi hoặc xóa dữ liệu.

Realtime Updates: Firebase Realtime Database cung cấp cập nhật thời gian thực, vì vậy bất kỳ sự thay đổi nào trong dữ liệu cũng sẽ tự động phản ánh đến người sử dụng.

Querying Data: Có thể sử dụng các truy vấn Firebase để lấy dữ liệu theo nhiều tiêu chí khác nhau, chẳng hạn như lấy dữ liệu trong khoảng thời gian nhất định hoặc theo điều kiện cụ thể. Ở trong dự án thiết kế IoT Gateway này, có sử dụng tới trường Firebase Host & Auth, các trường dự liệu của cảm biến độ ẩm đất, độ ẩm không khí, nhiệt độ không khí, trạng thái máy bơm, realtime database c Quá trình cập nhật dữ liệu

Quá trình cập nhật dữ liệu lên Firebase là một giây sau được thiết lập trong mã chương trình được nạp vào IoT Gateway bởi mỗi Frame đang được cấp cho 1 giây Sau mỗi giây này, dữ liệu mới được được cập nhật Real-time lên cơ sở dữ liệu Firebase.

Thiết kế giao diện ứng dụng quản lý cho IoT Gateway

Hình 2.11 Thiết kế giao diện hiển thị

TRIỂN KHAI IOT GATEWAY, THỬ NGHIỆM

Triển khai IoT Gateway

3.1.1 Linh kiện phần cứng a Module ESP32 DEVKIT V1 - DOIT

Hình 3.1 Module ESP32 DEVKIT V1 - DOIT

ESP32 là một vi điều khiển giá rẻ, năng lượng thấp có hỗ trợ WiFi và dual-mode Bluetooth (tạm dịch: Bluetooth chế độ kép) Dòng ESP32 sử dụng bộ vi xử lý Tensilica Xtensa LX6 ở cả hai biến thể lõi kép và lõi đơn, và bao gồm các công tắc antenna tích hợp, RF balun, bộ khuếch đại công suất, bộ khuếch đại thu nhiễu thấp, bộ lọc và module quản lý năng lượng.

ESP32 được chế tạo và phát triển bởi Espressif Systems, một công ty Trung Quốc có trụ sở tại Thượng Hải, và được sản xuất bởi TSMC bằng cách sử dụng công nghệ 40 nm ESP32 là sản phẩm kế thừa từ vi điều khiển ESP8266.

Bảng 1.1 Thông số kỹ thuật module ESP32 DEVKIT V1 - DOIT

CPU Bộ vi xử lý LX6 32-bit lõi đơn hoặc lõi kép với xung nhịp lên đến 240 MHz

RAM 520 KB SRAM và 16 KB SRAM RTC

Wi-Fi 802.11 b/g/n/d/e/i/k/r (802.11n up to 150 Mbps) Bluetooth Bluetooth v4.2 BR/EDR and BLE specification

18 kênh SAR ADC 12bit và 2 kênh DAC 8 bit

Kết nối bao gồm 4 x SPI, 2 x I2C, 2 x I2S, 3 x UART. Điện áp 5V (cổng USB hoặc chân VIN)

Sơ đồ chân của module ESP32 DEVKIT V1

Hình 3.2 Sơ đồ chân của module ESP32 DEVKIT V1

Chip ESP32 bao gồm 38 chân với nhiều chức năng khác nhau Không phải tất cả các chân đều lộ ra trrên các module ESP32 và một số chân không thể được sử dụng.

GPIO từ 34 đến 39 là các chân chỉ đầu vào Các chân này không có điện trở kéo lên hoặc kéo xuống bên trong Chúng không thể được sử dụng làm đầu ra, vì vậy chỉ sử dụng các chân này làm đầu vào:

Chân tích hợp Flash trên ESP32

GPIO 6 đến GPIO 11 dùng để kết nối Flash SPI trên chip ESP-WROOM-

32, không khuyến khích sử dụng cho các mục đích sử dụng khác.

Chân cảm biến điện dung

ESP32 có 10 cảm biến điện dung bên trong Các cảm biến này có thể phát hiện được sự thay đổi về điện áp cảm ứng trên các chân GPIO Các chân cảm ứng điện dung cũng có thể được sử dụng để đánh thức ESP32 khỏi chế độ ngủ sâu (deep sleep).

Các chân ESP32 này có chức năng như 1 nút nhấn cảm ứng, có thể phát hiện sự thay đổi về điện áp cảm ứng trên chân.

Các cảm biến cảm ứng bên trong đó được kết nối với các GPIO sau:

Bộ chuyển đổi tương tự sang số ADC (Analog to Digital Converter)

ESP32 có 18 kênh đầu vào ADC 12 bit (trong khi ESP8266 chỉ có 1 kênh ADC 10 bit) Đây là các GPIO có thể được sử dụng làm ADC và các kênh tương ứng:

Các kênh đầu vào ADC có độ phân giải 12 bit Điều này có nghĩa là có thể nhận được các giá trị tương tự từ 0 đến 4095, trong đó 0 tương ứng với 0V và 4095 đến 3,3V Cũng có thể thiết lập độ phân giải cho các kênh thông qua chương trình (code).

Bộ chuyển đổi số sang tương tự DAC (Digital to Analog Converter)

Có 2 kênh DAC 8 bit trên ESP32 để chuyển đổi tín hiệu số sang tương tự. Các kênh này chỉ có độ phân giải 8 bit, nghĩa là có giá trị từ 0 ÷ 255 tương ứng với 0 ÷ 3.3V Đây là các kênh DAC:

Các chân thời gian thực RTC

Các chân này có tác dụng đánh thức ESP32 khi trong chế độ ngủ sâu (Low Power Mode) Sử dụng như 1 chân ngắt ngoài.

ESP32 LED PWM có 16 kênh độc lập có thể được cấu hình để tạo tín hiệu PWM với các thuộc tính khác nhau Tất cả các chân có thể hoạt động như đầu ra đều có thể được sử dụng làm chân PWM (GPIO từ 34 đến 39 không thể tạo PWM). Để xuất PWM, cần định nghĩa các thông số này trong code:

 Chân GPIO xuất tín hiệu ra

ESP32 có hai kênh I2C và bất kỳ chân nào cũng có thể được đặt làm SDA hoặc SCL Khi sử dụng ESP32 với Arduino IDE, các chân I2C mặc định là:

Nếu muốn sử dụng chân khác cho việc điều khiển I2C có thể sử dụng câu lệnh:

Theo mặc định, ánh xạ chân cho SPI là:

SPI MOSI MISO CLK CS

VSPI GPIO 23 GPIO 19 GPIO 18 GPIO 5

HSPI GPIO 13 GPIO 12 GPIO 14 GPIO 15

Tất cả các chân ESP32 đều có thể sử dụng ngắt ngoài. b Module LoRa Ra-02

Module LoRa Ra-02 sử dụng IC SX1278, hoạt động trên tần số 433MHz Nó là một module chất lượng cao, kích thước là rất nhỏ, chỉ 17 x 16 mm.

Bộ thu phát SX1287 sử dụng bộ khuếch đại dài LoRaTM cung cấp truyền thông dải phổ siêu dài, khả năng chống nhiễu cao và giảm thiểu mức tiêu thụ hiện tại.

Sử dụng kỹ thuật điều chế LoRaTM của Semtech, SX1287 có thể đạt được độ nhạy -148dBm Độ nhạy cao kết hợp với bộ khuếch đại công suất +20dBm làm cho nó tối ưu cho bất kỳ ứng dụng nào đòi hỏi phạm vi lớn hoặc độ bền Các thiết bị này cũng hỗ trợ chế độ FSK hiệu suất cao (G) cho các hệ thống như WMBus, IEEE802.15.4g.

Tính năng, đặc điểm sản phẩm

- Công suất phát: 20dBm - 100mW Ổn áp RF ổn định khi điện áp đầu vào thay đổi

- Giao tiếp SPI half-duplex

- Tốc độ bit lập trình có thể đạt đến 300kbps

- Hỗ trợ chế độ FSK, GFSK, MSK, GMSK, LoRaTM và OOK Modulation

- Tự động phát hiện tín hiệu RF, chế độ CAD và tốc độ siêu cao AFC

- Với công cụ dữ liệu CRC 256 byte

- Điện áp hoạt động: 1.8 - 3.7V, mặc định 3.3V

- Làm việc hiện tại, nhận được: ít hơn 10.8mA

- Nhiệt độ làm việc: -40 - +85 độ. c LCD 1602 và module I2C

Thông số Giá trị Điện áp hoạt động 5VDC

Dòng điện tiêu thụ 350uA - 600uA

Nhiệt độ hoạt động -30°C đến 75°C

Hiển thị Chữ đen, nền xanh lá Đèn Led nền Có thể điều khiển bằng biến trở hoặc PWM

Hỗ trợ hiển thị Bộ kí tự tiếng Anh và tiếng Nhật.

Bảng 1.2 Thông số kỹ thuật LCD 1602.

Hình 3.5 Sơ đồ kết nối LCD1602 và module I2C d Phần mềm Arduino IDE

Hình 3.6 Giao diện của ứng dụng khi khởi động

IDE trong Arduino IDE là phần có nghĩa là mã nguồn mở, nghĩa là phần mềm này miễn phí cả về phần tải về lẫn phần bản quyền: Người dùng có quyền sửa đổi, cải tiến, phát triển, nâng cấp theo một số nguyên tắc chung được nhà phát hành cho phép mà không cần xin phép ai, điều mà họ không được phép làm đối với các phần mềm nguồn đóng.

Tuy là phần mềm mã nguồn mở nhưng khả năng bảo mật thông tin của Arduino IDE là vô cùng tuyệt vời, khi phát hiện lỗi nhà phát hành sẽ vá nó và cập nhật rất nhanh khiến thông tin của người dùng không bị mất hoặc rò rỉ ra bên ngoài.

Arduino IDE sử dụng ngôn ngữ lập trình C/C++ rất phổ biến trong giới lập trình Bất kỳ đoạn code nào của C/C++ thì Arduino IDE đều có thể nhận dạng, giúp các lập trình viên thuận tiện trong việc thiết kế chương trình lập cho các bo mạch Arduino.

Triển khai IoT Node

3.2.1 Sơ đồ mạch nguyên lý Node

Hình 3.15 Sơ đồ nguyên lý mạch tại IoT Node

3.2.2 Chức năng các khối nguyên lý các Node

Khối vi điều khiển: Arduino Uno được sử dụng để thu thập thông tin từ cảm biến, xử lý dữ liệu, và điều khiển các GPIO

Khối LoRa: Kết nối với khối vi điều khiển, để truyền nhận dữ liệu

Khối nguồn: Cung cấp nguồn cho toàn hệ thống

Khối hiển thị: Hiền thị thông tin từ cảm biến, Lora

Khối nút nhấn: Nhấn bật tắt nguồn, thiết bị

Khối cảm biến: Thu thập dữ liệu từ môi trường

Hình 3.22 Mạch đi dây lớp Bottom Layer

Hình 3.23 Phủ đồng mạch thiết kế

Hình 3.24 Mạch in 3D sau thiết kế

Thử nghiệm IoT Gateway

3.3.1 Sơ đồ thử nghiệm Để thực nghiệm hoạt động của IoT Gateway, đồ án triển khai sơ đồ thử nghiệm như sau:

Hình 3.25 Sơ đồ thử nghiệm

IoT Node 1 truyền dữ liệu gồm có các dữ liệu của cảm biến độ ẩm đất, độ ẩm không khí, nhiệt độ môi trường tới IoT Gateway trong TDMA_slot của Node

1 là 500ms đầu Sau 500ms của Node 1, 500ms tiếp theo sẽ là TDMA_slot của Node 2, node cũng thực hiện truyền dữ liệu bảo gồm nhiệt độ môi trường, độ ẩm đất, độ ẩm không khí tới IoT Gateway

Tại IoT Gateway, dữ liệu được tiếp nhận lần lượt tại các Node, và xử lý lưu cục bộ tại ROM, và được đẩy lên cơ sở dữ liệu Firebase để lưu trữ online, và hiển thị thông qua App Blynk.

3.3.2 Kết quả thử nghiệm a Sản phẩm thực tế

Hình 3.26 Mạch sản phẩm thực tế Node

Hình 3.27 Sản phẩm thực tế Gateway b Sản phẩm hoàn chỉnh

Hình 3.28 Sản phẩm IoT Node hoàn chỉnh

Hình 3.29 Sản phẩm IoT Gateway và Node hoàn chỉnh

Hình 3.31 Thử nghiệm truyền nhận thực tế

Hình 3.34 Đẩy dữ liệu lên Firebase

Hình 3.35 Hiển thị thông số trên app theo dõi và điều khiển

Hình 3.36 Biểu đồ theo dõi dữ liệu

3.3.3 Đánh giá kết quả thử nghiệm

Bảng 1.3 Đánh giá kiểm thử chức năng

Gửi dữ liệu - Qúa trình gửi dữ liệu từ các IoT Node đến IoT

Gateway diễn ra ổn định, không có sai số đáng kể

- Đã hoạt động phạm vi thực tế kiếm tra < 1km Nhận dữ liệu - IoT Gateway nhận dữ liệu tốt từ các IoT Node

- Đã hoạt động phạm vi thực tế kiểm tra < 1km Hiển thị lên Cloud - Sau khi có dữ liệu, IoT Gateway gửi dữ liệu lên

Cloud (Firebase lưu trữ dữ liệu)

- Dữ liệu hiển thị đúng và đầy đủ trên nền tảng Firebase, đảm bảo tính toàn vẹn và khả dụng của dữ liệu Hiển thị dữ liệu lên

- Hiển thị thành công dữ liệu trên App Blynk

- Kết nối với ứng dụng Blynk là ổn định và đảm bảo truy cập dễ dàng từ phía người dùng

Qua đề tài “Nghiên cứu, xây dựng IoT Gateway phục vụ trong nông nghiệp công công nghệ cao” , em đã nghiên cứu, thực hiện, tìm hiểu được:

Khái niệm IoT, kiến thức về IoT Gateway và ứng dụng được trong nông nghiệp công nghệ cao, các ông nghệ thiết kế IoT Gateway và các giao thức đa truy nhập

Nghiên cứu về cấu trúc, hiểu biết, nắm rõ về các linh kiện có trong các khối sẽ được sử dụng trong đề tài.

Thiết kế IoT Gateway và Node từ những kiến thức và linh kiện đã được tìm hiểu: Vẽ sơ đồ thiết bị, sơ đồ nguyên lý hệ thống, lưu đồ thuật toán và thi công mạch, sản phẩm và viết phần mềm cho cả hệ thống.

2 Về thực nghiệm Đã thực hiện xây dựng thiết kế thành công IoT Gateway đáp ứng nhu cầu truyền nhận với 2 Node truyền/nhận dữ liệu bao gồm các thông số nhiệt độ môi trường, độ ẩm đất, độ ẩm không khí, và hiển thị được trên App người dùng, lưu trữ dữ liệu tại cơ sở dữ liệu Firebase.

3 Về sản phẩm tạo ra

Sản phẩm cơ bản đã hoàn thiện và đáp ứng được yêu cầu mục đích đặt ra của đề tài :

- Truyền nhận dữ liệu tốt giữa Iot Gateway và các Iot Nodes.

- Giao diện app hiển thị dữ liệu dễ nhìn, dễ dàng sử dụng.

- Khả năng mở rộng và tính ứng dụng thực tế cao.

- Đồ án đang trong quá trình thử nghiệm, chưa thể áp dụng vào thực tế để

- Dữ liệu có thể gặp sai số do phần cứng hiện tại chỉ dùng để nghiên cứu, thử nghiệm.

- Tập trung vào việc phát triển và tích hợp các biện pháp bảo mật mạnh mẽ để đảm bảo an toàn của dữ liệu nông nghiệp Cài đặt các giao thức mạng an toàn, mã hóa dữ liệu và các biện pháp chống tấn công để ngăn chặn mọi rủi ro bảo mật.

- Phát triển thêm những ứng dụng di động và web để cung cấp thêm những tính năng và trải nghiệm người dùng tốt hơn về khả năng tương tác, thêm các chức năng thông báo và tích hợp các công cụ quản lý hiệu quả hơn

- Áp dụng hệ thống nghiên cứu, tìm hiểu của mình vào thực tế giúp tăng năng suất, hiệu quả lao động trong nông nghiệp.

[1] https://www.google.com.vn/

[2] Edgar H.Callaway Jr., Wireless Sensor Networks: Architectures and Protocols,

[3] Anna Ha’c, Wireless Sensor Network Designs, University of Hawaii at Manoa, Honolulu, USA, John Wiley & Sons Ltd, 2003.

[4] Vương Đạo Vy (2006), Mạng truyền số liệu, Nhà xuất bản Đại học Quốc gia,

[5]Lý thuyết trải phổ và đa truy nhập vô tuyến, Học viện công nghệ Bưu chính – Viễn thông, xuất bản năm 2006

[6] Vũ Duy Lợi (2002), Mạng thông tin máy tính, Nhà xuất bản Thế giới, Hà Nội.

#define TDMA_TIME_SLOT 2 // Node 1 uses time slot 1 LiquidCrystal_I2C lcd(0x27, 16, 2);

DHT dht(DHTPIN, DHT11); unsigned long lastTransmissionTime = 0; boolean chedo_hoatdong = 0;

String trangthai = "Da bat"; void setup() { lcd.init(); lcd.begin(16,2);

// Turn on the backlight lcd.backlight();

Serial.println("LoRa Error"); delay(100); while (1);

} dht.begin(); pinMode(RELAY_PIN, OUTPUT); pinMode(SOIL_MOISTURE_PIN, INPUT); digitalWrite(RELAY_PIN, LOW); // Initialize the relay to be off } void loop() {

// Check if it's time for this node to transmit if (millis() - lastTransmissionTime >= TDMA_TIME_SLOT * 1000) { // Read data from sensors float temperature = dht.readTemperature(); float humidity = dht.readHumidity(); int soilMoisture = analogRead(SOIL_MOISTURE_PIN);

// Determine the relay state based on soil moisture int relayState = (soilMoisture < 700) ? LOW : HIGH;

// Update the relay state digitalWrite(RELAY_PIN, relayState);

"°C|Humidity:" + String(humidity) + "%|SoilMoisture:" + String(soilMoisture) + "| RelayState:" + String(relayState);

Serial.print("Sending Data to Gate: ");

LoRa.endPacket(); lcd.setCursor(2, 0); lcd.print("Sending to "); lcd.setCursor(2, 1); lcd.print("IoT Gateway");

// Update last transmission time lastTransmissionTime = millis();

} int packetSize = LoRa.parsePacket(); if (packetSize) {

Serial.print("Receiving Mode from Gate: "); while (LoRa.available()) {

//Serial.println("Da nhan cua IoTGateway: ");

//Serial.println(gateIdentifier); int modeIndex = ModeData.indexOf("|Mode:") + 6; int chedo_hoatdong = ModeData.substring(modeIndex).toInt(); if (gateIdentifier == 0) { if (chedo_hoatdong == 1) {

//Serial.println("Che do hoat dong: ");

//Serial.println(chedo_hoatdong); digitalWrite(RELAY_PIN, LOW);

Serial.println("Relay bơm tưới: " + trangthai);

// (phần xử lý dữ liệu của Node tương tự như trước)

#include char auth[] = "HpP6CsbZTjCk12N9Acvvn5de5mAkS3kX"; char ssid[] = "Thong"; char pass[] = "68686868";

#define _SSID "Thong" // Your WiFi SSID

#define REFERENCE_URL "https://iotdatn-2bb3d-default-rtdb.firebaseio.com/"

#define IOTGATEWAY 1 volatile boolean chedo_hoatdong = 0;

// Define the SensorData struct struct SensorData { int nodeIdentifier; float temperature;

// Create a global queue of SensorData std::queue dataQueue; void setup() { lcd.init(); lcd.begin(20, 4); lcd.backlight();

Blynk.begin(auth, ssid, pass);

WiFi.begin(_SSID, _PASSWORD); while (WiFi.status() != WL_CONNECTED) { delay(500);

Serial.println("Receiver Host From Node");

LoRa.setPins(SS, RST, DIO0); if (!LoRa.begin(433E6)) {

Serial.println("LoRa Error"); while (1);

} xTaskCreatePinnedToCore(Task1code, "Task1", 10000, NULL, 3, NULL, 0); xTaskCreatePinnedToCore(Task2code, "Task2", 10000, NULL, 1, NULL, 1); lcd.setCursor(0, 0); lcd.print("Receiver Host");

Serial.print("Receiving Data from Node: "); while (LoRa.available()) {

Serial.println(data); int nodeIdIndex = data.indexOf("NODE_ID:") + 8; int nodeIdentifier = data.substring(nodeIdIndex, data.indexOf("|")).toInt(); int tempIndex = data.indexOf("|Temp:") + 6; int humIndex = data.indexOf("|Humidity:") + 10; int soilIndex = data.indexOf("|SoilMoisture:") + 14; int relayIndex = data.indexOf("|RelayState:") + 12; float temperature = data.substring(tempIndex, humIndex - 1).toFloat(); float humidity = data.substring(humIndex, soilIndex - 1).toFloat(); int soilMoisture = data.substring(soilIndex, relayIndex - 1).toInt(); int relayStatus = data.substring(relayIndex).toInt();

SensorData sensorData; sensorData.nodeIdentifier = nodeIdentifier; sensorData.temperature = temperature; sensorData.humidity = humidity; sensorData.soilMoisture = soilMoisture; sensorData.relayStatus = relayStatus; if (nodeIdentifier == 1) {

Blynk.virtualWrite(V5, relayStatus); lcd.setCursor(0, 1); lcd.print("Receiver Host"); lcd.print("Temp: " + String(temperature) + " Hum: " + String(humidity)); lcd.setCursor(0, 2); lcd.print("Soil Moisture: " + String(soilMoisture) + " Relay: " + String(relayStatus)); } else if (nodeIdentifier == 2) {

Blynk.virtualWrite(V11, relayStatus); lcd.setCursor(0, 1); lcd.print("Temp: " + String(temperature) + " Hum: " + String(humidity)); lcd.setCursor(0, 2); lcd.print("Soil Moisture: " + String(soilMoisture) + " Relay: " + String(relayStatus)); }

// Your main loop logic (if any)

} void Task1code(void *parameter) { for (;;) { nhanData();

} void Task2code(void *parameter) { for (;;) { if (!dataQueue.empty()) {

SensorData sensorData = dataQueue.front(); dataQueue.pop(); if (sensorData.nodeIdentifier == 1) { firebase.setFloat("IoTGateway from Node 1/Temperature 1", sensorData.temperature);

Serial.println("Da update Nhiet do node 1 len Firebase"); firebase.setFloat("IoTGateway from Node 1/Humidity 1", sensorData.humidity); Serial.println("Da update Do am node 1 len Firebase"); firebase.setFloat("IoTGateway from Node 1/Soil Moisture 1", firebase.setFloat("IoTGateway from Node 1/PumpState 1", sensorData.relayStatus); Serial.println("Da update Trang thai Pump node 1 len Firebase");

} else if (sensorData.nodeIdentifier == 2) { firebase.setFloat("IoTGateway from Node 2/Temperature 2", sensorData.temperature);

Serial.println("Da update Nhiet do node 2 len Firebase"); firebase.setFloat("IoTGateway from Node 2/Humidity 2", sensorData.humidity); Serial.println("Da update Do am node 2 len Firebase"); firebase.setFloat("IoTGateway from Node 2/Soil Moisture 2", sensorData.soilMoisture);

Serial.println("Da update Do am dat node 2 len Firebase"); firebase.setFloat("IoTGateway from Node 2/PumpState 2 ", sensorData.relayStatus); Serial.println("Da update Trang thai Pump node 2 len Firebase");

// Adjust this delay if needed to control the frequency of processing delay(1000);

BLYNK_WRITE(V3) { int chedo_hoatdong = param.asInt();

Ngày đăng: 28/03/2024, 20:53

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w