NÔNG NGHIỆP THÔNG MINH

Tóm tắt ý tưởng

Nông nghiệp thông minh – Smart Agriculture là một trong những xu thế của thời đại đang rất được quan tâm và nghiên cứu hiện nay.

Dự án Nông nghiệp thông minh – Smart Agriculture System sẽ mô phỏng lại một hệ thống nông nghiệp thông minh thu nhỏ với cảm biến đo độ ẩm đất, tưới cây tự động, giảm sát nhiệt độ và độ ẩm của không khí và hệ thống cảnh báo khi các thông số môi trường vượt mức cho phép, dự án sử dụng các sản phẩm phần cứng Robotics của MakerEdu.vn với những thao tác lắp đặt và lâp trình vô cùng đơn giản.

Mô tả công dụng

  • Đo độ ẩm của đất, hiển thị lên màn hình LCD, tự động bật motor bơm tưới cây khi độ ẩm dưới mức cho phép.
  • Đo độ ẩm và nhiệt độ của không khí, hiển thị lên màn hình LCD, cảnh báo bằng đèn khi độ ẩm hoặc nhiệt độ không khí vượt quá mức cho phép.

Danh sách vật dụng

Vật dụng

Hình ảnh

Chức năng / Chuẩn giao tiếp

Mạch Vietduino Uno (Arduino Uno Compatible) (x1)

Mạch điều khiển trung tâm, tương thích Arduino Uno, kết nối máy tính qua cổng USB

Mạch MakerEDU Shield (x1)

Mạch Shield giúp kết nối Vietduino Uno với các phần cứng Robotics MakerEdu.vn qua chuẩn kết nối XH2.54

Mạch hiển thị MKE-M08 LCD2004 I2C module (x1)

Màn hình hiển thị thông tin, chuẩn giao tiếp Digital I2C

Mạch đóng ngắt tải MKE-M06 SS8050 NPN transistor module (x1)

Đóng ngắt và cấp nguồn cho tải sử dụng 5VDC (Máy bơm chìm mini), chuẩn giao tiếp Digital

Động cơ bơm chìm Mini Water Pump 5VDC (x1)

Bơm nước tưới cây, hoạt động ở điện áp 5VDC

Cảm biến độ ẩm đất MKE-S13 soil moisture sensor (x1)

Cảm biến đo độ ẩm của đất, chuẩn giao tiếp Analog

Cảm biến độ ẩm nhiệt độ MKE-S14 DHT11 temperature and humidity sensor (x1)

Cảm biến đo độ ẩm và nhiệt độ không khí, chuẩn giao tiếp Digital 1-Wire

Mạch led đơn MKE-M01 10mm single LED module

Đỏ x1

Mạch đèn tín hiệu, chuẩn giao tiếp Digital

Cáp Kết Nối MakerEDU XH2.54-XH2.54 3Wires (x4)

Cáp kết nối phần cứng MakerEdu.vn chuẩn XH2.54 3 dây

Cáp Kết Nối MakerEDU XH2.54-XH2.54 4Wires (x1)

Cáp kết nối phần cứng MakerEdu.vn chuẩn XH2.54 4 dây

Flowchart

Hướng dẫn kết nối

LƯU Ý QUAN TRỌNG: CẦN XOÁ CHƯƠNG TRÌNH CŨ TRÊN MẠCH VIETDUINO TRƯỚC KHI THỰC HIỆN KẾT NỐI VỚI CÁC PHẦN CỨNG MỚI ĐỂ TRÁNH CÁC XUNG ĐỘT CÓ THỂ LÀM HƯ HỎNG MẠCH!!!

  • Bước 1: Xoá chương trình cũ có sẵn trên mạch Vietduino trước khi thực hiện kết nối các phần cứng mới.
  • Bước 2: Lắp Shield lên mạch Vietduino Uno
  • Bước 3: Kết nối các phần cứng theo sơ đồ sau:

***Lưu ý quan trọng:

  • Cần gắn đúng chiều dây màu đỏ (dây dương) của máy bơm với chân (+) và dây màu đen (dây âm) của máy bơm với chân (-) của mạch đóng ngắt tải MKE-M06, gắn sai có thể làm hư máy bơm.
  • Không chạy máy bơm liên tục quá lâu (code được lập trình để bơm ngắt quãng 5s 1 lần) có thể làm hư máy bơm + cảm biến độ ẩm đất cập nhật không kịp.

Hướng dẫn lập trình Mblock for Arduino

LƯU Ý QUAN TRỌNG: TRƯỚC KHI THỰC HIỆN CẦN CÀI ĐẶT PHẦN MỀM MBLOCK, CẤU HÌNH PHẦN MỀM VỚI MẠCH VIETDUINO UNO VÀ CÀI ĐẶT CÁC EXTENSION CỦA MAKEREDU.VN THEO HƯỚNG DẪN TẠI ĐÂY

Khai báo biến

Hình thành các bộ phận code

Code hoàn chỉnh

***Link dự án tại Mblock: NÔNG NGHIỆP THÔNG MINH – Mblock Community

Giải thích code

Phân loại   Khối lệnh  Chức năng 
Events Bắt đầu chương trình
Control Lặp lại các khối lệnh theo số lần được chỉ định. Giá trị mặc định là 10 lần
Lặp lại mãi mãi
Thực hiện đoạn mã các tập lệnh trong khối này nếu các điều kiện chỉ định được đáp ứng
● Thực hiện tập lệnh 1 trong khối này nếu các điều kiện được chỉ định được đáp ứng.
● Nếu không, tập lệnh 2 được thực thi
Chờ một khoảng thời gian bao nhiêu giây
Pin Đọc tín hiệu Analog
Bật / tắt thiết bị chuẩn digital
Operators Điều kiện trong ngoặc không đúng
Ghép hai chuỗi lại với nhau
Thực hiện phép tính cộng
Thực hiện phép tính chia
Phép so sánh lớn hơn
Làm tròn số đến số nguyên gần nhất
Variables Gán giá trị cho một biến
MKE-M07,08 Xóa nội dung hiển thị trên màn hình LCD
Kí tự đặc biệt
In dòng chữ hiển thị trên màn hình LCD
MKE-S14 Đọc giá trị nhiệt độ
Đọc giá trị độ ẩm không khí

Hướng dẫn lập trình Arduino

LƯU Ý QUAN TRỌNG: TRƯỚC KHI THỰC HIỆN CẦN CÀI ĐẶT PHẦN MỀM ARDUINO, CẤU HÌNH PHẦN MỀM VỚI MẠCH VIETDUINO UNO VÀ CÀI ĐẶT BỘ THƯ VIỆN CỦA MAKEREDU.VN THEO HƯỚNG DẪN TẠI ĐÂY

// Include library
// Cai dat thu vien
#include "DHT.h"
#include "LiquidCrystal_I2C.h"

// Define connected pin
// Cai dat cong ket noi
#define SOIL_SENSOR_PIN   A3
#define MOTOR_PIN         11
#define LED_PIN           9

//Setup DHT11 Pin to D10
//Cai dat chan ket noi DHT11 voi D10
DHT dht(10, DHT11);

// Set the LCD address to 0x27 for a 16 chars and 2 line display
// Thiet lap dia chi LCD 0x27 de hien thi 16 ky tu tren hai dong
LiquidCrystal_I2C lcd(0x27, 20, 4); 

// Declare variables 
// Khai bao bien
float analogValue;
float Temp;
float Humidity;
int Soil_Value;
int Soid_Limit = 350;

void setup() {
  // Initialize LCD 1602 to display
  // Khoi tao LCD 1602 de hien thi
  lcd.init(); 
  // Turn on LCD backlight   
  // Bat den nen LCD 1602  
  lcd.backlight();   
  // Start DHT11         
  dht.begin();         
  // Thiet lap chan ket noi o trang thai OUTPUT      
  pinMode(LED_PIN, OUTPUT);   // Pinmode led as output pin
  pinMode(MOTOR_PIN, OUTPUT); // Pinmode motor as output pin
}

void loop(){
    //Count 5 times to actived PUMP not run for long time
    //Tao bo dem 5 lan de bom khong hoat dong lien tuc
    int countTime = 5;
        for(int count = 0; count <  5 ; count++){
          countTime += -1;
        //Averaging 10 samples to prevent noise
        //Lay trung binh 10 mau de chong nhieu
         analogValue = 0;
         for(int count1 = 0; count1 <  10 ; count1++){
          analogValue = (analogValue + analogRead(SOIL_SENSOR_PIN));
          delay(100);
         }
         analogValue = analogValue / 10;
         Soil_Value = round(analogValue);
         Temp = dht.readTemperature(0);
         Humidity = dht.readHumidity();
         //Display temperature, humidity and soil moisture value
         //Hien thi thong so nhiet do, do am khong khi DHT11 va thong so do am dat
         lcd.setCursor(0, 0);
         lcd.print(String(String(String("Air: ") + String(Temp)) + String(char(223))) + String(String(" ") + String(String(Humidity) + String("%     "))));
         lcd.setCursor(0, 1);
         lcd.print(String("Soil: ") + String(String(Soil_Value) + String("  ")));
         lcd.setCursor(0, 2);
         lcd.print(String("Soil Limit: ") + String(Soid_Limit));
         if(Soil_Value > Soid_Limit)  {
             lcd.setCursor(0, 3);
             lcd.print("Pump Actived");
             //Active Pump if countTime = 1 and Soil_Value > Soid_Limit
             //Kich hoat bom khi counttime =1 va Soil_Value > Soid_Limit
             if(countTime == 1) {
                digitalWrite(MOTOR_PIN, HIGH);
                delay(200);
                digitalWrite(MOTOR_PIN, LOW);
             }
         }
         else{
             lcd.setCursor(0, 3);
             lcd.print("              ");
             digitalWrite(MOTOR_PIN, LOW);
         }
         //Turn on alarm Led when Temp > 29 and Humidity > 65
         //Kich hoat led bao dong khi nhiet do > 29 va do am >65
         if((Temp > 29)  ||  (Humidity > 65)){
             digitalWrite(LED_PIN, HIGH);
             delay(100);
             digitalWrite(LED_PIN, LOW);
         }
        }
}

***Link tải code tại Github: makereduvn/MakerEdu_Development_Kit (github.com)

Hình ảnh thành phẩm

Tìm kiếm

Các kênh truyền thông

Bài viết phổ biến

Các chuyên mục

Đăng ký theo dõi

Hãy đăng ký theo dõi MakerLab.vn để cập nhật các bài viết và thông tin công nghệ mới nhất!

Bài viết liên quan

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments