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 đ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à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 |
![]() |
Bơm nước tưới cây, hoạt động ở điện áp 5VDC |
|
![]() |
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 phần cứng MakerEdu.vn chuẩn XH2.54 3 dây | |
|
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)