Dự án tự động tưới cây tự thực hiện (DIY) Dự án này tập trung vào việc tạo ra một hệ thống tự động tưới cây dựa trên việc cảm biến độ ẩm và sử dụng vi điều khiển 8051. Hệ thống đơn giản cảm nhận mức độ độ ẩm trong đất và kích hoạt máy tưới khi độ ẩm thấp hơn ngưỡng đã được đặt. Hệ thống sẽ tắt máy tưới khi độ ẩm tăng lên trên giá trị đã được thiết lập. Ngưỡng độ ẩm có thể được điều chỉnh bằng cách sử dụng trim pot trên hệ thống. Trạng thái của máy tưới (đang hoạt động hoặc tắt) được hiển thị trên màn hình LCD 16x2. Hệ thống có thể được chia thành ba phần như sau:
Đầu ra của mô-đun so sánh (D0) được kết nối với chân P3.5 của vi điều khiển 8051. Vi điều khiển kiểm tra mức độ độ ẩm bằng cách kiểm tra trạng thái của chân P3.5, đó là đầu ra của mô-đun so sánh.
; Chương trình tưới cây tự động sử dụng vi điều khiển 8051
; Định nghĩa các hằng số cho chân kết nối vi điều khiển với màn hình LCD
RS EQU P2.7
RW EQU P2.6
E EQU P2.5
; Bắt đầu chương trình ở địa chỉ 00H
ORG 00H
; Bật chân P3.5 làm ngõ vào để đọc trạng thái cảm biến độ ẩm
SETB P3.5
; Cài đặt chế độ Timer 0 để tạo độ trễ
MOV TMOD, #00000001B
; Vòng lặp chính của chương trình
MAIN:
ACALL DINT ; Hiển thị "Moisture Control" trên màn hình LCD
ACALL TEXT1
JB P3.5, NEXT ; Kiểm tra trạng thái của cảm biến độ ẩm
ACALL LINE2 ; Di chuyển con trỏ xuống dòng thứ 2 của màn hình LCD
ACALL TEXT2 ; Hiển thị "Pump OFF" trên màn hình LCD
CLR P2.0 ; Tắt máy tưới
SJMP EXIT ; Nhảy tới kết thúc vòng lặp
; Nhãn NEXT
NEXT:
ACALL LINE2 ; Di chuyển con trỏ xuống dòng thứ 2 của màn hình LCD
ACALL TEXT3 ; Hiển thị "Pump ON" trên màn hình LCD
SETB P2.0 ; Bật máy tưới
; Kết thúc vòng lặp và thực hiện hàm DELAY1 để tạo độ trễ
EXIT:
ACALL DELAY1
SJMP MAIN ; Quay lại vòng lặp chính
; Hàm DELAY1 để tạo độ trễ
DELAY1:
MOV R0, #15D
BACK1:
MOV TH0, #00000000B
MOV TL0, #00000000B
SETB TR0
HERE2:
JNB TF0, HERE2
CLR TR0
CLR TF0
DJNZ R0, BACK1
RET
; Hàm TEXT1 để hiển thị "Moisture Control" trên màn hình LCD
TEXT1:
MOV A, #"M"
ACALL DISPLAY
MOV A, #"o"
ACALL DISPLAY
; Các dòng tiếp theo cũng tương tự
; Hàm DINT để cài đặt màn hình LCD
DINT:
MOV A, #0CH
ACALL CMD
MOV A, #01H
ACALL CMD
MOV A, #06H
ACALL CMD
MOV A, #80H
ACALL CMD
MOV A, #3CH
ACALL CMD
RET
; Hàm LINE2 để di chuyển con trỏ xuống dòng thứ 2 của màn hình LCD
LINE2:
MOV A, #0C0H
ACALL CMD
RET
; Hàm CMD để gửi lệnh đến màn hình LCD
CMD:
MOV P0, A
CLR RS ; Xóa RS (chọn chế độ lệnh)
CLR RW ; Xóa RW (chế độ ghi)
SETB E ; Kích hoạt tín hiệu E (Enable)
CLR E ; Tắt tín hiệu E (Enable)
ACALL DELAY ; Tạo độ trễ
RET
; Hàm DISPLAY để gửi dữ liệu đến màn hình LCD
DISPLAY:
MOV P0, A
SETB RS ; Đặt RS (chọn chế độ dữ liệu)
CLR RW ; Xóa RW (chế độ ghi)
SETB E ; Kích hoạt tín hiệu E (Enable)
CLR E ; Tắt tín hiệu E (Enable)
ACALL DELAY ; Tạo độ trễ
RET
; Hàm DELAY để tạo độ trễ
DELAY:
CLR E
CLR RS
SETB RW
MOV P0, #0FFH
SETB E
MOV A, P0
JB ACC.7, DELAY
CLR E
CLR RW
RET
; Kết thúc chương trình
END
Hotline: 0979 466 469