Arduino ile Kuluçka Makinesi V2: DHT11 ve Solid State Röle ile Tam Otomatik İnkübatör

Arduino Kuluçka Makinesi V2 – Yoğun İstek Üzerine Güncellenmiş Kodlar ve Şema

Merhaba arkadaşlar! Yoğun istek üzerine Arduino kuluçka makinesi V2 kodlarını ve şemasını paylaşıyoruz. Bu projede kuluçka makinesi kodları basit kodlama ile sizlerin anlaması için güncellenmiştir. If-else mantığı ile yapılan bu sistem, isterseniz for döngüsü ya da farklı metotlarla geliştirebilirsiniz.

🥚 Proje Özeti

  • Arduino Uno R3 ile tam otomatik kuluçka kontrolü
  • DHT11 sıcaklık nem sensörü ile hassas ölçüm
  • Solid State Röle ile güvenli 220V kontrol
  • Yumurta viyolü ile otomatik çevirme sistemi
  • Bozuk buzdolabı dönüştürme projesi

🔧 Arduino ile Kuluçka Makinesi V2 Malzemeleri

SıraMalzemeAdetFonksiyon
1Arduino Uno R31Ana kontrolcü
2DHT11 (DHT22 isteğe bağlı)1Sıcaklık ve nem ölçümü
3Yumurta Viyolü1Otomatik çevirme sistemi
4Bozuk İçi Temiz Buzdolabı/Dondurucu1Ana kabin
5Halı Isıtıcısı veya Yüksek Watlı Ampül1Isı kaynağı
6220V Solid State Röle (SSR)1Güvenli 220V kontrol
7Fan (Bilgisayar Fanı)1Hava sirkülasyonu

🌡️ DHT11 Sıcaklık ve Nem Sensörü Arduino Bağlantısı

DHT11 vs DHT22 Karşılaştırması:

ÖzellikDHT11DHT22
Sıcaklık Aralığı0-50°C-40°C to 80°C
Sıcaklık Hassasiyeti±2°C±0.5°C
Nem Aralığı20-90% RH0-100% RH
Nem Hassasiyeti±5% RH±2-5% RH
FiyatEkonomikPahalı

DHT11 Arduino Bağlantı Şeması:

DHT11 Sensörü --> Arduino Uno
VCC            --> 5V
GND            --> GND
DATA           --> Digital Pin 2

Önemli Not: VCC ile veri pimi arasına 10K ohm’luk bir pull-up direnci yerleştirmeniz gerekmektedir.


⚡ Solid State Röle (SSR) ile 220V Kontrol

Neden Solid State Röle Kullanmalısınız?

100W gücündeki bir ampul yaklaşık olarak 0,45A akım çekecektir. Mekanik rölelere göre SSR’nin avantajları:

SSR Avantajları:

  • Sessiz çalışma – Mekanik temas yok
  • Uzun ömür – Aşınma yok
  • Hızlı anahtarlama – Mikrosaniye seviyesi
  • Ark oluşumu yok – Güvenli
  • Titre titreme yok – Kararlı çalışma

Arduino ile SSR Bağlantısı:

SSR Modülü --> Arduino + 220V
DC+ (3-32V) --> Arduino Digital Pin 3
DC-         --> Arduino GND
AC Load 1   --> 220V Fazı
AC Load 2   --> Isıtıcı/Ampül

🔄 Yumurta Viyolü ve Otomatik Çevirme Sistemi

Yumurta Çevirme Neden Gerekli?

Kuluçka makinesi kullanımında ısı ve nem değerlerinden sonra en önemli faktör yumurtaların çevirme hızıdır.

Çevirme Hızı Tablosu:

Yumurta TürüÇevirme PeriyoduSebep
Bıldırcın1 saatte birKüçük boyut, sarı kabuk zarına yakın
Tavuk2 saatte birStandart boyut
Ördek3 saatte birTavuktan büyük
Kaz/Hindi4 saatte birBüyük boyut, zarın bozulmasını önler

💻 Arduino Kuluçka Makinesi V2 Kodları

Kütüphane Kurulumu:

// Gerekli kütüphaneler
#include "DHT.h"
#include <LiquidCrystal.h>

DHT Kütüphanesi Kurulumu: Arduino IDE’de Taslak → library ekle → Kitaplıkları Yönet… → “dht” arayın ve “Adafruit’ten DHT sensör kitaplığı”nı yükleyin.

Ana Kod – Arduino Kuluçka Makinesi V2:

#include "DHT.h"
#include <LiquidCrystal.h>

// Pin tanımlamaları
#define DHT_PIN 2          // DHT11 veri pini
#define DHT_TYPE DHT11     // Sensör tipi (DHT11 veya DHT22)
#define HEATER_PIN 3       // Isıtıcı SSR pini
#define FAN_PIN 4          // Fan kontrol pini
#define TURN_PIN 5         // Viyol çevirme motoru pini
#define HUMIDIFIER_PIN 6   // Nemlendirici pini

// LCD bağlantıları (RS, Enable, D4, D5, D6, D7)
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

// DHT sensör objesi
DHT dht(DHT_PIN, DHT_TYPE);

// Hedef değerler
float TARGET_TEMP = 37.5;    // Hedef sıcaklık (°C)
float TARGET_HUMIDITY = 60.0; // Hedef nem (%)

// Tolerans değerleri
float TEMP_TOLERANCE = 0.5;   // Sıcaklık toleransı
float HUM_TOLERANCE = 5.0;    // Nem toleransı

// Zaman değişkenleri
unsigned long lastTurnTime = 0;
unsigned long lastReadTime = 0;
unsigned long TURN_INTERVAL = 7200000; // 2 saat (milisaniye)
unsigned long READ_INTERVAL = 2000;     // 2 saniye

// Durum değişkenleri
bool heaterState = false;
bool fanState = false;
bool humidifierState = false;
bool turnDirection = true;    // true: sağa, false: sola

void setup() {
  Serial.begin(9600);
  
  // Pin modları
  pinMode(HEATER_PIN, OUTPUT);
  pinMode(FAN_PIN, OUTPUT);
  pinMode(TURN_PIN, OUTPUT);
  pinMode(HUMIDIFIER_PIN, OUTPUT);
  
  // Başlangıçta tüm çıkışlar kapalı
  digitalWrite(HEATER_PIN, LOW);
  digitalWrite(FAN_PIN, LOW);
  digitalWrite(TURN_PIN, LOW);
  digitalWrite(HUMIDIFIER_PIN, LOW);
  
  // LCD başlatma
  lcd.begin(16, 2);
  lcd.print("Arduino Kulucka");
  lcd.setCursor(0, 1);
  lcd.print("Makinesi V2.0");
  delay(2000);
  lcd.clear();
  
  // DHT sensör başlatma
  dht.begin();
  
  Serial.println("Arduino Kuluçka Makinesi V2 Başlatıldı");
  Serial.println("Hedef Sıcaklık: " + String(TARGET_TEMP) + "°C");
  Serial.println("Hedef Nem: " + String(TARGET_HUMIDITY) + "%");
}

void loop() {
  // Sensör okuma kontrolü
  if (millis() - lastReadTime >= READ_INTERVAL) {
    readSensorsAndControl();
    lastReadTime = millis();
  }
  
  // Yumurta çevirme kontrolü
  if (millis() - lastTurnTime >= TURN_INTERVAL) {
    turnEggs();
    lastTurnTime = millis();
  }
  
  delay(100);
}

void readSensorsAndControl() {
  // DHT11 sensöründen veri oku
  float humidity = dht.readHumidity();
  float temperature = dht.readTemperature();
  
  // Veri geçerliliği kontrolü
  if (isnan(humidity) || isnan(temperature)) {
    Serial.println("DHT sensör okuma hatası!");
    lcd.setCursor(0, 0);
    lcd.print("Sensor Hatasi!  ");
    return;
  }
  
  // LCD ekranda göster
  lcd.setCursor(0, 0);
  lcd.print("T:" + String(temperature, 1) + "C H:" + String(humidity, 1) + "%");
  
  // Kontrol durumlarını göster
  lcd.setCursor(0, 1);
  String status = "";
  if (heaterState) status += "H";
  if (fanState) status += "F";
  if (humidifierState) status += "N";
  lcd.print(status + "          ");
  
  // Sıcaklık kontrolü
  temperatureControl(temperature);
  
  // Nem kontrolü  
  humidityControl(humidity);
  
  // Fan kontrolü (sıcaklık farkı varsa)
  fanControl(temperature);
  
  // Serial monitör çıktısı
  Serial.println("Sıcaklık: " + String(temperature, 2) + "°C, Nem: " + String(humidity, 2) + "%");
  Serial.println("Isıtıcı: " + String(heaterState) + ", Fan: " + String(fanState) + ", Nemlendirici: " + String(humidifierState));
}

void temperatureControl(float currentTemp) {
  // Basit if-else kontrolü (istediğiniz gibi PID ile değiştirebilirsiniz)
  if (currentTemp < (TARGET_TEMP - TEMP_TOLERANCE)) {
    // Sıcaklık düşük - ısıtıcıyı aç
    if (!heaterState) {
      digitalWrite(HEATER_PIN, HIGH);
      heaterState = true;
      Serial.println("Isıtıcı AÇILDI");
    }
  }
  else if (currentTemp > (TARGET_TEMP + TEMP_TOLERANCE)) {
    // Sıcaklık yüksek - ısıtıcıyı kapat
    if (heaterState) {
      digitalWrite(HEATER_PIN, LOW);
      heaterState = false;
      Serial.println("Isıtıcı KAPANDI");
    }
  }
  // Tolerans aralığında ise durumu değiştirme
}

void humidityControl(float currentHum) {
  if (currentHum < (TARGET_HUMIDITY - HUM_TOLERANCE)) {
    // Nem düşük - nemlendiriciyi aç
    if (!humidifierState) {
      digitalWrite(HUMIDIFIER_PIN, HIGH);
      humidifierState = true;
      Serial.println("Nemlendirici AÇILDI");
    }
  }
  else if (currentHum > (TARGET_HUMIDITY + HUM_TOLERANCE)) {
    // Nem yüksek - nemlendiriciyi kapat
    if (humidifierState) {
      digitalWrite(HUMIDIFIER_PIN, LOW);
      humidifierState = false;
      Serial.println("Nemlendirici KAPANDI");
    }
  }
}

void fanControl(float currentTemp) {
  // Fan sürekli açık (hava sirkülasyonu için)
  // İsteğe bağlı: sadece ısıtıcı çalışırken fan çalışsın
  if (heaterState) {
    if (!fanState) {
      digitalWrite(FAN_PIN, HIGH);
      fanState = true;
      Serial.println("Fan AÇILDI");
    }
  } else {
    if (fanState) {
      digitalWrite(FAN_PIN, LOW);
      fanState = false;
      Serial.println("Fan KAPANDI");
    }
  }
}

void turnEggs() {
  Serial.println("Yumurta çevirme başlıyor...");
  
  // LCD'de göster
  lcd.setCursor(0, 1);
  lcd.print("Cevirme...      ");
  
  if (turnDirection) {
    // Sağa çevir
    digitalWrite(TURN_PIN, HIGH);
    delay(3000); // 3 saniye çevir
    digitalWrite(TURN_PIN, LOW);
    Serial.println("Yumurtalar SAĞA çevrildi");
  } else {
    // Sola çevir (reverse için farklı pin kullanabilirsiniz)
    // Burada basit olarak aynı pini kullanıyoruz
    digitalWrite(TURN_PIN, HIGH);
    delay(3000);
    digitalWrite(TURN_PIN, LOW);
    Serial.println("Yumurtalar SOLA çevrildi");
  }
  
  // Yön değiştir
  turnDirection = !turnDirection;
  
  delay(1000);
}

// Manuel ayar fonksiyonları (Serial komutlarıyla)
void checkSerialCommands() {
  if (Serial.available() > 0) {
    String command = Serial.readString();
    command.trim();
    
    if (command.startsWith("TEMP:")) {
      TARGET_TEMP = command.substring(5).toFloat();
      Serial.println("Yeni hedef sıcaklık: " + String(TARGET_TEMP) + "°C");
    }
    else if (command.startsWith("HUM:")) {
      TARGET_HUMIDITY = command.substring(4).toFloat();
      Serial.println("Yeni hedef nem: " + String(TARGET_HUMIDITY) + "%");
    }
    else if (command == "TURN") {
      turnEggs();
    }
    else if (command == "STATUS") {
      printStatus();
    }
  }
}

void printStatus() {
  Serial.println("=== KULUÇKA MAKİNESİ DURUMU ===");
  Serial.println("Hedef Sıcaklık: " + String(TARGET_TEMP) + "°C");
  Serial.println("Hedef Nem: " + String(TARGET_HUMIDITY) + "%");
  Serial.println("Isıtıcı: " + String(heaterState ? "AÇIK" : "KAPALI"));
  Serial.println("Fan: " + String(fanState ? "AÇIK" : "KAPALI"));
  Serial.println("Nemlendirici: " + String(humidifierState ? "AÇIK" : "KAPALI"));
  Serial.println("Son çevirme: " + String((millis() - lastTurnTime) / 1000) + " saniye önce");
  Serial.println("================================");
}

🏗️ Kuluçka Makinesi Montaj Rehberi

1. Buzdolabı Hazırlama:

  1. Temizlik: İçi tamamen temizlenmiş bozuk buzdolabı
  2. Yalıtım Kontrolü: Mevcut yalıtımın durumu
  3. Hava Delikleri: Üst ve alt hava sirkülasyonu için delikler
  4. Elektrik Güvenliği: Topraklama kontrolü

2. Isıtıcı Sistemi:

Halı Isıtıcısı Kurulumu:

  • Güç: 100-200W arası
  • Konum: Alt bölümde, eşit dağılım
  • Güvenlik: Aşırı ısınma koruması
  • Kontrol: SSR ile Arduino kontrolü

Ampül Alternativi:

  • Güç: 100W akkor ampul
  • Konum: Yan duvar orta seviye
  • Koruma: Kırılma koruması
  • Dağıtım: Reflektör ile homojen ısı

3. Hava Sirkülasyon Sistemi:

Fan Yerleşimi:
├── Üst Fan: Sıcak havanın dağıtımı
├── Alt Fan: Soğuk hava girişi
└── Yan Fan: Yatay sirkülasyon

📊 Kuluçka Parametreleri ve Ayarları

Tavuk Yumurtası İçin Optimal Değerler:

ParametreDeğerTolerans
Sıcaklık37.5°C±0.5°C
Nem (1-18. gün)55-60%±5%
Nem (19-21. gün)65-70%±5%
Çevirme2 saatte bir45° açı
Hava DeğişimiSaatte 4-6 kezSürekli

Farklı Yumurta Türleri İçin Ayarlar:

Bıldırcın Yumurtası:

  • Süre: 17 gün
  • Sıcaklık: 37.7°C
  • Nem: 55-60%
  • Çevirme: 1 saatte bir

Ördek Yumurtası:

  • Süre: 28 gün
  • Sıcaklık: 37.5°C
  • Nem: 55-65%
  • Çevirme: 3 saatte bir

🔧 Gelişmiş Özellikler ve Modifikasyonlar

LCD Ekran Entegrasyonu:

// 16x2 LCD ekran bağlantısı
// VSS -> GND, VDD -> 5V, V0 -> 10K pot orta bacak
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

// Özel karakterler (yumurta, termometre vb.)
byte thermometer[8] = {
  0b00100, 0b01010, 0b01010, 0b01110,
  0b11111, 0b11111, 0b01110, 0b00000
};

WiFi Modülü ile Uzaktan İzleme:

#include <WiFi.h>
#include <WebServer.h>

// ESP32 için WiFi kuluçka kontrolü
WebServer server(80);

void handleRoot() {
  String html = "<html><body>";
  html += "<h1>Kuluçka Makinesi Durumu</h1>";
  html += "<p>Sıcaklık: " + String(temperature) + "°C</p>";
  html += "<p>Nem: " + String(humidity) + "%</p>";
  html += "</body></html>";
  server.send(200, "text/html", html);
}

Data Logger ile Kayıt Sistemi:

#include <SD.h>

void logData(float temp, float hum) {
  File dataFile = SD.open("kulucka_log.txt", FILE_WRITE);
  if (dataFile) {
    dataFile.print(millis() / 1000);
    dataFile.print(",");
    dataFile.print(temp);
    dataFile.print(",");
    dataFile.println(hum);
    dataFile.close();
  }
}

🔍 SEO Anahtar Kelimeler ve Popüler Aramalar

Bu Arduino kuluçka makinesi projesi şu popüler aramalara yanıt veriyor:

Ana Anahtar Kelimeler:

  • “Arduino kuluçka makinesi V2”
  • “DHT11 sıcaklık nem sensörü”
  • “Solid state röle Arduino”
  • “Yumurta viyolü otomatik çevirme”
  • “Kuluçka makinesi kodları”

Uzun Kuyruklu Anahtar Kelimeler:

  • “Arduino ile tam otomatik kuluçka”
  • “Arduino kuluçka makinesi viyolü”
  • “DHT11 Arduino bağlantı şeması”
  • “Kuluçka makinesi termostat Arduino”
  • “220V SSR röle Arduino kontrolü”

İlgili Projeler:

  • Arduino termostat projeleri
  • DHT22 nem kontrol sistemi
  • Step motor yumurta çevirme
  • Arduino PID sıcaklık kontrolü

⚡ Güvenlik ve Uyarılar

Elektriksel Güvenlik:

🚨 ÖNEMLİ UYARILAR:

  • 220V ile çalışırken mutlaka güç kesilerek çalışın
  • SSR röle kullanımı mekanik röleye göre daha güvenlidir
  • Topraklama mutlaka yapılmalıdır
  • Sigorta koruması ekleyin

Yangın Güvenliği:

  • Aşırı ısınma koruması ekleyin
  • Duman sensörü entegrasyonu
  • Otomatik kesici sistemi
  • Yangın söndürücü hazır bulundurun

🎯 Sonuç ve Gelecek Geliştirmeler

Arduino ile Kuluçka Makinesi V2 projesi, yoğun istek üzerine hazırlanmış ve basit kodlama ile anlaşılır hale getirilmiştir. If-else mantığı ile çalışan bu sistem, for döngüsü veya PID kontrolcü ile geliştirilebilir.

Projenin Avantajları:

✅ Düşük Maliyet: Bozuk buzdolabı dönüştürme ✅ Kolay Anlama: Basit if-else kodlaması ✅ Güvenli Kontrol: Solid State Röle kullanımı ✅ Hassas Ölçüm: DHT11/DHT22 sensör desteği ✅ Otomatik Çevirme: Viyol sistemi entegrasyonu

Gelecek Geliştirmeler:

  • PID kontrolcü ile daha hassas sıcaklık kontrolü
  • ESP32 ile IoT entegrasyonu
  • Mobil uygulama ile uzaktan kontrol
  • Yapay zeka ile optimal kuluçka parametreleri
  • Multi-sensör sistemi ile çok nokta ölçüm

Bu Arduino kuluçka makinesi projesi ile tavuk, bıldırcın, ördek ve diğer kanatlı hayvan yumurtalarını başarıyla döllendirme şansınız artacaktır.

Şimdiden iyi çalışmalar dileriz! 🐣


🔖 Etiketler: Arduino Uno, Kuluçka Makinesi, DHT11, DHT22, Solid State Röle, Yumurta Viyolü, Sıcaklık Kontrolü, Nem Kontrolü, İnkübatör, Otomatik Çevirme, 220V Arduino Kontrol


Devre Şeması


Çalışma Videosu


Gerekli Kodlar :


Premium Üyeler İçin Gerekli Kodlar: 

[member]    [/member]


Not:Gerekli Tüm Bilgiler Video da Verilmiştir. Lütfen Öncelikle Videoyu Dikkatlice İzleyiniz. Diğer Video ve Projelerden Haberdar Olmak İçin SezerDuino YouTube Kanalına Ücretsiz Olarak Abone Olabilirsiniz. İyi Çalışmalar

Not2: Devre şeması çift röle kullanıldı. Kodlar ile extra bağlantıları öğrenebilirsiniz.