- Khi độ ẩm cao hơn mức cảnh báo warningMoisture mức độ thấp nhất mà chúng ta muốn thiết bị sẽ thông báo cho chúng ta khi độ ẩm đo được thấp hơn giá trị này.. Giá trị mặc định sẽ là 30 k
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
Vật Lý Cho Công Nghệ Thông Tin
Báo cáo đồ án cuối kì
Hệ thống tưới nước tự động dựa trên độ ẩm đất Lớp học phần: PHY00007_21CLC06
Nhóm: 10
21127459 - Nguyễn Thị Phương Trinh
21127385 - Phạm Uyễn Nhi
21127653 - Nguyễn Hoàng Đức Nguyên
Giảng viên hướng dẫn: Cao Xuân Nam
Đặng Hoài Thương
Trang 2
Mục lục
1 Thông tin thành viên và vai trò 3
Bảng phân công công việc 3
2 Phần cứng 4
2.1 Sơ đồ mạch điện 4
2.2 Chức năng phần cứng: 5
3 Website 5
4 Thiết kế 3D bên ngoài sản phẩm 7
5 Thiết kế 3D bên trong sản phẩm 10
6 Sơ đồ truyền nhận dữ liệu 11
Trang 31 Thông tin thành viên và vai trò
10
Bảng phân công công việc
thành
nguồn cho mạch arduino, thiết kế mạch điện
Nguyễn Hoàng Đức Nguyên
100%
nước và relay
Nguyễn Hoàng Đức Nguyên
100%
ESP8266, thiết lập wifi
giao thức MQTT
Nguyễn Thị Phương Trinh, Phạm Uyễn Nhi
100%
phẩm, thiết kế bên trong sản phẩm
website
Nguyễn Thị Phương Trinh
100%
dùng
Nguyễn Thị Phương Trinh
100%
Trang 47/12/2023 9/12/2023 Lập trình vòng loop,
chế độ đèn led, nhận
dữ liệu mqtt từ web gửi về để xử lý cảm biến
Nguyễn Hoàng Đức Nguyên
100%
kiểm tra các chức năng
Phương Trinh
100%
2 Phần cứng
2.1 Sơ đồ mạch điện
Hình 1 Sơ đồ mạch điện
Mô tả sơ lược:
- Nguồn: Chân âm của nguồn nối với chân dương của máy bơm, chân dương nối với chân COM của relay
- Máy bơm: Chân âm nối với chân NO của relay, chân dương nối với chân âm của nguồn
- Relay: Chân COM nối với chân dương của nguồn, chân NO nối với chân âm của máy bơm, chân tín hiệu nối vào D2 của mạch NodeMCU
- Led: Nối vào các chân D5, D6, D7 của NodeMCU theo thứ tự xanh lá, vàng, đỏ
- Cảm biến độ ẩm đất: Chân analog nối vào chân A0 của NodeMCU
Trang 52.2 Chức năng phần cứng:
- Cảm biến độ ẩm đất cắm vào phần đất trồng, cảm biến sẽ đo được các giá trị từ 0 đến 1023, ta cần chuyển đổi sang % bằng cách dùng map(0, 100, 0, 1023), sau đó lấy 100 trừ đi cho giá trị đã tính được, chúng ta sẽ có được độ ẩm đo được tính theo phần trăm
- Độ ẩm đo được sẽ được sử dụng để thực hiện tiếp cho chức năng bật đèn led
- Khi độ ẩm cao hơn mức cảnh báo warningMoisture (mức độ thấp nhất mà chúng
ta muốn thiết bị sẽ thông báo cho chúng ta khi độ ẩm đo được thấp hơn giá trị này Giá trị mặc định sẽ là 30 khi chạy chương trình, sau đó ta có thể điều khiển trên web để thay đổi giá trị này) thì đèn led xanh sẽ sáng, báo hiệu độ ẩm ở mức
ổn định và không cần tưới nước
- Khi độ ẩm thấp hơn mức cảnh báo, nhưng lớn hơn warningMoisture – 5, thì đèn led vàng sẽ sáng, báo hiệu độ ẩm đang thấp và cần phải chú ý
- Khi độ ẩm thấp hơn cả warningMoisture – 5, đèn led đỏ sẽ sáng báo hiệu đất đang quá khô và gây nguy hiểm cho cây trồng, cần tưới nước ngay Lúc này, nếu chế độ tưới nước là “auto” thì thiết bị sẽ thực hiện digitalWrite(relay, HIGH) để đóng relay, tạo thành mạch kín và máy bơm sẽ hoạt động
- Ngược lại, nếu đang ở chế độ “manual” thì thiết bị sẽ không tưới nước và nếu chúng ta kích hoạt nút Watering trên web thì máy bơm mới hoạt động, bất kể đất đang trong tình trạng nào
- Vì chân được nối với máy bơm là chân NO (thường mở) nên khi được kích hoạt, relay sẽ đóng và cho phép dòng điện từ nguồn đi qua và chạy đến máy bơm
3 Website
Hình 2 Giao diện đăng nhập của website
Trang 6- Ở phần đăng nhập, ta cần phải nhập đúng username và password thì ta sẽ được đưa đến trang Home, là trang chủ của website, và sẽ có thông báo đăng nhập thành công Ngược lại, nếu sai username hoặc password, hệ thống sẽ thông báo đăng nhập thất bại, ta sẽ phải đăng nhập lại
Hình 3 Giao diện trang chủ
- Thiết bị gửi giá trị cảm biến đo được lên MQTT server thông qua topic
21127653/out, mỗi lần đo, gửi cách nhau 1s, website sẽ lấy dữ liệu thông qua node “mqtt in” từ topic đó bằng cách subscribe, sau đó sử dụng các dữ liệu nhận được cho các chức năng tiếp theo
- Đầu tiên, từ trái sang, ta sẽ thấy một biểu đồ Gauge dạng Donut Biểu đồ này hiển thị giá trị độ ẩm đang đo được, màu của vòng tròn thể hiện các mức độ của
độ ẩm:
o Xanh lá: Từ 100 về 31, là độ ẩm ổn định hoặc tạm ổn định của đất,
o Vàng: Từ 30 về 25, là độ ẩm đang thiếu dần và đất đang trở nên khô hơn
o Đỏ: Từ 24 về 0, là đất đang rất khô và rất thiếu nước, gây nguy hiểm cho cây trồng nên cần được tưới nước ngay
- Tiếp theo, biểu đồ Last Measuring ghi nhận các điểm dữ liệu đo được trong thời gian mỗi 1s vừa qua, và sau đó vẽ thành một biều đồ đường thể hiện độ ẩm theo thời gian
- Biều đồ Last data from cloud lấy dữ liệu được lưu từ các lần đo trước trên
Thingspeak về, và sau đó vẽ thành một biểu đồ đường tương tự biểu đồ Last Measuring
- Current moisture là một node UI để thể hiện độ ẩm hiện tại dưới dạng text
Trang 7- Nút điều chỉnh số Minimum Moisture được tạo ra từ node UI “Numeric”, nút này
có tác dụng điều chỉnh độ ẩm thấp nhất có thể chấp nhận được theo ý chúng ta, nhỏ nhất là 0, lớn nhất là 100, bước điều chỉnh là 10 Sau đó, giá trị nhận được sẽ được gửi lên topic 21127653/limit, thiết bị sẽ lấy giá trị đó về bằng cách
subscribe topic trên, sau đó lưu vào biến warningMoisture để sử dụng
- Công tắc Auto được tạo bằng cách sử dụng node “Switch”, công tắc sẽ được lưu
2 trạng thái là “auto” và “manual” tương ứng với “on” và “off” Các trạng thái đó
là chế độ tưới nước cho cây, “auto” là tự động và “manual” là thủ công Sau khi được điều chỉnh, trạng thái của công tắc sẽ được gửi lên topic 21127653/switch, thiết bị sẽ lấy trạng thái đó và lưu vào biến isAuto để sử dụng cho việc tưới nước
- Công tắc Watering có 2 trạng thái là “Watering” và “Stop” tương ứng với “on” và
“off” Trạng thái của công tắc sẽ được gửi lên topic 21127653/button, sau đó được thiết bị lấy về và lưu vào biến isWatering Lưu ý rằng chức năng này chỉ hoạt động khi chế độ tưới nước đang là “Manual”
- Cuối cùng là đèn Led trên dashboard của web, sử dụng node UI “Led” Đèn led này sẽ hiển thị tương ứng với đèn led của thiết bị, thiết bị sẽ gửi trạng thái báo hiệu led nào đang sáng lên topic 21127653/ledColor, sau đó web sẽ lấy trạng thái
đó về và gửi đến node Led để hiển thị trên dashboard
4 Thiết kế 3D bên ngoài sản phẩm
Trang 105 Thiết kế 3D bên trong sản phẩm
Trang 116 Sơ đồ truyền nhận dữ liệu
Hình 4 Sơ đồ truyền nhận dữ liệu
Trang 12- Các dữ liệu được truyền nhận giữa thiết bị và web thông qua mqtt đã mô tả như trên
- Dữ liệu website gửi lên cloud là độ ẩm đo được lấy từ topic 21127653/out, sau
đó tiếp tục gửi lên Thingspeak thông qua node “https request” bằng API key, và lưu vào field 1 trong channel He Thong Tuoi Nuoc, mỗi lần gửi cách nhau 10s bằng node “delay”
- Khi thực hiện đăng nhập, Website sẽ lấy dữ liệu username và password lưu trên Thingspeak để kiểm tra xem người dùng nhập đúng không, nếu đúng thì đăng nhập thành công, nếu sai thì đăng nhập thất bại
- Thiết bị gửi request thông báo cho IFTTT khi xảy ra điều kiện độ ẩm đất quá thấp, sau đó IFTTT sẽ gửi thông báo có nội dung “Soil moisture is too low, please water the plant” về điện thoại của người dùng