Arduino İklim Kontrol

Zgn.tn

Yeni üye
Katılım
16 Ara 2018
Mesajlar
15
Tepkime puanı
8
Puanları
3
Konum
Trakya
Bu projede doğa ananın normalde gerçekleştirdiği eylemleri arduino ile yapay olarak gerçekleştirmeye çalışacağım. Bir bitkinin gelişimi için ihtiyaç duyduğu nem, ısı, karbondioksit (Co2), ışık gibi gereklilikleri arduino ile otomasyona çevireceğiz.

Üzerinde çalıştığım ilk proje mantarhane için gerekli olan otomasyon üserine olacak. Belirtmeliyim ki bu benim ilk arduino projem. Görüşlerinize, bilginize, tavsiyenize ve sayri sonuna kadar açığım. Hatta benimle paylaşımda ve etkilişimde bulunursanız çok müteşekkir olurum.
 

barbartete

Üye
Katılım
26 Eki 2018
Mesajlar
120
Tepkime puanı
12
Puanları
18
Konum
Amasya
Merhaba, projenizin ana fikri gerçekten güzel sizi şimdiden tebrik etmek isterim. Aşağıdaki materyaller işinizi görecektir.

1. Grove Base Shield
2. Grove Temperature & Humidity Sensor
3. Grove Moisture Sensor
4. Grove Sunlight Sensor
5. Grove OLED Display 1.12 INC
6. Grove Encoder
7. Grove Button
8. Grove Relay
9. Grove Water Flow Sensor
10. 12V Water Pump

Unuttuğum bir şey varsa diğer arkadaşlar da eklesinler lütfen. Ben de konuyu takip ediyorum ilgimi çekti açıkçası :)
 

Zgn.tn

Yeni üye
Katılım
16 Ara 2018
Mesajlar
15
Tepkime puanı
8
Puanları
3
Konum
Trakya
Merhaba, projenizin ana fikri gerçekten güzel sizi şimdiden tebrik etmek isterim. Aşağıdaki materyaller işinizi görecektir.

1. Grove Base Shield
2. Grove Temperature & Humidity Sensor
3. Grove Moisture Sensor
4. Grove Sunlight Sensor
5. Grove OLED Display 1.12 INC
6. Grove Encoder
7. Grove Button
8. Grove Relay
9. Grove Water Flow Sensor
10. 12V Water Pump

Unuttuğum bir şey varsa diğer arkadaşlar da eklesinler lütfen. Ben de konuyu takip ediyorum ilgimi çekti açıkçası :)
Teşekkür ederim ilk projemi birazdan yayınlayacağım.
 

axellis

Üye
Katılım
26 Eki 2018
Mesajlar
101
Tepkime puanı
9
Puanları
18
Konum
İzmir
Teşekkür ederim ilk projemi birazdan yayınlayacağım.
Tebrik ederim. Bu mantar işi gerçekten çok zevkli gibi görünüyor :) Eniştem kendi evinde birşeyler yapmaya çalışıyor ve ballandıra ballandıra anlatıyor da... Siz sektörü ne kadar tanıyorsunuz? Gerçekten anlatıldığı kadar kar bırakan bir iş mi acaba?
 

Zgn.tn

Yeni üye
Katılım
16 Ara 2018
Mesajlar
15
Tepkime puanı
8
Puanları
3
Konum
Trakya
Kendi mantar odam için kurduğum sistem.

Gereksinimler:
Arduino Uno R3
10k su geçirmez NTC
10k direnç
DHT22 ısı&nem sensörü
5v 4 kanal röle
Breadboard
15-20 adet Erkek-Erkek jumper kablo

Işlev:
- Ortam nem'i %75 altına düştüğünde 12V DC su pompasını çalıştırıp nozzlelar yardımıyle ortam bağıl nemini yükseltiyor.
- Su geçirmez NTC ile kompost içi ısısını ölçüyor ve kompost içi ısı 26 dereceden büyükse. Dışarıdan soğuk hava çeken fanları çalıştırıyor.
- Ortam ısısı 23'ten küçükse 2500W'lık elektrikli petek ısıtıcıyı çalıştırıyor.

Kodlar:

Kod:
#include <DHT.h>
#include <math.h>

#define DHTPIN 2

#define DHTTYPE DHT22

DHT dht(DHTPIN, DHTTYPE);

int fanin = 5;    // Role 1
int pompa = 6;    // Role 2
int isitici = 7;  // Role 3
//int Fanout = 8; // Role 4


void setup() {

  pinMode(fanin, OUTPUT);
  pinMode(pompa, OUTPUT);
  pinMode(isitici, OUTPUT);

  Serial.begin(9600);
  Serial.println(" ### TUNA AR&GE iklim kontrol sistemleri ### ");

  dht.begin();
}


double Termistor(int analogOkuma){

double sicaklik;
sicaklik = log(((10240000 / analogOkuma) - 10000));
sicaklik = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * sicaklik * sicaklik)) * sicaklik);
sicaklik = sicaklik - 273.15;
return sicaklik;
}


void loop() {

  delay(2000);

  int deger = analogRead(A0);
  double sicaklik = Termistor(deger);
  float n = dht.readHumidity();
  float t2 = dht.readTemperature();


  Serial.println("--------------------  ### TUNA AR&GE iklim kontrol sistemleri ### ---------------------");
  Serial.print("Nem: ");
  Serial.print(n);
  Serial.print(" %\t");
  Serial.print("Kompost Sıcaklığı: ");
  Serial.print(sicaklik);
  Serial.print(" *C\t ");
  Serial.print("Ortam Sıcaklığı: ");
  Serial.print(t2);
  Serial.println(" *C\t ");

  if(n < 75){
    digitalWrite(pompa, LOW);
    Serial.print("Nem Çalıştırıldı!!\t ");
  }
  else{
    digitalWrite(pompa, HIGH);
    Serial.print("Nem Kapatıldı!!\t ");
  }

  if(sicaklik > 26){
    digitalWrite(fanin, LOW);
    Serial.print("Dış Fanlar Çalıştırıldı!!\t ");
  }
  else{
    digitalWrite(fanin, HIGH);
    Serial.print("Dış Fanlar Kapatıldı!!\t ");
  }

  if(t2 < 23){
    digitalWrite(isitici, LOW);
    Serial.println("Isıtıcı Çalıştırıldı!!\t ");
    Serial.println("----------------------------------------------------------------------------------------");
    Serial.println(" ");
  }
  else{
    digitalWrite(isitici, HIGH);
    Serial.println("Isıtıcı Kapatıldı!!\t ");
    Serial.println("----------------------------------------------------------------------------------------");
    Serial.println(" ");
  }






}
s1.jpg


Kod konusunda tavsiye ve destekleriniz bekliyorum.
 

Zgn.tn

Yeni üye
Katılım
16 Ara 2018
Mesajlar
15
Tepkime puanı
8
Puanları
3
Konum
Trakya
Tebrik ederim. Bu mantar işi gerçekten çok zevkli gibi görünüyor :) Eniştem kendi evinde birşeyler yapmaya çalışıyor ve ballandıra ballandıra anlatıyor da... Siz sektörü ne kadar tanıyorsunuz? Gerçekten anlatıldığı kadar kar bırakan bir iş mi acaba?
Aslında ben tarımı, doğayı, hayvanları seviyorum. Bu doğrultuda yaptığım işlerden keyif aldığım için merakımı tetikliyor, öğrenme hevesim artıyor. Şuanda 6 metre kare bir odam var ufak ufak çinden ihtiyaçlarımı söyledim DC su pompasıydı, nozzle sistemlerdi, ph ölçerdi falan derken arduino ile ilk kodlamamı yaptım. Kar elbet vardır ama şuan ben ar&ge aşamasındayım. Sonrası pazar çalışması olacak. Unutmamak lazım ürettiğimiz malı pazarını oluşturmadan kâr yapamayız. :)
 

beyaz

Üye
Katılım
26 Eki 2018
Mesajlar
82
Tepkime puanı
20
Puanları
8
Konum
Afyonkarahisar
Başarılı bir çalışma olmuş. Umarım çabalarınızın karşılığını fazlasıyla alırsınız.
 

dupree

Üye
Katılım
26 Eki 2018
Mesajlar
112
Tepkime puanı
17
Puanları
18
Konum
Bingöl
Gece gece canımız mantarlı tavuk çekti sizin yüzünüzden nereden aklımıza getirdiniz yahuuu :) Tebrikler!
 

Zgn.tn

Yeni üye
Katılım
16 Ara 2018
Mesajlar
15
Tepkime puanı
8
Puanları
3
Konum
Trakya
Başarılı bir çalışma olmuş. Umarım çabalarınızın karşılığını fazlasıyla alırsınız.
Aslında çok basit oldu inanın daha fonksiyon hangisi değişken hangisi onun farkında değilim. :) öğreneceğim ama her yada geç.. (Y)
Gece gece canımız mantarlı tavuk çekti sizin yüzünüzden nereden aklımıza getirdiniz yahuuu :) Tebrikler!
Hay Allah.. :) Yemeyin bu saatte.. Gerçi mantar rahatsız etmez ama et midenizi yorabilir.
 

Zgn.tn

Yeni üye
Katılım
16 Ara 2018
Mesajlar
15
Tepkime puanı
8
Puanları
3
Konum
Trakya
Elinze sağlık. Şu anda çalışır durumda mı projeniz video var mı acaba?
teşekkürler. video yok fakat çalışır durumda roleler verilere göre açılıp kapanıyor.

teşekkürler

Kodları geliştirecek önerileriniz varsa severek dinlerim. Mesela for döngüsü ile daha sağlıklı olur gibi geliyor çalışma. Örneğin; Nem %75 altına düştüğünde %80'e ulaşana kadar pompa çalışsın. Hatta hava daki bağıl nemi daha iyi ölçmek için %80'e ulaşana kadar 60sn çalışsın 10sn dursun.
 
Moderatör tarafında düzenlendi:

Zgn.tn

Yeni üye
Katılım
16 Ara 2018
Mesajlar
15
Tepkime puanı
8
Puanları
3
Konum
Trakya
Merhaba arkadaşlar proje sonunda bitti test aşamasına geçtim. Tabi bazı eksiklikler var..

Öncelikle kullandığım ekipmanları yazayım.
  • Arduino UNO
  • Ethernet Shield
  • Dht22
  • 5V 2 Kanal Role
  • 25A ve 10A Kontaktör(Rolelere 220V ile yormamak için ve güvenlik için)

Çalışma Mantığı,
Ethernet Shield ile internet bağlantısı sağladığım arduinoyu BLYNK ile uzaktan kontrol ediyorum. istediğim sıcaklık ve nem oranına göre role'leri on off durumuna geçiriyorum.


C++:
/*****************************/
/*set Triggers *************/
int sicaklikset; // blynk üzerinden slider ile sıcaklık belirlenir.
int nemset; // blynk üzerinden slider ile nem belirlenir.

#define BLYNK_PRINT Serial

#include <SPI.h>
#include <Ethernet.h>
#include <BlynkSimpleEthernet.h>
#include <DHT.h>
#include <SimpleTimer.h>

char auth[] = "*********";

BLYNK_WRITE(V0) //temperature slider in app on pin V0
{
  sicaklikset = param.asInt();
}

BLYNK_WRITE(V1) //temperature slider in app on pin V40
{
  nemset = param.asInt();
}

#define DHTPIN 2 // Mavi Jumper

#define DHTTYPE DHT22

DHT dht(DHTPIN, DHTTYPE);
SimpleTimer timer;

int Role1 = 3;    // Role 1 Kırmızı Jumper - Isıtıcı Rolesi
int Role2 = 4;    // Role 2 Kahverengi Jumper - Selenoid Rolesi

float n = dht.readHumidity();
float s = dht.readTemperature();

void setup() {

pinMode(Role1, OUTPUT);
pinMode(Role2, OUTPUT);
pinMode(DHTPIN, INPUT);

Serial.begin(9600);
Serial.println(" ### iklim kontrol sistemleri ### ");
timer.setInterval(60L * 100L, sendData); // 15 saniyede bir kontrolyapılır

dht.begin();

Blynk.begin(auth);


}

void sendData()
{

float n = dht.readHumidity();
float s = dht.readTemperature();

if (isnan(n) || isnan(s)) {
Serial.println("DHT Sensorunde Problem Var!..");
return;
  }

delay(3000);


 
  Serial.print("Sıcaklık: ");
  Serial.print(s);
  Serial.print(" *C\t");
  Serial.print("Nem: ");
  Serial.print(n);
  Serial.println(" %\t");
 
  if(s <= (sicaklikset)){
    digitalWrite(Role1, HIGH);
    Serial.print("Isıtıcı Çalıştırıldı..\t ");
  }
  else{
    digitalWrite(Role1, LOW);
    Blynk.syncVirtual(V0); // slider senkrizizasyon
    Serial.print("Isıtıcı Kapatıldı!!\t ");
  }

  if(n <= (nemset)){
    digitalWrite(Role2, HIGH);
    Serial.println("Nem Çalıştırıldı..\t ");
    Serial.println(" ");
  }
  else{
    digitalWrite(Role2, LOW);
    Blynk.syncVirtual(V1);  // slider senkrizizasyon
    Serial.println("Nem Kapatıldı!!\t ");
    Serial.println(" ");
  }
 
  if(s == 35){
    Blynk.notify(" Sıcaklık 35*C ");
  }
 
  Blynk.virtualWrite(V5, n);  //V5 is for Humidity
  Blynk.virtualWrite(V6, s);  //V6 is for Temperature

}

void loop() {

  if(s == 35){
    Blynk.notify(" Sıcaklık 35*C ");
  }
 
  Blynk.run();
  timer.run();

}
Arkadaşlar kod gördüğünüz gibi böyle ama nemlendirme verimli çalışmıyor. ben nemi ölçüp istenilen nemin altındaysa 2sn çalıştırıp sonra tekrar ölçüm yapmasını nasıl sağlayabilirim?
 

xbrknx

Üye
Katılım
16 Tem 2019
Mesajlar
78
Tepkime puanı
16
Puanları
8
Konum
istanbul
Kod:
void loop() {
  if(s == 35){    Blynk.notify(" Sıcaklık 35*C ");  }
  Blynk.run();
  timer.run();
  float nem = dht.readHumidity();
  if(nem <= (nemset))  {  digitalWrite(Role2, HIGH); delay(2000); digitalWrite(Role2, LOW); }
}
yada

Kod:
void loop() {
  if(s == 35){    Blynk.notify(" Sıcaklık 35*C ");  }
  Blynk.run();
  timer.run();
  float nem = dht.readHumidity();
  if(nem <= (nemset))  {  sendData(); delay(2000); }
}
 
Son düzenleme:
Üst