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.
Bạn có thể mua thiết bị ngay bên dưới
Thiết kế mạch như hình dưới đây:
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);
}
}
Giấy phép MXH số 387/GP-BTTTT do Bộ Thông Tin và Truyền Thông cấp ngày 09/08/2017
Người chịu trách nhiệm nội dung: Trần Văn Huy
Đơn vị chủ quản: Công ty cổ phần Công Nghệ và Thương Mại GreenLife
Trụ sở: Tầng 3 số 243 Cầu Giấy, Dịch Vọng, Cầu Giấy, Hà Nội
Email liên hệ: [email protected] - Điện thoại: 0984.058.766
Mã số doanh nghiệp: 0107648611