TRƯỜNG ĐẠI HỌC CÔNG NGHỆ SÀI GÒN KHOA ĐIỆN ĐIỆN TỬ οОο BÁO CÁO ĐỒ ÁN 2 ĐỀ TÀI THIẾT KẾ VÀ THI CÔNG HỆ THỐNG TƯỚI CÂY TỰ ĐỘNG GIÁM SÁT NHIỆT ĐỘ, ĐỘ ẨM QUA ĐIỆN THOẠI GVHD TH S NGUYỄN HÙNG TP HCM 012022 NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN TP HCM, ngày tháng 02 năm 2022 Giáo viên hướng dẫn LỜI CẢM ƠN Em xin chân thành cảm ơn Ban giám hiệu trường đại học công nghệ Sài Gòn đã tạo điều kiện cho tốt nhất cho em học tập và nghiên cứu Khoa công nghệ điện điê.
GIỚI THIỆU ĐỀ TÀI
Gần đây, cụm từ “tự động hóa” đã trở nên phổ biến, mô tả các công nghệ giảm thiểu sự can thiệp của con người trong các quy trình Tự động hóa giúp con người giảm khối lượng công việc, tiết kiệm thời gian và công sức Việc ứng dụng công nghệ để tự động hóa quy trình đang trở thành xu hướng toàn cầu, đặc biệt trong nông nghiệp và chăm sóc cây cảnh.
Cây xanh đóng vai trò quan trọng trong cuộc sống, mang lại nhiều lợi ích như cải thiện sức khỏe tinh thần và tăng tính thẩm mỹ cho ngôi nhà Tuy nhiên, với nhịp sống bận rộn hiện nay, việc chăm sóc cây cảnh có thể tốn nhiều thời gian Do đó, hệ thống tưới cây tự động đang trở thành giải pháp lý tưởng, giúp tiết kiệm công sức và nâng cao tính chuyên nghiệp trong việc chăm sóc cây trồng.
Hệ thống tưới cây tự động thường bao gồm các cảm biến và thiết bị đầu ra, giúp điều chỉnh các điều kiện như nhiệt độ và độ ẩm, từ đó tối ưu hóa môi trường sống cho cây trồng.
Tùy vào từng trường hợp cụ thể, việc lựa chọn hệ thống có công suất phù hợp là rất quan trọng để tránh lãng phí Hệ thống của chúng tôi được thiết kế đặc biệt cho các chậu cây nhỏ treo ở ban công chung cư hoặc những loại cây cần kiểm soát chặt chẽ về nhiệt độ và độ ẩm, do đó, công suất của hệ thống là nhỏ nhưng hiệu quả, tập trung vào việc kiểm soát các yếu tố môi trường.
NỘI DUNG NGIÊNG CỨU CƠ BẢN
Tìm hiểu tổng quan về hệ thống, đặc điểm và các thành phần cần thiết trong hệ thống.
Xây dựng hệ thống phần cứng cho ứng dụng Giám sát điều khiển vườn Mini.
Khối cảm biến DHT11, cảm biến độ ẩm đất để thu thập dữ liệu.
Module NodeMCU ESP8266 ứng dụng thu phát wifi, xử lý để giao tiếp với app Blynk
Xây dựng mô hình giải thuật cho toàn hệ thống gồm:
Truyền nhận dữ liệu và xử lý tại NodeMCU ESP8266.
Truyền nhận dữ liệu và xử lý tại ứng dụng Blynk
Xây dựng giao diện giao tiếp người dùng thông qua một ứng dụng tương tác trên điện thoại.
CƠ SỞ LÍ THUYẾT
PHẦN MỀM ARDUINO IDE
Arduino IDE là một ứng dụng mã nguồn mở được sử dụng để viết và biên dịch mã vào module Arduino.
Nó cung cấp các phiên bản cho các hệ điều hành như MAC, Windows và Linux, hoạt động trên nền tảng Java Các tính năng và lệnh có sẵn của nó đóng vai trò quan trọng trong việc gỡ lỗi, chỉnh sửa và biên dịch mã trong môi trường tự nhiên.
Hình 2.1: Phần mềm arduino IDE
PHẦN CỨNG CỦA ARDUINO
Phần cứng Arduino, được phát triển tại Ivrea, Ý, nhằm tạo ra các ứng dụng tương tác hiệu quả hơn, bao gồm một board mạch nguồn mở dựa trên vi xử lý AVR Atmel 8bit hoặc ARM Atmel 32-bit Model phổ biến hiện nay là Arduino UNO, với 1 cổng giao tiếp USB, 6 chân đầu vào analog và 14 chân I/O kỹ thuật số, tương thích với nhiều board mở rộng khác nhau.
Một vài thông số kĩ thuật của Arduino UNO
Vi điều khiển ATmega328 họ 8bit Điện áp hoạt động 5V DC (chỉ được cấp qua cổng USB)
Tần số hoạt động 16 MHz
Dòng tiêu thụ khoảng 30mA Điện áp vào khuyên dùng 7-12V DC Điện áp vào giới hạn 6-20V DC
Số chân Digital I/O 14 (6 chân hardware PWM)
Số chân Analog 6 (độ phân giải 10bit)
Dòng tối đa trên mỗi chân
Dòng ra tối đa (5V) 500 mA
Dòng ra tối đa (3.3V) 50 mA
PHẦN MỀM BLYNK 2.0
Blynk là nền tảng ứng dụng di động giúp người dùng tương tác dễ dàng với các bộ vi điều khiển như Arduino, Esp8266, Esp32 và Raspberry thông qua Internet.
Blynk App là một công cụ giúp người dùng tạo ra giao diện đồ họa cho dự án của mình thông qua việc kéo và thả các widget được thiết kế sẵn.
Blynk Server đóng vai trò quan trọng trong việc quản lý tất cả các giao tiếp giữa điện thoại thông minh và phần cứng Người dùng có thể lựa chọn sử dụng Blynk Cloud hoặc thiết lập máy chủ Blynk riêng chạy cục bộ Với mã nguồn mở, Blynk Server có khả năng xử lý hàng nghìn thiết bị một cách dễ dàng và có thể được triển khai trên Raspberry Pi.
Thư viện Blynk hỗ trợ tất cả các nền tảng phần cứng phổ biến, cho phép người dùng giao tiếp hiệu quả với máy chủ và xử lý tất cả các lệnh gửi đến và nhận từ thiết bị.
Mỗi khi ta nhấn một nút trong ứng dụng Blynk, thông điệp sẽ truyền đến không gian của đám mây Blynk, và tìm đường đến phần cứng
Để xây dựng và quản lý phần cứng được kết nối, bạn cần các thiết bị phù hợp, khả năng hiển thị dữ liệu cảm biến, điều khiển từ xa qua ứng dụng web và di động, cập nhật chương trình cơ sở qua mạng, đảm bảo bảo mật, phân tích dữ liệu, quản lý người dùng và truy cập, thiết lập cảnh báo, tự động hóa và nhiều tính năng khác.
Kết nối với đám mây bằng cách sử dụng:
MUDULE CẢM BIẾN ĐỘ ẨM ĐẤT
Cảm biến độ ẩm đất hoạt động với đầu ra ở mức thấp (0V) khi đất khô và chuyển sang mức cao (5V) khi đất đủ ẩm Độ nhạy của cảm biến có thể điều chỉnh thông qua biến trở Phần đầu đo được cắm vào đất để theo dõi độ ẩm; khi đạt ngưỡng thiết lập, đầu ra DO sẽ chuyển từ trạng thái thấp sang cao.
Hình 2.4: Cảm biến độ ẩm đất
Đèn đỏ báo nguồn vào, đèn xanh báo độ ẩm.
CẢM BIẾN NHIỆT ĐỘ, ĐỘ ẨM DHT11
Module lấy dữ liệu qua giao tiếp 1 wire cho phép thu thập thông tin chính xác nhờ bộ tiền xử lý tín hiệu tích hợp Điều này giúp loại bỏ nhu cầu tính toán phức tạp Sản phẩm hoạt động hiệu quả với mức điện áp 5VDC.
Cảm biến DHT11 chỉ nên sử dụng trong môi trường có độ ẩm thuần là hơi nước Việc sử dụng cảm biến này trong các môi trường đặc biệt như ủ tỏi đen hay ủ yếm khí có thể dẫn đến sự phát triển của nấm và vi khuẩn, gây hư hỏng cho cảm biến.
– Điện áp hoạt động: 5VDC
– Chuẩn giao tiếp: TTL, 1 wire.
– Tần số lấy mẫu tối đa 1Hz (1 giây / lần)
MODULE THỜI GIAN THỰC RTC DS3231
RTC DS3231 là một IC thời gian thực giá rẻ và chính xác, được trang bị thạch anh tích hợp có khả năng điều chỉnh nhiệt độ IC này có đầu vào pin riêng biệt, tách rời khỏi nguồn chính, đảm bảo duy trì thời gian chính xác Việc tích hợp thạch anh giúp tăng cường độ chính xác trong thời gian dài hoạt động và giảm thiểu số lượng linh kiện cần thiết khi thiết kế board mạch.
Thời gian trong IC được lưu trữ dưới dạng giờ, phút, giây, ngày, thứ, tháng và năm, với khả năng tự động điều chỉnh cho các tháng có ít hơn 31 ngày và các năm nhuận IC hỗ trợ chế độ hiển thị thời gian 24h hoặc 12h AmPM, cùng với chức năng báo động cho phép cài đặt 2 thời gian báo và lịch, với tín hiệu ra dạng xung vuông Giao tiếp với IC được thực hiện qua bus I2C.
Chip tích hợp mạch điện áp chuẩn giúp theo dõi trạng thái nguồn VCC, phát hiện lỗi nguồn và tự động chuyển nguồn khi gặp sự cố Nó cũng cung cấp tín hiệu Reset cho mạch bên ngoài và MCU khi nguồn điện được khôi phục Thêm vào đó, chip còn trang bị cảm biến nhiệt độ với độ chính xác ± 3°C.
Hình 2.6: module thời gian thực DS3231
– IC chính: RTC DS3231 + EEPROM AT24C32
– Lưu trữ và cung cấp các thông tin thời gian thực: ngày, tháng, năm, giờ, phút, giây,
– Có pin backup duy trì thời gian trong trường hợp không cấp nguồn.
MODULE WIFI ESB8266
Mạch thu phát Wifi ESP8266, sử dụng IC Wifi SoC ESP8266 của hãng Espressif, cho phép kết nối với vi điều khiển để truyền nhận dữ liệu qua Wifi Mạch này có thiết kế nhỏ gọn và sử dụng giao tiếp UART, mang lại sự tiện lợi trong quá trình sử dụng.
– Điện áp sử dụng: 3.3VDC
– Điện áp giao tiếp: 3.3VDC
– Dòng tiêu thụ: Max 320mA (nên sử dụng module cấp nguồn riêng cho mạch). – Hỗ trợ chuẩn 802.11 b/g/n.
– Wi-Fi 2.4 GHz, hỗ trợ các chuẩn bảo mật như: OPEN, WEP, WPA_PSK,WPA2_PSK, WPA_WPA2_PSK.
– Hỗ trợ cả 2 giao tiếp TCP và UDP.
– Chuẩn giao tiếp UART với Firmware hỗ trợ bộ tập lệnh AT Command, tốc độ Baudrate mặc định 9600 hoặc 115200.
– Có 3 chế độ hoạt động: Client, Access Point, Both Client and Access Point.– Kích thước: 24.8 x 14.3mm
MÀN HÌNH LCD 1602
Màn hình LCD 1602 xanh lá sử dụng driver HD44780, cho phép hiển thị 2 dòng với 16 ký tự mỗi dòng Màn hình này nổi bật với độ bền cao và tính phổ biến, đi kèm với nhiều mã mẫu phong phú Việc sử dụng màn hình trở nên dễ dàng hơn khi kết hợp với mạch chuyển tiếp I2C.
– Điện áp hoạt động là 5V.
– Chữ trắng, nền xanh dương
– Khoảng cách giữa hai chân kết nối là 0.1 inch tiện dụng khi kết nối với
– Tên các chân được ghi ở mặt sau của màn hình LCD hổ trợ việc kết nối, đi dây điện.
– Có đèn led nền, có thể dùng biến trở hoặc PWM điều chình độ sáng để sử dụng ít điện năng hơn.
– Có thể được điều khiển với 6 dây tín hiệu
– Có bộ ký tự được xây dựng hỗ trợ tiếng Anh và tiếng Nhật.
SƠ ĐỒ KHỐI CỦA HỆ THỐNG
Hình 3.1: sơ đồ khối của hệ thống
Khối này hoạt động như khu vực giám sát của hệ thống, có nhiệm vụ nhận và xử lý tất cả thông tin liên quan đến nhiệt độ, độ ẩm đất và trạng thái của từng thiết bị.
Khối này có chức năng hiển thị và cài đặt các thông số ngưỡng cho nhiệt độ và độ ẩm từ cảm biến thông qua ứng dụng Blynk và module Wifi ESP8266.
Các cảm biến như cảm biến nhiệt độ, độ ẩm và cảm biến độ ẩm đất có vai trò quan trọng trong việc thu nhận tín hiệu từ môi trường và truyền đạt thông tin về trung tâm điều khiển.
3.1.4 Khối ngoại vi a) Máy phun sương mini
Máy phun sương có nhiệm vụ làm thay đổi độ ẩm môi trường, làm giảm nhiệt độ do ánh sáng trực tiếp chiếu trên lá.
Hình 3.2: máy phung sương mini
– Điện áp định mức: 12VDC
– Lực đẩy tối đa: 35 mét
Máy bơm mini có trọng lượng 0.58kg, với động cơ được thiết kế để tăng độ ẩm trong đất, giúp duy trì độ ẩm cần thiết cho sự phát triển của cây trồng.
Hình 3.3 Máy bơm chìm mini
3.1.5 Khối thiết lập thời gian thực
Khối thiết lập thời gian thực đóng vai trò quan trọng trong việc xác định thời gian hoạt động của hệ thống Để thực hiện điều này, chúng ta sẽ sử dụng module DS3231 nhằm thiết lập thời gian chính xác cho hệ thống.
3.1.6 KHỐI HIỂN THỊ Để phòng trường hợp đường truyền Wifi bị mất kết nối ta cần một màn hình khác để theo dõi các thông số của môi trường.
THI CÔNG MÔ HÌNH
3.2.1 Thiết lập Blynk Đầu tiền truy cập vào https://blynk.cloud/ đăng nhập, nếu chưa có tài khoản thì chọn Create new account để đăng ký Các bạn nhập tên email vào, sau đó tích chọn Sign Up.
Sau khi nhận email, bạn hãy chọn "Create Password" để tạo mật khẩu cho tài khoản của mình Khi đã có tài khoản, bạn đăng nhập và chọn "New Template", sau đó nhập tên và lựa chọn các tùy chọn đầy đủ như trong hình dưới đây.
Trên điện thoại sau khi tải app Blynk mới về, các bạn mở lên sau đó đăng nhập tài khoản đã tạo bên web:
Tiếp theo, chọn biểu tượng Button để điều khiển led, Value Display để hiển thị nhiệt độ, độ ẩm… nhớ chọn chân Pin cho từng mục:
3.2.2 Cài đặt phần mềm arduino ide
To download the Arduino IDE, visit the official website at http://arduino.cc/en/Main/Software/ Locate and click on the "Windows ZIP file for non admin install" option, as shown in the provided illustration.
Hình 3.1: Giao diện download phần mềm lập trình Arduino.
Bước 2: Sau khi tải về xong, chúng ta giải nén thư mục vừa mới tải.
Hình 3.2: Giải nén thư mục phần mềm lập trình Arduino.
Bước 3: Chạy file arduino.exe trong thư mục vừa giải nén để khởi động chương trình.
Hình 3.3: Giao diện làm việc trong Arduino IDE.
CHƯƠNG TRÌNH
#define DHTPIN 3 // chân tín hiêu DHT
DHT dht(DHTPIN, DHTTYPE); int cb = A0; //Chân cảm biến ở chân Analog: A0 int relay1 =8; int relay2 =9; int doc_cb, TBcb;
/*const int giomo1 = 9; const int phutmo1 = 06; const int giomo2 = 17; const int phutmo2 = 00;*/
LiquidCrystal_I2C lcd(0x27,16,2); //I2C của LCD là 0x27, LCD 16x02
Serial.println(F("DHTxx test!"));//Test DHT11 dht.begin(); pinMode (relay1, OUTPUT); digitalWrite (relay1, LOW); pinMode (relay2, OUTPUT); digitalWrite (relay2, LOW); pinMode (cb, INPUT); //Tín hiệu vào từ cảm biến
To initialize the I2C communication for the LCD, use `Wire.begin();` followed by `lcd.backlight();` to turn on the LCD backlight Start the LCD with `lcd.init();` and set the cursor to the desired positions using `lcd.setCursor()` Display the text "DA: " at position (10,1) and "DAMT: " at (0,0), followed by a percentage sign "%" at (12,0) and (15,1) Finally, print "T: " at (0,1) and "C" at (7,1) to complete the LCD output.
To monitor temperature effectively, the function IN_NHIETDO() is utilized to read the temperature using the DHT sensor If the measured temperature exceeds 32.00°C, the relay2 is activated by setting it to HIGH; otherwise, it is set to LOW Additionally, a for loop is implemented to read the sensor value 10 times, allowing for an average calculation to ensure the most accurate temperature reading.
Để tính giá trị trung bình, sử dụng công thức `TBcb=doc_cb/20` Giá trị Analog được chuyển đổi thành phần trăm với `int phantramao = map(TBcb, 0, 1023, 0, 100)` Tiếp theo, phần trăm thực được tính bằng `int phantramthuc = 130 - phantramao`, giúp chuyển đổi điện thế từ trạng thái khô sang ẩm Cuối cùng, giá trị `doc_cb` được đặt về 0.
Serial.print(phantramthuc); lcd.setCursor(13,1); lcd.print(phantramthuc); delay (1000);
{ if(phantramthuc 70) digitalWrite(relay1,LOW); else if( phantramthuc >70) digitalWrite(relay1,LOW); }
} void IN_NHIETDO() //hàm in nhiệt độ,Độ ẩm lên LCD
{ float doam = dht.readHumidity(); float doc = dht.readTemperature(); float dof = dht.readTemperature(true); if (isnan(doam) || isnan(doc) || isnan(dof)) //kiểm tra hoạt động của DHT11
Serial.println(F("k co gia tri trả ve!")); return;}
//in nhiet do lcd.setCursor(2,1); lcd.print(doc);
// in độ ẩm lcd.setCursor(7,0); lcd.print(doam);