Arduino GY-31-TCS3200 Renk Sensoru Projesi

Arduino GY-31 TCS3200 Renk Sensörü Projesi 2025 | RGB Renk Tespiti Nasıl Yapılır?

Arduino TCS3200 Renk Sensörü Nedir?

Arduino TCS3200 renk sensörü, tuttuğunuz yüzeyin rengini tespit etmek için kullanılan akıllı RGB renk algılama modülüdür. Bu kart üzerinde TCS3200 (RGB renk tespiti) çipi bulunur ve ortam ışık yoğunluğu ile doğru orantılı olarak kare dalga şeklinde farklı frekanslarda çıkış verir. Sensör kartı üzerindeki LED’ler sayesinde daha doğru renk ölçümleri elde edersiniz.

TCS3200 Renk Sensörü Çalışma Prensibi

TCS3200 renk sensörü, gelen ışığı kırmızı, yeşil, mavi ve berrak (clear) bileşenlerine ayırarak her bir renk için frekans çıkışı üretir. Bu frekans değerleri Arduino tarafından okunarak renk tespiti yapılır.

🌈 RGB Renk Sistemi:

  • Kırmızı (Red): 620-750nm dalga boyu
  • Yeşil (Green): 495-570nm dalga boyu
  • Mavi (Blue): 450-495nm dalga boyu
  • Berrak (Clear): Tüm görünür spektrum

📊 Frekans Çıkış Sistemi:

  • Yüksek Frekans: Daha fazla ışık
  • Düşük Frekans: Daha az ışık
  • Ölçüm Aralığı: 2Hz – 500kHz
  • Çözünürlük: 16-bit hassasiyet

Arduino TCS3200 Renk Sensörü Teknik Özellikleri

⚡ Elektriksel Özellikler:

  • Çalışma Voltajı: 2.7V – 5.5V
  • Akım Tüketimi: 20mA (LED’ler dahil)
  • Çıkış Formatı: TTL uyumlu kare dalga
  • Frekans Aralığı: 2Hz – 500kHz
  • Güç Tüketimi: 100mW

📏 Fiziksel Özellikler:

  • Boyutlar: 28mm x 28mm
  • Algılama Mesafesi: 3-10mm ideal
  • Görüş Açısı: 45° koni
  • Dahili LED: 4 adet beyaz LED
  • PCB Renk: Mavi/Kırmızı

🎛️ Kontrol Pinleri:

  • S0, S1: Frekans ölçeklendirme
  • S2, S3: Renk filtre seçimi
  • OUT: Frekans çıkışı
  • LED: LED açma/kapama

Arduino GY-31 TCS3200 Renk Sensörü Projesi Malzemeleri

📦 Temel Elektronik Bileşenler:

  • Arduino Uno R3 – Ana mikrokontrolcü kartı
  • GY-31 TCS3200 Renk Sensörü – RGB renk algılama
  • 16×2 LCD Panel – Renk gösterimi (isteğe bağlı)
  • I2C Modülü – LCD bağlantı kolaylığı (isteğe bağlı)
  • 3 Adet LED – RGB gösterge (daha fazla renk için artırılabilir)
  • Breadboard – Devre kurulum tahtası (isteğe bağlı)
  • Jumper Kablolar – Erkek-Erkek (Breadboard) / Erkek-Dişi (Direkt)

🔧 Opsiyonel Geliştirmeler:

  • RGB LED Strip – Tam renk gösterimi
  • Buzzer – Sesli renk bildirimi
  • SD Kart Modülü – Renk verisi saklama
  • ESP8266 WiFi – IoT renk paylaşımı
  • OLED Ekran – Daha net görüntü

🎨 Test Malzemeleri:

  • Renkli Kağıtlar – Kalibrasyon için
  • Renk Kartları – Standart renk örnekleri
  • Çeşitli Objeler – Test nesneleri
  • Beyaz Zemin – Referans yüzey

Arduino TCS3200 Devre Şeması

📺 Detaylı Çalışma Videosu:

👉 Arduino TCS3200 Renk Sensörü Projesi – Video Rehber

Video içeriği: TCS3200 kalibrasyon yöntemleri, LCD I2C bağlantısı, renk algoritması kodlaması, LED gösterge sistemi ve pratik renk testi uygulamaları

🔌 TCS3200 Renk Sensörü Bağlantıları:

  • VCC → Arduino 5V
  • GND → Arduino GND
  • S0 → Arduino Pin 4
  • S1 → Arduino Pin 5
  • S2 → Arduino Pin 6
  • S3 → Arduino Pin 7
  • OUT → Arduino Pin 8
  • LED → Arduino Pin 3 (PWM)

📱 16×2 LCD I2C Bağlantıları:

  • VCC → Arduino 5V
  • GND → Arduino GND
  • SDA → Arduino A4
  • SCL → Arduino A5

💡 RGB LED Gösterge Bağlantıları:

  • Kırmızı LED → Pin 9 (PWM)
  • Yeşil LED → Pin 10 (PWM)
  • Mavi LED → Pin 11 (PWM)
  • Ortak Katod → GND (220Ω direnç ile)

Arduino TCS3200 Renk Sensörü Kodları

📚 Gerekli Kütüphaneler:

#include <LiquidCrystal_I2C.h>
#include <Wire.h>

🔐 Premium Üyeler İçin Komple Kod Paketi:

[Üye Girişi Yaparak Tüm Kodlara Erişin]

Premium paket: Gelişmiş renk algoritmaları, HSV renk uzayı dönüşümü, renk öğrenme modu, çoklu renk tanıma, renk eşleştirme sistemi, kalibrasyon rutinleri

🎨 Temel Arduino TCS3200 Kod Yapısı:

#include <LiquidCrystal_I2C.h>
#include <Wire.h>

// TCS3200 pin tanımlamaları
#define S0 4
#define S1 5
#define S2 6
#define S3 7
#define sensorOut 8
#define LED_PIN 3

// RGB LED pinleri
#define RED_LED 9
#define GREEN_LED 10
#define BLUE_LED 11

// LCD I2C adresi
LiquidCrystal_I2C lcd(0x27, 16, 2);

// Renk frekans değişkenleri
int redFrequency = 0;
int greenFrequency = 0;
int blueFrequency = 0;
int clearFrequency = 0;

// Kalibrasyon değerleri (beyaz referans)
int redMin = 25, redMax = 72;
int greenMin = 30, greenMax = 90;
int blueMin = 25, blueMax = 70;

// RGB değerleri
int redValue = 0;
int greenValue = 0;
int blueValue = 0;

void setup() {
  Serial.begin(9600);
  
  // TCS3200 pin modları
  pinMode(S0, OUTPUT);
  pinMode(S1, OUTPUT);
  pinMode(S2, OUTPUT);
  pinMode(S3, OUTPUT);
  pinMode(sensorOut, INPUT);
  pinMode(LED_PIN, OUTPUT);
  
  // RGB LED pin modları
  pinMode(RED_LED, OUTPUT);
  pinMode(GREEN_LED, OUTPUT);
  pinMode(BLUE_LED, OUTPUT);
  
  // Frekans ölçeklendirme (%20)
  digitalWrite(S0, HIGH);
  digitalWrite(S1, LOW);
  
  // TCS3200 LED'lerini aç
  digitalWrite(LED_PIN, HIGH);
  
  // LCD başlatma
  lcd.init();
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("Renk Sensoru");
  lcd.setCursor(0, 1);
  lcd.print("Hazirlanıyor...");
  
  Serial.println("TCS3200 Renk Sensörü Başlatıldı");
  delay(2000);
}

void loop() {
  // Renk değerlerini oku
  readColorValues();
  
  // RGB değerlerini hesapla
  calculateRGBValues();
  
  // Rengi tespit et
  String detectedColor = detectColor();
  
  // LCD'de göster
  displayOnLCD(detectedColor);
  
  // RGB LED'leri kontrol et
  controlRGBLEDs();
  
  // Seri port çıkışı
  printColorData(detectedColor);
  
  delay(500);
}

void readColorValues() {
  // Kırmızı renk oku
  digitalWrite(S2, LOW);
  digitalWrite(S3, LOW);
  redFrequency = pulseIn(sensorOut, LOW);
  
  delay(100);
  
  // Yeşil renk oku
  digitalWrite(S2, HIGH);
  digitalWrite(S3, HIGH);
  greenFrequency = pulseIn(sensorOut, LOW);
  
  delay(100);
  
  // Mavi renk oku
  digitalWrite(S2, LOW);
  digitalWrite(S3, HIGH);
  blueFrequency = pulseIn(sensorOut, LOW);
  
  delay(100);
  
  // Berrak (tüm spektrum) oku
  digitalWrite(S2, HIGH);
  digitalWrite(S3, LOW);
  clearFrequency = pulseIn(sensorOut, LOW);
  
  delay(100);
}

void calculateRGBValues() {
  // Frekans değerlerini 0-255 aralığına map et
  redValue = map(redFrequency, redMin, redMax, 255, 0);
  greenValue = map(greenFrequency, greenMin, greenMax, 255, 0);
  blueValue = map(blueFrequency, blueMin, blueMax, 255, 0);
  
  // Değerleri sınırla
  redValue = constrain(redValue, 0, 255);
  greenValue = constrain(greenValue, 0, 255);
  blueValue = constrain(blueValue, 0, 255);
}

String detectColor() {
  // Renk tespiti algoritması
  if (redValue > greenValue && redValue > blueValue) {
    if (redValue > 150) {
      return "KIRMIZI";
    } else if (redValue > 100 && greenValue > 50) {
      return "TURUNCU";
    }
  }
  else if (greenValue > redValue && greenValue > blueValue) {
    if (greenValue > 150) {
      return "YESIL";
    } else if (greenValue > 100 && blueValue > 50) {
      return "CYAN";
    }
  }
  else if (blueValue > redValue && blueValue > greenValue) {
    if (blueValue > 150) {
      return "MAVI";
    } else if (blueValue > 100 && redValue > 50) {
      return "MOR";
    }
  }
  else if (redValue > 100 && greenValue > 100 && blueValue < 80) {
    return "SARI";
  }
  else if (redValue > 100 && greenValue < 80 && blueValue > 100) {
    return "MAGENTA";
  }
  else if (redValue > 150 && greenValue > 150 && blueValue > 150) {
    return "BEYAZ";
  }
  else if (redValue < 50 && greenValue < 50 && blueValue < 50) {
    return "SIYAH";
  }
  else {
    return "BILINMEYEN";
  }
}

void displayOnLCD(String color) {
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Renk: " + color);
  lcd.setCursor(0, 1);
  lcd.print("R:" + String(redValue) + " G:" + String(greenValue) + " B:" + String(blueValue));
}

void controlRGBLEDs() {
  // RGB LED'leri algılanan renge göre yak
  analogWrite(RED_LED, redValue);
  analogWrite(GREEN_LED, greenValue);
  analogWrite(BLUE_LED, blueValue);
}

void printColorData(String color) {
  Serial.println("=== Renk Sensörü Verileri ===");
  Serial.println("Tespit Edilen Renk: " + color);
  Serial.println("RGB Değerleri: R=" + String(redValue) + 
                 " G=" + String(greenValue) + 
                 " B=" + String(blueValue));
  Serial.println("Frekans Değerleri: R=" + String(redFrequency) + 
                 " G=" + String(greenFrequency) + 
                 " B=" + String(blueFrequency));
  Serial.println("----------------------------");
}

TCS3200 Kalibrasyon ve Optimizasyon

🎯 Kalibrasyon Süreci:

  1. Beyaz Referans: Beyaz kağıt ile maksimum değerler
  2. Siyah Referans: Siyah yüzey ile minimum değerler
  3. Gri Kart: %18 gri kart ile orta ton
  4. Renk Örnekleri: Bilinen renklerle test

⚙️ Optimizasyon Teknikleri:

  • Mesafe Kontrolü: 5-10mm ideal uzaklık
  • Işık Kontrolü: Sabit ışık koşulları
  • Ortam Işığı: Dış ışığı minimize edin
  • Çoklu Okuma: Ortalama değer alın

Arduino TCS3200 Avantajları

🎯 Teknik Üstünlükler:

  • Yüksek Hassasiyet: 16-bit renk çözünürlüğü
  • Geniş Spektrum: Görünür ışık aralığı
  • Hızlı Tepki: Gerçek zamanlı renk algılama
  • Dijital Çıkış: Gürültüye karşı dayanıklı

💡 Uygulama Avantajları:

  • Kolay Entegrasyon: Arduino uyumlu
  • Düşük Maliyet: Ekonomik çözüm
  • Kompakt Boyut: Küçük projeler için ideal
  • Çok Amaçlı: Çeşitli uygulamalarda kullanım

TCS3200 Renk Sensörü Kurulumu

🔧 Donanım Kurulumu:

  1. Sensör Yerleştirme: Düz yüzeye monte
  2. Mesafe Ayarı: 5-10mm optimal uzaklık
  3. Işık Koruması: Dış ışığa karşı kalkan
  4. Sabitleme: Titreşime karşı güvenli montaj

💻 Yazılım Ayarları:

  1. Frekans Ölçekleme: S0/S1 pin ayarları
  2. Kalibrasyon: Min/max değer belirleme
  3. Filtreleme: Ortalama hesaplama
  4. Renk Algoritması: Tespit mantığı geliştirme

TCS3200 Sorun Giderme

⚠️ Yaygın Problemler:

Renk Tespiti Yanlış:

  • Kalibrasyon: Beyaz/siyah referans güncelleyin
  • Mesafe: Sensör-nesne arası 5-10mm
  • Işık: Sabit ışık koşulları sağlayın
  • Algoritma: Renk eşik değerlerini ayarlayın

Kararsız Okumalar:

  • Ortam Işığı: Dış ışığı engelleyin
  • Filtreleme: Çoklu okuma ortalaması
  • Güç Kaynağı: Kararlı 5V besleme
  • Bağlantı: Gevşek kablo kontrolü

LCD Görüntü Sorunu:

  • I2C Adresi: Scanner ile adresi bulun (0x27/0x3F)
  • Kütüphane: Doğru LCD kütüphanesi
  • Bağlantı: SDA/SCL pin kontrolü
  • Güç: LCD için yeterli akım

İleri Seviye TCS3200 Uygulamaları

🎨 Renk Analiz Sistemleri:

  • Renk Eşleştirme: Boyama endüstrisi
  • Kalite Kontrol: Ürün renk kontrolü
  • Sıralama Sistemi: Renge göre ayırma
  • Renk Öğrenme: Makine öğrenmesi entegrasyonu

🤖 Robotik Uygulamalar:

  • Renk Takibi: Robot navegasyonu
  • Nesne Tanıma: Renkli obje sınıflandırma
  • Çizgi Takip: Renkli çizgi izleme
  • Oyun Robotları: Renk bazlı stratejiler

🏭 Endüstriyel Kullanım:

  • Tekstil Endüstrisi: Kumaş renk kontrolü
  • Gıda Sektörü: Olgunluk tespiti
  • Plastik Geri Dönüşüm: Malzeme ayırma
  • Baskı Endüstrisi: Renk kalitesi kontrolü

TCS3200 vs Diğer Renk Sensörleri

Özellik TCS3200 TCS34725 APDS-9960
İletişim Frekans I2C I2C
Çözünürlük 16-bit 16-bit 16-bit
RGB + Clear ✅ ✅ ✅
Dahili LED ✅ ❌ ❌
Maliyet Düşük Orta Yüksek
Boyut Büyük Küçük Küçük
Hassasiyet Yüksek Çok Yüksek Orta

Arduino TCS3200 Maliyet Analizi 2025

Malzeme Ortalama Fiyat (TL)
Arduino Uno R3 45-60
GY-31 TCS3200 Sensörü 15-25
16×2 LCD Panel 12-18
I2C Modülü 8-12
3 Adet LED + Direnç 3-5
Breadboard 8-12
Jumper Kablolar 5-8
Diğer Malzemeler 5-10
Toplam 101-150 TL

Renk Teorisi ve TCS3200

🌈 RGB Renk Modeli:

  • Additiv Sistem: Işık renklerinin toplanması
  • Primier Renkler: Kırmızı, Yeşil, Mavi
  • Sekonder Renkler: Cyan, Magenta, Sarı
  • Değer Aralığı: 0-255 (8-bit)

📊 HSV Renk Uzayı:

  • Hue (Ton): 0-360° renk tekerleği
  • Saturation (Doygunluk): 0-100% renk yoğunluğu
  • Value (Parlaklık): 0-100% ışık miktarı

🎯 Renk Mesafe Hesaplama:

float colorDistance(int r1, int g1, int b1, int r2, int g2, int b2) {
  return sqrt(pow(r2-r1, 2) + pow(g2-g1, 2) + pow(b2-b1, 2));
}

TCS3200 Güvenlik ve Bakım

⚠️ Güvenlik Önlemleri:

  • Göz Koruması: LED ışığına doğrudan bakmayın
  • Elektrostatik: ESD koruması sağlayın
  • Nem Koruması: Sensörü nemden koruyun
  • Sıcaklık: Çalışma sıcaklığını aşmayın

🔧 Bakım Önerileri:

  • Lens Temizliği: Yumuşak bez ile temizleme
  • Kalibrasyon: Düzenli kalibrasyon kontrolü
  • Bağlantı: Pin temasslarını kontrol edin
  • Yazılım: Algoritma güncellemeleri

Sonuç

Arduino GY-31 TCS3200 renk sensörü projesi, renk algılama teknolojisi ve RGB renk sistemlerini öğrenmek için mükemmel bir başlangıç projesidir. Bu proje ile optik sensörler, frekans ölçümü ve renk teorisi konularında praktik deneyim kazanabilirsiniz. Endüstriyel uygulamalardan hobi projelerine kadar geniş kullanım alanına sahiptir.

Önemli Notlar:

  • TCS3200 kalibrasyonu doğru renk tespiti için kritiktir
  • Mesafe ve ışık koşulları sonuçları etkiler
  • LCD I2C adresi cihaza göre değişebilir (0x27 veya 0x3F)
  • 📺 Gerekli tüm bilgiler videoda detaylı verilmiştir
  • ⚠️ Lütfen öncelikle videoyu dikkatlice izleyiniz
  • 🔔 SezerDuino YouTube kanalına ücretsiz abone olabilirsiniz

🎥 Video Rehber İçeriği:

  • TCS3200 renk sensörü detaylı tanıtımı
  • Arduino Uno ile devre bağlantı şeması
  • LCD I2C modülü kurulumu ve adres tespiti
  • Renk kalibrasyon süreci ve teknikleri
  • Kod yazımı ve renk algoritması geliştirme
  • RGB LED gösterge sistemi entegrasyonu
  • Pratik renk testi ve sorun giderme
  • İleri seviye renk analiz teknikleri
  • Endüstriyel uygulama örnekleri

Anahtar Kelimeler: Arduino TCS3200 renk sensörü, GY-31 renk sensör projesi, RGB renk algılama Arduino, TCS3200 kullanımı, renk tespiti projesi, Arduino renk sensörü kodu, TCS3200 kalibrasyon, LCD I2C Arduino, renk sensörü devre şeması