Nội dung thực hiện đề tài: Thiết kế vườn rau thông minh có chức năng bơm nước tự động, tính năng điều khiển bởi người dùng qua một phần mềm ứng dụng di động khi kết nối với mạng Internet
TỔNG QUAN
GIỚI THIỆU
Rau xanh không chỉ được xem là một mấu chốt thiết yếu trong chế độ dinh dưỡng của con người, nó rất quan trọng trong việc cung cấp khoáng chất và vitamin, góp phần vào sự cân bằng dinh dưỡng hàng ngày Tại Việt Nam, chúng ta đang đối mặt với thách thức lớn về ô nhiễm môi trường và an toàn thực phẩm Nguyên nhân chính của vấn đề này bao gồm việc sử dụng quá mức hoá chất độc hại, thuốc bảo vệ thực vật, chất kích thích sinh trưởng, và sự sử dụng nguồn đất và nước bị ô nhiễm để trồng rau Đa số người tiêu dùng thường tiếp xúc với các sản phẩm nông nghiệp như rau xanh, hoa quả mà không biết rõ nguồn gốc của chúng Thời đại nay, tối ưu công việc là ưu tiên của người lao động, việc làm vườn theo phong cách truyền thống không còn được ưa chuộng Người dân ở các thành phố lớn, dù bận rộn với công việc, vẫn mong muốn sở hữu một khu vườn để thư giãn hoặc đơn giản chỉ để sản xuất thực phẩm an toàn và vệ sinh Họ mong muốn có khả năng tự quản lý vườn và đồng thời muốn hệ thống tự động chăm sóc khi họ bận rộn Xu hướng trồng thực phẩm tại các khu vực thành thị đang ngày càng phổ biến, được thúc đẩy bởi sự áp dụng các công nghệ kỹ thuật hiện đại Nhanh chóng xuất hiện những thương hiệu làm vườn thông minh, mang lại lợi ích về tiết kiệm thời gian và chi phí, an toàn môi trường, và hệ thống tưới tự động
Trong bối cảnh Công nghiệp 4.0 và sự phát triển mạnh mẽ của Internet, IoT (Internet of Things) đang thay đổi cách con người nghĩ và làm việc Các ứng dụng IoT, như điều khiển và giám sát từ xa, hệ thống định vị, và an ninh an toàn, mang lại sự tiện lợi cho con người Khi kết hợp IoT vào quản lý và chăm sóc cây trồng, đặc biệt là rau xanh, chúng ta có thể tạo ra một hệ thống thông minh và tiện ích Hệ thống này không chỉ đạt được độ tin cậy cao nhờ tính chính xác của nó mà còn mở ra cánh cửa cho sự đổi mới trong nông nghiệp, nhờ vào ưu việt của công nghệ IoT
MỤC TIÊU ĐỀ TÀI
Thiết kế vườn rau thông minh đáp ứng các yêu cầu sau:
• Kiểm tra các thông số nhiệt độ không khí, độ ẩm môi trường, độ ẩm đất, điều kiện chiếu sáng
• Thiết kế ứng dụng android để xem các chỉ số nhiệt độ không khí, độ ẩm môi trường, độ ẩm đất, điều kiện chiếu sáng của vườn rau
• Cài đặt các mức, chế độ tưới theo ý muốn
• Ứng dụng Android hiển thị hình ảnh trực tiếp của khu vườn thông qua camera
Dự án này không chỉ là bước tiến trong việc ứng dụng kiến thức thực hành, mà còn mở ra cơ hội học hỏi mới về quản lý môi trường và cảm biến Quá trình phát triển dự án sẽ là cơ hội để phát triển tư duy giải quyết vấn đề, tính tự giác và làm việc nhóm Ngoài ra, dự án này còn mang lại lợi ích thực tế trong việc quản lý vườn rau và đồng thời tạo nền tảng cho sự phát triển công nghiệp, nông nghiệp và trong lĩnh vực môi trường.
GIỚI HẠN ĐỀ TÀI
Đề tài thiết kế hệ thống vườn rau có hai ô trồng, có thể xem các chỉ số về nhiệt độ và độ ẩm môi trường, độ ẩm đất, ánh sáng giá trị của môi trường bằng cảm biến, có hai chế độ tưới của máy bơm, xem chỉ số và hình ảnh từ xa thông qua ứng dụng Android, khi kết nối mạng Internet sẽ trao đổi dữ liệu liên tục giữa Firebase, phần cứng và phần mềm.
ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU
• Mạch Arduino Uno R3, NodeMCU ESP8266, ESP32 CAM
• Module cảm biến nhiệt độ, độ ẩm không khí, độ ẩm đất và ánh sáng
• Rơ le bật tắt máy bơm
• Cơ sở dữ liệu thời gian thực Firebase
• Dịch vụ lưu trữ đám mây Firebase Storage
• Phần mềm lập trình ứng dụng di động Android Studio
• Nghiên cứu sử dụng nhiều cảm biến cùng lúc, bật tắt rơ le
• Firebase lưu dữ liệu và hình ảnh từ camera
• Sử dụng ứng dụng Android giám sát và điều khiển từ xa
• Tái dùng lượng nước dư thừa.
BỐ CỤC ĐỀ TÀI
Báo cáo đề tài có bố cục gồm 5 chương:
• Chương 2: CƠ SỞ LÝ THUYẾT
• Chương 3: TÍNH TOÁN VÀ THIẾT KẾ
• Chương 4: KẾT QUẢ VÀ ĐÁNH GIÁ
• Chương 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
CƠ SỞ LÝ THUYẾT
CHUẨN GIAO TIẾP UART [1]
UART là một kiểu giao thức truyền dữ liệu được sử dụng tương đối rộng rãi và đơn giản, bao gồm hai đường truyền độc lập dữ liệu là TX (truyền) và RX (nhận) UART là giao thức truyền dữ liệu không đồng bộ, nó là phương thức giao tiếp giữa hai phần cứng sử dụng mối giao tiếp nối tiếp không đồng bộ Tốc độ truyền của UART phải là ở một con số chuẩn và tốc độ giống nhau giữa hai thiết bị truyền và nhận, chẳng hạn như 9600, 38400, 115200 baud và một vài tốc độ khác UART có định nghĩa tốc độ truyền là số lượng bit dữ liệu mỗi giây được truyền tải Tốc độ có thể thay đổi linh hoạt dựa theo yêu cầu người dùng cũng như yêu cầu của các ứng dụng Dữ liệu được truyền qua đường truyền TX RX có dạng khung dữ liệu, sử dụng một bit bắt đầu, bit dừng, bit chẵn lẻ và bit dữ liệu
Giữa hai thiết bị truyền UART thì được kết nối bởi ba đường TX, RX và GND Chân RX của thiết bị nhận sẽ được nối tiếp với chân TX thiết bị gửi và ngược lại, đặc biệt lưu ý là GND phải được chập vào nhau để so sánh mức điện áp
Bảng 2.1 Chuẩn giao tiếp UART [1]
Số dây lượng sử dụng Hai dây
Tốc độ Từ 9600 đến 115200 tốc độ baud
Phương thức truyền của giao thức Không đồng bộ
Kiểu truyền Truyền theo kiểu nối tiếp
2.1.2 Cách truyền dữ liệu của chuẩn giao tiếp UART
UART sẽ truyền data qua một bus data, để chuyển gửi dữ liệu từ các thiết bị khác như Arduino đến UART Dữ liệu từ bus data được chuyển sang UART 1 dưới kiểu truyền song song Sau đó UART1 nhận tín hiệu sẽ bắt đầu tạo gói dữ liệu từ một bit Start, một bit Parity và một bit Stop Sau đó, gói dữ liệu được đưa ra qua các bit liên tiếp tại chân truyền TX UART 2 nhận gói dữ liệu theo từng bit tại chân RX của nó Tiếp theo, UART 2 thực hiện việc loại bỏ Start bit, Parity bit, và Stop bit Khi kết thúc, UART2 sẽ chuyển gói dữ liệu đó song song với bus dữ liệu ở ban đầu nhận
Hình 2.2 Khung dữ liệu UART [3]
Trong giao thức UART, dữ liệu là các gói, hay còn gọi là "Packets" Mỗi Packet bao gồm 1bit bắt đầu, khoảng từ 5 đến 9 bit dữ liệu, 1bit chẵn lẻ và 1 hoặc 2bit dừng
Start bit: UART sẽ giữ cho đường truyền ở mức cao khi chưa thực hiện việc truyền dữ liệu Khi bắt đầu quá trình gửi, đường truyền sẽ được UART bên gửi cho xuống mức thấp trong khoảng một chu kỳ thời gian Khi phát hiện sự chuyển đổi điện áp xuống thấp, UART 2 bắt đầu đọc các bit trong Packets ở tần số của tốc độ truyền
Data Frame: Các bit nào đang truyền sẽ hiện ở đây, nếu dùng bit kiểm tra chẵn lẻ thì có độ dài khung là khoảng 5 đến 8 bit, nếu không thì data frame có thể dài đến
9 bit Bit LSB được gửi đầu tiên trong khung truyền
Parity bit: Mô tả tính lẻ hoặc chẵn của một số, đây là phương thức để UART kiểm tra xem khi truyền có bị lỗi, có sự thay đổi hoặc mất mát dữ liệu hay không Khi truyền dữ liệu sẽ bị các lỗi về tốc độ truyền hoặc do khoảng cách truyền quá xa,
…Khi khung truyền sang thiết bị nhận, nó sẽ bắt đầu đếm tổng số bit là 1, và kiểm tra xem đó là một con số chẵn hay lẻ Từ đó kiểm tra tính chính xác của việc truyền dữ liệu bằng cách nếu parity bit là số 0 thì phải là chẵn ngược lại thì nếu parity bit là số 1 thì phải là con số lẻ, nếu không trùng khớp thì dữ liệu đã bị lỗi.
CHUẨN GIAO TIẾP I2C [4]
Giao thức I2C là một chuẩn giao tiếp đồng bộ nối tiếp, được phát triển bởi Philips Semiconductors Các bit dữ liệu được truyền lần lượt một theo chu kỳ đều đặn được xác định bởi một tín hiệu thời gian và chỉ sử dụng hai dây truyền tín hiệu duy nhất Sử dụng I2C để kết nối với nhiều loại IC, hoặc là vi điều khiển, EEPROM, mạch hiển thị, và các thiết bị IoT khác
I2C có cấu tạo đơn giản, bao gồm hai dây là:
SCL: Xung nhịp đồng hồ sẽ được tạo bởi Master
SDA: Đường dùng để nhận dữ liệu
Giao thức I2C là việc giao tiếp, trao đổi dữ liệu giữa các thiết bị Slave và Master Trong kiểu giao tiếp này, đường truyền SCL và đường lệnh SDA sẽ được điều khiển bởi Master, thường là một vi điều khiển Các thiết bị IC, vi điều khiển Slave sẽ nhận dữ liệu và lệnh từ Master
Master và Slave kết nối với nhau ở chế độ Open Drain thông qua hai dây SDL và SDA Để tránh tình trạng ngắn mạch, không có thiết bị nào trên I2C có thể kéo SCL và SDA lên mức cao (HIGH) và ngược lại, bất kỳ thiết bị nào cũng kéo xuống được mức thấp (LOW), sẽ không có tính trạng một bên cố gắng kéo lên mức cao trong khi một bên đang cố gắng kéo xuống mức thấp
Vì vậy, để ngăn chặn hiện tượng trên, một điện trở (thường là khoảng 1 - 4,7 kΩ) được sử dụng để duy trì mức cao mặc định trên đường bus
Giao tiếp I2C hiện hỗ trợ hai chế độ tốc độ khác nhau:
Chế độ hoạt động chuẩn hoạt động với tốc độ 100 kBit/s
Chế độ hoạt động tốc độ thấp với tốc độ 10 kBit/s
Khối bắt đầu: Cho biết việc truyền dữ liệu sẽ bắt đầu
Bit địa chỉ: Được sử dụng để phân biệt giữa nhiều IC hoặc thiết bị trong quá trình truyền nhận Thường là 7 bit, nhưng có thể là 8, 9, hoặc 10 bit tùy thuộc vào yêu cầu cụ thể
Bit read/ write: Có tác dụng kiểm tra xem Master đang gửi hay nhận dữ liệu Nếu bit này bằng ‘0’ thì tương ứng với Master gửi dữ liệu và ngược lại, nếu nó bằng ‘1’ là nhận dữ liệu
Bit ACK/NACK: Sử dụng để xác nhận sự trùng khớp giữa các địa chỉ Nếu giống nhau, Slave trả về giá trị '0', ngược lại là '1'
Khối bit dữ liệu: Chứa dữ liệu muốn gửi, độ dài của nó là 8 bit
Kết thúc: Dấu hiệu thông báo kết thúc quá trình gửi
2.2.3 Quá trình truyền nhận dữ liệu của I2C
Bắt đầu quá trình truyền dữ liệu, Master kéo lần lượt SCL và SDA xuống mức thấp Sau đó, gửi đi một địa chỉ dài 7 bit cùng bit Read/Write tới Slave nhận dữ liệu
Hình 2.5 Sau khi Master gửi xung Start [7]
Thiết bị Slave so sánh địa chỉ nhận được với địa chỉ của nó Nếu giống nhau, đường dây SDA sẽ được kéo xuống mức thấp cũng như cho bit ACK/NACK xuống
0 Nếu khác nhau thì cả đường đó đều được giữ giá trị mặc định là '1'
Trong quá trình truyền, bit Read/Write ở mức cao hoặc thấp sẽ xác định Master gửi hoặc nhận dữ liệu, mức thấp là gửi, mức cao là nhận Khi dữ liệu gửi thành công, ACK/NACK sẽ xuống mức thấp để thông báo cho Master gửi tiếp dữ liệu Khi Slave thành công nhận dữ liệu, Master sẽ gửi tín hiệu bằng cách nâng SDA và SCL từ mức thấp lên mức cao, tín hiệu dừng sẽ cho các Slave biết rằng quá trình gửi dữ liệu đã xong
2.3 CƠ SỞ DỮ LIỆU THỜI GIAN THỰC TRÊN FIREBASE [8]
Firebase lần đầu tiên được ra mắt là vào năm 2012 bởi hai nhà phát triển James Tamplin và Andrew Lee từ công ty Envole, Firebase là công cụ lưu trữ cơ sở dữ liệu dựa trên lưu trữ đám mây nhằm hỗ trợ người dùng dễ dàng thiết kế phần mềm di động, thiết kế web và các ứng dụng có dùng cơ sở dữ liệu
Firebase Realtime Database là một chức năng lưu trữ dữ liệu trực tuyến thời gian thực được chính Firebase phát triển Dịch vụ này cung cấp người dùng một cơ sở dữ liệu đám mây NoSQL, trong đó dữ liệu này có dạng cây JSON và cập nhật liên tục gần như tức thì giữa các phần cứng và nguồn dữ liệu Đồng thời nó còn cho phép lưu trữ và đồng bộ hóa dữ liệu trong thời gian thực giữa các ứng dụng di động, máy chủ và các hệ thống web
Hình 2.7 Cơ sở dữ liệu thời gian thực của firebase
Android Studio là một công cụ phát triển phần mềm di động Android chính thức và mạnh mẽ, nó có sự tin cậy cao và được sử dụng phổ biến trong các mô hình phát triển ứng dụng Đây hoàn toàn một môi trường lập trình hoàn hảo cho việc tạo ra ứng dụng Android và là một nền tảng linh hoạt dễ quản lý cũng như triển khai dự án
Hiện nay, Android Studio mang đến hai ngôn ngữ lập trình chính là Java và Kotlin Tuy vậy, trong cộng đồng phát triển ứng dụng Android (và đặc biệt là trong dự án này), Java được sử dụng làm ngôn ngữ chính Để bắt đầu thiết kế và phát triển một ứng dụng Android bằng Android Studio, người phát triển thực hiện hai công việc chính:
Hình 2.8 Một giao diện Android Studio đang được thiết kế o Người phát triển chịu trách nhiệm tạo ra giao diện bên ngoài màn hình như biểu tượng, nút nhấn, hình ảnh, và các yếu tố khác o Các thành phần này có thể mang theo chức năng cụ thể hoặc không có chức năng nào, thường được đặc trưng và lưu trữ trong các tệp tin có định dạng xml
Hình 2.9 Một số chức năng được lập trình ở phần java class o Giao diện sẽ được thiết kế dựa trên yêu cầu chức năng đặt ra, người phát triển sẽ lập trình để triển khai các chức năng cho mỗi trang hoặc thành phần của ứng dụng o Các tệp tin chứa mã nguồn của các chức năng thường được lưu trữ dưới định dạng java
Android Studio không chỉ cung cấp một môi trường làm việc hiệu quả cho việc tạo ra giao diện và thiết kế các chức năng mà còn cung cấp tính năng kiểm tra, gỡ lỗi, và triển khai ứng dụng một cách thuận tiện, giúp tối ưu hoá việc triển khai ý tưởng và đảm bảo chất lượng ứng dụng Android đầu ra.
ANDROID STUDIO
Android Studio là một công cụ phát triển phần mềm di động Android chính thức và mạnh mẽ, nó có sự tin cậy cao và được sử dụng phổ biến trong các mô hình phát triển ứng dụng Đây hoàn toàn một môi trường lập trình hoàn hảo cho việc tạo ra ứng dụng Android và là một nền tảng linh hoạt dễ quản lý cũng như triển khai dự án
Hiện nay, Android Studio mang đến hai ngôn ngữ lập trình chính là Java và Kotlin Tuy vậy, trong cộng đồng phát triển ứng dụng Android (và đặc biệt là trong dự án này), Java được sử dụng làm ngôn ngữ chính Để bắt đầu thiết kế và phát triển một ứng dụng Android bằng Android Studio, người phát triển thực hiện hai công việc chính:
Hình 2.8 Một giao diện Android Studio đang được thiết kế o Người phát triển chịu trách nhiệm tạo ra giao diện bên ngoài màn hình như biểu tượng, nút nhấn, hình ảnh, và các yếu tố khác o Các thành phần này có thể mang theo chức năng cụ thể hoặc không có chức năng nào, thường được đặc trưng và lưu trữ trong các tệp tin có định dạng xml
Hình 2.9 Một số chức năng được lập trình ở phần java class o Giao diện sẽ được thiết kế dựa trên yêu cầu chức năng đặt ra, người phát triển sẽ lập trình để triển khai các chức năng cho mỗi trang hoặc thành phần của ứng dụng o Các tệp tin chứa mã nguồn của các chức năng thường được lưu trữ dưới định dạng java
Android Studio không chỉ cung cấp một môi trường làm việc hiệu quả cho việc tạo ra giao diện và thiết kế các chức năng mà còn cung cấp tính năng kiểm tra, gỡ lỗi, và triển khai ứng dụng một cách thuận tiện, giúp tối ưu hoá việc triển khai ý tưởng và đảm bảo chất lượng ứng dụng Android đầu ra
THIẾT KẾ HỆ THỐNG
GIỚI THIỆU
Đề tài "Thiết kế Vườn Rau Thông Minh" bao gồm cả phần cứng và phần mềm, và cả hai đều có các yêu cầu cụ thể:
Phần cứng hệ thống có thể khả năng xử lý dữ liệu từ các cảm biến nhiệt độ, độ ẩm, ánh sáng và hiển thị thông số lên màn hình LCD 16x2, kết nối với mạng Wifi và có khả năng truyền nhận dữ liệu với Firebase và các phần cứng khác trong hệ thống, chụp hình từ camera và gửi lên Firebase, đọc cảm biến ánh sáng và bật đèn nếu điều kiện ánh sáng kém, bật động cơ bơm nước theo chu kỳ, bật động cơ bơm nước thông qua nút nhấn
Nhóm bắt đầu bằng việc vẽ lưu đồ giải thuật và viết mã cho từng khối chức năng Sau khi hoàn thiện mã cho mỗi khối và đảm bảo chúng hoạt động ổn định khi chạy độc lập, nhóm tiến hành quá trình hợp nhất để tạo và điều chỉnh chương trình chung cho toàn bộ hệ thống Mục tiêu là đảm bảo giải thuật của toàn hệ thống hoạt động một cách hiệu quả nhất Đối với ứng dụng Android, có thể điều khiển và giám sát vườn rau từ xa, có các yêu cầu chính sau đây:
Hiển thị các giá trị nhiệt độ và độ ẩm môi trường, ánh sáng, độ ẩm đất và hình ảnh từ vườn rau
Lựa chọn chế độ tưới
Lựa chọn thời gian cho một chu kỳ tự động tưới
SƠ ĐỒ KHỐI VÀ CHỨC NĂNG TỪNG KHỐI
Hình 3.1 Sơ đồ khối hệ thống
Các khối có chức năng như sau:
Khối xử lý trung tâm: Lấy và tính toán xử lý chuỗi dữ liệu từ cảm biến, Firebase Bật đèn led và bật động cơ bơm nước dựa theo thông tin nhận được
Khối nguồn: Cung cấp nguồn hoạt động cho toàn hệ thống, có tính liên tục, ổn định
Khối cảm biến: Đọc liên tục giá trị nhiệt độ, độ ẩm không khí, độ ẩm đất, ánh sáng
Khối hiển thị: hiện giá trị đọc được từ cảm biến
Khối nút nhấn: Nhấn nút bật động cơ điều khiển máy bơm
Khối động cơ: Bật động cơ theo chỉ thị từ khối xử lý trung tâm
Khối đèn: Bật đèn khi điều kiện ánh sáng kém
Khối Firebase: Lưu dữ liệu và hình ảnh, tương tác với khối xử lý trung tâm
Khối truyền nhận dữ liệu Firebase: Là trung gian trong giao tiếp giữa khối xử lý trung tâm và Firebase Gửi dữ liệu nhận từ khối xử lý trung tâm lên Firebase và ngược lại, gửi dữ liệu nhận từ Firebase về khối xử lý trung tâm
Khối camera: Chụp hình mỗi phút và gửi hình ảnh lên Storage của Firebase.
NGUYÊN LÝ HOẠT ĐỘNG CỦA HỆ THỐNG
Quá trình hoạt động của hệ thống sẽ tuân theo thứ tự đã được kiệt kê sau đây:
Khối xử lý trung tâm và các ngoại vi khác như cảm biến ánh sáng, nhiệt độ, độ ẩm, LCD, … sẽ khởi động Dữ liệu sẽ bắt đầu được gửi và nhận liên tục lên Firebase thông qua Esp8266 sau khi kết nối được wifi LCD sẽ hiện giá trị đo được từ cảm biến
Hệ thống sẽ bắt đầu đếm thời gian cho đến khi đến chu kỳ bơm sẽ bật động cơ bơm nước, sau khi bơm sẽ bắt đầu đếm chu kỳ mới Nhận giá trị từ Firebase để cài đặt thời gian chu kỳ bơm nước tuỳ theo người nhập
Khi có tín hiệu từ nút nhấn vật lý, hệ thống bật và tắt lần lượt từng máy bơm Bật đèn nếu ánh sáng kém để chụp ảnh không bị tối
Camera sau khi kết nối mạng wifi sẽ bắt đầu chụp và gửi ảnh lên storage Firebase mỗi phút với định dạng ảnh JPG.
THIẾT KẾ HỆ THỐNG PHẦN CỨNG
DHT11 là một loại module cảm biến nhiệt độ, độ ẩm phổ biến, được sử dụng rộng rãi nhờ vào chi phí thấp và tính dễ sử dụng của nó DHT11 có khả năng gửi dữ liệu chỉ với một dây truyền data Dữ liệu của DHT11 có tính chuẩn xác cao vì nó đã tích hợp một bộ tiền xử lý tín hiệu Điều này giúp việc sử dụng dễ dàng, dễ tiếp cận
15 hơn và làm cho nó thành một thiết bị tin dùng trong các ứng dụng đo lường, giám sát nhiệt độ, độ ẩm trong môi trường Với ưu điểm về chi phí và tính đơn giản, cảm biến DHT11 thường được tích hợp trong các dự án điện tử và IoT, nơi yêu cầu theo dõi để điều khiển thiết bị dựa trên điều kiện môi trường
Hình 3.2 Sơ đồ mạch cảm biến DHT11 Bảng 3.1 Đặc điểm thông số DHT11 Điện áp yêu cầu 3V - 5V (DC)
DHT11 gồm 2 chân cấp nguồn, và 1 chân gửi tín hiệu data Hiện nay, có hai loại cho DHT11 thông dụng ngoài thị trường: 3 chân và 4 chân
3.4.1.2 Cảm biến độ ẩm đất
Cảm biến độ ẩm đất (Soil Moisture Sensor) là một thành phần quan trọng được sử dụng trong các hệ thống tưới nước tự động, vườn thông minh, và các ứng dụng khác liên quan đến quản lý độ ẩm của đất Nó giúp xác định mức độ ẩm của đất thông qua phần đầu, sau đó giá trị sẽ được gửi về dưới dạng tín hiệu Analog hoặc Digital thông qua hai chân tương ứng
Hình 3.3 Sơ đồ mạch cảm biến độ ẩm đất
Khi đất có ẩm cao, cảm biến sẽ đưa ra trạng thái đầu ra ở mức 0, khi đất khô sẽ gửi mức 1 Độ nhạy của cảm biến được tinh chỉnh tự do thông qua việc sử dụng một biến trở
Bảng 3.2 Thông số kỹ thuật cảm biến độ ẩm đất Điện áp yêu cầu 3.3V-5V
Cảm biến ánh sáng có đặc tính điện trở biến đổi theo điều kiện ánh sáng nhận được, được tạo ra từ chất bán dẫn với đặc điểm có trở kháng cao và không có tiếp giáp Trong điều kiện tối, quang trở có điện trở lên đến vài Megaohm Khi có ánh sáng, điện trở giảm xuống mức vài trăm Ohm Độ chính xác của cảm biến là ± 5%RH và ±2o
Nguyên lý hoạt động là khi photon có đủ năng lượng va chạm vào, nó sẽ kích thích electron rời khỏi phân tử, tạo ra electron tự do trong chất bán dẫn, làm tăng khả
17 năng dẫn điện của chất Khả năng dẫn điện sẽ thay đổi dựa vào lượng photon đã hấp thụ
Hình 3.4 Sơ đồ mạch cảm biến ánh sáng
Có nhiều loại thiết bị hỗ trợ hiển thị thông số như LCD 20x4, TFT, Nhưng để đảm bảo hiển thị thông tin một cách tối ưu và tận dụng tính nhỏ gọn, nhóm thực hiện đã quyết định sử dụng màn hình LCD 16x2 Đặc điểm của màn hình này là ít kết nối chân, đồng thời sử dụng giao thức giao tiếp nối tiếp đồng bộ I2C Màn hình LCD 16x2 không chỉ nhỏ gọn mà còn giảm số lượng dây cần kết nối bằng cách sử dụng giao thức I2C Điều này giúp tối ưu hóa thiết kế phần cứng, làm cho nó trở nên gọn gàng và dễ dàng trong việc kết nối Việc sử dụng chỉ 2 chân giao tiếp là SCL và SDA cũng giúp tiết kiệm tài nguyên và làm cho quá trình giao tiếp Arduino UNO trở nên thuận tiện Sử dụng chuẩn giao thức kết nối I2C, giúp đơn giản hóa quá trình kết nối với LCD 16x2
Hình 3.5 Sơ đồ mạch LCD 16x2
Hệ thống được lắp thêm đèn led để chiếu sáng Khi điều kiện ánh sáng kém, khối xử lý trung tâm sẽ cho bật đèn led, tránh bị quá tối khi camera chụp hình
Hình 3.6 Sơ đồ mạch led chiếu sáng
3.4.3 Khối xử lý trung tâm [9]
Hiện nay, có thể tìm được rất nhiều vi mạch nhúng được thị trường cung cấp đa dạng để đáp ứng nhu cầu học tập, nghiên cứu, và phát triển sản phẩm chuyên sâu cho khách hàng, bao gồm học sinh, sinh viên và các doanh nghiệp Các loại vi mạch nhúng phổ biến bao gồm ARM, Intel Galileo, Altera, Arduino, Raspberry Pi, và nhiều loại khác Board Arduino Uno R3 đã được nhóm thiết kế chọn làm thiết bị xử lý trung tâm Lựa chọn này được đưa ra do vi điều khiển này phổ biến và dễ dàng lập trình
Nó đáp ứng với các phân khúc thiết kế hệ thống và thỏa mãn được các yếu tố ban đầu
19 mà nhóm đã đề ra Arduino Uno R3 cung cấp sự thuận tiện và tính ổn định trong việc phát triển và thử nghiệm, giúp nhóm hoàn thiện đề tài một cách hiệu quả
Hình 3.7 Sơ đồ mạch Arduino Uno R3
Arduino Uno R3 được cung cấp bởi Arduino, nó sử dụng vi điều khiển ATmega328 Bảng mạch này được trang bị các chân đầu vào/đầu ra Digital và Analog, tạo điều kiện cho việc giao tiếp với các thiết bị ngoại vi [4]
Bảng 3.3 Thông số của Arduino Uno R3
Vi điều khiển sử dụng ATmega328 8bit Điện áp để hoạt động 5V DC (dùng cổng USB)
Tần số Arduino hoạt động 16 MHz
Dòng điện tiêu thụ 30mA Điện áp vào khuyên dùng 7-12V DC Điện áp vào tối đa 6-20V DC
Dòng tối đa trên mỗi chân I/O 30 mA
Dòng ra tối đa (chân 5V) 500 mA
Dòng ra tối đa (chân 3.3V) 50 mA
Bộ nhớ flash 32 KB (ATmega328) với 0.5KB được dùng bởi bootloader
Arduino Uno R3 được trang bị cổng USB, giúp hỗ trợ gỡ lỗi và cấp nguồn Bo mạch được tích hợp vi điều khiển Atmega328, đồng thời tích hợp nhiều tính năng như hẹn giờ, ngắt, bộ đếm, chân PWM, CPU, chân I/O Arduino Uno R3 cung cấp
14 chân I/O digital và 6 chân analog cho phép kết nối với thiết bị ngoại vi và các mạch mở rộng Bo mạch chỉ cần nguồn 5V để hoạt động, có thể lấy nguồn từ cổng USB Ngoài ra, Arduino Uno R3 còn hỗ trợ nguồn điện cắm ngoài lên đến 12V
3.4.4 Khối truyền nhận dữ liệu Firebase
Khối truyền nhận dữ liệu Firebase đóng vai trò then chốt trong việc trao đổi dữ liệu từ Arduino lên Firebase Nhóm thực hiện sử dụng mạch Wifi ESP8266 NodeMCU để đảm nhận vai trò này
Hình 3.8 Sơ đồ mạch ESP8266
ESP8266 NodeMCU là một mạch được xây dựng dựa trên chip Wifi SoC ESP8266 Thiết kế của kit này được tối ưu hóa để dễ tiếp cận, có khả năng dùng Arduino IDE để lập trình và nạp mã, nó mang lại thuận tiện, hiệu quả khi thực hiện những ứng dụng liên quan ESP8266 NodeMCU thường được ưa chuộng trong các
THIẾT KẾ PHẦN MỀM
Hiểu được mong muốn giám sát khu vườn từ xa của người dùng, nhóm đã thực hiện phát triển ra ứng dụng chạy trên Android để người dùng tiện theo dõi Ứng dụng này sẽ tích hợp các chức năng sau đây:
Nhập tên loại rau mong muốn
Hiển thị các thông số môi trường của khu vườn
Kết nối Firebase Storage để cập nhật hình ảnh mỗi phút một lần
Tùy chọn chế độ tưới.
LƯU ĐỒ THUẬT TOÁN PHẦN CỨNG
3.6.1 Lưu đồ thuật toán khối xử lí trung tâm
Khối xử lí trung tâm được thiết kế theo lưu đồ sau:
Hình 3.12 Lưu đồ thuật toán khối xử lý trung tâm
Khi bắt đầu khối xử lý trung tâm khởi động Arduino và các cảm biến cũng như khởi động màn hình LCD và động cơ bơm nước Sau đó, Arduino sẽ chờ đợi kết nối từ ESP8266 bằng kết nối UART Khi thành công sẽ bắt đầu điều khiển động cơ bơm nước dựa trên dữ liệu nhận được, có thể cài đặt thời gian chu kỳ mỗi lần bơm
Hệ thống sau đó kiểm qua nút nhấn xem có tín hiệu được nhấn hay không, hoặc kiểm tra biến bật máy bơm nhận được từ ESP8266, nếu một trong hai thoả điều kiện thì bật máy bơm nước
Kiểm tra giá trị ánh sáng xem nếu ánh sáng kém thì bật đèn led, nhằm đảm bảo môi trường ánh sáng thuận lợi cho camera chụp hình
3.6.2 Lưu đồ thuật toán khối truyền nhận dữ liệu Firebase
ESP8266 là thiết bị giao tiếp trung gian Firebase và Arduino Nó nhận dữ liệu từ Arduino để gửi lên Firebase, và ngược lại, cũng nhận dữ liệu từ Firebase để chuyển qua cho Arduino Lưu đồ khối truyền nhận dữ liệu Firebase như sau:
Hình 3.13 Lưu đồ giải thuật khối truyền nhận dữ liệu Firebase
3.6.3 Lưu đồ giải thuật điều khiển động cơ
Bật động cơ bơm khi nhận tín hiệu bơm từ Arduino khi biến đếm chu kỳ được đếm đến 0 giây, hoặc khi nhận tín hiệu bật động cơ lập tức Tín hiệu bơm có để được gửi từ ứng dụng di động Lưu đồ của khối như sau:
Hình 3.14 Lưu đồ giải thuật điều khiển động cơ.
LƯU ĐỒ GIẢI THUẬT ỨNG DỤNG TRÊN ANDROID
3.7.1 Lưu đồ nhận truyền dữ liệu giữa Firebase và ứng dụng
Sau khi nhận giá trị độ ẩm môi trường thì sẽ so sánh với mức đã cài làm ngưỡng (ở đây là 85), nếu độ ẩm vượt quá ngưỡng thì sẽ xuất giá trị ra màn hình là màu xanh, còn nếu thấp hơn thì sẽ là màu đen
Hình 3.15 Lưu đồ đọc dữ liệu độ ẩm
Sau khi nhận giá trị nhiệt độ thì sẽ so sánh với mức đã cài làm ngưỡng (ở đây là 33), nếu giá trị nhiệt độ trên 33 thì sẽ xuất giá trị ra màn hình là màu xanh, còn nếu thấp hơn thì sẽ là màu đen
Hình 3.16 Lưu đồ đọc dữ liệu nhiệt độ
Sau khi nhận giá trị độ ẩm đất thì sẽ tiến hành kiểm tra nếu giá trị đó là 0 thì sẽ là đất ẩm, còn 1 là đất khô
Hình 3.17 Lưu đồ đọc dữ liệu độ ẩm đất
Sau khi nhận giá trị ánh sáng thì sẽ tiến hành kiểm tra nếu giá trị đó là 0 thì sẽ là ánh sáng tốt, còn 1 là ánh sáng kém
Hình 3.18 Lưu đồ đọc dữ liệu ánh sáng Ứng dụng sẽ lấy hình ảnh xuống từ Storage Firebase, rồi cứ mỗi một phút thì sẽ cập nhật hình ảnh mới nhất
Hình 3.19 Lưu đồ nhận hình ảnh
Cài đặt giá trị bơm ban đầu (ví dụ: 8 tiếng, 12 tiếng, ) sau đó sẽ chọn chế độ mặc định hoặc tưới ngay Ở chế độ mặc định người dùng sẽ lựa chọn thời gian cụ thể mà họ mong muốn, sau khi chọn thời gian thì nhấn nút xác nhận để gửi lên Firebase, còn chế độ tưới ngay thì khi chọn sẽ kích hoạt máy bơm và thời gian bơm sẽ là 15 giây
Hình 3.20 Lưu đồ chọn chế độ máy bơm
3.7.2 Lưu đồ tổng thể của ứng dụng
Sau khi tổng hợp các lưu đồ chức năng truyền nhận dữ liệu giữa Firebase và ứng dụng vào trong thiết kế chính thì cho ra được lưu đồ giải thuật tổng thể sau
Hình 3.21 Lưu đồ tổng thể ứng dụng
Khi mở ứng dụng lên thì nó sẽ khởi tạo các đối tượng hiển thị và con trỏ để trỏ tới Firebase đã liên kết Kết nối mạng Internet là yêu cầu bắt buộc nếu muốn trao đổi dữ liệu với Firebase, nếu chưa kết nối mạng thì sẽ hiện thông báo yêu cầu người dùng mở kết nối mạng Ngược lại, nếu đã kết nối mạng thành công, thì ứng dụng sẽ tự động kết nối đến Firebase và bắt đầu quá trình truyền nhận dữ liệu
KẾT QUẢ VÀ ĐÁNH GIÁ
KẾT QUẢ THỰC HIỆN MÔ HÌNH
Dưới đây là mô hình hoàn thiện của hệ thống khi được cấp nguồn Mô hình được làm từ nhựa mica trong suốt, bao gồm hai khu vực trồng cây, một hộp chứa linh kiện, màn hình LCD 16x2 và nút nhấn được đặt trên hộp linh kiện, một camera được đặt tại góc Động cơ bơm nước được đặt dưới mô hình, chìm trong bể chứa nước, ống bơm nước được dán xung quanh cạnh mô hình khu vực trồng cây Đèn led được dán tại các góc của mô hình, sẽ được bật khi điều kiện ánh sáng kém Động cơ bơm nước sẽ bơm theo chu kỳ mặc định là 8 tiếng một lần, chu kỳ bật động cơ bơm có thể thay đổi bằng cách thao trên ứng dụng di động
Hình 4.1 Mô hình hoàn thiện hệ thống
Hình 4.2 Mô hình nhìn từ trên xuống
Một màn hình LCD hiển thị các giá trị của cảm biến của từng khu vực trồng cây Nút nhấn khi nhấn sẽ bật toàn bộ động cơ bơm nước theo thứ tự lần lượt, sau đó cài biến đếm lại từ đầu
Hình 4.3 Màn hình LCD và nút nhấn
Các dữ liệu như thông số cảm biến, chu kỳ bơm sẽ được lưu trên Realtime Database Firebase, các dữ liệu này sẽ được gửi nhận, đồng bộ liên tục
Hình 4.4 Định dạng dữ liệu trên Firebase
Camera sau khi kết nối Wifi sẽ chụp một tấm hình mỗi phút và gửi lên
Storage Firebase, có thể xem hình trên ứng dụng điện thoại
Hình 4.5 Hình ảnh từ Camera ESP-32
Hình ảnh được lưu trữ với định dạng JPG, được đặt tên là photo Camera sau khi chụp một tấm hình mới và gửi lên Firebase, hình mới sẽ được lưu đè lên hình cũ, nhằm tránh đầy thư mục lưu trữ
Hình 4.6 Thư mục lưu trữ hình ảnh Storage Firebase Ứng dụng Android được thiết kế có biểu tưởng như hình bên dưới
Hình 4.7 Icon ứng dụng điện thoại
Khi bật ứng dụng lên sẽ hiển thị màn hình chính của ứng dụng, trên màn hình chính có các số liệu chi tiết như tên loại rau, nhiệt độ và độ ẩm không khí, độ ẩm đất, ánh sáng, các chế độ tưới và hình ảnh khu vườn
Hình 4.8 Giao diện chính của ứng dụng
Người dùng có thể đặt tên rau cho từng vườn theo ý muốn, sau đó nhấn nút
Hình 4.9 Cài đặt tên rau
Có thể thay đổi chu kỳ bơm nước bằng cách chọn các ô như 8 tiếng, 12 tiếng,
24 tiếng và bấm xác nhận thì chu kỳ tưới sẽ cập nhật lên phần cứng Nếu người dùng
37 muốn tưới cây thủ công có thể tích chọn ô “Thủ công” và bấm xác nhận việc bật máy bơm
Hình 4.10 Chọn chế độ tưới.
ĐÁNH GIÁ
Khi đã hoàn thiện hệ thống, nhóm thực hiện đưa ra đánh giá như sau:
Các cảm biến có thời gian đáp ứng tương đối nhanh, gần như tức thì
Nút nhấn bật động cơ bơm có độ trễ một giây, phải nhấn trong vòng một giây mới bật động cơ
Các thông số hiển thị trên LCD có độ trễ dưới 300 mili giây
Tốc độ gửi và nhận dữ liệu từ Firebase xuống phần cứng còn chậm, độ trễ từ 2 đến 4 giây
Tốc độ gửi nhận dữ liệu giữa ứng dụng di động và Firebase có độ trễ dưới
300 mili giây, có thể chậm hơn nếu điều kiện mạng wifi kém Ưu điểm của mô hình:
Linh kiện dễ tìm kiếm và có giá thành rẻ
Tiết kiệm nước, lượng nước dư khi tưới sẽ về bể nước và được sử dụng lại
Dễ tiếp cận do đa phần chạy tự động
Phải sử dụng nhiều nguồn để cung cấp cho hệ thống hoạt động
Các ống bơm nước do tự chế nên khả năng bơm bị giảm so với tính toán ban đầu
Đôi khi việc truyền nhận dữ liệu chậm do chất lượng mạng
Đôi khi hệ thống hoạt động không như mong đợi và phát sinh lỗi