Hệ thống tưới nước thông minh có sử dụng học máy, đồ án lập trình hệ thống và vi điều khiển bách khoa đà nẵng, bách khoa đà nẵng, Hệ thống tưới nước thông minh, học máy trong tưới nước , đồ án vi điều khiển, đồ án lập trình hệ thống và vi điều khiển điều khiển
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 Hồng Long Nhật 17N10C STT NHĨM: ĐÀ 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 nhu cầu cần thiết nhiều người có thú vui trồng cảnh hay vườn rau khơng gian trống nhà công việc lại bận rộn Bài báo cáo trình bày việc xây dựng mơ hình hệ thống tưới nước sử dụng arduino, esp8266, cảm biến liên kết với ứng dụng máy tính để thực việc tưới nước dựa việc thu thập liệu sử dụng thuật toán Regression học máy Sau tìm hiểu lắp ráp mạch, xây dựng mơ hình hệ thống tự động tính tốn lượng nước tối ưu cần tưới cho trồng lượng đất cố định Mục lục I Giới thiệu I.1 Thực trạng vấn đề cần giải I.2 Đề xuất giải pháp I.3 Phân công nhiệm vụ II Giải pháp II.1 Sơ đồ mạch II.1.1 Sơ đồ tổng quan II.1.2 Sơ đồ kết nối linh kiện II.1.3 Sơ đồ giải thuật II.2 Linh kiện 10 III Kết 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 liệu cách thức thu thập 14 III.2.2 Tính chất liệu 14 III.2.3 Cách phân chia 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 điều kiện kiểm thử hệ thống 15 IV Kết luận 16 IV.1 Kết đạt 16 IV.2 Hướng phát triển 16 V Tài liệu tham khảo 16 I Giới thiệu I.1 Thực trạng vấn đề cần giải Hiện nay, nhiều người có thú vui trồng cảnh, vườn rau không gian trống nhà như: sân thượng, ban cơng, Tuy nhiên có lúc cơng việc bận rộn vườn rau khơng chăm sóc Ở nước ta, hệ thống phục vụ nhu cầu cịn ít, yêu cầu đặt cần có hệ thống tưới nước tự động tính tốn 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 Arduino Uno, esp8266, cảm biến nhiệt độ, độ ẩm đất để thu thập liệu thực việc tưới thông qua ứng dụng máy tính - Sử dụng thuật tốn Regression học máy để tính tốn lượng nước tối ưu cho trồng I.3 Phân công nhiệm vụ Dưới bảng phân công nhiệm vụ thành viên : Bảng Phân công nhiệm thành viên Thành viên Nhiệm vụ Nguyễn Đăng Bin Tìm hiểu Arduino & ESP8266, lập trình Arduino & ESP8266, gửi nhận liệu 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 Machine learning, viết app nhận liệu để xử lý, gửi nhận liệu app với server, thu thập xử lí liệu, viết báo cáo Nguyễn Đức Minh Tìm hiểu server, liên kết server với App, gửi nhận liệu App với server, thu thập liệu, viết báo cáo Hoàng Long Nhật Tìm hiểu server, liên kết server với Arduino, gửi nhận liệu Arduino với server, làm slide, viết báo cáo II Giải pháp II.1 Sơ đồ mạch II.1.1 Sơ đồ tổng quan Hình Sơ đồng tổng quan sản phẩm Nguyên lý hoạt động: (1) App gửi yêu cầu lấy liệu đến Server (2) (3) Yêu cầu chuyển tiếp từ Server sang Esp8266 đến Arduino (4) Arduino thu thập nhiệt độ, độ ẩm từ cảm biển gắn vườn (5) (6) (7) Dữ liệu truyền từ Arduino sang Esp8266 qua Server vể App (8) (9) (10) Lượng nước tưới sau tính tốn gửi từ App đến Arduino thông qua Server Esp8266 (11) Arduino tiến hành tưới lượng nước từ liệu nhận II.1.2 Sơ đồ kết nối linh kiện Hình 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 server Hình Sơ đồ nguyên lý hoạt động server Server đóng vai trị chuyển tiếp lệnh liệu qua lại app esp8266 b) Giao tiếp Arduino với Esp8266, cảm biến bơm nước Hình Sơ đồ giao tiếp Arduio với linh kiện Sau thiết lập thông số, khai báo linh kiện, hàm lệnh, chương trình vào vòng lặp để chờ nhận lệnh bao gồm lệnh send để nhận liệu tưới nước lệnh flow để thu thập nhiệt độ, độ ẩm gửi liệu cho esp8266 c) Giao tiếp Esp8266 với Server Arduino Hình Sơ đồ giao tiếp Esp8266 với Server Arduino Khi bắt đầu, eps8266 tiến hành kết nối tới mạngWIFI Socket Server Khi kết nối thành công, esp8266 tiến vào vịng lặp đợi lệnh, bắt lệnh flow từ server chuyển tiếp sang arduino bắt lệnh Farduino để lấy liệu nhiệt độ, độ ẩm từ arduino gửi lên server d) Giao tiếp App Server Hình Sơ đồ giao tiếp App Server Sau chạy chương trình, hệ thống tiến hành kết nối với WIFI Socket server Tiếp kiểm tra thời gian, đến thời gian tưới gửi lệnh flow server để yêu cầu liệu Sau nhận tiến hành tính tốn gửi lệnh send chứa lượng nước cần tưới server e) Sơ đồ học máy Hình Sơ đồ học máy Q trình huấn luyện mơ hình (training model): Mơ hình lấy liệu từ file csv lưu liệu Sau ta chia liệu thành 90% máy học thông qua thuật tốn regression 10% cịn lại để dùng đánh giá model Thực huấn luyện mơ hình thơng qua thư viện sciki-sklearn thuật toán regression Sau thực q trình training ta dùng thuật tốn sai số trung bình bình phương MSE(Mean Squared Error) Mean Square Error phương pháp đo chênh lệch trung bình bình phương giá trị thực tế giá trị dự đốn[3] Lưu mơ hình training để dự đốn giá trị sau Q trình dự đốn: Mơ hình nhận liệu từ server gửi xuống thơng qua mơ hình học qua q 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 liệu gửi giữ liệu lên server II.2 Linh kiện Trong trình thực đồ án, linh kiện 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 DC bơm nước P385 12VDC, … Bảng Bảng mô tả linh kiện Linh kiện Arduino Uno R3 - Arduino bo mạch xử lý dùng để lập trình tương tác với thiết bị phần cứng cảm biến nhiệt độ, độ ẩm, động cơ, đèn LED nhấp nháy, hình LCD,… hay ứng dụng khác Thơng số kĩ thuật 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: + Dòng tối đa (5V): 500mA + Dòng 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 thư viện DallasTemperature + Thu thập độ ẩm từ cảm biến độ ẩm thông qua chân Analog + Nhận truyền lệnh với esp8266 thông qua chân serial 2, cách sử dụng thư viện SoftwareSerial SerialCommand + Bật tắt Module Relay để điều khiển tưới nước thông qua chân serial - 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 truyền lệnh liệu từ Arduino thông qua chân D1, D2 thư viện SoftwareSerial SerialCommand + Nhận truyền lệnh liệu từ Socket server thông qua thư viện SocketIOClient 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 kít phát triển dựa chíp Wifi SoC Bên ESP8266 có sẵn lõi vi xử lý Hiện có hai ngơn ngữ lập trình cho ESP8266: sử dụng trực tiếp phần mềm IDE Arduino để lập trình với thư viện riêng sử dụng phần mềm node MCU Cảm biến nhiệt độ đất DS18B20 - Cảm biến nhiệt độ đất hay ứng dụng ứng dụng đo nhiệt độ thời gian thực Vì hoạt động xác với sai số nhỏ, đồng thời với kích thước nhỏ giá thành rẻ ưu điểm - 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 + Độ xác từ ± 0.5 °C khoảng 10 °C đến +85 °C + Đầu : VCC (Red), DATA (Blue), GND (Black) - Nguyên lý hoạt động: + Thu thập nhiệt độ gửi đến Ardunio qua chân serial - Kết nối với Arduino: #define ONE_WIRE_BUS 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 sử dụng mơ hình tưới nước tự động, vườn thông minh, Cảm biến giúp xác định độ ẩm đất qua đầu dò trả giá trị analog, digital qua chân tương ứng để giao tiếp với vi điều khiển để thực vô số ứng dụng khác [2] Module Relay 5VDC - Module Relay kênh 5V dùng dòng điện nhỏ vi điều khiển, arduino, PLC, esp8266, để điều khiển thiết bị điện, đồ dùng điện hoạt động mức điên áp cao điện sinh hoạt, hay ứng dụng thiết bị thông minh Động 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 Low, điều chỉnh độ ẩm mong muốn biến trở thơng qua mạch so sánh LM393 tích hợp - Ngun lý hoạt động: + Thu thập độ ẩm đất truyền đến Arduino qua chân Analog - 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 nối với chân serial 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 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 / phút - Nguyên lý hoạt động: + Tưới nước theo điều khiển Module Relay 12 Bảng Bảng chi phí linh kiện STT 10 11 12 Tên thiết bị Số lượng Arduino Uno R3 Esp 8266 Cảm biến nhiệt độ đất DS18B20 Cảm biến độ ẩm đất Module Relay 5VDC Động DC bơm nước Water Pump P385 12VDC Ống nước (m) Cốc đựng đất 40 Pin DC9V + nắp pin AC/DC Adaptor Ố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 III.1 Mơ hình sản phẩm Hình 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 liệu cách thức thu thập - Nguồn gốc liệu từ trình thu thập liệu hàng ngày khung với điều kiện nhiệt độ, độ ẩm khác - Cách thức thu thập: Mỗi ngày dựa vào mức độ chiếu sáng mặt trời nhiệt độ đất độ ẩm đất khác nhau, chia thành 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 có mẫu ngày ta thu 32 mẫu Để thu thập mẫu: + Bước 1: Đo nhiệt độ đất độ ẩm đất ban đầu + Bước 2: Tưới lượng nước nhỏ cộng với lượng nước tưới trước (lượng nước chưa tưới 0) + Bước 3: Tiếp tục đo lại, độ ẩm nhỏ 82% quay lại bước + Bước 4: Kết thúc trình đo, ta có nhiệt độ đất độ ẩm đất ban đầu tổng lượng nước tưới III.2.2 Tính chất liệu Hình Bản ghi liệu giá tri Tất có 1040 mẫu đo 33 ngày từ: 28/5/2020 – 29/6/2020 Trong đó: - Nhiệt độ đất đo dao động khoảng 28oC - 34oC Nhiệt độ lớn khoảng thời gian 11h – 16h nhỏ khoảng thời gian: 6h – 8h 21h – 24h 14 - Độ ẩm đất đo dao động khoảng từ 20% - 86% Độ ẩm lớn vào khoảng thời gian: 6h – 8h, 23h – 24h vào ngày mưa nhỏ vào khoảng thời gian: 14h -16h III.2.3 Cách phân chia kích thước tập huấn luyện, kiểm thử Dữ liệu gồm có 1040 mẫu, chia thành hai phần: 90% dùng để huấn luyện (training) 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 Python để dự đoán giá trị thực nghiệm với tham số đầu vào nhiệt độ, độ ẩm, thể tích đất đầu lượng nước cần tưới - Điều kiện môi trường: liệu thu thập vào ngày mưa lần ngày nắng, vào tất khoảng 6h – 24h III.4 Quy trình điều kiện kiểm thử hệ thống Hệ thống thuật toán đánh giá thơng qua tiêu chí độ xác, độ ổn định, tốc độ thực thi, khả mở rộng dự án cụ thể: - Tốc độ thực thi trình tưới thời gian phản hồi arduino, esp8266, server, app với điều kiện mạng ổn định khơng q giây - Độ xác thuật toán đánh giá qua tập test hàm đánh giá Mean Square Error thư viện scikit-learn python Mean Square Error (MSE) phương pháp đo chênh lệch trung bình bình phương giá trị thực tế giá trị dự đoán[3], giá trị nhỏ mơ hình học 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 dự đốn với nhiệt độ đất, độ ẩm đất điều kiện mạng ổn định - Khả mở rộng: hệ thống áp dụng với nhiều trồng khác với diện tích đất khác điều kiện thời tiết khác 15 IV Kết luận IV.1 Kết đạt Qua đồ án nhóm chúng em thiết kế xây dựng thành công hệ thống tưới nước thông minh thực thông qua ứng dụng máy tính, hệ thống thực cơng việc sau: - Thực đo nhiệt độ đất độ ẩm đất thời điểm ngày dựa vào cảm biến nhiệt độ đất cảm biến độ ẩm đất - Sử dụng học máy để tính tốn lượng nước cần tưới tối ưu cho trồng - Điều khiển hệ thống cách dễ dàng, thuận tiện thông qua ứng dựng máy tính Ngồi thơng qua đồ án giúp cho cá nhân hoàn thiện khả làm việc nhóm, khả trình bày báo cáo, biết thêm nhiều kiến thức lập trình sống Bên cạnh nhóm gặp khơng khó khăn như: tình trạng dịch nCovid kéo dài, thành viên cách xa nên khó khăn làm việc nhóm; khó khăn việc thu lượng lớn liệu phục vụ cho học máy; hay khó khăn việc tìm hiểu kiến thức chưa học,… Vì việc sai sót khơng thể tránh khỏi mong thầy (cơ) thơng cảm Nhóm chúng em mong nhận ủng hộ đánh giá, nhận xét để hồn thiện hệ thống IV.2 Hướng phát triển Trong tương lai, có thời gian kinh phí chúng em tích hợp sử dụng thêm ứng điện thoại nhằm tạo thuận lợi cho người sử dụng Ngoài thu thập nhiều liệu nhiều vùng miền khác để tăng độ xác hơn, sử dụng vùng miền khác Bên cạnh tính tốn xác lượng nước cần tưới cho loại trồng; sử dụng đồng thời nhiều cảm biến nhiệt độ độ ẩm để thực tưới đồng thời nhiều vị trí khác V Tài liệu tham khảo [1] Link : http://arduino.vn/ [2] Link: https://hshop.vn/ [3] Link: https://en.wikipedia.org/wiki/Mean_squared_error 16 ... viết báo cáo Lê Xuân Mạnh Tìm hiểu Machine learning, viết app nhận liệu để xử lý, gửi nhận liệu app với server, thu thập xử lí liệu, viết báo cáo Nguyễn Đức Minh Tìm hiểu server, liên kết server... SoftwareSerial SerialCommand + Bật tắt Module Relay để điều khiển tưới nước thông qua chân serial - Code kết nối Arduino với ESP8266: sCmd.readSerial(); SoftwareSerial mySerial(RX, TX); SerialCommand sCmd(mySerial);... SoftwareSerial SerialCommand + Nhận truyền lệnh liệu từ Socket server thông qua thư viện SocketIOClient ESP8266WiFi - Code kết nối: + Kết nối với ardunio: SoftwareSerial mySerial(RX, TX); SerialCommand sCmd(mySerial);