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

(Tiểu luận) đề tài xây dựng hệ thống tưới tự động dựa trên độ ẩm đất và theo dõi từ xa thông qua điện thoại di động

40 63 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 Hệ Thống Tưới Tự Động Dựa Trên Độ Ẩm Đất Và Theo Dõi Từ Xa Thông Qua Điện Thoại Di Động
Tác giả Cao Minh Khôi
Trường học Đại Học Quốc Gia Tp.Hồ Chí Minh
Chuyên ngành Giảng Dạy Vật Lý Thực Nghiệm
Thể loại báo cáo
Năm xuất bản 2021
Thành phố Tp. Hồ Chí Minh
Định dạng
Số trang 40
Dung lượng 2,36 MB

Cấu trúc

  • Chương 1: TỔNG QUAN ĐỀ TÀI (5)
    • 1.1 Giới thiệu tổng quan về IoT (5)
    • 1.2 Mục tiêu ý tưởng đề tài (5)
    • 1.3 Sơ đồ khối hệ thống và nguyên lý hoạt động của hệ thống (6)
      • 1.3.1 Sơ đồ khối (6)
      • 1.3.2 Nguyên lý hoạt động (7)
    • 1.4 Lựa chọn phần cứng cho hệ thống (7)
  • Chương 2: THIẾT KẾ HỆ THỐNG IOT (0)
    • 2.1 Lập bảng dữ liệu (11)
    • 2.2 Thiết kế sơ đồ mạch điện (12)
    • 2.3 Lưu đồ thuật toán (Flowchart) (14)
    • 2.4 Thiết kế ứng dụng trên điện thoại thông minh (14)
      • 2.4.1 Giới thiệu về Blynk (14)
      • 2.4.2 Cấu hình các nút chức năng (16)
    • 2.5 Viết code chương trình điều khiển (26)
  • Chương 3: KIỂM TRA HOẠT ĐỘNG CỦA HỆ THỐNG (0)
  • Chương 4: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN (35)
  • Phụ lục (37)
  • Tài liệu tham khảo (40)

Nội dung

THIẾT KẾ HỆ THỐNG IOT

Lập bảng dữ liệu

Trước khi thiết kế hệ thống IoT chúng ta cần lập bảng dữ liệu về các chức năng trên Blynk App và trên NodeMCU

Trên Blynk App Trên NodeMCU

Virtual pin Widget Chức năng

Hiện thị giá trị cảm biến

A0 nối với cảm biến độ ẩm đất analogVal = analogRead(analogPin); // 0 >

1023 phantram=map(analogVal, 0, 1023, 100, 0); Blynk.virtualWrite(V1,phantram);

V2 Styled button Điều chỉnh chế độ Auto/Manual

BLYNK_WRITE(V2) { // điều chỉnh chế độ value1 = param.asInt();

Lấy giá trị ngưỡng trên và dưới từ app Blynk

BLYNK_WRITE(V3) { // Lấy giá trị ngưỡng trên

BLYNK_WRITE(V4) { // Lấy giá trị ngưỡng duoi

V9 Button Bật tắt relay ở chế độ manual

BLYNK_WRITE(V9) { // Nut nhan bat tat relay button=param.asInt();

V6 LCD Hiển thị thông báo

Blynk.virtualWrite(V6,"Độ ẩm cao");

Led Hiển thị Led trên app Blynk

WidgetLED appledy(V12); appledg.off(); appledy.off();

V8 Superchart Đồ thị độ ẩm Blynk.virtualWrite(V8,String(phantram)+"%");

Thiết kế sơ đồ mạch điện

Hình 2.1 Mạch điện thực tế

Hình 2.2 Mạch điện điều khiển trên test board h

Lưu đồ thuật toán (Flowchart)

Hình 2.3 Lưu đồ thuật toán

Thiết kế ứng dụng trên điện thoại thông minh

Blynk là ứng dụng trên iOS và Android cho phép điều khiển và giám sát thiết bị qua internet Ứng dụng này không giới hạn vào phần cứng cụ thể nào, mà hỗ trợ nhiều loại phần cứng khác nhau, bao gồm Arduino.

Raspberry Pi, ESP8266 và nhiều module phần cứng phổ biến khác

Những lý do nên sử dụng Blynk:

– Dễ sử dụng: việc cài đặt ứng dụng và đăng ký tài khoản trên điện thoại rất đơn giản cho cả IOS và Android

BẮT ĐẦU ĐỘ ẨM MODE ON,OFF

= 1 Độ ẩm > ngưỡng trên Độ ẩm < ngưỡng dưới

Bật bơm nước Bật led đỏ LCD "đang tưới

Tắt bơm Bật led vàng LCD"độ ẩm cao"

– Chức năng phong phú: Blynk hỗ trợ rất nhiều chức năng với giao diện đẹp và thân thiện, bạn chỉ việc kéo thả đối tượng và sử dụng nó

Nếu bạn không có kiến thức lập trình ứng dụng cho Android và iOS, Blynk là một công cụ tuyệt vời để bạn khám phá thế giới IoT.

– Điều khiển, giám sát thiết bị ở bất kì đâu thông qua internet với khả năng đồng bộ hóa trạng thái và thiết bị

Có ba thành phần chính trong nền tảng:

Blynk App - cho phép tạo giao diện cho sản phẩm của bạn bằng cách kéo thả các widget khác nhau mà nhà cung cấp đã thiết kế sẵn

Blynk Server đóng vai trò quan trọng trong việc xử lý dữ liệu giữa điện thoại, máy tính bảng và phần cứng Người dùng có thể lựa chọn sử dụng Blynk Cloud hoặc tự tạo máy chủ Blynk riêng Với mã nguồn mở, Blynk cho phép dễ dàng tích hợp vào các thiết bị khác nhau, bao gồm cả việc sử dụng Raspberry Pi làm máy chủ.

Thư viện Blynk hỗ trợ hầu hết các nền tảng phần cứng phổ biến, cho phép giao tiếp hiệu quả với máy chủ và quản lý tất cả các lệnh đến và đi một cách dễ dàng.

Cung cấp API & giao diện người dùng tương tự cho tất cả các thiết bị và phần cứng được hỗ trợ

Kết nối với server bằng cách sử dụng:

Các tiện ích trên giao diện được nhà cung cấp dễ sử dụng

Thao tác kéo thả trực tiếp giao diện mà không cần viết mã

Dễ dàng tích hợp và thêm chức năng mới bằng cách sử dụng các cổng kết nối ảo được tích hợp trên blynk app

Theo dõi lịch sử dữ liệu

Thông tin liên lạc từ thiết bị đến thiết bị bằng Widget

Gửi email, tweet, thông báo realtime, v.v

được cập nhật các tính năng liên tục!

2.4.2 Cấu hình các nút chức năng

Hình 2.4 Chức năng Value Display (V1) h

Hình 2.5 Chức năng Styled button (V2) h

Hình 2.6 Chức năng Numeric Input (V3,V4) h

2.4.3 Giao diện ứng dụng hoàn chỉnh

Hình 2.13 Giao diện ứng dụng hoàn chỉnh h

Viết code chương trình điều khiển

Phần kết nối và khai báo các biến:

BlynkTimer timer; char auth[] = "rdhAobpDdWH-gPwGmqJq0Z-azdBhckwl"; char ssid[] = "FPT Cao Van Sa"; char pass[] = "11118888";

#define relay D2 int value1,value2,analogVal,button,Ref1,Ref2; int phantram;

Phần thiết lập điều khiển và giao tiếp giữa app blynk với nodeMCU void setup()

Blynk.begin(auth, ssid, pass,"sv.bangthong.com",8080); pinMode(ledr,OUTPUT); pinMode(ledy,OUTPUT); pinMode(ledg,OUTPUT); pinMode(relay,OUTPUT);

BLYNK_WRITE(V2) { // điều chỉnh chế độ value1 = param.asInt();

BLYNK_WRITE(V3) { // Lấy giá trị ngưỡng trên

BLYNK_WRITE(V4) { // Lấy giá trị ngưỡng duoi h

BLYNK_WRITE(V9) { // Nut nhan bat tat relay button=param.asInt();

Phần dòng lệnh chạy chương trình và các điều kiện ràng buộc void loop()

Blynk.run(); timer.run(); analogVal = analogRead(analogPin); // 0 > 1023 phantram=map(analogVal, 0, 1023, 100, 0); // chuyen sang phantram Blynk.virtualWrite(V1,phantram);

Blynk.virtualWrite(V8,String(phantram)+"%"); if (value1 == 1){ if (phantram > Ref1){ appledr.off(); appledg.off(); appledy.on(); digitalWrite(ledr,LOW); digitalWrite(ledg,LOW); digitalWrite(ledy,HIGH); h

Blynk.notify("Độ ẩm cao");

The code snippet utilizes Blynk.virtualWrite(V6, "High humidity") to display a message on the LCD If the humidity percentage is below a reference value (Ref2), it activates the appledr and turns off appledg and appledy, while controlling the LED states by setting ledr to HIGH and ledeg and ledy to LOW Additionally, the relay is activated by setting it to HIGH.

Blynk.notify("Độ ẩm thấp");

Blynk.virtualWrite(V6,"Đang tưới nước");

} else { appledr.off(); appledg.on(); appledy.off(); digitalWrite(ledr,LOW); digitalWrite(ledg,HIGH); digitalWrite(ledy,LOW); h

Blynk.virtualWrite(V6,"Độ ẩm BT"); }

} else { if (button == 1){ digitalWrite(relay,HIGH);

Chương 3: KIỂM TRA HOẠT ĐỘNG CỦA HỆ THỐNG

Kiểm tra kết nối giữa NodeMCU và ứng dụng Blynk là rất quan trọng để đảm bảo hệ thống hoạt động hiệu quả Nếu kết nối bị mất, chúng ta sẽ không nhận được thông báo về độ ẩm đất, dẫn đến việc không theo dõi được tình hình độ ẩm Điều này có thể ảnh hưởng xấu đến việc điều khiển ngưỡng và tắt mở bơm nước, gây hại cho cây trồng.

Hình 3.1 Kiểm tra kết nối giữa NodeMCU và Blynk app h

Lỗi trên là do Blynk app và NodeMCU không giao tiếp được với nhau do 1 trong số những nguyên nhân sau:

+ Lỗi kết nối do mất mạng, mất wifi

+ Do NodeMCU bị mất nguồn hoặc cổng USB bị lỏng

+ Do chưa cắm cổng USB của NodeMCU vào nguồn

+ Do không tìm được sever băng thông để kết nối

Kiểm tra độ nhạy của cảm biến độ ẩm đất

Theo thời gian, đầu cảm biến có thể bị ăn mòn và mất chính xác, vì vậy cần theo dõi thường xuyên và thực hiện biện pháp xử lý kịp thời để tránh sai lệch cảm biến, ảnh hưởng tiêu cực đến cây trồng.

Hình 3.2 Hoạt động của cảm biến và chức năng hiển thị trên Blynk App h

Lỗi trên là do 1 trong những nguyên nhân sau:

Cảm biến độ ẩm sau một thời gian sử dụng lâu dài có thể bị ăn mòn và hư hại, dẫn đến việc không còn cung cấp giá trị chính xác Do đó, việc thay mới cảm biến là cần thiết để đảm bảo hiệu suất và độ tin cậy trong việc đo lường độ ẩm.

+ Do lỗi kết nối giữa NodeMCU và Blynk app dẫn đến việc không thể chuyển giá trị độ ẩm thu được từ chân của NodeMCU lên Blynk app

Hệ thống thông báo của ứng dụng Blynk có chức năng quan trọng trong việc theo dõi độ ẩm của cây trồng Tuy nhiên, đôi khi hệ thống này không hiển thị thông báo khi độ ẩm vượt ngưỡng trên hoặc dưới, dẫn đến việc người dùng không nhận biết được các rủi ro có thể xảy ra, điều này có thể gây hại nghiêm trọng cho cây trồng.

Hình 3.3 Lỗi hoạt động của chức năng notifications h

Không hiển thị thông báo khi độ ẩm vượt ngưỡng có thể do một trong các nguyên nhân sau:

+ Do sai lệnh điều khiển hoặc thiết lập sai chân Virtual trên Code và Blynk app + Do chưa cập nhật phiên bản và chức năng timer run

3.4 Đánh giá hoạt động của hệ thống:

Hệ thống tưới phun mưa là giải pháp hiệu quả trong nông nghiệp, đặc biệt cho các cây trồng cần nhiều nước cho cả tán lá Phương pháp này cũng được ứng dụng trong việc tưới bãi cỏ và cây cảnh tại các địa điểm công cộng, khu nghỉ dưỡng, với thiết kế chú trọng tính mỹ quan.

Hệ thống phun mưa hiện đại đang được áp dụng rộng rãi tại các vườn chè, khu vực trồng hoa và vườn rau lớn ở Việt Nam Hệ thống này giúp nông dân tiết kiệm chi phí đầu tư, giảm sức lao động và tiết kiệm nguồn nước, đặc biệt trong mùa khô Việc tưới nước đồng đều trên toàn bề mặt giúp cây trồng phát triển mạnh mẽ từ bộ rễ đến bề mặt lá, nâng cao hiệu quả sản xuất nông nghiệp và chất lượng nông sản.

Hệ thống mà chúng tôi thiết kế rất phù hợp cho phòng thí nghiệm và các mô hình trồng rau tại nhà Với ưu điểm nhỏ gọn, giá thành rẻ và tiện dụng, hệ thống này lý tưởng cho các mô hình trồng rau nhỏ đến vừa Nó dễ dàng điều chỉnh và có khả năng phát triển thành những dự án nông nghiệp lớn hơn Tuy nhiên, để mở rộng cho các dự án quy mô lớn, cần cải tiến nhiều về kỹ thuật và cảm biến.

Chương 4: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

Sau một thời gian nghiên cứu và tham khảo tài liệu từ nhiều nguồn khác nhau, cùng với sự hỗ trợ từ giảng viên bộ môn và bạn bè, nhóm chúng em đã hoàn thành đề tài của mình.

“xây dựng hệ thống tưới tự động dựa trên độ ẩm đất và theo dõi từ xa thông qua điện thoại di động”

Nhìn chung đề tài của nhóm em có ưu điểm:

Mạch có cấu trúc đơn giản và hoạt động hiệu quả, mang lại độ chính xác cao và khả năng ứng dụng thực tiễn tốt, giúp giảm bớt công sức của con người trong việc chăm sóc vườn.

- Mạch được thiết kế với các module có biến trở, ta có thể dễ dàng điều chỉnh tùy thuộc vào yêu cầu và trường hợp cụ thể

- Các thiết bị dễ mua được ngoài thị trường, giá thành rẻ

- Dễ lắp ráp đối với người mới tập làm mạch điện tử

Hệ thống tưới nước tự động và theo dõi từ xa có khả năng mở rộng và phát triển dễ dàng, cung cấp những nguyên lý cơ bản để xây dựng một hệ thống vườn thông minh, đáp ứng nhu cầu ngày càng cao của xã hội.

- Đề xuất hướng phát triển h

Nếu có đủ thời gian nghiên cứu, có thể mở rộng việc sử dụng cảm biến độ ẩm bằng cách tích hợp thêm các loại cảm biến khác như cảm biến nhiệt độ và cảm biến tốc độ động cơ Điều này giúp điều chỉnh lượng nước tưới một cách tiết kiệm và hiệu quả Ngoài ra, việc sử dụng cảm biến đo độ pH sẽ giúp kiểm tra độ pH trong nước tưới, từ đó kịp thời xử lý nếu nước bị nhiễm phèn.

1 Code khai báo, điều khiển

BlynkTimer timer; char auth[] = "rdhAobpDdWH-gPwGmqJq0Z-azdBhckwl"; char ssid[] = "FPT Cao Van Sa"; char pass[] = "11118888";

#define relay D2 int value1,value2,analogVal,button,Ref1,Ref2; int phantram;

2 Code xuất ra chân tín hiệu pinMode(ledr,OUTPUT); pinMode(ledy,OUTPUT); pinMode(ledg,OUTPUT); pinMode(relay,OUTPUT);

3 Code giao tiếp giữa blynk app và NodeMCU

BLYNK_WRITE(V2) { // điều chỉnh chế độ value1 = param.asInt();

BLYNK_WRITE(V3) { // Lấy giá trị ngưỡng trên h

BLYNK_WRITE(V4) { // Lấy giá trị ngưỡng duoi

BLYNK_WRITE(V9) { // Nut nhan bat tat relay button=param.asInt();

4 Code xuất tín hiệu lên các chức năng hiển thị

Blynk.virtualWrite(V6,"Độ ẩm cao"); //hiển thị trên LCD dòng 1

5 Code lệnh điều khiển chương trình if (value1 == 1){ if (phantram > Ref1){ appledr.off(); appledg.off(); appledy.on(); digitalWrite(ledr,LOW); digitalWrite(ledg,LOW); digitalWrite(ledy,HIGH); digitalWrite(relay,LOW);

Blynk.notify("Độ ẩm cao");

Blynk.virtualWrite(V6,"Độ ẩm cao"); //hiển thị trên LCD dòng 1 } else if (phantram < Ref2){ appledr.on(); appledg.off(); appledy.off(); digitalWrite(ledr,HIGH); h

37 digitalWrite(ledg,LOW); digitalWrite(ledy,LOW); digitalWrite(relay,HIGH);

Blynk.notify("Độ ẩm thấp");

Blynk.virtualWrite(V6,"Đang tưới nước"); } else { appledr.off(); appledg.on(); appledy.off(); digitalWrite(ledr,LOW); digitalWrite(ledg,HIGH); digitalWrite(ledy,LOW); digitalWrite(relay,LOW);

Blynk.virtualWrite(V6,"Độ ẩm BT"); }

} else { if (button == 1){ digitalWrite(relay,HIGH);

Ngày đăng: 12/12/2023, 15:07

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

TÀI LIỆU LIÊN QUAN

w