TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA CÔNG NGHỆ THÔNG TIN
---o0o---
BÁO CÁO ĐỒ ÁN
LẬP TRÌNH HỆ THỐNG VÀ VI ĐIỀU KHIỂN
ĐỀ TÀI:
HỆ THỐNG TƯỚI CÂY THÔNG MINH
GIẢNG VIÊN HƯỚNG DẪN:
Huỳnh Hữu Hưng
GIẢNG VIÊN CHẤM:
Trần Thế Vũ
HỌ VÀ TÊN SINH VIÊN
LỚP HỌC PHẦN ĐIỂM QUÁ TRÌNH
ĐỒ ÁN
(do GVHD ghi)
Nguyễn Đăng Bin
17N10C
Lê Xuân Mạnh
17N10A
Nguyễn Đức Minh
17N10C
Hoàng Long Nhật
17N10C
STT NHÓM: 8
ĐÀ NẴNG, 07/2020
ĐIỂM BẢO VỆ
(do GV chấm ghi)
TÓM TẮT ĐỒ ÁN
Hiện nay, hệ thống tưới nước thông minh là một nhu cầu cần thiết đối với nhiều người
có thú vui trồng cây cảnh hay vườn rau trong không gian trống của nhà mình nhưng
công việc lại bận rộn. Bài báo cáo này sẽ trình bày việc xây dựng một mô hình hệ
thống tưới nước sử dụng arduino, esp8266, các cảm biến liên kết với ứng dụng máy
tính để thực hiện việc tưới nước dựa trên việc thu thập dữ liệu và sử dụng thuật toán
Regression trong học máy. Sau khi tìm hiểu lắp ráp mạch, xây dựng mô hình thì hệ
thống đã tự động tính toán được lượng nước tối ưu nhất cần tưới cho cây trồng trong
một lượng đất cố định.
1
Mục lục
I. Giới thiệu ......................................................................................................... 3
I.1 Thực trạng và vấn đề cần giải quyết............................................................... 3
I.2 Đề xuất giải pháp ......................................................................................... 3
I.3 Phân công nhiệm vụ ..................................................................................... 3
II. Giải pháp......................................................................................................... 4
II.1 Sơ đồ mạch. ............................................................................................... 4
II.1.1 Sơ đồ tổng quan. .................................................................................. 4
II.1.2 Sơ đồ kết nối các linh kiện .................................................................... 5
II.1.3 Sơ đồ giải thuật .................................................................................... 5
II.2 Linh kiện ................................................................................................. 10
III. Kết quả ........................................................................................................ 13
III.1 Mô hình sản phẩm ................................................................................... 13
III.2 Dữ liệu đã sử dụng .................................................................................. 14
III.2.1 Nguồn gốc dữ liệu và cách thức thu thập ............................................. 14
III.2.2 Tính chất dữ liệu ............................................................................... 14
III.2.3 Cách phân chia và kích thước tập huấn luyện, kiểm thử ........................ 15
III.3 Điều kiện tiến hành thực nghiệm ............................................................... 15
III.4 Quy trình và điều kiện kiểm thử hệ thống .................................................. 15
IV. Kết luận ....................................................................................................... 16
IV.1 Kết quả đạt được ..................................................................................... 16
IV.2 Hướng phát triển ..................................................................................... 16
V. Tài liệu tham khảo ......................................................................................... 16
2
I. Giới thiệu
I.1 Thực trạng và vấn đề cần giải quyết
Hiện nay, nhiều người có thú vui trồng cây cảnh, vườn rau trong không gian
trống của nhà mình như: sân thượng, ban công,... Tuy nhiên sẽ có những lúc công việc
bận rộn vườn rau sẽ không được ai chăm sóc. Ở nước ta, các hệ thống phục vụ nhu cầu
vẫn còn ít, yêu cầu đặt ra cần có hệ thống tưới nước tự động có thể tính toán các thông
số cần thiết để tự động tưới nước.
I.2 Đề xuất giải pháp
-
Kết hợp chức năng của Arduino Uno, esp8266, cảm biến nhiệt độ, độ ẩm đất để
thu thập dữ liệu và thực hiện việc tưới thông qua ứng dụng máy tính.
-
Sử dụng thuật toán Regression trong học máy để tính toán lượng nước tối ưu nhất
cho cây trồng.
I.3 Phân công nhiệm vụ
Dưới đây là bảng phân công nhiệm vụ của các thành viên :
Bảng 1. Phân công nhiệm của các thành viên.
Thành viên
Nhiệm vụ
Nguyễn Đăng Bin
Tìm hiểu về Arduino & ESP8266, lập trình Arduino &
ESP8266, gửi và nhận dữ liệu giữa Arduino, ESP8266 với
server, lắp ráp mạch, viết báo cáo
Lê Xuân Mạnh
Tìm hiểu về Machine learning, viết app nhận dữ liệu để xử lý,
gửi và nhận dữ liệu giữa app với server, thu thập và xử lí dữ
liệu, viết báo cáo
Nguyễn Đức Minh
Tìm hiểu về server, liên kết server với App, gửi và nhận dữ
liệu giữa App với server, thu thập dữ liệu, viết báo cáo
Hoàng Long Nhật
Tìm hiểu về server, liên kết server với Arduino, gửi và nhận dữ
liệu giữa Arduino với server, làm slide, viết báo cáo
3
II. Giải pháp
II.1 Sơ đồ mạch.
II.1.1 Sơ đồ tổng quan.
Hình 1. Sơ đồng tổng quan của sản phẩm
Nguyên lý hoạt động:
(1) App gửi yêu cầu lấy dữ liệu đến Server.
(2) (3) Yêu cầu được chuyển tiếp từ Server sang Esp8266 rồi đến Arduino.
(4) Arduino thu thập nhiệt độ, độ ẩm từ các cảm biển gắn ở vườn cây.
(5) (6) (7) Dữ liệu được truyền từ Arduino sang Esp8266 qua Server rồi vể
App.
(8) (9) (10) Lượng nước tưới sau khi tính toán được gửi từ App đến Arduino
thông qua Server và Esp8266.
(11) Arduino tiến hành tưới cây bằng lượng nước từ dữ liệu nhận được.
4
II.1.2 Sơ đồ kết nối các linh kiện
Hình 2. Sơ đồ kết nối linh kiện phần cứng
II.1.3 Sơ đồ giải thuật
a) Sơ đồ nguyên lý hoạt động của server.
Hình 3. Sơ đồ nguyên lý hoạt động của server
Server đóng vai trò chuyển tiếp lệnh và dữ liệu qua lại app và esp8266
5
b) Giao tiếp giữa Arduino với Esp8266, cảm biến và bơm nước
Hình 4. Sơ đồ giao tiếp giữa Arduio với các linh kiện
Sau khi thiết lập các thông số, khai báo linh kiện, các hàm lệnh, chương trình sẽ
đi vào vòng lặp để chờ nhận lệnh bao gồm lệnh send để nhận dữ liệu tưới nước hoặc
lệnh flow để thu thập nhiệt độ, độ ẩm và gửi đi dữ liệu cho esp8266.
6
c) Giao tiếp giữa Esp8266 với Server và Arduino.
Hình 5. Sơ đồ giao tiếp giữa Esp8266 với Server và Arduino
Khi bắt đầu, eps8266 sẽ tiến hành kết nối tới mạngWIFI và Socket Server. Khi
đã kết nối thành công, esp8266 sẽ tiến vào vòng lặp đợi lệnh, nó sẽ bắt lệnh flow từ
server rồi chuyển tiếp sang arduino và bắt lệnh Farduino để lấy dữ liệu nhiệt độ, độ ẩm
từ arduino và gửi lên server.
7
d) Giao tiếp App và Server.
Hình 6. Sơ đồ giao tiếp giữa App và Server
Sau khi chạy chương trình, hệ thống sẽ tiến hành kết nối với WIFI và Socket
server. Tiếp đó kiểm tra thời gian, nếu đã đến thời gian tưới thì sẽ gửi lệnh flow về
server để yêu cầu dữ liệu. Sau khi nhận được thì tiến hành tính toán và gửi lệnh send
chứa lượng nước cần tưới về server.
8
e) Sơ đồ học máy
Hình 7. Sơ đồ học máy
Quá trình huấn luyện mô hình (training model): Mô hình lấy dữ liệu từ file
csv đã lưu các dữ liệu. Sau đó ta chia dữ liệu thành 90% để cho máy học thông qua
thuật toán regression và 10% còn lại để dùng đánh giá model. Thực hiện huấn luyện
mô hình thông qua thư viện sciki-sklearn bằng thuật toán regression. Sau khi thực hiện
quá trình training ta dùng thuật toán sai số trung bình bình phương MSE(Mean
Squared Error). Mean Square Error là phương pháp đo sự chênh lệch trung bình bình
phương giữa giá trị thực tế và giá trị dự đoán[3]. Lưu mô hình đã được training để dự
đoán giá trị sau này.
9
Quá trình dự đoán: Mô hình nhận dữ liệu từ server gửi xuống rồi thông qua
mô hình đã được học qua quá trình huấn luyện để dự đoán lượng nước cần tưới. Lưu
giá trị dự đoán vào file dữ liệu và gửi giữ liệu lên server.
II.2 Linh kiện
Trong quá trình thực hiện đồ án, những linh kiện được sử dụng là: Arduino Uno
R3, ESP8266, cảm biến nhiệt độ đất, cảm biến độ ẩm đất, Modelu Relay 5VDC, động
cơ DC bơm nước P385 12VDC, …
Bảng 2. Bảng mô tả linh kiện
Linh kiện
Arduino Uno R3
-
Arduino là một bo mạch xử lý
được dùng để lập trình tương tác
với các thiết bị phần cứng như
cảm biến nhiệt độ, độ ẩm, động
cơ, đèn LED nhấp nháy, màn
hình LCD,… hay những ứng
dụng khác.
Thông số kĩ thuật và nguyên lý hoạt động
- Thông số kỹ thuật:
+ Điện áp hoạt động: 5V DC
+ Số chân Digital I/O: 14 (6 chân
hardware PWM)
+ Số chân Analog: 6
+ Dòng ra tối đa (5V): 500mA
+ Dòng ra tối đa (3.3V): 50mA
- Nguyên lý hoạt động:
+ Thu thập nhiệt độ từ cảm biến nhiệt độ
qua chân serial 8 bằng thư viện
DallasTemperature.
+ Thu thập độ ẩm từ cảm biến độ ẩm
thông qua chân Analog 0.
+ Nhận và truyền lệnh với esp8266 thông
qua 2 chân serial 2, 3 bằng cách sử dụng
thư
viện
SoftwareSerial
và
SerialCommand.
+ Bật tắt Module Relay để điều khiển tưới
nước thông qua chân serial 7.
-
Code kết nối Arduino với ESP8266:
sCmd.readSerial();
SoftwareSerial mySerial(RX, TX);
SerialCommand sCmd(mySerial);
mySerial.print(command);
root2.printTo(mySerial);
10
Esp8266
-
Thông số kỹ thuật:
+ Nguồn cấp 5VDC
+ GPIO giao tiếp mức logic 3.3V
Nguyên lý hoạt động:
+ Nhận và truyền lệnh và dữ liệu từ
Arduino thông qua chân D1, D2 bằng
thư
viện
SoftwareSerial
và
SerialCommand.
+ Nhận và truyền lệnh và dữ liệu từ
Socket server thông qua thư viện
SocketIOClient và ESP8266WiFi.
- Code kết nối:
+ Kết nối với ardunio:
SoftwareSerial mySerial(RX, TX);
SerialCommand sCmd(mySerial);
sCmd.readSerial();
mySerial.print(RID);
mySerial.print(Rfull);
+ Kết nối với Server:
socket.monitor();
socket.send(command, json);
-
-
ESP8266 là kít phát triển dựa
trên nền chíp Wifi SoC. Bên
trong ESP8266 có sẵn một lõi vi
xử lý. Hiện tại có hai ngôn ngữ
có thể lập trình cho ESP8266: sử
dụng trực tiếp phần mềm IDE
của Arduino để lập trình với bộ
thư viện riêng hoặc sử dụng
phần mềm node MCU.
Cảm biến nhiệt độ đất DS18B20
-
Cảm biến nhiệt độ đất rất hay
được ứng dụng trong các ứng
dụng đo nhiệt độ thời gian thực.
Vì nó hoạt động khá chính xác
với sai số nhỏ, đồng thời với
kích thước nhỏ và giá thành rẻ là
một trong những ưu điểm của
nó.
-
Thông số kỹ thuật:
+ Điện áp đầu vào: 3.0-5.5V
+ Khoảng nhiệt độ đo: -55 °C đến +125°C
+ Độ chính xác từ ± 0.5 °C trong khoảng
10 °C đến +85 °C
+ Đầu ra : VCC (Red), DATA (Blue),
GND (Black)
- Nguyên lý hoạt động:
+ Thu thập nhiệt độ rồi gửi đến Ardunio
qua chân serial 8.
- Kết nối với Arduino:
#define ONE_WIRE_BUS 8
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
Sensors.requestTemperatures();
Celsius =sensors.getTempCByIndex(0);
11
Cảm biến độ ẩm đất.
-
Cảm biến độ ẩm đất thường
được sử dụng trong các mô hình
tưới nước tự động, vườn thông
minh,... Cảm biến giúp xác định
độ ẩm của đất qua đầu dò và trả
về giá trị analog, digital qua 2
chân tương ứng để giao tiếp với
vi điều khiển để thực hiện vô số
các ứng dụng khác nhau [2] .
Module Relay 5VDC
-
Module Relay 1 kênh 5V dùng
dòng điện nhỏ của vi điều khiển,
arduino, PLC, esp8266,... để
điều khiển các thiết bị điện, đồ
dùng điện hoạt động ở mức điên
áp cao như điện sinh hoạt, hay
trong các ứng dụng thiết bị
thông minh.
Động cơ DC bơm nước Water
Pump P385 12VDC
-
Thông số kỹ thuật:
+ Điện áp hoạt động: 3.3~5VDC
+ Tín hiệu đầu ra: Analog theo điện áp
cấp nguồn tương ứng. Digital có High
hoặc Low, có thể điều chỉnh độ ẩm
mong muốn bằng biến trở thông qua
mạch so sánh LM393 tích hợp.
- Nguyên lý hoạt động:
+ Thu thập độ ẩm đất rồi truyền đến
Arduino qua chân Analog 0.
- Kết nối với Arduino:
int sensor = A0;
int j = analogRead(sensor);
j=map(j,0,1023,100,0);
-
Thông số kỹ thuật:
+ Tải tối đa: AC 250V / 10A, DC 30V /
10A
+ Dòng kích hoạt: 5mA
+ Điện áp làm việc: 5V
- Nguyên lý hoạt động:
+ Chân kích để bật tắt Module relay được
nối với chân serial 7 của arduino để
nhận tín hiệu điều khiển để điều khiển
bơm nước.
- Kết nối Module relay với Arduino và
ESP8266:
digitalWrite(7, LOW);
delay(t);
digitalWrite(7, HIGH);
-
Thông số kỹ thuật:
+ Loại động cơ: P385.
+ Điện áp sử dụng: 6~12VDC
+ Dòng điện sử dụng: 0.5~0.7A
+ Lưu lượng bơm: 1~2L / 1 phút
- Nguyên lý hoạt động:
+ Tưới nước theo điều khiển của Module
Relay
12
Bảng 3. Bảng chi phí các linh kiện
STT
1
2
3
4
5
6
7
8
9
10
11
12
Tên thiết bị
Số
lượng
Arduino Uno R3
1
Esp 8266
1
Cảm biến nhiệt độ đất DS18B20
1
Cảm biến độ ẩm đất
1
Module Relay 5VDC
1
Động cơ DC bơm nước Water Pump P385 12VDC
1
Ống nước
1 (m)
Cốc đựng đất
40
Pin DC9V + nắp pin
2
AC/DC Adaptor
1
Ốc vít
20
Khác (in ấn, dây nối, giấy màu,…)
Tổng cộng:
Đơn giá Thành tiền
(VNĐ)
(VNĐ)
150.000 150.000
70.000
70.000
40.000
50.000
10.000
20.000
30.000
30.000
60.000
60.000
10.000
10.000
900
36.000
17.000
34.000
50.000
50.000
1.500
30.000
100.000
640.000
III. Kết quả
III.1 Mô hình sản phẩm
Hình 8. Mô hình sản phẩm tưới nước thông minh
13
III.2 Dữ liệu đã sử dụng
III.2.1 Nguồn gốc dữ liệu và cách thức thu thập
-
Nguồn gốc dữ liệu từ quá trình thu thập dữ liệu hàng ngày trong các khung giờ
với điều kiện nhiệt độ, độ ẩm khác nhau.
-
Cách thức thu thập:
Mỗi ngày dựa vào mức độ chiếu sáng của mặt trời thì nhiệt độ đất và độ ẩm đất
khác nhau, do đó chúng ta chia thành 4 khung giờ: 6h - 9h (sáng sớm), 9h – 16h
(ánh nắng mặt trời lớn), 16h – 19h (mặt trời bắt đầu tắt nắng), 19h - 24h (trời tối).
Mỗi khung giờ chúng ta sẽ có 8 mẫu do đó mỗi ngày ta sẽ thu được 32 mẫu. Để
thu thập một mẫu:
+ Bước 1: Đo nhiệt độ đất và độ ẩm đất ban đầu.
+ Bước 2: Tưới từng lượng nước nhỏ rồi cộng với lượng nước đã tưới trước đó
(lượng nước khi chưa tưới bằng 0).
+ Bước 3: Tiếp tục đo lại, nếu độ ẩm nhỏ hơn 82% thì quay lại bước 2.
+ Bước 4: Kết thúc quá trình đo, ta có được nhiệt độ đất và độ ẩm đất ban đầu và
tổng lượng nước đã tưới.
III.2.2 Tính chất dữ liệu
Hình 9. Bản ghi dữ liệu của 5 giá tri đầu tiên
Tất cả có 1040 mẫu được đo trong 33 ngày từ: 28/5/2020 – 29/6/2020. Trong đó:
-
Nhiệt độ đất đo được dao động trong khoảng 28oC - 34oC. Nhiệt độ lớn nhất trong
khoảng thời gian 11h – 16h và nhỏ nhất trong các khoảng thời gian: 6h – 8h và
21h – 24h.
14
-
Độ ẩm đất đo được dao động trong khoảng từ 20% - 86%. Độ ẩm lớn nhất vào các
khoảng thời gian: 6h – 8h, 23h – 24h hoặc vào những ngày mưa và nhỏ nhất vào
khoảng thời gian: 14h -16h.
III.2.3 Cách phân chia và kích thước tập huấn luyện, kiểm thử
Dữ liệu gồm có 1040 mẫu, được chia thành hai phần: 90% dùng để huấn luyện
(training) và 10% dùng để kiểm thử (test).
III.3 Điều kiện tiến hành thực nghiệm
-
Sử dụng hàm regression thư viện scikit-learn của Python để dự đoán giá trị thực
nghiệm với tham số đầu vào là nhiệt độ, độ ẩm, thể tích đất và đầu ra là lượng
nước cần tưới.
-
Điều kiện môi trường: dữ liệu được thu thập vào cả ngày mưa lần ngày nắng, vào
tất cả các giờ trong khoảng 6h – 24h.
III.4 Quy trình và điều kiện kiểm thử hệ thống
Hệ thống và thuật toán được đánh giá thông qua các tiêu chí như độ chính xác, độ
ổn định, tốc độ thực thi, khả năng mở rộng dự án cụ thể:
-
Tốc độ thực thi một quá trình tưới là thời gian phản hồi giữa arduino, esp8266,
server, app với điều kiện mạng ổn định là không quá 2 giây.
-
Độ chính xác của thuật toán được đánh giá qua tập test bằng hàm đánh giá Mean
Square Error trong thư viện scikit-learn của python. Mean Square Error (MSE) là
phương pháp đo sự chênh lệch trung bình bình phương giữa giá trị thực tế và giá
trị dự đoán[3], giá trị này càng nhỏ thì mô hình học càng chính xác. Khi đánh giá
mô hình sản phẩm ta thấy MSE = 5.67 nên mô hình học tương đối tốt.
-
Độ ổn định: hệ thống có thể dự đoán với nhiệt độ đất, độ ẩm đất bất kì trong điều
kiện mạng ổn định.
-
Khả năng mở rộng: hệ thống có thể áp dụng với nhiều cây trồng khác nhau với
những diện tích đất khác nhau và điều kiện thời tiết khác nhau.
15
IV. Kết luận
IV.1 Kết quả đạt được
Qua đồ án này nhóm chúng em đã thiết kế và xây dựng thành công hệ thống tưới
nước thông minh được thực hiện thông qua ứng dụng trên máy tính, hệ thống có thể
thực hiện các công việc sau:
-
Thực hiện đo nhiệt độ đất và độ ẩm đất tại một thời điểm bất kì trong ngày dựa
vào cảm biến nhiệt độ đất và cảm biến độ ẩm đất.
-
Sử dụng học máy để tính toán lượng nước cần tưới tối ưu nhất cho cây trồng
-
Điều khiển hệ thống một cách dễ dàng, thuận tiện thông qua một ứng dựng trên
máy tính
Ngoài ra thông qua đồ án này giúp cho mỗi cá nhân hoàn thiện hơn về khả năng
làm việc nhóm, khả năng trình bày báo cáo, cũng như biết thêm nhiều kiến thức mới
trong lập trình và trong cuộc sống.
Bên cạnh đó nhóm cũng gặp không ít khó khăn như: tình trạng dịch nCovid kéo
dài, các thành viên ở cách xa nhau nên khó khăn trong làm việc nhóm; khó khăn trong
việc thu lượng lớn dữ liệu phục vụ cho học máy; hay khó khăn trong việc tìm hiểu
những kiến thức chưa được học,… Vì vậy việc sai sót là không thể tránh khỏi mong
thầy (cô) thông cảm. Nhóm chúng em rất mong nhận được sự ủng hộ cũng như những
đánh giá, nhận xét để có thể hoàn thiện hơn về hệ thống này.
IV.2 Hướng phát triển
Trong tương lai, nếu có thời gian và kinh phí chúng em có thể tích hợp sử dụng
thêm ứng trên điện thoại nhằm tạo thuận lợi cho người sử dụng. Ngoài ra có thể thu
thập nhiều dữ liệu hơn trên nhiều vùng miền khác nhau để tăng độ chính xác hơn, có
thể sử dụng ở các vùng miền khác nhau. Bên cạnh đó có thể tính toán chính xác lượng
nước cần tưới cho từng loại cây trồng; sử dụng đồng thời nhiều cảm biến nhiệt độ và
độ ẩm để thực hiện tưới đồng thời nhiều cây ở những vị trí khác nhau.
V. Tài liệu tham khảo
[1] Link : />[2] Link: />[3] Link: />16