#include "DHT.h"
#include <WiFi.h>
#include <WebServer.h>
#include <Fuzzy.h>
#include <LCD_I2C.h>
LCD_I2C lcd(0x27, 16, 2);
#define Buton1 25
#define Buton2 26
#define Buton3 27
#define buzzer 13
#define DHTPIN 23
//#define DHTTYPE DHT11 // DHT 11
#define DHTTYPE DHT22
int sayi=0;
float h = 0;
float t = 0;
float toprak_nem =0;
float output1=0;
Fuzzy *fuzzy = new Fuzzy();// Fuzzy
const char* ssid = "p2021"; // Wifi
const char* password = "123456789asd"; //wifi şifre
WebServer server(80); //80 portunu kullanarak bir web server nesnesi oluşturduk
DHT dht(DHTPIN, DHTTYPE); // DHT'yi tanımlıyoruz..
// Fuzzy giriş sıcaklık
FuzzySet *soguk = new FuzzySet(0, 5, 5, 10);
FuzzySet *hafif_soguk = new FuzzySet(5, 15, 15, 20);
FuzzySet *ilik = new FuzzySet(15, 20, 20, 25);
FuzzySet *hafif_sicak = new FuzzySet(20, 25, 25, 30);
FuzzySet *sicak = new FuzzySet(25, 35, 35, 40);
// Fuzzy giriş nem
FuzzySet *dusuk_nem = new FuzzySet(0, 20, 20, 30);
FuzzySet *orta_nem = new FuzzySet(20, 40, 40, 50);
FuzzySet *yuksek_nem = new FuzzySet(40, 50, 50, 70);
//Fuzzy giriş
FuzzySet *toprak_dusuk_nem = new FuzzySet(0, 20, 20, 30);
FuzzySet *toprak_orta_nem = new FuzzySet(20, 40, 40, 50);
FuzzySet *toprak_yuksek_nem = new FuzzySet(40, 50, 50, 70);
// Fuzzy çıkış ürün kalitesi
FuzzySet *kotu_meyve = new FuzzySet(0, 20, 20, 40);
FuzzySet *orta_meyve = new FuzzySet(30, 50, 50, 70);
FuzzySet *iyi_meyve= new FuzzySet(60, 80, 80, 100);
void handle_OnConnect() {
h = dht.readHumidity();
t = dht.readTemperature();
output1 = fuzzy->defuzzify(1);
toprak_nem = analogRead(A0);
server.send(200, "text/html", SendHTML(t,h,output1,toprak_nem));
}
void handle_NotFound(){
server.send(404, "text/plain", "Not found");
}
String SendHTML(float t,float h, float output1,float toprak_nem){
String ptr = "<html lang=en-EN><head><meta http-equiv='refresh' content='60'/>";
ptr += "<title>TARLALAR</title>";
ptr += "<style> body { background-color: #fffff; font-family: Arial, Helvetica, Sans-Serif; Color: #000000; }</style>";
ptr += "</head><body><h1>TARLALARIN DURUMLARI</h1>";
ptr += "<h1>Kavun Tarlasi</h1>"; //Kavun Tarlasi
ptr += "<ul><li>Sicaklik: ";
ptr += (int)t;
ptr +="°C</li>";
ptr += "<li>Nem: ";
ptr += (int)h;
ptr += "RH</li>";
ptr += "<li>Toprak nemi: ";
ptr += (int) toprak_nem;
ptr += "RH</li>";
ptr += "<li>Urun Kalitesi: ";
ptr += (int)output1;
ptr += " %</li></ul>";
ptr += "<h3>\n\nSicaklik</h3>";
ptr +=("<ul><li>\n\nsoguk-> ");
ptr +=(soguk->getPertinence());
ptr +="</li><li>hafif_soguk-> ";
ptr +=(hafif_soguk->getPertinence());
ptr +="</li><li>\nilik-> ";
ptr +=(ilik->getPertinence());
ptr +=("</li><li>\nhafif_sicak-> ");
ptr +=(hafif_sicak->getPertinence());
ptr +=("</li><li>\nsicak-> ");
ptr +=(sicak->getPertinence());
ptr += "</li></ul>";
ptr += "<h3>Nem</h3>";
ptr +=("<ul><li>\n\ndusuk_nem-> ");
ptr +=(dusuk_nem->getPertinence());
ptr +=("</li><li>\norta_nem-> ");
ptr +=(orta_nem->getPertinence());
ptr +=("</li><li>\nyuksek_nem-> ");
ptr +=(yuksek_nem->getPertinence());
ptr += "</li></ul>";
ptr += "<h3>Toprak Nem</h3>";
ptr +=("<ul><li>\n\ntoprak_dusuk_nem-> ");
ptr +=(toprak_dusuk_nem->getPertinence());
ptr +=("</li><li>\ntoprak_orta_nem-> ");
ptr +=(toprak_orta_nem->getPertinence());
ptr +=("</li><li>\ntoprak_yuksek_nem-> ");
ptr +=(toprak_yuksek_nem->getPertinence());
ptr += "</li></ul>";
ptr +=("<h3>\n\nUrun Kalitesi: </h3>");
ptr +=("<ul><li>\n\nkotu_meyve-> ");
ptr +=(kotu_meyve->getPertinence());
ptr +=("</li><li>\norta_meyve-> ");
ptr +=(orta_meyve->getPertinence());
ptr +=("</li><li>\niyi_meyve-> ");
ptr +=(iyi_meyve->getPertinence());
ptr += "</li></ul>";
ptr += "<h1>Salatalik Tarlasi</h1>"; //Salatalik Tarlasi
ptr += "<ul><li>Sicaklik: ";
ptr += (int)t;
ptr +="°C</li>";
ptr += "<li>Nem: ";
ptr += (int)h;
ptr += "RH</li>";
ptr += "<li>Toprak nemi: ";
ptr += (int)toprak_nem;
ptr += "RH</li>";
ptr += "<li>Urun Kalitesi: ";
ptr += (int)output1;
ptr += " %</li></ul>";
ptr += "<h3>\n\nSicaklik</h3>";
ptr +=("<ul><li>\n\nsoguk-> ");
ptr +=(soguk->getPertinence());
ptr +="</li><li>hafif_soguk-> ";
ptr +=(hafif_soguk->getPertinence());
ptr +="</li><li>\nilik-> ";
ptr +=(ilik->getPertinence());
ptr +=("</li><li>\nhafif_sicak-> ");
ptr +=(hafif_sicak->getPertinence());
ptr +=("</li><li>\nsicak-> ");
ptr +=(sicak->getPertinence());
ptr += "</li></ul>";
ptr += "<h3>Nem</h3>";
ptr +=("<ul><li>\n\ndusuk_nem-> ");
ptr +=(dusuk_nem->getPertinence());
ptr +=("</li><li>\norta_nem-> ");
ptr +=(orta_nem->getPertinence());
ptr +=("</li><li>\nyuksek_nem-> ");
ptr +=(yuksek_nem->getPertinence());
ptr += "</li></ul>";
ptr += "<h3>Toprak Nem</h3>";
ptr +=("<ul><li>\n\ntoprak_dusuk_nem-> ");
ptr +=(toprak_dusuk_nem->getPertinence());
ptr +=("</li><li>\ntoprak_orta_nem-> ");
ptr +=(toprak_orta_nem->getPertinence());
ptr +=("</li><li>\ntoprak_yuksek_nem-> ");
ptr +=(toprak_yuksek_nem->getPertinence());
ptr += "</li></ul>";
ptr +=("<h3>\n\nUrun Kalitesi: </h3>");
ptr +=("<ul><li>\n\nkotu_meyve-> ");
ptr +=(kotu_meyve->getPertinence());
ptr +=("</li><li>\norta_meyve-> ");
ptr +=(orta_meyve->getPertinence());
ptr +=("</li><li>\niyi_meyve-> ");
ptr +=(iyi_meyve->getPertinence());
ptr += "</li></ul>";
ptr += "<h1>Domates Tarlasi</h1>"; //Domates Tarlasi
ptr += "<ul><li>Sicaklik: ";
ptr += (int)t;
ptr +="°C</li>";
ptr += "<li>Nem: ";
ptr += (int)h;
ptr += "RH</li>";
ptr += "<li>Toprak nemi: ";
ptr += (int)toprak_nem;
ptr += "RH</li>";
ptr += "<li>Urun Kalitesi: ";
ptr += (int)output1;
ptr += " %</li></ul>";
ptr += "<h3>\n\nSicaklik</h3>";
ptr +=("<ul><li>\n\nsoguk-> ");
ptr +=(soguk->getPertinence());
ptr +="</li><li>hafif_soguk-> ";
ptr +=(hafif_soguk->getPertinence());
ptr +="</li><li>\nilik-> ";
ptr +=(ilik->getPertinence());
ptr +=("</li><li>\nhafif_sicak-> ");
ptr +=(hafif_sicak->getPertinence());
ptr +=("</li><li>\nsicak-> ");
ptr +=(sicak->getPertinence());
ptr += "</li></ul>";
ptr += "<h3>Nem</h3>";
ptr +=("<ul><li>\n\ndusuk_nem-> ");
ptr +=(dusuk_nem->getPertinence());
ptr +=("</li><li>\norta_nem-> ");
ptr +=(orta_nem->getPertinence());
ptr +=("</li><li>\nyuksek_nem-> ");
ptr +=(yuksek_nem->getPertinence());
ptr += "</li></ul>";
ptr += "<h3>Toprak Nem</h3>";
ptr +=("<ul><li>\n\ntoprak_dusuk_nem-> ");
ptr +=(toprak_dusuk_nem->getPertinence());
ptr +=("</li><li>\ntoprak_orta_nem-> ");
ptr +=(toprak_orta_nem->getPertinence());
ptr +=("</li><li>\ntoprak_yuksek_nem-> ");
ptr +=(toprak_yuksek_nem->getPertinence());
ptr += "</li></ul>";
ptr +=("<h3>\n\nUrun Kalitesi: </h3>");
ptr +=("<ul><li>\n\nkotu_meyve-> ");
ptr +=(kotu_meyve->getPertinence());
ptr +=("</li><li>\norta_meyve-> ");
ptr +=(orta_meyve->getPertinence());
ptr +=("</li><li>\niyi_meyve-> ");
ptr +=(iyi_meyve->getPertinence());
ptr += "</li></ul>";
ptr +="</div>\n";
ptr +="</body>\n";
ptr +="</html>\n";
return ptr;
}
void setup()
{
pinMode(5, OUTPUT);
digitalWrite(5, HIGH);
lcd.begin();
lcd.backlight();
pinMode(Buton1, INPUT_PULLUP);
pinMode(12, OUTPUT);
pinMode(Buton2, INPUT_PULLUP);
pinMode(19, OUTPUT);
pinMode(Buton3, INPUT_PULLUP);
pinMode(15, OUTPUT);
pinMode(buzzer, OUTPUT);
// seri çıkışını ayarla
Serial.begin(115200);
dht.begin();
Serial.println("Connecting to ");
Serial.println(ssid);
//connect to your local wi-fi network
WiFi.begin(ssid, password);
//check wi-fi is connected to wi-fi network
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi bağlandı..!");
Serial.print("IP: "); Serial.println(WiFi.localIP());
server.on("/", handle_OnConnect);
server.onNotFound(handle_NotFound);
server.begin();
Serial.println("HTTP sunucusu başlatıldı");
// Fuzzy giriş
FuzzyInput *sicaklik = new FuzzyInput(1);
sicaklik->addFuzzySet(soguk);
sicaklik->addFuzzySet(hafif_soguk);
sicaklik->addFuzzySet(ilik);
sicaklik->addFuzzySet(hafif_sicak);
sicaklik->addFuzzySet(sicak);
fuzzy->addFuzzyInput(sicaklik);
// Fuzzy giriş
FuzzyInput *nem = new FuzzyInput(2);
nem->addFuzzySet(dusuk_nem);
nem->addFuzzySet(orta_nem);
nem->addFuzzySet(yuksek_nem);
fuzzy->addFuzzyInput(nem);
// Fuzzy giriş
FuzzyInput *topraknem = new FuzzyInput(3);
topraknem->addFuzzySet(toprak_dusuk_nem);
topraknem->addFuzzySet(toprak_orta_nem);
topraknem->addFuzzySet(toprak_yuksek_nem);
fuzzy->addFuzzyInput(topraknem);
// Fuzzy çıkış
FuzzyOutput *urun_kalitesi = new FuzzyOutput(1);
urun_kalitesi->addFuzzySet(kotu_meyve);
urun_kalitesi->addFuzzySet(orta_meyve);
urun_kalitesi->addFuzzySet(iyi_meyve);
fuzzy->addFuzzyOutput(urun_kalitesi);
// tanımlama
FuzzyRuleAntecedent *toprakdusuknem = new FuzzyRuleAntecedent();
toprakdusuknem->joinSingle(toprak_dusuk_nem);
FuzzyRuleAntecedent *toprakortanem = new FuzzyRuleAntecedent();
toprakortanem->joinSingle(toprak_orta_nem);
FuzzyRuleAntecedent *toprakyukseknem = new FuzzyRuleAntecedent();
toprakyukseknem->joinSingle(toprak_yuksek_nem);
FuzzyRuleAntecedent *sicakliksoguk_nemdusuk = new FuzzyRuleAntecedent();
sicakliksoguk_nemdusuk->joinWithAND(soguk,dusuk_nem);
FuzzyRuleAntecedent *sicakliksoguk_nemorta = new FuzzyRuleAntecedent();
sicakliksoguk_nemorta->joinWithAND(soguk,orta_nem);
FuzzyRuleAntecedent *sicakliksoguk_nemyuksek= new FuzzyRuleAntecedent();
sicakliksoguk_nemyuksek->joinWithAND(soguk,yuksek_nem);
FuzzyRuleAntecedent *sicaklikhafifsoguk_nemdusuk = new FuzzyRuleAntecedent();
sicakliksoguk_nemdusuk->joinWithAND(hafif_soguk,dusuk_nem);
FuzzyRuleAntecedent *sicaklikhafifsoguk_nemorta = new FuzzyRuleAntecedent();
sicaklikhafifsoguk_nemorta->joinWithAND(hafif_soguk,orta_nem);
FuzzyRuleAntecedent *sicaklikhafifsoguk_nemyuksek = new FuzzyRuleAntecedent();
sicaklikhafifsoguk_nemyuksek->joinWithAND(hafif_soguk,yuksek_nem);
FuzzyRuleAntecedent *sicaklikilik_nemdusuk = new FuzzyRuleAntecedent();
sicakliksoguk_nemdusuk->joinWithAND(ilik,dusuk_nem);
FuzzyRuleAntecedent *sicaklikilik_nemorta = new FuzzyRuleAntecedent();
sicaklikilik_nemorta->joinWithAND(ilik,orta_nem);
FuzzyRuleAntecedent *sicaklikilik_nemyuksek = new FuzzyRuleAntecedent();
sicaklikilik_nemyuksek->joinWithAND(ilik,yuksek_nem);
FuzzyRuleAntecedent *sicaklikhafifsicak_nemdusuk = new FuzzyRuleAntecedent();
sicaklikhafifsicak_nemdusuk->joinWithAND(hafif_sicak,dusuk_nem);
FuzzyRuleAntecedent *sicaklikhafifsicak_nemorta = new FuzzyRuleAntecedent();
sicaklikhafifsicak_nemorta->joinWithAND(hafif_sicak,orta_nem);
FuzzyRuleAntecedent *sicaklikhafifsicak_nemyuksek = new FuzzyRuleAntecedent();
sicaklikhafifsicak_nemyuksek->joinWithAND(hafif_sicak,yuksek_nem);
FuzzyRuleAntecedent *sicakliksicak_nemdusuk = new FuzzyRuleAntecedent();
sicakliksicak_nemdusuk->joinWithAND(sicak,dusuk_nem);
FuzzyRuleAntecedent *sicakliksicak_nemorta = new FuzzyRuleAntecedent();
sicakliksicak_nemorta->joinWithAND(sicak,orta_nem);
FuzzyRuleAntecedent *sicakliksicak_nemyuksek = new FuzzyRuleAntecedent();
sicakliksicak_nemyuksek->joinWithAND(sicak,yuksek_nem);
FuzzyRuleConsequent *urunkalitesi_kotumeyve = new FuzzyRuleConsequent();
urunkalitesi_kotumeyve->addOutput(kotu_meyve);
FuzzyRuleConsequent *urunkalitesi_ortameyve = new FuzzyRuleConsequent();
urunkalitesi_ortameyve->addOutput(orta_meyve);
FuzzyRuleConsequent *urunkalitesi_iyimeyve = new FuzzyRuleConsequent();
urunkalitesi_iyimeyve->addOutput(iyi_meyve);
// fuzzy kurallarını oluşturma
FuzzyRuleAntecedent *eger_sicakliksoguk_nemdusuk_topraknemdusuk = new FuzzyRuleAntecedent();
eger_sicakliksoguk_nemdusuk_topraknemdusuk->joinWithOR(sicakliksoguk_nemdusuk, toprakdusuknem);
FuzzyRule *fuzzykural_1 = new FuzzyRule(1,eger_sicakliksoguk_nemdusuk_topraknemdusuk, urunkalitesi_kotumeyve);
fuzzy->addFuzzyRule(fuzzykural_1);
FuzzyRuleAntecedent *eger_sicakliksoguk_nemdusuk_topraknemorta = new FuzzyRuleAntecedent();
eger_sicakliksoguk_nemdusuk_topraknemorta->joinWithOR(sicakliksoguk_nemdusuk, toprakortanem);
FuzzyRule *fuzzykural_2 = new FuzzyRule(1.20,eger_sicakliksoguk_nemdusuk_topraknemorta, urunkalitesi_kotumeyve);
fuzzy->addFuzzyRule(fuzzykural_2);
FuzzyRuleAntecedent *eger_sicakliksoguk_nemdusuk_topraknemyuksek = new FuzzyRuleAntecedent();
eger_sicakliksoguk_nemdusuk_topraknemyuksek->joinWithOR(sicakliksoguk_nemdusuk, toprakyukseknem);
FuzzyRule *fuzzykural_3 = new FuzzyRule(1.40,eger_sicakliksoguk_nemdusuk_topraknemyuksek, urunkalitesi_kotumeyve);
fuzzy->addFuzzyRule(fuzzykural_3);
FuzzyRuleAntecedent *eger_sicakliksoguk_nemorta_topraknemdusuk = new FuzzyRuleAntecedent();
eger_sicakliksoguk_nemorta_topraknemdusuk->joinWithOR(sicakliksoguk_nemorta, toprakdusuknem);
FuzzyRule *fuzzykural_4 = new FuzzyRule(1.60,eger_sicakliksoguk_nemorta_topraknemdusuk, urunkalitesi_kotumeyve);
fuzzy->addFuzzyRule(fuzzykural_4);
FuzzyRuleAntecedent *eger_sicakliksoguk_nemorta_topraknemorta = new FuzzyRuleAntecedent();
eger_sicakliksoguk_nemorta_topraknemorta->joinWithOR(sicakliksoguk_nemorta, toprakortanem);
FuzzyRule *fuzzykural_5 = new FuzzyRule(1.80,eger_sicakliksoguk_nemorta_topraknemorta, urunkalitesi_iyimeyve);
fuzzy->addFuzzyRule(fuzzykural_5);
FuzzyRuleAntecedent *eger_sicakliksoguk_nemorta_topraknemyuksek = new FuzzyRuleAntecedent();
eger_sicakliksoguk_nemorta_topraknemorta->joinWithOR(sicakliksoguk_nemyuksek, toprakyukseknem);
FuzzyRule *fuzzykural_6 = new FuzzyRule(2,eger_sicakliksoguk_nemorta_topraknemyuksek, urunkalitesi_ortameyve);
fuzzy->addFuzzyRule(fuzzykural_6);
FuzzyRuleAntecedent *eger_sicakliksoguk_nemyuksek_topraknemdusuk= new FuzzyRuleAntecedent();
eger_sicakliksoguk_nemyuksek_topraknemdusuk->joinWithOR(sicakliksoguk_nemyuksek, toprakdusuknem);
FuzzyRule *fuzzykural_7 = new FuzzyRule(2.20,eger_sicakliksoguk_nemyuksek_topraknemdusuk, urunkalitesi_kotumeyve);
fuzzy->addFuzzyRule(fuzzykural_7);
FuzzyRuleAntecedent *eger_sicakliksoguk_nemyuksek_topraknemorta= new FuzzyRuleAntecedent();
eger_sicakliksoguk_nemyuksek_topraknemorta->joinWithOR(sicakliksoguk_nemyuksek, toprakortanem);
FuzzyRule *fuzzykural_8 = new FuzzyRule(2.40,eger_sicakliksoguk_nemyuksek_topraknemorta, urunkalitesi_ortameyve);
fuzzy->addFuzzyRule(fuzzykural_8);
FuzzyRuleAntecedent *eger_sicakliksoguk_nemyuksek_topraknemyuksek= new FuzzyRuleAntecedent();
eger_sicakliksoguk_nemyuksek_topraknemyuksek->joinWithOR(sicakliksoguk_nemyuksek, toprakyukseknem);
FuzzyRule *fuzzykural_9 = new FuzzyRule(2.60,eger_sicakliksoguk_nemyuksek_topraknemyuksek, urunkalitesi_ortameyve);
fuzzy->addFuzzyRule(fuzzykural_9);
FuzzyRuleAntecedent *eger_sicaklikhafifsoguk_nemdusuk_topraknemdusuk = new FuzzyRuleAntecedent();
eger_sicaklikhafifsoguk_nemdusuk_topraknemdusuk->joinWithOR(sicaklikhafifsoguk_nemdusuk, toprakdusuknem);
FuzzyRule *fuzzykural_10 = new FuzzyRule(2.8,eger_sicaklikhafifsoguk_nemdusuk_topraknemdusuk, urunkalitesi_kotumeyve);
fuzzy->addFuzzyRule(fuzzykural_10);
FuzzyRuleAntecedent *eger_sicaklikhafifsoguk_nemdusuk_topraknemorta = new FuzzyRuleAntecedent();
eger_sicaklikhafifsoguk_nemdusuk_topraknemorta->joinWithOR(sicaklikhafifsoguk_nemdusuk, toprakortanem);
FuzzyRule *fuzzykural_11 = new FuzzyRule(3,eger_sicaklikhafifsoguk_nemdusuk_topraknemorta, urunkalitesi_kotumeyve);
fuzzy->addFuzzyRule(fuzzykural_11);
FuzzyRuleAntecedent *eger_sicaklikhafifsoguk_nemdusuk_topraknemyuksek = new FuzzyRuleAntecedent();
eger_sicaklikhafifsoguk_nemdusuk_topraknemyuksek->joinWithOR(sicaklikhafifsoguk_nemdusuk, toprakyukseknem);
FuzzyRule *fuzzykural_12 = new FuzzyRule(3.2,eger_sicaklikhafifsoguk_nemdusuk_topraknemyuksek, urunkalitesi_kotumeyve);
fuzzy->addFuzzyRule(fuzzykural_12);
FuzzyRuleAntecedent *eger_sicaklikhafifsoguk_nemorta_topraknemdusuk = new FuzzyRuleAntecedent();
eger_sicaklikhafifsoguk_nemorta_topraknemdusuk->joinWithOR(sicaklikhafifsoguk_nemorta, toprakdusuknem);
FuzzyRule *fuzzykural_13 = new FuzzyRule(3.4,eger_sicaklikhafifsoguk_nemorta_topraknemdusuk, urunkalitesi_ortameyve);
fuzzy->addFuzzyRule(fuzzykural_13);
FuzzyRuleAntecedent *eger_sicaklikhafifsoguk_nemorta_topraknemorta = new FuzzyRuleAntecedent();
eger_sicaklikhafifsoguk_nemorta_topraknemorta->joinWithOR(sicaklikhafifsoguk_nemorta, toprakortanem);
FuzzyRule *fuzzykural_14 = new FuzzyRule(3.6,eger_sicaklikhafifsoguk_nemorta_topraknemorta, urunkalitesi_iyimeyve);
fuzzy->addFuzzyRule(fuzzykural_14);
FuzzyRuleAntecedent *eger_sicaklikhafifsoguk_nemorta_topraknemyuksek = new FuzzyRuleAntecedent();
eger_sicaklikhafifsoguk_nemorta_topraknemorta->joinWithOR(sicaklikhafifsoguk_nemyuksek, toprakyukseknem);
FuzzyRule *fuzzykural_15 = new FuzzyRule(3.8,eger_sicaklikhafifsoguk_nemorta_topraknemyuksek, urunkalitesi_iyimeyve);
fuzzy->addFuzzyRule(fuzzykural_15);
FuzzyRuleAntecedent *eger_sicaklikhafifsoguk_nemyuksek_topraknemdusuk= new FuzzyRuleAntecedent();
eger_sicaklikhafifsoguk_nemyuksek_topraknemdusuk->joinWithOR(sicaklikhafifsoguk_nemyuksek, toprakdusuknem);
FuzzyRule *fuzzykural_16 = new FuzzyRule(4,eger_sicaklikhafifsoguk_nemyuksek_topraknemdusuk, urunkalitesi_ortameyve);
fuzzy->addFuzzyRule(fuzzykural_16);
FuzzyRuleAntecedent *eger_sicaklikhafifsoguk_nemyuksek_topraknemorta= new FuzzyRuleAntecedent();
eger_sicaklikhafifsoguk_nemyuksek_topraknemorta->joinWithOR(sicaklikhafifsoguk_nemyuksek, toprakortanem);
FuzzyRule *fuzzykural_17 = new FuzzyRule(4.2,eger_sicaklikhafifsoguk_nemyuksek_topraknemorta, urunkalitesi_iyimeyve);
fuzzy->addFuzzyRule(fuzzykural_17);
FuzzyRuleAntecedent *eger_sicaklikhafifsoguk_nemyuksek_topraknemyuksek= new FuzzyRuleAntecedent();
eger_sicaklikhafifsoguk_nemyuksek_topraknemyuksek->joinWithOR(sicaklikhafifsoguk_nemyuksek, toprakyukseknem);
FuzzyRule *fuzzykural_18 = new FuzzyRule(4.4,eger_sicaklikhafifsoguk_nemyuksek_topraknemyuksek, urunkalitesi_iyimeyve);
fuzzy->addFuzzyRule(fuzzykural_18);
FuzzyRuleAntecedent *eger_sicaklikilik_nemdusuk_topraknemdusuk = new FuzzyRuleAntecedent();
eger_sicaklikilik_nemdusuk_topraknemdusuk->joinWithOR(sicaklikilik_nemdusuk, toprakdusuknem);
FuzzyRule *fuzzykural_19 = new FuzzyRule(4.6,eger_sicaklikilik_nemdusuk_topraknemdusuk, urunkalitesi_kotumeyve);
fuzzy->addFuzzyRule(fuzzykural_19);
FuzzyRuleAntecedent *eger_sicaklikilik_nemdusuk_topraknemorta = new FuzzyRuleAntecedent();
eger_sicaklikilik_nemdusuk_topraknemorta->joinWithOR(sicaklikilik_nemdusuk, toprakortanem);
FuzzyRule *fuzzykural_20 = new FuzzyRule(4.8,eger_sicaklikilik_nemdusuk_topraknemorta, urunkalitesi_ortameyve);
fuzzy->addFuzzyRule(fuzzykural_20);
FuzzyRuleAntecedent *eger_sicaklikilik_nemdusuk_topraknemyuksek = new FuzzyRuleAntecedent();
eger_sicaklikilik_nemdusuk_topraknemyuksek->joinWithOR(sicaklikilik_nemdusuk, toprakyukseknem);
FuzzyRule *fuzzykural_21 = new FuzzyRule(5,eger_sicaklikilik_nemdusuk_topraknemyuksek, urunkalitesi_ortameyve);
fuzzy->addFuzzyRule(fuzzykural_21);
FuzzyRuleAntecedent *eger_sicaklikilik_nemorta_topraknemdusuk = new FuzzyRuleAntecedent();
eger_sicaklikilik_nemorta_topraknemdusuk->joinWithOR(sicaklikilik_nemorta, toprakdusuknem);
FuzzyRule *fuzzykural_22 = new FuzzyRule(5.20,eger_sicaklikilik_nemorta_topraknemdusuk, urunkalitesi_ortameyve);
fuzzy->addFuzzyRule(fuzzykural_22);
FuzzyRuleAntecedent *eger_sicaklikilik_nemorta_topraknemorta = new FuzzyRuleAntecedent();
eger_sicaklikilik_nemorta_topraknemorta->joinWithOR(sicaklikilik_nemorta, toprakortanem);
FuzzyRule *fuzzykural_23 = new FuzzyRule(5.40,eger_sicaklikilik_nemorta_topraknemorta, urunkalitesi_iyimeyve);
fuzzy->addFuzzyRule(fuzzykural_23);
FuzzyRuleAntecedent *eger_sicaklikilik_nemorta_topraknemyuksek = new FuzzyRuleAntecedent();
eger_sicaklikilik_nemorta_topraknemorta->joinWithOR(sicaklikilik_nemyuksek, toprakyukseknem);
FuzzyRule *fuzzykural_24 = new FuzzyRule(5.6,eger_sicaklikilik_nemorta_topraknemyuksek, urunkalitesi_iyimeyve);
fuzzy->addFuzzyRule(fuzzykural_24);
FuzzyRuleAntecedent *eger_sicaklikilik_nemyuksek_topraknemdusuk= new FuzzyRuleAntecedent();
eger_sicaklikilik_nemyuksek_topraknemdusuk->joinWithOR(sicaklikilik_nemyuksek, toprakdusuknem);
FuzzyRule *fuzzykural_25 = new FuzzyRule(5.8,eger_sicaklikilik_nemyuksek_topraknemdusuk, urunkalitesi_ortameyve);
fuzzy->addFuzzyRule(fuzzykural_25);
FuzzyRuleAntecedent *eger_sicaklikilik_nemyuksek_topraknemorta= new FuzzyRuleAntecedent();
eger_sicaklikilik_nemyuksek_topraknemorta->joinWithOR(sicaklikilik_nemyuksek, toprakortanem);
FuzzyRule *fuzzykural_26 = new FuzzyRule(6,eger_sicaklikilik_nemyuksek_topraknemorta, urunkalitesi_iyimeyve);
fuzzy->addFuzzyRule(fuzzykural_26);
FuzzyRuleAntecedent *eger_sicaklikilik_nemyuksek_topraknemyuksek= new FuzzyRuleAntecedent();
eger_sicaklikilik_nemyuksek_topraknemyuksek->joinWithOR(sicaklikilik_nemyuksek, toprakyukseknem);
FuzzyRule *fuzzykural_27 = new FuzzyRule(6.2,eger_sicaklikilik_nemyuksek_topraknemyuksek, urunkalitesi_iyimeyve);
fuzzy->addFuzzyRule(fuzzykural_27);
FuzzyRuleAntecedent *eger_sicaklikhafifsicak_nemdusuk_topraknemdusuk = new FuzzyRuleAntecedent();
eger_sicaklikhafifsicak_nemdusuk_topraknemdusuk->joinWithOR(sicaklikhafifsicak_nemdusuk, toprakdusuknem);
FuzzyRule *fuzzykural_28 = new FuzzyRule(6.4,eger_sicaklikhafifsicak_nemdusuk_topraknemdusuk, urunkalitesi_kotumeyve);
fuzzy->addFuzzyRule(fuzzykural_28);
FuzzyRuleAntecedent *eger_sicaklikhafifsicak_nemdusuk_topraknemorta = new FuzzyRuleAntecedent();
eger_sicaklikhafifsicak_nemdusuk_topraknemorta->joinWithOR(sicaklikhafifsicak_nemdusuk, toprakortanem);
FuzzyRule *fuzzykural_29 = new FuzzyRule(6.6,eger_sicaklikhafifsicak_nemdusuk_topraknemorta, urunkalitesi_ortameyve);
fuzzy->addFuzzyRule(fuzzykural_29);
FuzzyRuleAntecedent *eger_sicaklikhafifsicak_nemdusuk_topraknemyuksek = new FuzzyRuleAntecedent();
eger_sicaklikhafifsicak_nemdusuk_topraknemyuksek->joinWithOR(sicaklikhafifsicak_nemdusuk, toprakyukseknem);
FuzzyRule *fuzzykural_30 = new FuzzyRule(6.8,eger_sicaklikhafifsicak_nemdusuk_topraknemyuksek, urunkalitesi_ortameyve);
fuzzy->addFuzzyRule(fuzzykural_30);
FuzzyRuleAntecedent *eger_sicaklikhafifsicak_nemorta_topraknemdusuk = new FuzzyRuleAntecedent();
eger_sicaklikhafifsicak_nemorta_topraknemdusuk->joinWithOR(sicaklikhafifsicak_nemorta, toprakdusuknem);
FuzzyRule *fuzzykural_31 = new FuzzyRule(7,eger_sicaklikhafifsicak_nemorta_topraknemdusuk, urunkalitesi_ortameyve);
fuzzy->addFuzzyRule(fuzzykural_31);
FuzzyRuleAntecedent *eger_sicaklikhafifsicak_nemorta_topraknemorta = new FuzzyRuleAntecedent();
eger_sicaklikhafifsicak_nemorta_topraknemorta->joinWithOR(sicaklikhafifsicak_nemorta, toprakortanem);
FuzzyRule *fuzzykural_32 = new FuzzyRule(7.2,eger_sicaklikhafifsicak_nemorta_topraknemorta, urunkalitesi_iyimeyve);
fuzzy->addFuzzyRule(fuzzykural_32);
FuzzyRuleAntecedent *eger_sicaklikhafifsicak_nemorta_topraknemyuksek = new FuzzyRuleAntecedent();
eger_sicaklikhafifsicak_nemorta_topraknemorta->joinWithOR(sicaklikhafifsicak_nemyuksek, toprakyukseknem);
FuzzyRule *fuzzykural_33 = new FuzzyRule(7.4,eger_sicaklikhafifsicak_nemorta_topraknemyuksek, urunkalitesi_iyimeyve);
fuzzy->addFuzzyRule(fuzzykural_33);
FuzzyRuleAntecedent *eger_sicaklikhafifsicak_nemyuksek_topraknemdusuk= new FuzzyRuleAntecedent();
eger_sicaklikhafifsicak_nemyuksek_topraknemdusuk->joinWithOR(sicaklikhafifsicak_nemyuksek, toprakdusuknem);
FuzzyRule *fuzzykural_34 = new FuzzyRule(7.6,eger_sicaklikhafifsicak_nemyuksek_topraknemdusuk, urunkalitesi_ortameyve);
fuzzy->addFuzzyRule(fuzzykural_34);
FuzzyRuleAntecedent *eger_sicaklikhafifsicak_nemyuksek_topraknemorta= new FuzzyRuleAntecedent();
eger_sicaklikhafifsicak_nemyuksek_topraknemorta->joinWithOR(sicaklikhafifsicak_nemyuksek, toprakortanem);
FuzzyRule *fuzzykural_35 = new FuzzyRule(7.8,eger_sicaklikhafifsicak_nemyuksek_topraknemorta, urunkalitesi_iyimeyve);
fuzzy->addFuzzyRule(fuzzykural_35);
FuzzyRuleAntecedent *eger_sicaklikhafifsicak_nemyuksek_topraknemyuksek= new FuzzyRuleAntecedent();
eger_sicaklikhafifsicak_nemyuksek_topraknemyuksek->joinWithOR(sicaklikhafifsicak_nemyuksek, toprakyukseknem);
FuzzyRule *fuzzykural_36 = new FuzzyRule(8,eger_sicaklikhafifsicak_nemyuksek_topraknemyuksek, urunkalitesi_iyimeyve);
fuzzy->addFuzzyRule(fuzzykural_36);
FuzzyRuleAntecedent *eger_sicakliksicak_nemdusuk_topraknemdusuk = new FuzzyRuleAntecedent();
eger_sicakliksicak_nemdusuk_topraknemdusuk->joinWithOR(sicakliksicak_nemdusuk, toprakdusuknem);
FuzzyRule *fuzzykural_37 = new FuzzyRule(1,eger_sicakliksicak_nemdusuk_topraknemdusuk, urunkalitesi_kotumeyve);
fuzzy->addFuzzyRule(fuzzykural_37);
FuzzyRuleAntecedent *eger_sicakliksicak_nemdusuk_topraknemorta = new FuzzyRuleAntecedent();
eger_sicakliksicak_nemdusuk_topraknemorta->joinWithOR(sicakliksicak_nemdusuk, toprakortanem);
FuzzyRule *fuzzykural_38 = new FuzzyRule(1.20,eger_sicakliksicak_nemdusuk_topraknemorta, urunkalitesi_ortameyve);
fuzzy->addFuzzyRule(fuzzykural_38);
FuzzyRuleAntecedent *eger_sicakliksicak_nemdusuk_topraknemyuksek = new FuzzyRuleAntecedent();
eger_sicakliksicak_nemdusuk_topraknemyuksek->joinWithOR(sicakliksicak_nemdusuk, toprakyukseknem);
FuzzyRule *fuzzykural_39 = new FuzzyRule(1.40,eger_sicakliksicak_nemdusuk_topraknemyuksek, urunkalitesi_ortameyve);
fuzzy->addFuzzyRule(fuzzykural_39);
FuzzyRuleAntecedent *eger_sicakliksicak_nemorta_topraknemdusuk = new FuzzyRuleAntecedent();
eger_sicakliksicak_nemorta_topraknemdusuk->joinWithOR(sicakliksicak_nemorta, toprakdusuknem);
FuzzyRule *fuzzykural_40 = new FuzzyRule(1.60,eger_sicakliksicak_nemorta_topraknemdusuk, urunkalitesi_ortameyve);
fuzzy->addFuzzyRule(fuzzykural_40);
FuzzyRuleAntecedent *eger_sicakliksicak_nemorta_topraknemorta = new FuzzyRuleAntecedent();
eger_sicakliksicak_nemorta_topraknemorta->joinWithOR(sicakliksicak_nemorta, toprakortanem);
FuzzyRule *fuzzykural_41 = new FuzzyRule(1.80,eger_sicakliksicak_nemorta_topraknemorta, urunkalitesi_iyimeyve);
fuzzy->addFuzzyRule(fuzzykural_41);
FuzzyRuleAntecedent *eger_sicakliksicak_nemorta_topraknemyuksek = new FuzzyRuleAntecedent();
eger_sicakliksicak_nemorta_topraknemorta->joinWithOR(sicakliksicak_nemyuksek, toprakyukseknem);
FuzzyRule *fuzzykural_42 = new FuzzyRule(2,eger_sicakliksicak_nemorta_topraknemyuksek, urunkalitesi_iyimeyve);
fuzzy->addFuzzyRule(fuzzykural_42);
FuzzyRuleAntecedent *eger_sicakliksicak_nemyuksek_topraknemdusuk= new FuzzyRuleAntecedent();
eger_sicakliksicak_nemyuksek_topraknemdusuk->joinWithOR(sicakliksicak_nemyuksek, toprakdusuknem);
FuzzyRule *fuzzykural_43 = new FuzzyRule(2.20,eger_sicakliksicak_nemyuksek_topraknemdusuk, urunkalitesi_ortameyve);
fuzzy->addFuzzyRule(fuzzykural_43);
FuzzyRuleAntecedent *eger_sicakliksicak_nemyuksek_topraknemorta= new FuzzyRuleAntecedent();
eger_sicakliksicak_nemyuksek_topraknemorta->joinWithOR(sicakliksicak_nemyuksek, toprakortanem);
FuzzyRule *fuzzykural_44 = new FuzzyRule(2.40,eger_sicakliksicak_nemyuksek_topraknemorta, urunkalitesi_iyimeyve);
fuzzy->addFuzzyRule(fuzzykural_44);
FuzzyRuleAntecedent *eger_sicakliksicak_nemyuksek_topraknemyuksek= new FuzzyRuleAntecedent();
eger_sicakliksicak_nemyuksek_topraknemyuksek->joinWithOR(sicakliksicak_nemyuksek, toprakyukseknem);
FuzzyRule *fuzzykural_45 = new FuzzyRule(2.60,eger_sicakliksicak_nemyuksek_topraknemyuksek, urunkalitesi_iyimeyve);
fuzzy->addFuzzyRule(fuzzykural_45);
}
void loop(){
h = dht.readHumidity();
t = dht.readTemperature();
toprak_nem = analogRead(A0);
Serial.println("\n\n\nGİRİŞ: ");
Serial.print("\t\t\tsicaklik: ");
Serial.print(t);
Serial.print(", nem: ");
Serial.print(h);
Serial.print(", toprak nemi: ");
Serial.println(toprak_nem);
fuzzy->setInput(1, t);
fuzzy->setInput(2, h);
fuzzy->fuzzify();
Serial.print("\nsicaklik:\nsoguk-> ");
Serial.print(soguk->getPertinence());
Serial.print("\nhafif_soguk-> ");
Serial.print(hafif_soguk->getPertinence());
Serial.print(" \nilik-> ");
Serial.print(ilik->getPertinence());
Serial.print(" \nhafif_sicak-> ");
Serial.print(hafif_sicak->getPertinence());
Serial.print("\nsicak-> ");
Serial.print(sicak->getPertinence());
Serial.print("\n\nnem:\ndusuk_nem-> ");
Serial.print(dusuk_nem->getPertinence());
Serial.print("\norta_nem-> ");
Serial.print(orta_nem->getPertinence());
Serial.print("\nyuksek_nem-> ");
Serial.print(yuksek_nem->getPertinence());
Serial.print("\n\ntoprak_nem:\ntoprak_dusuk_nem-> ");
Serial.print(toprak_dusuk_nem->getPertinence());
Serial.print("\ntoprak_orta_nem-> ");
Serial.print(toprak_orta_nem->getPertinence());
Serial.print("\ntoprak_yuksek_nem-> ");
Serial.print(toprak_yuksek_nem->getPertinence());
output1 = fuzzy->defuzzify(1);
Serial.print("\n\nçıkış: ");
Serial.print("urun_kalitesi: \nkotu_meyve-> ");
Serial.print(kotu_meyve->getPertinence());
Serial.print("\norta_meyve-> ");
Serial.print(orta_meyve->getPertinence());
Serial.print("\niyi_meyve-> ");
Serial.print(iyi_meyve->getPertinence());
Serial.println("\n\nsonuç: ");
Serial.println("\nurun_kalitesi: ");
Serial.print(output1);
server.send(200, "text/html", SendHTML(t,h,output1,toprak_nem));
if (25<t && t<40){
digitalWrite(5,LOW);
delay(500);
digitalWrite(5,HIGH);
delay(100);
}
if (digitalRead(Buton1) == LOW){
sayi=1;
}
if (sayi==1){
lcd.setCursor(0, 0);
lcd.cursor();
lcd.print("TARLA DURUMU");
delay(500);
lcd.clear();
lcd.setCursor(0, 0);
lcd.blink();
lcd.print("KAVUN TARLASI");
delay(500);
lcd.setCursor(0,1);
lcd.print("Sicaklik:");
lcd.setCursor(9,1);
lcd.print(t);
delay(1000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("nem:");
lcd.setCursor(5,0);
lcd.print(h);
lcd.setCursor(0,1);
lcd.print("toprak nemi:");
lcd.setCursor(13,1);
lcd.print(toprak_nem);
delay(1000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("urun kalite:");
lcd.setCursor(12,0);
lcd.print(output1);
delay(1000);
lcd.clear();
if (output1<30){
digitalWrite(buzzer, HIGH);
delay(200);
digitalWrite(buzzer, LOW);
delay(200);
digitalWrite(12, HIGH);
delay(200);
digitalWrite(12, LOW);
delay(200);
}
if(output1<70 and output1>29){
digitalWrite(19, HIGH);
delay(200);
digitalWrite(19, LOW);
delay(200);
}
if (output1<100 and output1>69){
digitalWrite(15, HIGH);
delay(200);
digitalWrite(15, LOW);
delay(200);
}
}
if (digitalRead(Buton2) == LOW){
sayi=2;
}
if (sayi==2){
lcd.setCursor(0, 0);
lcd.cursor();
lcd.print("TARLA DURUMU");
delay(500);
lcd.clear();
lcd.setCursor(0, 0);
lcd.blink();
lcd.print("SALATALIK TARLASI");
delay(500);
lcd.setCursor(0,1);
lcd.print("Sicaklik:");
lcd.setCursor(9,1);
lcd.print(t);
delay(1000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("nem:");
lcd.setCursor(5,0);
lcd.print(h);
lcd.setCursor(0,1);
lcd.print("toprak nemi:");
lcd.setCursor(13,1);
lcd.print(toprak_nem);
delay(1000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("urun kalite:");
lcd.setCursor(12,0);
lcd.print(output1);
delay(1000);
lcd.clear();
if (output1<30){
digitalWrite(buzzer, HIGH);
delay(200);
digitalWrite(buzzer, LOW);
delay(200);
digitalWrite(12, HIGH);
delay(200);
digitalWrite(12, LOW);
delay(200);
}
if(output1<70 && output1>29){
digitalWrite(19, HIGH);
delay(200);
digitalWrite(19, LOW);
delay(200);
}
if (output1<100 && output1>69){
digitalWrite(15, HIGH);
delay(200);
digitalWrite(15, LOW);
delay(200);
}
}
if (digitalRead(Buton3) == LOW){
sayi=3;
}
if (sayi==3){
lcd.setCursor(0, 0);
lcd.cursor();
lcd.print("TARLA DURUMU");
delay(500);
lcd.clear();
lcd.setCursor(0, 0);
lcd.blink();
lcd.print("DOMATES TARLASI");
delay(500);
lcd.setCursor(0,1);
lcd.print("Sicaklik:");
lcd.setCursor(9,1);
lcd.print(t);
delay(1000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("nem:");
lcd.setCursor(5,0);
lcd.print(h);
lcd.setCursor(0,1);
lcd.print("toprak nemi:");
lcd.setCursor(13,1);
lcd.print(toprak_nem);
delay(1000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("urun kalite:");
lcd.setCursor(12,0);
lcd.print(output1);
delay(1000);
lcd.clear();
if (output1<30){
digitalWrite(buzzer, HIGH);
delay(200);
digitalWrite(buzzer, LOW);
delay(200);
digitalWrite(12, HIGH);
delay(200);
digitalWrite(12, LOW);
delay(200);
}
if(output1<70 && output1>29){
digitalWrite(19, HIGH);
delay(200);
digitalWrite(19, LOW);
delay(200);
}
if (output1<100 && output1>69){
digitalWrite(15, HIGH);
delay(200);
digitalWrite(15, LOW);
delay(200);
}
}
}
esp:VIN
esp:GND.2
esp:D13
esp:D12
esp:D14
esp:D27
esp:D26
esp:D25
esp:D33
esp:D32
esp:D35
esp:D34
esp:VN
esp:VP
esp:EN
esp:3V3
esp:GND.1
esp:D15
esp:D2
esp:D4
esp:RX2
esp:TX2
esp:D5
esp:D18
esp:D19
esp:D21
esp:RX0
esp:TX0
esp:D22
esp:D23
lcd1:GND
lcd1:VCC
lcd1:SDA
lcd1:SCL
dht1:VCC
dht1:SDA
dht1:NC
dht1:GND
btn2:1.l
btn2:2.l
btn2:1.r
btn2:2.r
btn3:1.l
btn3:2.l
btn3:1.r
btn3:2.r
btn4:1.l
btn4:2.l
btn4:1.r
btn4:2.r
r1:1
r1:2
r2:1
r2:2
r3:1
r3:2
r4:1
r4:2
bargraph1:A1
bargraph1:A2
bargraph1:A3
bargraph1:A4
bargraph1:A5
bargraph1:A6
bargraph1:A7
bargraph1:A8
bargraph1:A9
bargraph1:A10
bargraph1:C1
bargraph1:C2
bargraph1:C3
bargraph1:C4
bargraph1:C5
bargraph1:C6
bargraph1:C7
bargraph1:C8
bargraph1:C9
bargraph1:C10
bz1:1
bz1:2