View Categories

Thư viện cảm biến độ ẩm đất (Soil Moisture Sensor) mô phỏng trong Proteus 8

Cảm biến độ ẩm đất (Soil Moisture Sensor) thường được sử dụng trong các hệ thống tưới nước tự động, vườn thông minh và các ứng dụng tương tự. Thiết bị này đo độ ẩm của đất thông qua đầu dò, sau đó cung cấp tín hiệu đầu ra dưới dạng Analog và Digital qua hai chân tương ứng, giúp dễ dàng kết nối và giao tiếp với vi điều khiển để triển khai nhiều ứng dụng đa dạng.

Thông số kỹ thuật của cảm biến độ ẩm đất: #

  • Điện áp hoạt động: 3.3 ~ 5VDC
  • Tín hiệu đầu ra:
    • Analog: Giá trị tương ứng với điện áp cấp nguồn.
    • Digital: Mức tín hiệu High hoặc Low. Có thể điều chỉnh ngưỡng độ ẩm mong muốn bằng biến trở, sử dụng mạch so sánh tích hợp LM393.
  • Kích thước: 3 x 1.6 cm

Sơ đồ chân: #

VCC Chân cấp nguồn (3.3 ~ 5V)
GND Chân nối đất
DO Tín hiệu đầu ra Digital
AO Tín hiệu đầu ra Analog

Hướng dẫn cách sử dụng với Arduino #

Kết nối cảm biến độ ẩm đất (Soil Moisture Sensor) với Arduino Uno #

  • VCC (Chân cảm biến) → Kết nối với chân 5V của Arduino
  • GND (Chân cảm biến) → Kết nối với chân GND của Arduino
  • A0 (Chân xuất tín hiệu Analog của cảm biến) → Kết nối với chân A0 (Analog Input) của Arduino
  • D0 (Chân xuất tín hiệu Digital của cảm biến) → Kết nối với bất kỳ chân Digital Input nào của Arduino
int moistD = 8;    
int moistA = A0;  

bool lastDState = HIGH; 
int lastALevel = 0;     

void setup() {
  Serial.begin(9600);
  
  pinMode(moistD, INPUT);
  pinMode(LED_BUILTIN, OUTPUT);
  
  int initDState = digitalRead(moistD);
  int initALevel = analogRead(moistA);
  
  if (initDState == LOW) {
    Serial.println("Soil is wet!");
    digitalWrite(LED_BUILTIN, HIGH);  
  } else {
    Serial.println("Soil is dry.");
    digitalWrite(LED_BUILTIN, LOW);   
  }
  
  Serial.print("Initial Moisture Level: ");
  Serial.println(initALevel);
}

void loop() {
  int currDState = digitalRead(moistD);  
  int currALevel = analogRead(moistA);
  
  if (currDState != lastDState) {
    lastDState = currDState;
    
    if (currDState == LOW) {
      Serial.println("Soil is wet!");
      digitalWrite(LED_BUILTIN, HIGH);  
    } else {
      Serial.println("Soil is dry.");
      digitalWrite(LED_BUILTIN, LOW);   
    }
  }

  if (currALevel != lastALevel) {
    if (currALevel > lastALevel) {
      Serial.print("Moisture increasing: ");
    } else {
      Serial.print("Moisture decreasing: ");
    }
    
    Serial.println(currALevel);
    lastALevel = currALevel;
  }

  delay(100); 
}

Tải thư viện #

Để có kinh phí tiếp tục duy trì website, bằng cách Donate bạn sẽ nhận ngay bộ thư viện Arduino Proteus đầy đủ nhất. Donate ngay

Leave a Reply

Your email address will not be published. Required fields are marked *