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:
- Beyaz Referans: Beyaz kağıt ile maksimum değerler
- Siyah Referans: Siyah yüzey ile minimum değerler
- Gri Kart: %18 gri kart ile orta ton
- 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:
- Sensör Yerleştirme: Düz yüzeye monte
- Mesafe Ayarı: 5-10mm optimal uzaklık
- Işık Koruması: Dış ışığa karşı kalkan
- Sabitleme: Titreşime karşı güvenli montaj
💻 Yazılım Ayarları:
- Frekans Ölçekleme: S0/S1 pin ayarları
- Kalibrasyon: Min/max değer belirleme
- Filtreleme: Ortalama hesaplama
- 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ı









abi kodları buraya yorum olarak atsan kodların linkler sıkıntılı geçilmiyor lütfen acil lazım
S.a kolay gelsin Devre şemasını paylaşabilirmisiniz. Link ölmüş
Aleyküm selam. Site taşıma işlemi yaparken bazı çizimler (görseller) maalesef silindi. Tekrar yüklemek için uğraşıyoruz. Linkte sorun görünmüyor. Eğer indirme problem yaşıyorsanız mail yolu ile bildirip kodları gönderebiliriz.
abi eline emeğine sağlık güzel bir çalışma olmuş ancak bir sorum olacak eksiksiz herşeyiz tamamladım ancak sıkıntı veriyor mesela rennk sensörümün bi ledi yanmıyor lcd ye yazı gelmiyor vs acaba koddamı sıkıntı var yoksa benim ardiunom orjinal değil ancak seninkisi orjinal fark edermi acaba iyi günler cevap verirsen sevinirim hayırlı ramazanlar hocam
dostum kodlarda problem var bi bkarmısın
Merhabalar Oğuz bey
Kodlardaki problem nedir ?
Sorunsuz çalışmakta.
linkler ölmüş. yeniler misiniz