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

Hệ thống tưới tự động theo dõi thông qua app điện thoại

40 3 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

Định dạng
Số trang 40
Dung lượng 2,26 MB
File đính kèm Hệ thống tưới tự động.zip (2 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

ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN KHOA VẬT LÝ VẬT LÝ KỸ THUẬT  BÁO CÁO ĐỀ TÀI MÔN HỌC PHÁT TRIỂN ỨNG DỤNG INTERNET OF THINGS Đề tài XÂY DỰNG HỆ THỐNG TƯỚI TỰ ĐỘNG DỰA.

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

11 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

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à một ứng dụng chạy trên nền tảng iOS và Android để điều khiển và giám sát thiết bị thông qua internet Blynk không bị ràng buộc với những phần cứng cụ thể nào cả, thay vào đó, nó hỗ trợ phần cứng cho bạn lựa chọn như 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ó

– Không phải lập trình ứng dụng: nếu bạn không có kiến thức về lập trình app cho Android cũng như IOS thì Blynk là một ứng dụng tuyệt vời để giúp bạn khám phá thế giới IOTs

– Đ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 - chịu trách nhiệm xử lý dữ liệu trung tâm giữa điện thoại, máy tính bảng và phần cứng Bạn có thể sử dụng Blynk Cloud của Blynk cung cấp hoặc tự tạo máy chủ Blynk riêng của bạn Vì đây là mã nguồn mở, nên bạn có thể dễ dàng intergrate vào các thiết bị và thậm chí có thể sử dụng Raspberry Pi làm server của bạn

Library Blynk – support cho hầu hết tất cả các nền tảng phần cứng phổ biến - cho phép giao tiếp với máy chủ và xử lý tất cả các lệnh đến và đi

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ình 2.5 Chức năng Styled button (V2)

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

23 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

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

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);

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); 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);

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 sever giữa NodeMCU và Blynk App có đang hoạt động tốt không Tránh trường hợp mất kết nối hệ thống không hiện các thông báo về độ ẩm đất Chúng ta sẽ không thể theo dõi được tình hình của độ ẩm để có thể điều khiển các ngưỡng cũng như tắt mở bơm nước gây ảnh hưởng xấu đến cây trồng

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

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 có thể đầu cảm biến bị ăn mòn không còn chính xác nên cần theo dõi thường xuyên và đưa ra biện pháp xử lý thích hợp tránh trường hợp cảm biến bị sai lệch ảnh hưởng xấu đế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

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

+ Do cảm biến sử dụng lâu năm bị ăn mòn hư hại dẫn đến việc không còn cập nhật chính xác giá trị độ ẩm Cần thay mới cảm biến

+ 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

Kiểm tra hệ thống thông báo của Blynk app (chức năng notifications) Đôi khi xảy ra trường hợp độ ẩm vượt ngưỡng trên hoặc thấp hơn ngưỡng dưới mà hệ thống thông báo (chức năng nitifications) của Blynk không hiển thị thông báo dẫn đến chúng ta không biết được rủi ro xảy ra có thể có tác hại rất xấu đến cây trồng

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

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 được sử dụng nhiều trong nông nghiệp với các cây trồng cần nhiều nước tưới cho cả tán lá Ngoài ra phương pháp này còn được áp dụng cho việc tưới các bãi cỏ, các tán cây cảnh ở các địa điểm công cộng, khu nghỉ dưỡng với thiết kế đảm bảo cả tính mỹ quan

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

Hệ thống do bọn mình thiết kế áp dụng tốt được trong phòng thí nghiệm và các mô hình trồng rau tại nhà Ưu điểm của hệ thống là nhỏ gọn giá thành rẻ tiện dụng cho các mô hình trồng rau nhỏ vừa, dễ chỉnh sửa phương thức và có thể phát triển thành những dự án lớn hơn về phát triển nông nghiệp Tuy nhiên, để mở rộng cho các dự án lớn hơn thì cần phải cải tiến hệ thống rất nhiều về các mặt kỹ thuật cũng như cảm biến

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

Sau một thời gian tìm hiểu, tham khảo tài liệu từ nhiều nguồn khác nhau, cũng như được sự giúp đỡ của giảng viên bộ môn và bạn bè, nhóm em đã hoàn thành đề 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”

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

- Mạch có cấu tạo và hoạt động đơn giản không phức tạp nhưng tính chính xác và khả năng áp dụng thực tế cao, 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ử

- Có thể mở rộng và phát triển dễ dàng Đề tài trình bày được những nguyên lý cơ bản nhất của một hệ thống tưới nước tự động và theo dõi từ xa, từ đây có thể phát triển đề tài thành hệ thống vườn thông minh phù hợp với nhu cầu của xã hội

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

Với đề tài này nếu có đủ thời gian nghiên cứu thì có thể mở rộng ra ngoài việc sử dụng cảm biến độ ẩm còn có thể sử dụng thêm các loại cảm biến khác như: cảm biến độ ẩm, cảm biến nhiệt độ ,cảm biến tốc độ động cơ để điều chỉnh lượng nước tưới tiết kiệm hiệu quả, cảm biến đo độ pH để đo độ 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

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);

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: 05/12/2022, 09:09

HÌNH ẢNH LIÊN QUAN

Hình 1.1 Sơ đồ khối 1.3.2 Nguyên lý hoạt động:  - Hệ thống tưới tự động theo dõi thông qua app điện thoại
Hình 1.1 Sơ đồ khối 1.3.2 Nguyên lý hoạt động: (Trang 7)
Hình 1.2 Cảm biến độ ẩm đất + Thiết bị chấp hành:  - Hệ thống tưới tự động theo dõi thông qua app điện thoại
Hình 1.2 Cảm biến độ ẩm đất + Thiết bị chấp hành: (Trang 9)
Hình 1.3. Relay - Hệ thống tưới tự động theo dõi thông qua app điện thoại
Hình 1.3. Relay (Trang 10)
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 - Hệ thống tưới tự động theo dõi thông qua app điện thoại
r ướ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 (Trang 11)
Hình 2.1. Mạch điện thực tế - Hệ thống tưới tự động theo dõi thông qua app điện thoại
Hình 2.1. Mạch điện thực tế (Trang 13)
Hình 2.2 Mạch điện điều khiển trên test board. - Hệ thống tưới tự động theo dõi thông qua app điện thoại
Hình 2.2 Mạch điện điều khiển trên test board (Trang 13)
Hình 2.3 Lưu đồ thuật tốn - Hệ thống tưới tự động theo dõi thông qua app điện thoại
Hình 2.3 Lưu đồ thuật tốn (Trang 14)
2.4.2 Cấu hình các nút chức năng - Hệ thống tưới tự động theo dõi thông qua app điện thoại
2.4.2 Cấu hình các nút chức năng (Trang 16)
Hình 2.5 Chức năng Styled button (V2) - Hệ thống tưới tự động theo dõi thông qua app điện thoại
Hình 2.5 Chức năng Styled button (V2) (Trang 17)
Hình 2.6 Chức năng Numeric Input (V3,V4) - Hệ thống tưới tự động theo dõi thông qua app điện thoại
Hình 2.6 Chức năng Numeric Input (V3,V4) (Trang 18)
Hình 2.7 Chức năng Button (V9) - Hệ thống tưới tự động theo dõi thông qua app điện thoại
Hình 2.7 Chức năng Button (V9) (Trang 19)
Hình 2.8 Màn hình LCD(v6) - Hệ thống tưới tự động theo dõi thông qua app điện thoại
Hình 2.8 Màn hình LCD(v6) (Trang 20)
Hình 2.9 Led trên app (V10,V11,V12) - Hệ thống tưới tự động theo dõi thông qua app điện thoại
Hình 2.9 Led trên app (V10,V11,V12) (Trang 21)
Hình 2.10 Chức năng superChart (V8) - Hệ thống tưới tự động theo dõi thông qua app điện thoại
Hình 2.10 Chức năng superChart (V8) (Trang 22)
Hình 2.11 Chức năng superChart (V8) - Hệ thống tưới tự động theo dõi thông qua app điện thoại
Hình 2.11 Chức năng superChart (V8) (Trang 23)
Hình 2.12 Chức năng notifications - Hệ thống tưới tự động theo dõi thông qua app điện thoại
Hình 2.12 Chức năng notifications (Trang 24)
Hình 2.13 Giao diện ứng dụng hoàn chỉnh - Hệ thống tưới tự động theo dõi thông qua app điện thoại
Hình 2.13 Giao diện ứng dụng hoàn chỉnh (Trang 25)
Hình 3.1. Kiểm tra kết nối giữa NodeMCU và Blynk app - Hệ thống tưới tự động theo dõi thông qua app điện thoại
Hình 3.1. Kiểm tra kết nối giữa NodeMCU và Blynk app (Trang 31)
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ệ thống tưới tự động theo dõi thông qua app điện thoại
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 (Trang 32)
Hình 3.3. Lỗi hoạt động của chức năng notifications - Hệ thống tưới tự động theo dõi thông qua app điện thoại
Hình 3.3. Lỗi hoạt động của chức năng notifications (Trang 33)
Hình 3.4. Demo hệ thống - Hệ thống tưới tự động theo dõi thông qua app điện thoại
Hình 3.4. Demo hệ thống (Trang 34)

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

TÀI LIỆU LIÊN QUAN

w