Atalay YilmazJan R. Seyler
Published

Pflanz-o-Mat

An intelligent device to monitor your plant and ensure its health.

BeginnerShowcase (no instructions)2
Pflanz-o-Mat

Things used in this project

Hardware components

Argon
Particle Argon
×1
ARD SEN WET2
×1
Seeed Studio GRV LIGHT SENS
×1
ARD SEN TEMP1
×1
DEBO RELAIS 2CH
×1
Ahorraluz Trafo 12 V DC 2 A 24 W
×1
AZ-Delivery LM2596S
×1
12V Magnetventil
×1

Software apps and online services

Particle Build Web IDE
Particle Build Web IDE

Story

Read more

Code

Code

Arduino
Particle Web IDE
#include <math.h>
#include "Particle.h"

//********Werte*******
double liquid_level; //Wert für die ist-Erdfeuchte
double temperature; //Wert für die ist-Temperatur
double licht; //Wert für die ist-Lichteinstrahlung
double sollFeuchtigkeit; //Wert für die soll-Feuchtigkeit
const int intervalOn=3000; //Ventil öffnet 3 Sekunden lang
const int intervalOff=90000; // Ventil kann erst nach 9 Sekunden erneut öffnen 
unsigned long currentMillis, previousMillis;
int state = LOW;
//*******Werte end*******



SYSTEM_THREAD(ENABLED);

//*******PINs*******
const int sensorPin0= A0; //Erdfeuchtesensor pin A0
const int sensorPin1= A1; //Temperatursensor pin A1
const int sensorPin2= A2; //Lichtsensor pin A2
const int WasserPin = D7; //Ansteuerung Relais für das Ventil
//*****PINs end*****

int wasser(String command) //Manuelle Steuerung der Bewässerung 
{
    
    if(command.equals("on"))
    {
        digitalWrite(WasserPin, HIGH);
        Particle.publish("Ventil", "Eingeschaltet");
        return 1;
    }
    else if(command.equals("off"))
    {
        digitalWrite(WasserPin, LOW);
         Particle.publish("Ventil", "Ausgeschaltet");
        return 0;
    }
    else
    {
        return -1;
    }
    
    
    
}

int setErdfeuchte(String sollWert)
{
    sollFeuchtigkeit = atoi(sollWert); 
    Particle.publish("SollFeuchtigkeit", String(sollFeuchtigkeit));
    return sollFeuchtigkeit;
}

void irrigation ()
{
    if(liquid_level < sollFeuchtigkeit)
    {
        if(state==HIGH && currentMillis - previousMillis > intervalOn)
        {
            previousMillis = currentMillis;
            state = LOW;
            digitalWrite(WasserPin, state);
        }
        if(state==LOW && currentMillis - previousMillis > intervalOff)
        {
            previousMillis = currentMillis;
            state = HIGH;
            digitalWrite(WasserPin, state);
        }
    }
}


void setup() 
{
    Serial.begin(9600); //sets the baud rate for data transfer in bits/second
    pinMode(sensorPin0, INPUT); //Erdfeuchtesensor
    pinMode(sensorPin1, INPUT); //Temperatursensor
    pinMode(sensorPin2, INPUT); //Lichtsensor
    pinMode(WasserPin, OUTPUT); //Ansteueung Relais

    Particle.function("Wasser", wasser); 
    Particle.function("setErdfeuchte", setErdfeuchte);
    Particle.variable("Erdfeuchte", liquid_level);
    Particle.variable("Temperatur", temperature);
    Particle.variable("Lichteinstrahlung", licht);

}

void loop()
{
    currentMillis = millis();
    irrigation();    
    
    //******Erdfeuchtesensor******
    double feucht= analogRead(sensorPin0); 
    liquid_level= (feucht / 4095) * 100; //Umrechnung in eine Prozentzahl
    //Particle.publish("Erdfeuchte in %", String(liquid_level));
    delay(1000);
    //******Erdfeuchtesensor End*****


    //*******Temperatursensor*******
    double temp = analogRead(sensorPin1);
    double fenya=(temp/4095)*5;
    double r=fenya/(5-fenya)*10000;
    temperature = 1/(log(r/10000) /3950 + 1/(25+273.15))-273.15; 
    //Particle.publish("Temperatur in °C", String(temperature));
    delay(1000);
    //********Temperatursensor End*******


    //********Lichteinstrahlung*********
    double light = analogRead(sensorPin2);
    licht= (light/4095) * 100; //Umrechnung in Prozentzahl
    //Particle.publish("Lichteinstrahlung in %", String(licht));
    delay(1000);
    //********Lichteinstrahlung end*******

}

Credits

Atalay Yilmaz

Atalay Yilmaz

0 projects • 0 followers
Jan R. Seyler

Jan R. Seyler

7 projects • 12 followers

Comments

Add projectSign up / Login