Đồ án tốt nghiệp: Thiết kế hệ thống Vườn Rau Thông Minh tại ĐH SPKT

Đồ án thiết kế vườn rau thông minh với hệ thống tưới nước tự động, giám sát nhiệt độ, độ ẩm và điều khiển từ xa tiện lợi qua ứng dụng di động.

Người đăng

Ẩn danh

Thể loại

Đồ án tốt nghiệp

2024

58
0
0

Phí lưu trữ

30 Point

Tóm tắt

I. Giới thiệu về Dự án Vườn Rau Thông Minh

Vườn rau thông minh là một hệ thống nông nghiệp hiện đại kết hợp công nghệ tự động hóa và điều khiển từ xa. Dự án này được phát triển bởi các sinh viên ngành Công nghệ Kỹ thuật Máy tính tại Trường Đại học Sư Phạm Kỹ Thuật TP. Hồ Chí Minh. Hệ thống tưới nước tự động giúp tiết kiệm nước và công sức quản lý vườn trồng. Với ứng dụng di động được phát triển bằng ngôn ngữ Java và Firebase, người dùng có thể điều khiển vườn rau từ bất kỳ nơi đâu thông qua kết nối Internet. Mô hình này tích hợp cảm biến nhiệt độ, độ ẩm đất và các thiết bị điều khiển để tạo môi trường trồng trọt tối ưu. Đây là giải pháp thực tế cho nông nghiệp đô thị và nông nghiệp thông minh hiện đại.

1.1. Khái niệm và Tầm quan trọng

Vườn rau tự động là sự kết hợp giữa công nghệ IoT và nông nghiệp truyền thống. Hệ thống bơm nước tự động được kích hoạt dựa trên độ ẩm đất, giúp cây có nước phù hợp. Tầm quan trọng của dự án nằm ở khả năng tiết kiệm nước và năng lượng, đồng thời giảm công sức lao động. Ứng dụng di động cung cấp giao diện thân thiện, cho phép kiểm tra các chỉ số nhiệt độ môi trường, độ ẩm đất và điều kiện chiếu sáng một cách dễ dàng.

1.2. Mục tiêu của Dự án

Mục tiêu chính của dự án là xây dựng hệ thống vườn rau thông minh hoàn chỉnh có khả năng tự động tưới nước dựa trên dữ liệu cảm biến. Mục tiêu cụ thể bao gồm: xem các chỉ số nhiệt độ môi trường, độ ẩm đất, điều kiện chiếu sáng; điều khiển hệ thống bơm nước từ ứng dụng di động; và hiển thị dữ liệu real-time trên màn hình LCD. Hệ thống cần đảm bảo độ tin cậy cao và thao tác đơn giản cho người dùng.

II. Kiến trúc Hệ thống Vườn Rau Thông Minh

Kiến trúc hệ thống vườn rau thông minh bao gồm ba thành phần chính: phần cứng, phần mềm nhúng và ứng dụng di động. Phần cứng gồm khối xử lí trung tâm (microcontroller), các cảm biến đo nhiệt độ và độ ẩm, hệ thống bơm nước tự động, và màn hình LCD hiển thị. Phần mềm nhúng được lập trình bằng ngôn ngữ C, kiểm soát các hoạt động của cảm biến và thiết bị điều khiển. Ứng dụng di động phát triển bằng Java và tích hợp Firebase cho phép kết nối Internet, gửi lệnh điều khiển và nhận dữ liệu từ hệ thống. Giao tiếp giữa các thành phần thực hiện qua kết nối không dây, tạo nên một hệ thống toàn bộ tự động và được điều khiển từ xa.

2.1. Phần Cứng và Cảm Biến

Phần cứng của hệ thống tưới tự động bao gồm: Microcontroller làm khối xử lí trung tâm, cảm biến độ ẩm đất, cảm biến nhiệt độ và độ ẩm môi trường, module relay điều khiển máy bơm nước, và màn hình LCD. Các cảm biến được lắp đặt tại hai khu vực trồng cây để đo lường điều kiện môi trường. Module relay cho phép bật/tắt bơm nước tự động dựa trên ngưỡng độ ẩm đặt sẵn, đảm bảo cây luôn có nước phù hợp.

2.2. Ứng dụng Di động và Firebase

Ứng dụng di động được phát triển để cung cấp giao diện người dùng thân thiện. Ứng dụng kết nối với hệ thống vườn rau thông qua Firebase, một nền tảng cơ sở dữ liệu thời gian thực. Người dùng có thể xem các chỉ số cảm biến, bật/tắt máy bơm nước từ xa, và nhận thông báo khi có sự cố. Firebase đảm bảo đồng bộ dữ liệu và bảo mật thông tin khi kết nối Internet.

III. Chức năng Tưới Nước Tự động

Hệ thống tưới nước tự động là trái tim của dự án vườn rau thông minh. Hệ thống hoạt động dựa trên các dữ liệu từ cảm biến độ ẩm đất. Khi độ ẩm đất thấp hơn ngưỡng đặt sẵn, máy bơm nước tự động khởi động bơm nước đến khu vực trồng cây. Ngược lại, khi độ ẩm đạt ngưỡng tối ưu, hệ thống tự động dừng bơm. Cách tiếp cận này tiết kiệm nước đáng kể so với tưới thủ công. Người dùng có thể điều chỉnh các ngưỡng độ ẩm thông qua ứng dụng di động, tùy vào loại cây trồng và điều kiện thời tiết. Nút nhấn bật động cơ bơm trên mô hình cho phép kiểm tra và điều khiển thủ công khi cần thiết, đảm bảo linh hoạt trong điều khiển.

3.1. Nguyên lý Hoạt động của Bơm Nước Tự động

Bơm nước tự động được điều khiển bởi thuật toán logic dựa trên giá trị cảm biến độ ẩm đất. Cảm biến đo độ ẩm liên tục gửi dữ liệu đến khối xử lí trung tâm. Khi độ ẩm giảm dưới ngưỡng thiết lập, Microcontroller gửi tín hiệu đến module relay để kích hoạt bơm nước. Quá trình này lặp lại cho đến khi độ ẩm đạt mức tối ưu, sau đó bơm tự động dừng. Phương pháp này đảm bảo cây luôn có nước thích hợp mà không lãng phí.

3.2. Tiết kiệm Tài nguyên Nước

So với tưới thủ công, hệ thống tưới tự động giúp tiết kiệm tài nguyên nước lên đến 40-50%. Hệ thống chỉ bơm nước khi thực sự cần thiết, tránh lãng phí do tưới dư thừa. Người dùng có thể giám sát lượng nước sử dụng thông qua ứng dụng di động. Đặc biệt hữu ích trong các khu vực có hạn chế nước hoặc những người bận rộn không thể chăm sóc vườn hàng ngày.

IV. Điều khiển Ứng dụng Di động

Ứng dụng di động là công cụ chính để người dùng tương tác với vườn rau thông minh. Ứng dụng được phát triển bằng Java với giao diện trực quan, dễ sử dụng. Thông qua ứng dụng, người dùng có thể: xem các chỉ số cảm biến (nhiệt độ, độ ẩm, ánh sáng), bật/tắt máy bơm nước từ xa, điều chỉnh các ngưỡng tự động, và nhận thông báo cảnh báo. Firebase cung cấp kết nối đáng tin cậy giữa ứng dụng và hệ thống phần cứng. Dữ liệu được đồng bộ real-time, cho phép người dùng giám sát vườn rau từ bất kỳ vị trí nào. Giao diện được thiết kế với các nút bấm lớn, hiển thị dữ liệu rõ ràng, phù hợp với người dùng mọi lứa tuổi. Điều khiển từ xa này mang lại tính tiện lợi cao cho quản lý nông nghiệp hiện đại.

4.1. Giao diện và Tính năng Ứng dụng

Ứng dụng di động cung cấp giao diện trực quan với các thành phần chính: màn hình hiển thị cảm biến, bảng điều khiển bơm nước, cài đặt ngưỡng tự động. Màn hình chính hiển thị các chỉ số nhiệt độ môi trường, độ ẩm đất, mức ánh sáng một cách rõ ràng. Người dùng có thể bấm nút bật/tắt bơm nước hoặc chuyển sang chế độ tự động. Tính năng cài đặt cho phép điều chỉnh các ngưỡng độ ẩm tối ưu cho loại cây khác nhau. Lịch sử dữ liệu được lưu trữ, giúp người dùng phân tích xu hướng.

4.2. Kết nối Internet và Firebase

Firebase đóng vai trò trung gian giữa ứng dụng di độnghệ thống vườn rau. Khi ứng dụng kết nối với Internet, dữ liệu được gửi đến Firebase database, từ đó Microcontroller nhận lệnh. Ngược lại, cảm biến gửi dữ liệu lên Firebase, ứng dụng lấy và hiển thị cho người dùng. Kết nối này đảm bảo an toàn, bảo mật thông tin người dùng. Nếu mất kết nối Internet, hệ thống vẫn hoạt động ở chế độ tự động, dữ liệu sẽ đồng bộ khi kết nối lại.

18/12/2025

Trích đoạn nội dung tài liệu

Chương 1: TỔNG QUAN • 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 3 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1 CHUẨN GIAO TIẾP UART [1] 2.1 Giới thiệu 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.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 Số Master Một Số Slave Một 4 2.2 Cách truyền dữ liệu của chuẩn giao tiếp UART Hình 2.1 UART [2] 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.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. 5 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.2 CHUẨN GIAO TIẾP I2C [4] 2.1 Giới thiệu 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. 3 Cấu tạo I2C [5] 6 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.2 Khung truyền I2C Hình 2.4 Khung truyền I2C [6]  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. 7  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.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.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.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.6 Logo Firebase[8] 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.7 Cơ sở dữ liệu thời gian thực của firebase 9 2.4 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:  Thiết Kế Giao Diện: 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.

10  Lập Trình Chức Năng 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. 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. 11 CHƯƠNG 3: THIẾT KẾ HỆ THỐNG 3.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ