Sesli Renk Okuyucu Robot Yapımı

41 12.406

Merhaba arkadaşlar, bugün arduino ile çok faydalı bir proje yapacağız. Sesli renk okuyucu robot ile cismin rengini algılayarak kullanıcıya sesli olarak rengi söyleyecek. Bu projemiz aynı zamanda bir sosyal sorumluluk projesidir. Küçük yaştaki çocukların renklerin öğrenmesine büyük oranda katkıda bulunacak bu projemiz eğitici bir sistem olması ile öğretim sistemine büyük oranda katkıda bulunacaktır.

Projeyi Satın Al

Bu projede iki yöntem kullanabilirsiniz. Birinci yöntemde wtv020 mp 3 modül kullanarak ses dosyalarını çaldırılır. İkinci yöntemde ise sadece sd kart modül kullanıp ses dosyalarını çalıştırabilirsiniz. Hangi yöntem daha iyi derseniz ikincisini yani sd kart modül ile olanı tercih edin derim. Çünkü wtv020 modül bazen sesi çalmıyor kendinden stop moduna geçebiliyor .

Birinci Yöntem:

Malzemeler:
  1. Arduino
  2. Wtv020 mp3 modül
  3. TCS34725 Rgb renk algılama sensörü
  4. Hoparlör
  5. 9v pil
  6. jumper kablo
Elektronik Devre Şeması:

Renk sensörü ı2c protokolü ile haberleştiğinden sda ve scl pinlerini arduino kartınızda bulunan scl ve sda pinlerine takın. Uno ve nano modellerinde sda A4, scl A5 pinleridir. Megada ise ayrılmış sda ve scl pinleri mevcut. Sensörün 3.3v pinini arduinonun 3.3v pinine, gnd yi de arduinonun gnd pinine takıyoruz.

Yazılım kısmına geçmeden önce wtv020 modülüne ses dosyası yükleme işlemini yapmanız gerekecek. Buradaki linkten nasıl yapıldığına bakabilirsiniz.

Önemli Not: Ses dosyalarının isimleri (0000,0001,0002) şeklinde olmalıdır. Aksi halde ses dosyaları okuma işlemi gerçekleşmiyor.

Kütüphaneler: Renk Okuyucu

Arduino Kodu:
// Sesli Renk Okuyan Robot Projesi
// www.robimek.com
#include "Wire.h"
#include "Adafruit_TCS34725.h"
#include <Wtv020sd16p.h>
// wtv020 pinleri
int resetPin = 13;
int clockPin = 11;
int dataPin = 12;
int busyPin = 10;

// wtv020 pin yükleme
Wtv020sd16p wtv020sd16p(resetPin,clockPin,dataPin,busyPin);
Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_50MS, TCS34725_GAIN_1X);
void setup() {
Serial.begin(9600);
wtv020sd16p.reset();
wtv020sd16p.playVoice(2);
wtv020sd16p.playVoice(5);
delay(5000);

if (tcs.begin()) {+-
Serial.println("Sensör bulundu");
} else {
Serial.println("TCS34725 Sensör bulunamadı !");
while (1); // Dur!
}
delay(1000);

}
void loop() {

uint16_t clearcol, red, green, blue;
float average, r, g, b;
tcs.getRawData(&red, &green, &blue, &clearcol);

average = (red+green+blue)/3;
r = red/average;
g = green/average;
b = blue/average;
Serial.print("\tTEMİZ:"); Serial.print(clearcol);
Serial.print("\tKIRMIZI:"); Serial.print(r);
Serial.print("\tYEŞİL:"); Serial.print(g);
Serial.print("\tMAVİ:"); Serial.print(b);

if ((r > 1.4) && (g < 0.9) && (b < 0.9)) { // kırmızı algılama
Serial.print("\tKIRMIZI");
wtv020sd16p.playVoice(2); // kırmızı söyle
delay(2000);
}
else if ((r < 0.95) && (g > 1.4) && (b < 0.9)) { // yeşil algılama
Serial.print("\tYEŞİL"); // yeşil söyle
wtv020sd16p.playVoice(7);
delay(2000);
}
else if ((r < 0.8) && (g < 1.2) && (b > 1.2)) { // mavi algılama
Serial.print("\tMAVİ"); // mavi söyle
wtv020sd16p.playVoice(3);
delay(2000);
}
else if ((r > 1.15) && (g > 1.15) && (b < 0.7)) { // sarı algılama
Serial.print("\tSARI"); // sarı söyle
wtv020sd16p.playVoice(6);
delay(2000);
}
else if ((r > 1.4) && (g < 1.0) && (b < 0.7)) { // turuncu algılama
Serial.print("\tTURUNCU"); // turuncu söyle
wtv020sd16p.playVoice(5);
delay(2000);
}
else {
Serial.print("\tRENK ALGILANMADI");

}
Serial.println("");

delay(2000);

}

İkinci Yöntem:

Malzemeler:
  1. Arduino
  2. Sd kart Modül
  3. TCS34725 Rgb renk algılama sensörü
  4. Hoparlör
Elektronik Devre Şeması:

Şekildeki gibi  devre bağlantılarını yapıyoruz. Sd kart modül SPI ile haberleştiği için diğer arduino modüllerindeki SPI pinlerine bakıp ona göre bağlantınızı yapabilirsiniz. Sd karta yüklenecek ses dosyalarının belli bir formatta olması gerekiyor. Buradaki linkten format ayarlarına bakabilirsiniz.

SimpleSDAudio Kütüphanesi : SimpleSDAudio.h

Arduino Kodu:
// Sesli Renk Okuyan Robot Projesi
// www.robimek.com
#include <SimpleSDAudio.h>
#include "Wire.h"
#include "Adafruit_TCS34725.h"

Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_50MS, TCS34725_GAIN_1X);
void setup() {
Serial.begin(9600);

if (!SdPlay.init(SSDA_MODE_FULLRATE | SSDA_MODE_MONO | SSDA_MODE_AUTOWORKER)) {
while(1);
}
SdPlay.setSDCSPin(4);
if (tcs.begin()) {+-
Serial.println("Sensör bulundu");
} else {
Serial.println("TCS34725 Sensör bulunamadı !");
while (1); // Dur!
}
delay(1000);

}
void loop() {

uint16_t clearcol, red, green, blue;
float average, r, g, b;
tcs.getRawData(&red, &green, &blue, &clearcol);

average = (red+green+blue)/3;
r = red/average;
g = green/average;
b = blue/average;
Serial.print("\tTEMIZ:"); Serial.print(clearcol);
Serial.print("\tKIRMIZI:"); Serial.print(r);
Serial.print("\tYESIL:"); Serial.print(g);
Serial.print("\tMAVI:"); Serial.print(b);

if ((r > 1.4) && (g < 0.9) && (b < 0.9)) {
Serial.print("\tKIRMIZI");
SdPlay.setFile("krmz.wav");
SdPlay.play();
delay(2000);
SdPlay.deInit();
}
else if ((r < 0.95) && (g > 1.4) && (b < 0.9)) {
Serial.print("\tYESIL");
SdPlay.setFile("ysl.wav");
SdPlay.play();
delay(2000);
SdPlay.deInit();
}
else if ((r < 0.8) && (g < 1.2) && (b > 1.2)) {
Serial.print("\tMAVI");
SdPlay.setFile("mavi.wav");
SdPlay.play();
delay(2000);
SdPlay.deInit();
}
else if ((r > 1.15) && (g > 1.15) && (b < 0.7)) {
Serial.print("\tSARI");
SdPlay.setFile("sari.wav");
SdPlay.play();
delay(2000);
SdPlay.deInit();
}
else if ((r > 1.4) && (g < 1.0) && (b < 0.7)) {
Serial.print("\tTURUNCU");
SdPlay.setFile("trnc.wav");
SdPlay.play();
delay(2000);
SdPlay.deInit();
}
else {
Serial.print("\tRENK ALGILANMADI");

}
Serial.println("");


}
Bunlar da İlgini Çekebilir
Cevap bırakın

E-posta hesabınız yayımlanmayacak.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

41 Yorum
  1. Orhan

    merhabalar, Sd kart ile olan versiyonu yaptık çalıştırdık projeyi fakat bir sorunumuz var ilk rengi sensöre gösterdiğimizde sesli şekilde okuyor fakat işleme devam edip başka renk gösterdiğimizde sesli olarak okumuyor,serial monitöre baktığımızda renk okuma ilemine devam edip rengi algıladığını görüyoruz, 2.ve sonraski okunan renklerin seslendirmesi gerçekleşmiyor,sorun neden olabilir acaba?

  2. elif

    peki renkleri renk sensörü kullanmadan rfıd kartlarına tanıtıp kart bilgisini okuyunca renkleri söylemesini nasıl yapacağım.

  3. Polat can

    Merhaba projemizde hoparlörden kısık ses ve hızlı bir şekilde söylüyor.bizde transistör ve direnç takmayı düşünüyoruz acaba nasıl takabiliriz

  4. samet

    bensoyledıgı rengıı2c lcd ekranda gostermekıstıyorum mumkun mu munkunse nasıl olur yardımcı olur musunuz ?

  5. herşeykarıştı

    Bahsettiğiniz renk sensörü yerine tcs3200 kullanmak için ,kod nasıl değiştirilmeli?

  6. REZAN SHAHIN

    Hojam ben eger shu renk leri bashka bir dil de soylemesini ister sem ne yapmam gerekiyor

  7. Amar Hazim Bin Anuari

    can i have libraries for Adafruit_TCS34725.h?

  8. Amar Hazim Bin Anuari

    Which arduino IDE version you use? because i have compilling errror when i upload by usin arduino ide version 18.1

  9. Tunç

    Hocam, elimde TCS3200 sensörü var. Onunla aynı devreyi kurup aynı kodlarda çalıştırabilir miyim ? veya nerede değişiklik yapmam gerekir ?

  10. proje

    Merhaba çocuklar için ingilizce rakam öğretici bir proje yapmam gerekiyor
    oyuncakdenizi.com/renkli-ahsap-rakamlar.html
    Çocuklar ahsap rakamları yerlerine koyduklarında rakamların ingilizcesini söyleyebilecek bir devre hazırlamak isitiyorum aynı zamanda tabakaya led ekleyerek ışık da yanması gerekiyor ?
    nasıl yapabilirim

  11. Cengaver

    kütüphaneleri paylaşır mısınız?

    1. Sezgin GÜL

      proje içindeki linkten indirebilirsiniz.

      1. Cengaver

        Link kırık hocam yenilermisiniz?

        1. Sezgin GÜL

          linki yeniledim

          1. Cengaver

            fatal error: SimpleSDAudio.h: No such file or directory

            Bu hatayı alıyorum.

          2. Sezgin GÜL

            projedeki kütüphane ilk yöntemin kütüphanesi. ikinci yöntemi kullanıyorsan kütüphaneyi buradan indirebilirsin http://www.robimek.com/wp-content/uploads/SimpleSDAudio.rar

  12. OZAN

    hocam ses dosyalarını atar mısınız ?

  13. Enes Dalkıran

    Abi ses modülünü bulamıyorum bi yardımcı olurmusun.

  14. Caner

    Renk sensörünü renklerin üzerinde gezdirdiğimde 255,255,0 gibi veriler veriyor. Lütfen yardım edin.

    1. Sezgin GÜL

      bir yerde yanlış yapmışsındır. bu projedeki sensörü kullanman gerekir. arduino kodunu yükleyip tekrar dene. sensörün kütüphanesini de ekle.

  15. Necati

    ben bu projeyi sd kart modülü ile yaptım ancak bağlantıları nasıl yapılacak bilmiyorum yardımcı olur musunuz lütfen ?

    1. Sezgin GÜL

      buradaki projeye bakın http://www.robimek.com/arduino-ile-sd-karttan-mp3-ses-dosyasi-calma/ yalnız spı haberleşmesi ile iletişim kurduğu için arduino modellerinde spı pinleri farklılık gösterir.

  16. yunus emre açıkgöz

    seri portda renkleri görebiliyorum ama ancak ses çıkmıyorum ses dosyalarım 0002.ad4 0003.ad4 0005.ad4 0007.ad4 kullandığım hafıza kartı 2gb nerde hata yapıyor olabilirim ?

    1. Sezgin GÜL

      mp3 modül pause modunda olabilir. Bunun için play pinine buton bağlayıp basın.

      1. yunus emre açıkgöz

        teşekkür ederim cevabınız için birde hoparlör için nasıl bir hoparlör seçmeliyiz benim seçtiğin 0.5w 8 ohm ama sesi çok düşük çıkıyor

        1. Sezgin GÜL

          mini ses bombasından alabilirsiniz.

  17. Salih

    Yazdığınız kodları giriyorum kütüphane de oluşturuyorum ama renkleri okumuyor ne yapmalıyım ses dosyalarında sorun olabilirmi yardım edebilirmisiniz

    1. Sezgin GÜL

      mp 3 modül serialden çalışınca bazen çalışmıyor. Yani mp3 modülden kaynaklı. Sd kart ile yapılmış ola projemiz var onda sorunsuz söyletebilirsiniz. buradan bakabilirsiniz http://www.robimek.com/arduino-ile-sd-karttan-mp3-ses-dosyasi-calma/

      1. Salih

        teşekkür ederim peki ses dosyalarını wav formatına çevirdiğimizde kırmızı rengin bulunduğu ses dosyasının isminidemi kırmızı.wav şeklinde adlandıracağız

        1. Sezgin GÜL

          karakter uzunluğu maksimum 5 karakter olacak şekilde isim verebilirsiniz. örneğin : mavi.wav

  18. Hayrullah Ragıp

    ses dosyalarınıda atar mısınız

  19. Şerife

    RGB değerlerini neye göre veriyorsunuz? Bunlar dışında mor, siyah, beyaz gibi renkler tanıtmaya çalıştım fakat olmadı ve r<0.7 gibi olan kısımları tam anlamadım.

    1. Sezgin GÜL

      kod kısmında rengin r g b değerine göre oransal miktar hesabı var. Tanımlamak istediğiniz rengi renk sensörğne okutun ve serial ekrandaki r g b değerlerini alın rengin tonuna göre bu değerleri sınırlayarak algoritmanızı oluşturun.

  20. BAHADIR BAŞYĞİT

    Wtv020 mp3 modül
    ROBOTKUTUSU VEYA ROBOTİSTANDA YOK NERDEN BULURUM

    1. Sezgin GÜL

      gittigidiyor da var

      1. aaaaaaaa

        Hocam link atabilirmisiniz ?

        1. Sezgin GÜL

          gittigidiyorda stoklarda yok galiba

  21. Evren

    Hocam bu devre maksimum ne kadar uzaktaki renkleri algilayabiliyo.

    1. Sezgin GÜL

      Sensör her an değer alıyor ışığın yansımasından kaynaklı olarak. Ama sağlıklı bir ölçüm için renk ile sensör arası 1 cm civarı olmalıdır. Tabi yansımalardan dolayı ortam koşullarını da sayarsak bu mesafe değişkenlik gösterebiliyor.

  22. hüseyin

    manyetik yol izleyen robotu nasıl yapabilirim

    1. Sezgin GÜL

      Çizgi izleyen robot gibi düşün örneğin 5 tane manyetik sensör yerleştirirsin sensörden gelen değerlere göre motorları kontrol ettirirsin.