mardinio Tarim Kiti Örnek Uygulama

Merhabalar, kendi tasarımımız olan mardinio kartımız ile bir tarım uygulaması örneği paylaşıyoruz.

Bu örnekte Sıcaklık, Toprak nem, methan gazı sensörleri; bir adet buzzer ve 1 adet su tahliyesi için su motoru kullanılmıştır.


#include "dht.h"

#define dhtPin A0             // Sıcaklık Nem Pin
#define soilHumidityPin A3    // Toprak Nem Pin
#define methanePin A2         // Metan Pin
#define buzzerPin 4           // Buzzer Pin
#define motorPin 6            // Motor Pin

void setup() {

  pinMode(buzzerPin, OUTPUT);
  pinMode(motorPin, OUTPUT);
  digitalWrite(motorPin, LOW);
  Serial.begin(9600);
  delay(500);//Delay to let system boot
  Serial.println("Turk Tarim Akademisi\n");
  delay(1000);//Wait before accessing Sensor

}//end "setup()"

void loop() {
  readTempHum();
  readSoilHum();
  readMethane();


  delay(3000);//Wait 5 seconds before accessing sensor again.
}// end loop()

void readTempHum() {
  dht DHT;
  DHT.read11(dhtPin);
  Serial.print("Nem: ");
  Serial.print(DHT.humidity);
  Serial.print("%  ");
  Serial.print("Sicaklik: ");
  Serial.print(DHT.temperature);
  Serial.println("C  ");
  Serial.println("");
}

void readSoilHum() {
  int soilHum = analogRead(soilHumidityPin);
  if (soilHum >= 0 && soilHum <= 50) {
    Serial.println("Toprak Nem Sensoru: Sensor Hatasi!");
    controlMotor(0);
    controlBuzzer(1);
    return;
  } else if (soilHum > 50 && soilHum <= 650) {  // Kuru Toprak
    controlMotor(1);
    controlBuzzer(0);
  } else if (soilHum > 650 && soilHum <= 750) { // Nemli Toprak
    controlMotor(1);
    controlBuzzer(0);
  } else if (soilHum > 750 && soilHum <= 1023) { // Islak Toprak
    controlMotor(0);
    controlBuzzer(1);
  }
  Serial.print("Toprak Nem Sensor Degeri: ");
  Serial.println(soilHum);
  Serial.println("");
}

void readMethane() {
  int methaneValue = analogRead(methanePin);
  Serial.print("Methan Gazi Sensor Degeri: ");
  Serial.println(methaneValue);
  Serial.println("");
}

void controlBuzzer(int stat)  {
  if (stat == 0) {
    noTone(buzzerPin);
  } else if (stat == 1) {
    tone(buzzerPin, 440, 2000);
  }
}

void controlMotor(int stat) {
  if (stat == 0) {
    digitalWrite(motorPin, HIGH);
  } else if (stat == 1) {
    digitalWrite(motorPin, LOW);
  }
}