Tự làm hệ thống tưới nước tự động cho cây trồng

Trong cuộc sống bận rộn hiện nay, nhiều bạn vẫn có thú vui là trồng những cây cảnh, vườn rau trong không gian trống của nhà mình như sân thượng, ban công. Tuy nhiên, trong những lúc bạn bận đi công tác nhiều ngày thì những cây cảnh và vườn hoa ở nhà sẽ không ai tưới nước. Do đó Robocon giới thiệu đến các bạn cách làm một hệ thống tưới nước tự động được điều khiển bởi mạch điện tử Arduino.

Mỗi chậu cây cảnh cần đặt một bộ cảm biết độ ẩm của đất, lợi thế của cảm biến này là giá rẻ, cảm biến khá tốt nhưng rất dễ bị ăn mòn khi sử dụng lâu dài. Tuy nhiên, bạn có thể trang bị cảm biến tốt hơn như cảm biến độ ẩm đất điện dung với giá đắt hơn.
-Một máy bơm nhỏ với mạch điều khiển Bạn có thể tự trang bị một động cơ máy bơm có công suất nhỏ với khả năng bơm xa khoảng 1 mét. Nhưng nếu cần bạn có thể trang bị máy bơm  lớn hơn để phóng xa hơn cho cả vườn nhà bạn.

Hệ thống tưới cây tự động đơn giản sử dụng mạch Arduino

Chuẩn bị thiết bị

Bạn có thể mua thiết bị ngay bên dưới

Thiết kế mạch

Thiết kế mạch như hình dưới đây: 

Tự làm hệ thống tưới nước tự động cho cây trồng

Lắp đặt

  • Lắp đặt mạch như sơ đồ ở trong breadboard.
  • Cắm ngập cảm biến xuống đất ở chậu cây.
  • Chuẩn bị chậu nước, nối ống dẫn với bơm đúng chiều.
  • Cắm mạch vào máy tính qua usb, và nạp chương trình vào mạch uno.

NẠP CODE CHO ARDUINO:

Cách làm:

1. Cài IDE để nạp chương trình cho mạch Arduino tại địa chỉ: http://arduino.cc/en/Main/Software

2. Cắm mạch arduino vào máy tính và nạp vào đoạn mã sau:

 

/**
* Automatic Watering using Arduino
*/

int const SENSOR_MH_D_PIN = 4;
int const SENSOR_MH_A_PIN = A0;
int const T_RELAY_PIN = 2;

int const TIME_TO_GET_SAMPLE = 5000; //5s
int const SAMPLE_TIME = 500; //0.5 s

int const LED_PIN = 13;

int const LED_BLUE_PIN = 10;
int const LED_YEWLOW_PIN = 9;
int const LED_RED_PIN = 8;

int const TREE_WATER_LEVEL_HIGH = 600;
int const TREE_WATER_LEVEL_LOW = 300;

int sensorMHValue = 0;//store sensor value

int bumpStatus = 0;
int waterStatus = 0;// -1: less water, 0: enough water, +1 : more water

void setup() {
//serial print
// Serial.begin(9600);

pinMode(SENSOR_MH_D_PIN,INPUT);
pinMode(T_RELAY_PIN, OUTPUT);

pinMode(LED_PIN, OUTPUT);
pinMode(LED_BLUE_PIN, OUTPUT);
pinMode(LED_YEWLOW_PIN, OUTPUT);
pinMode(LED_RED_PIN, OUTPUT);
}

void loop() {
// process and checking to watering
wateringProcess();

// Send information to serial port
//printToSerialPort();

//show the led status
showLedInfo();
}

void wateringProcess(){
int sensorStatus = digitalRead(SENSOR_MH_D_PIN);
int sensorValue = getSensorSampleValue();
if(sensorStatus == 0){
if(sensorValue > TREE_WATER_LEVEL_HIGH){
digitalWrite(T_RELAY_PIN, HIGH);
bumpStatus = 1;
waterStatus = -1;
}else if(sensorValue < TREE_WATER_LEVEL_LOW){
digitalWrite(T_RELAY_PIN, LOW);
bumpStatus = 0;
waterStatus = +1;
}else{
digitalWrite(T_RELAY_PIN, LOW);
bumpStatus = 0;
waterStatus = 0;
}
}else{
digitalWrite(T_RELAY_PIN, HIGH);
bumpStatus = 1;
waterStatus = -1;
}
}

int getSensorSampleValue(){
int value = 0;
int t = TIME_TO_GET_SAMPLE/ SAMPLE_TIME;
int total = 0;
for(int i =0; i < t ; i++){
total += analogRead(SENSOR_MH_A_PIN);
delay(t);
}
return total / t;
}
void printToSerialPort(){
Serial.print("Bumper enable: "); Serial.println(bumpStatus);
Serial.print("Sensor value: "); Serial.println(sensorMHValue);
}

void showLedInfo(){
if(bumpStatus == 1){
digitalWrite(LED_YEWLOW_PIN, HIGH);
}else{
digitalWrite(LED_YEWLOW_PIN, LOW);
}

if(waterStatus == 0){
digitalWrite(LED_RED_PIN, LOW);
digitalWrite(LED_BLUE_PIN, HIGH);
}else{
digitalWrite(LED_RED_PIN, HIGH);
digitalWrite(LED_BLUE_PIN,LOW);
}
}

Video hướng dẫn nạp code: 

Thử nghiệm

  • Kiểm tra đấu nối với nguồn nước.
  • Kiểm tra cảm biến độ ẩm đã ngập sâu vào đất hay chưa.
  • Kiểm tra độ ẩm đất.
  • Bật hệ thống tưới tự động.
  • Kiểm tra thông tin thông qua đèn báo.
  • Đợi để kiểm tra hệ thống hoạt động với 3 chế độ (Thiếu nước, đủ nước, thừa nước).

 

Làm Mới
Bài viết cùng chuyên mục