Arduino İle Yapay Zeka Tabanlı Konuşan Robot Projesi

49 22.892

Kendi Robotun Yap projelerimizin bu bölümünde arduino ile yapay zeka tabanlı konuşan robot yapacağız.Daha önceki projelerimizde telefondan sesli komutla kontrol ettiğimiz robotumuzu yapmıştık.Bu projemizde o robotumuzu geliştirerek, yine aynı şekilde telefondan sesli komut göndereceğiz, bize sesli cevap verecek.Bu sayede robotunuz sizinle konuşacak.

Ayrıca çocuklar için eğitici robotlar yapabilirsiniz.Örneğin renk algılayan robota entegre edip renkleri sesli olarak söyleyerek çocuklara yönelik eğitici bir robot yapabilirsiniz.

Malzemeler:

  1. Arduino Mega
  2. Hc-06 Bluetooth Modül
  3. L293b Motor Sürücü
  4. Servo Motor
  5. Hc-Sr04 Ultrasonik Sensör
  6. Hoparlör
  7. Wtv-020 mp3 modül
  8. sd kart
  9. Batarya

Robotumuzun şase kısmı için robot kit alabilirsiniz veya oyuncak arabanın şase ve motorlarını kullanabilirsiniz.Bizim burada yapacağımız uygulamada sesli komutla kontrol edilen robot projemize ek olarak sesli cevap verme özelliğini ekledik.Örneğin robotumuza ileri git dediğimizde cevap olarak ‘ileri gidiyorum’ diyebilecek veya adını söyle dediğimizde cevap olarak ‘benim adım robimek’ diyebilecek.Siz bu cevapları değiştirebilir istediğiniz ses dosyasını yükleyebilirsiniz.

Elektronik Devre Şeması:

Wtv020 modülde sd kart okuyucu mevcut.Modül AD4 dosya formatını desteklemektedir.Ses dosyalarını önce wav uzantılı dosya haline getiriniz ardından ad4 formatına çeviriniz.Ad4 formatına çevirmek için wtv020 mp3 modül kullanımı yazımıza bakabilirsiniz.

Yazılım Kısmı:

// SESLİ KONTROL KONUŞAN ROBOT By Robimek
//Yazılım Geliştirme By Robimek
//Yazılım Lisans By Robimek
//www.robimek.com
#include <Servo.h>// servo motor kütüphanesi
#include <NewPing.h>//ultrasonik sensör kütüphanesi
#include <Wtv020sd16p.h>
int resetPin = 13; 
int clockPin = 11;
int dataPin = 12; 
int busyPin = 10; 
Wtv020sd16p wtv020sd16p(resetPin,clockPin,dataPin,busyPin);
String voice;
//motor pinleri
#define SolMotorileri 6
#define SolMotorGeri 5
#define SagMotorileri 8
#define SagMotorGeri 9
#define led 53
#define ledmavi 51
#define ledyesil 49
#define ledkirmizi 45
#define ledvcc 47
#define tx 1
#define rx 0
//sensör pinleri
#define USTrigger 3
#define USEcho 2
#define Maksimum_uzaklik 100
 
 
Servo servo; //servo motor tanımlama
NewPing sonar(USTrigger, USEcho, Maksimum_uzaklik);//ultrasonik sensör tanımlama
//kullanılacak eleman tanımı
unsigned int uzaklik;
unsigned int on_uzaklik;
unsigned int sol_uzaklik;
unsigned int sag_uzaklik;
unsigned int zaman;
// program ilk çalıştığında sadece bir kez çalışacak programlar
void setup() 
{
Serial.begin(9600); //iletişim ayarı
//motor çıkışları
 pinMode(SolMotorileri, OUTPUT);
 pinMode(SolMotorGeri, OUTPUT);
 pinMode(SagMotorileri, OUTPUT);
 pinMode(SagMotorGeri, OUTPUT);
 pinMode(led, OUTPUT);
 pinMode(ledkirmizi, OUTPUT);
 pinMode(ledmavi, OUTPUT);
 pinMode(ledyesil, OUTPUT);
 pinMode(ledvcc, OUTPUT);
 
 servo.attach(4); //servo pin tanımı 
 wtv020sd16p.reset();
 wtv020sd16p.playVoice(0);
 wtv020sd16p.playVoice(13);
 delay(10000);
 wtv020sd16p.playVoice(14); 
 
 
}
// sonsuz döngü
void loop() {
 
 while (Serial.available()){ //Okumak için kullanılabilir bayt olup olmadığını kontrol et
 delay(10); //10 milisaniye bekle
 char c = Serial.read(); //Seri okuma
 if (c == '#') {break;} // # tespit edildiğinde döngüden çık
 voice += c; //Ses = ses + c Steno 
 }
 
 if (voice.length() > 0) {
 Serial.println(voice); 
 
 if(voice == "*ileri"||voice == "*ileri git") 
 {wtv020sd16p.playVoice(3);
 ileri();} 
 else if(voice == "*geri"||voice == "*geri gel")
 {wtv020sd16p.playVoice(2);
 geri();}
 else if(voice == "*sağa dön"||voice == "*sağ") 
 {wtv020sd16p.playVoice(7);
 sag();} 
 else if(voice == "*sola dön"||voice == "*sol") 
 {wtv020sd16p.playVoice(1);
 sol();}
 else if(voice == "*dur"||voice == "*arabayı durdur") 
 {dur();
 wtv020sd16p.playVoice(11);}
 else if(voice == "*sol ileri")
 {sol(); 
 delay(100); 
 ileri();}
 else if(voice == "*sağ ileri")
 {sag(); 
 delay(100); 
 ileri();}
 else if(voice == "*sol geri")
 {sol(); 
 delay(100);
 geri();}
 else if(voice == "*sag geri")
 {sag(); 
 delay(100); 
 geri();}
 else if(voice == "*ileri git dur"||voice == "*biraz ileri git") 
 {ileri(); 
 delay(1000); 
 dur();} 
 else if(voice == "*geri gel dur"||voice == "*biraz geri gel") 
 {geri();
 delay(1000); 
 dur();}
 else if(voice == "*sola dön dur"||voice == "*biraz sola dön") 
 {sol(); 
 delay(300);
 dur();}
 else if(voice == "*sağa dön dur"||voice == "*biraz sağa dön") 
 {sag();
 delay(300);
 dur();}
 else if(voice == "*sola bak"||voice == "*soluna bak") 
 {wtv020sd16p.playVoice(8);
 solabak();}
 else if(voice == "*sağa bak"||voice == "*sağına bak"||voice == "*sabah") 
 {wtv020sd16p.playVoice(6);
 sagabak();}
 else if(voice == "*önüne bak"||voice == "*öne bak") 
 {wtv020sd16p.playVoice(5);
 onunebak();}
 else if(voice == "*ışığı aç"||voice == "*ledi yak")
 {wtv020sd16p.playVoice(4);
 ledyak();}
 else if(voice == "*ışığı kapat"||voice == "*ledi söndür") 
 {digitalWrite(51,HIGH);
 digitalWrite(49,HIGH); 
 digitalWrite(45,HIGH); 
 digitalWrite(47,LOW);}
 else if(voice == "*kırmızı") 
 {digitalWrite(45,LOW);
 digitalWrite(49,HIGH);
 digitalWrite(51,HIGH);
 digitalWrite(47,HIGH);}
 else if(voice == "*yeşil") 
 {digitalWrite(49,LOW);
 digitalWrite(45,HIGH);
 digitalWrite(51,HIGH);
 digitalWrite(47,HIGH); }
 else if(voice == "*mavi")
 {wtv020sd16p.playVoice(4);
 digitalWrite(51,LOW);
 digitalWrite(49,HIGH);
 digitalWrite(45,HIGH);
 digitalWrite(47,HIGH);}
 else if(voice == "*mor") 
 {digitalWrite(51,LOW); 
 digitalWrite(49,HIGH); 
 digitalWrite(45,LOW);
 digitalWrite(47,HIGH);}
 else if(voice == "*beyaz") 
 {digitalWrite(51,LOW); 
 digitalWrite(49,LOW); 
 digitalWrite(45,LOW);
 digitalWrite(47,HIGH);}
 else if(voice == "*engel"||voice == "*engel algıla")
 {wtv020sd16p.playVoice(0);
 engel();
 delay(5000);
 dur();}
 else if(voice == "*merhaba")
 { wtv020sd16p.playVoice(9);}
 else if((voice == "*müziği kapat")||(voice == "*kapat"))
 { wtv020sd16p.reset();
 wtv020sd16p.stopVoice();} 
 else if((voice == "*müziği aç")||(voice == "*şarkı söyle")||(voice == "*muzik"))
 { wtv020sd16p.playVoice(12);} 
 voice="";
 }
 }
 
 
// robotun yön komutları
void ileri() 
{
 digitalWrite(SolMotorGeri, LOW);
 digitalWrite(SolMotorileri, HIGH);
 digitalWrite(SagMotorGeri, LOW);
 digitalWrite(SagMotorileri, HIGH);
}
 
void geri() 
{
 digitalWrite(SolMotorileri, LOW);
 digitalWrite(SolMotorGeri, HIGH);
 digitalWrite(SagMotorileri, LOW);
 digitalWrite(SagMotorGeri, HIGH);
}
 
void sag() 
{
 digitalWrite(SolMotorileri, HIGH);
 digitalWrite(SolMotorGeri, LOW);
 digitalWrite(SagMotorGeri, HIGH);
 digitalWrite(SagMotorileri, LOW);
 }
 
void sol() 
{
 digitalWrite(SolMotorGeri, HIGH);
 digitalWrite(SolMotorileri, LOW);
 digitalWrite(SagMotorileri, HIGH);
 digitalWrite(SagMotorGeri, LOW);
}
 
void dur() 
{
 digitalWrite(SolMotorGeri, LOW);
 digitalWrite(SolMotorileri, LOW);
 digitalWrite(SagMotorileri, LOW);
 digitalWrite(SagMotorGeri, LOW);
}
void sagabak()
{
 servo.write(0);
 delay(100);
}
void solabak()
{
 servo.write(180);
 delay(100);
}
void onunebak()
{
 servo.write(90);
 delay(100);
}
void ledyak()
{
 digitalWrite(53,HIGH);
 }
void ledkapat()
{
 digitalWrite(53,LOW);
 }
// sensörün mesafe ölçümü
void sensor_olcum() 
{
 delay(50); 
 zaman = sonar.ping(); 
 uzaklik = zaman / US_ROUNDTRIP_CM;
}
void engel()
{
 delay(500);
 servo.write(90); 
 sensor_olcum(); 
 on_uzaklik = uzaklik; 
 if(on_uzaklik > 35 || on_uzaklik == 0) 
 {
 ileri(); 
 } 
 else
 {
 dur(); 
 servo.write(180); 
 delay(500); 
 sensor_olcum(); 
 sol_uzaklik = uzaklik; 
 servo.write(0); 
 delay(500); 
 sensor_olcum(); 
 sag_uzaklik = uzaklik;
 servo.write(90);
 delay(500); 
 if(sag_uzaklik < sol_uzaklik) 
 {
 sol(); 
 delay(500);
 ileri(); 
 }
 else if(sol_uzaklik < sag_uzaklik) 
 {
 sag(); 
 delay(500);
 ileri(); 
 }
 else
 {
 geri(); 
 } 
 }
 }

Ses dosyalarının isimleri sayı şeklinde olmalıdır.Örnek yazılımda her dosyasının ismi numaralandırılmıştır.

Yazılımı buradan indirebilirsiniz. >> Konuşan Robot

Projenin çalışma videosunu ilerleyen günlerde yayınlayacağım.

Bunlar da İlgini Çekebilir

Cevap bırakın

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

  1. Mehmet Ali Konakcı

    Çok fazla bilgim yok ama bu projedeki hangi kısım yapay zeka sınıfına giriyor? Söylenileni nasıl anlıyor? Projenin bu kısmını biraz açarsanız çok sevinirim.

  2. EmirhanYRN

    Biz Tübitak 4006 projesi için ingilizce konuşabilen robot yapacağız.Bize az olsada yardım edebilirmisiniz ?

  3. Enes

    Hocam sizde ulasabilecgikm bir adres var mi ozel olarak konusabilecegimiz ? Biraz sorularim var acil biiraz odevim de anlamadigim kisimlar var 😅

  4. Abdullah ASLAN

    Merhaba hocam öncelikle elinize sağlık çok yararlı bir sayfa olmuş ben bu kodda arduino’ya yüklerken

    Wtv020sd16p wtv020sd16p(resetPin,clockPin,dataPin,busyPin);

    kısmında şu hatayı alıyorum.

    Arduino:1.8.7 (Windows 8.1), Kart:”Arduino/Genuino Uno”

    kod:248:1: error: ‘Wtv020sd16p’ does not name a type

    Wtv020sd16p wtv020sd16p = (resetPin,clockPin,dataPin,busyPin);

    ^

    C:\Users\Pc\Desktop\kod\kod.ino: In function ‘void loop()’:

    kod:320:2: error: expected ‘}’ before ‘else’

    else if(voice == “*aÄŸrının kaç ilçesi var”||gelenses == “*aÄŸrıda kaç ilçe var”)

    ^

    kod:320:10: error: ‘voice’ was not declared in this scope

    else if(voice == “*aÄŸrının kaç ilçesi var”||gelenses == “*aÄŸrıda kaç ilçe var”)

    ^

    kod:321:3: error: ‘wtv020sd16p’ was not declared in this scope

    {wtv020sd16p.playVoice(3);

    ^

    kod:322:2: error: expected ‘}’ before ‘else’

    else if(voice == “*aÄŸrının neleri meÅŸhur”||gelenses == “*aÄŸrının nesi meÅŸhur”)

    ^

    kod:323:3: error: ‘wtv020sd16p’ was not declared in this scope

    {wtv020sd16p.playVoice(5);

    ^

    kod:324:2: error: expected ‘}’ before ‘else’

    else if(voice == “*aÄŸrının yöresel yemekleri nelerdir”gelenses||voice == “*aÄŸrının yöresel yemekleri”)

    ^

    kod:324:19: error: unable to find string literal operator ‘operator””gelenses’ with ‘const char [40]’, ‘unsigned int’ arguments

    else if(voice == “*aÄŸrının yöresel yemekleri nelerdir”gelenses||voice == “*aÄŸrının yöresel yemekleri”)

    ^

    kod:325:3: error: ‘wtv020sd16p’ was not declared in this scope

    {wtv020sd16p.playVoice(7);

    ^

    kod:326:2: error: expected ‘}’ before ‘else’

    else if(voice == “*gosteberk et”||gelenses == “*gosteerk et nedir”)

    ^

    kod:327:3: error: ‘wtv020sd16p’ was not declared in this scope

    {wtv020sd16p.playVoice(4);

    ^

    kod:328:1: error: expected ‘}’ before ‘else’

    else if(voice == “*yalancı köfte”||voice == “*yalancı köfte nedir”)

    ^

    kod:329:3: error: ‘wtv020sd16p’ was not declared in this scope

    {wtv020sd16p.playVoice(12);

    ^

    kod:330:2: error: expected ‘}’ before ‘else’

    else if(voice == “*hengel”||voice == “*hengel nedir”)

    ^

    kod:331:3: error: ‘wtv020sd16p’ was not declared in this scope

    {wtv020sd16p.playVoice(14);

    ^

    kod:332:2: error: expected ‘}’ before ‘else’

    else if(voice == “*haşıl”||voice == “*haşıl nedir”)

    ^

    kod:333:3: error: ‘wtv020sd16p’ was not declared in this scope

    {wtv020sd16p.playVoice(13);

    ^

    kod:334:2: error: expected ‘}’ before ‘else’

    else if(voice == “*beyaz bal”||voice == “*beyaz bal nedir”)

    ^

    kod:335:3: error: ‘wtv020sd16p’ was not declared in this scope

    {wtv020sd16p.playVoice(11);

    ^

    kod:336:2: error: expected ‘}’ before ‘else’

    else if(voice == “*alabalık”||voice == “alabalık nedir”)

    ^

    kod:337:3: error: ‘wtv020sd16p’ was not declared in this scope

    {wtv020sd16p.playVoice(10);

    ^

    kod:338:2: error: expected ‘}’ before ‘else’

    else if(voice == “*eriÅŸte”||voice == “*eriÅŸte nedir”)

    ^

    kod:339:3: error: ‘wtv020sd16p’ was not declared in this scope

    {wtv020sd16p.playVoice(16);

    ^

    kod:340:2: error: expected ‘}’ before ‘else’

    else if(voice == “*piÅŸi”||voice == “*piÅŸi nedir”)

    ^

    kod:341:3: error: ‘wtv020sd16p’ was not declared in this scope

    {wtv020sd16p.playVoice(6);

    ^

    kod:342:2: error: expected ‘}’ before ‘else’

    else if(voice == “*hasude”||voice == “*hasude nedir”)

    ^

    kod:343:3: error: ‘wtv020sd16p’ was not declared in this scope

    {wtv020sd16p.playVoice(9);

    ^

    kod:344:2: error: expected ‘}’ before ‘else’

    else if(voice == “*çiriÅŸ ketesi”||voice == “*çiriÅŸ ketesi nedir”)

    ^

    kod:345:3: error: ‘wtv020sd16p’ was not declared in this scope

    {wtv020sd16p.playVoice(20);

    ^

    kod:346:2: error: expected ‘}’ before ‘else’

    else if(voice == “*saç kavurma”||voice == “*saç kavurma nedir”)

    ^

    kod:347:3: error: ‘wtv020sd16p’ was not declared in this scope

    {wtv020sd16p.playVoice(8);

    ^

    kod:348:2: error: expected ‘}’ before ‘else’

    else if(voice == “*kete”||voice == “*kete nedir”)

    ^

    kod:349:3: error: ‘wtv020sd16p’ was not declared in this scope

    {wtv020sd16p.playVoice(18);

    ^

    kod:350:2: error: expected ‘}’ before ‘else’

    else if(voice == “*ayran aşı”||voice == “*ayran aşı nedir”)

    ^

    kod:351:3: error: ‘wtv020sd16p’ was not declared in this scope

    {wtv020sd16p.playVoice(15);

    ^

    kod:352:2: error: expected ‘}’ before ‘else’

    else if(voice == “*halise”||voice == “*halise nedir”)

    ^

    kod:353:3: error: ‘wtv020sd16p’ was not declared in this scope

    {wtv020sd16p.playVoice(19);

    ^

    kod:354:2: error: expected ‘}’ before ‘else’

    else if(voice == “*kuymak”||voice == “*kuymak nedir”)

    ^

    kod:355:3: error: ‘wtv020sd16p’ was not declared in this scope

    {wtv020sd16p.playVoice(17);

    ^

    kod:356:2: error: expected ‘}’ before ‘else’

    else if(voice == “*aÄŸrı dağı”||voice == “*aÄŸrı dağı nedir”)

    ^

    kod:357:3: error: ‘wtv020sd16p’ was not declared in this scope

    {wtv020sd16p.playVoice(21);

    ^

    kod:358:2: error: expected ‘}’ before ‘else’

    else if(voice == “*ishak paÅŸa”||voice == “*ishak paÅŸa sarayı”||voice == “*ishak paÅŸa sarayı nedir”)

    ^

    kod:359:3: error: ‘wtv020sd16p’ was not declared in this scope

    {wtv020sd16p.playVoice(22);

    ^

    kod:360:2: error: expected ‘}’ before ‘else’

    else if(voice == “*balık gölü”||voice == “*balık gölü nedir”)

    ^

    kod:361:3: error: ‘wtv020sd16p’ was not declared in this scope

    {wtv020sd16p.playVoice(23);

    ^

    kod:362:2: error: expected ‘}’ before ‘else’

    else if(voice == “*nuhun gemisi”||voice == “*nuhun gemisi”)

    ^

    kod:363:3: error: ‘wtv020sd16p’ was not declared in this scope

    {wtv020sd16p.playVoice(24);

    ^

    kod:364:1: error: expected ‘}’ before ‘else’

    else if(voice == “*buz maÄŸarası”||voice == “*buz maÄŸrası nedir”)

    ^

    kod:365:3: error: ‘wtv020sd16p’ was not declared in this scope

    {wtv020sd16p.playVoice(25);

    ^

    kod:366:2: error: expected ‘}’ before ‘else’

    else if(voice == “*kaplıca”||voice == “*diyadin kaplıcaları”||voice == “*diyadin kaplıcaları nedir”)

    ^

    kod:367:3: error: ‘wtv020sd16p’ was not declared in this scope

    {wtv020sd16p.playVoice(26);

    ^

    kod:368:1: error: expected ‘}’ before ‘else’

    else if(voice == “*abdigör köftesi”||voice == “*abdigör köftesi nedir”)

    ^

    kod:369:3: error: ‘wtv020sd16p’ was not declared in this scope

    {wtv020sd16p.playVoice(35);

    ^

    kod:370:2: error: expected ‘}’ before ‘else’

    else if(voice == “*kendini tanıt”||voice == “*tanıt”)

    ^

    kod:371:3: error: ‘wtv020sd16p’ was not declared in this scope

    {wtv020sd16p.playVoice(34);

    ^

    kod:374:8: error: ‘ileri’ was not declared in this scope

    ileri();}

    ^

    kod:377:7: error: ‘geri’ was not declared in this scope

    geri();}

    ^

    kod:380:6: error: ‘sag’ was not declared in this scope

    sag();}

    ^

    kod:383:6: error: ‘sol’ was not declared in this scope

    sol();}

    ^

    kod:385:7: error: ‘dur’ was not declared in this scope

    {dur();

    ^

    kod:389:10: error: ‘solabak’ was not declared in this scope

    solabak();}

    ^

    kod:392:10: error: ‘sagabak’ was not declared in this scope

    sagabak();}

    ^

    kod:395:11: error: ‘onunebak’ was not declared in this scope

    onunebak();}

    ^

    kod:398:9: error: ‘ledyak’ was not declared in this scope

    ledyak();}

    ^

    kod:405:2: error: expected ‘}’ before ‘else’

    else if(voice == “*kırmızı”)

    ^

    kod:411:2: error: expected ‘}’ before ‘else’

    else if(voice == “*yeÅŸil”)

    ^

    kod:417:2: error: expected ‘}’ before ‘else’

    else if(voice == “*mavi”)

    ^

    kod:425:8: error: ‘engel’ was not declared in this scope

    engel();

    ^

    kod:427:6: error: ‘dur’ was not declared in this scope

    dur();}

    ^

    exit status 1
    ‘Wtv020sd16p’ does not name a type

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.

    incelerseniz çok iyi olur. İyi Formlar:)

  5. Ahmet Efe Atabey

    Arduino mega yerine uno kullanabilirmiyiz

  6. Yasin Berke Kılınç

    Mega yerine uno modelini kullansak olur mu

  7. Ahmet

    Abi baska bir mp3 modulu kullasak olurmu

  8. Furkan

    Farklı bir mp3 modül kullanabilir miyim bulamıyorum wtv 020. Herhangi bir değişiklik yapmaya gerek var mı

  9. Enes

    Merhabalar, robot yapimi isinde yeniyim de yardimci olursaniz sevinirim. Servo motor devir sayısı kaç olmali ya da mikro servo motor kullansak çalışır mı? Sd kartı nerde kullanacağiz onu anlamadim bir de elektronik devre şemasındaki sağdaki kırmızı yazilar nedir? Teşekkurler

    1. Selçuk GÖKCÜK

      Merhaba sd kart ses dosyalarını kaydetmek ve lazım olduğunda buradan bu dosyaları alıp çalmak için kullanılıyor. İyi çalışmalar.

  10. Cemil

    Abi bluetooth kontrolü icin hangi programi kullanıcaz bir de ne ceşit hoparlör kullanılir

  11. Beypazarı Basri

    Kütüphane dosyasına ihtiyaç varmı?

  12. hüseyin

    Ben çok şey yaparım ama ekonomik durumum yok ve arduinom yok yoksa patentini alacağım şeyler de yaparım bende bi arduino olsa var ya

  13. Ahmet

    hocam herzaman olduğu gibi bu projenizde çalıştı. Hocam size bir sorum olacak proje hocam siteisnde
    RFİD VE LCD İLE KARTLI GİRİŞ SİSTEMİ size ait bu projeyi olulumuzda taşımalı eğtim olduğu için kullanmak istiyoruz. bunla ilgili biekaç sorum olacak
    1-en fazla kaç kart tanıtabilirim
    2- master karta gerek var mı?
    3- kart numarası yerine isim yazabilir miyim yada kart numarasını değiştirip öğrenci numarsını ekleyebilirmiyim.

    Hocam bu konuda yardımcı olursanız çok sevinirim çünkü öğrenciler servisle köyden geliyor ama okulda yok servis şoförü ben getirdim diyor öğrenci okula hiç girmemiş okula getirmek yerine başka yerde bırakmış bu konularda bizim için bu proje kolaylık sağlayacak yukardaki işlemleri yapıyorsa özelikle kart ismi konusunda aydınlatırsanız sevinirim Şimdiden teşekkürler…

    1. Sezgin GÜL

      Kart sınırlaması yok. Kart numarası değiştirilemez. Desteklediği kartlar; mifare1 S50, mifare1 S70 mifare ultralight, mifare pro ve mifare desfire. Bu kartlardan alıp her öğrenci için bir kart tanımlayın. kart tanımlamasında öğrencinin adını soyadını numarası gibi bilgileri ekleyebilirsiniz. Nasıl bir sistem istediğiniz hakkında detaylı bilgi verirseniz yardımcı olurum.Bu numaradan bana ulaşabilirsiniz . 0538 665 48 24

  14. Vedat ERGEN

    Işın kılıcı ile ilgili bir çalışma yapabildinizmi. Ses dosyalarını göndermiştim.

  15. Bahattinates

    merhaba. hayirli isler dilerim size. bende elektronikle. ugrasiyorum. sizlerin sayenizde. arduino.
    robot yapmayi. ögreniyoruz. allah. sizden razi. olun. sizin sayenizde. bilgi. sahibi. oluyoruz. tesekkurler.
    sizden sunu soracaktim. bu yaptiginiz arduino uno. yaptiginiz. konusan. robot. program. cizimi.
    ucretinizi. ilk once. alirsiniz. 1 saat icinde. tabi size bagli. turkiyede. cok kisileerle. alis veris. yaptim.
    hotmail. adresin. varsa. sizin konusmak. isterdim. ben yardimi. severim. . sizde. oylesiniz. bir istegin.
    olursa. cekilme. bide sunu.soracaktim. CD video. anlatimi. varmi. arduino yazilim. icin. arduino. kitabi.
    2 tane turkiyeden.. ismarladim. isvece. 1 haftada. geldi. allaha. emanet olun. isleriniz.den basarilar. dilerim.

    1. Sezgin GÜL

      merhaba, Olumlu yorumlarınız için teşekkürler. mail adresim >> sezgingul@outlook.com.tr

  16. berat

    mp3 sd kart hoparlör ve batarya ne işe yarıyor

    1. Sezgin GÜL

      mp3 modül ses dosyalarını çalmak için kullanıldı. Sd karta ses dosyalarını yükledim. Hoparlör malum ses çıkışı için. Elektronik sistem malum bataryasız çalışmaz 🙂

  17. Vedat

    artekit sayfasında ingilizce çeviriye göre, tera term kullanılarak port açılması ve herhangi bir tuşa basılarak program ile sound .bin dosyasının binary halinde yükleneceğinden söz ediyor. Ancak, debug yapılmadan bu yükleme nasıl oluyor. Bu mümkün mü? Bu konuyu çözemedim. Yükleme yapamadım. söz konusu STM de teraterm için sürücü mü var? Bilmiyorum. Ben işleri fazla bilmiyorum. Sizler uzmanı olduğunuz için bana yardım edeceğinizi umuyorum. Başka yardım alacak kimseyi tanımıyorum.Lütfen yardımcı olur musunuz?

    1. Sezgin GÜL

      Dediğim gibi stm ile hiç çalışmadım. Projenizde tam olarak ne yapmak istiyorsunuz yazarsanız farklı yöntemle de çözebiliriz .

      1. Vedat

        Bu sitenin sayfasındaki “artekit.eu/diy-lightsaber-audio-board/” lightsaber projesini yapmak istedim. fakat ses dosyasını(sound.bin) yükleyemedim. Parçaları aynı siteden satın aldım ve şemayı tam olarak uyguladım. Fakat olmadı. parçalardan biri zarar mı gördü.Bilmiyorum.
        Aslında arduino ile lightsaber (Işın kılıcı) yapabilecek hazır kod ve şema bulabilsem bunu yapacağım.İnternette çok araştırdım.Hepi uyduruk, derleniyor fakat sistem olarak çalışmıyor.Çoğunun da şeması yok. Selamlar.

        1. Sezgin GÜL

          ışın kılıcının ses efektlerini arduinoda rahatlıkla yapabilirsin. ivmeölçer kullanarak belli bir eğimde ses dosyasını çaldırabilir efekt verebilirsin. Sd karttan ses dosya çalma uygulamasına buradan bakabilirsin. https://www.robimek.com/arduino-ile-sd-karttan-mp3-ses-dosyasi-calma/

          1. Vedat

            Ben kod yazmasını bilmiyorum bana ışın kılıcı ses ve ışığı(ledlerin yanması) için hazır kod lazım. yardımcı olabilir misiniz?

          2. Sezgin GÜL

            Yani, örneğin çubuğun üzerine 10 tane tek sıra dizili led, kılıç şeklini hitap edecek ve çubuğu sağa sola salladığında da ses çıkacak. Bu şekilde mi ?

          3. Vedat

            İlgilendiğin ve zaman ayırdığın için çok teşekkür ederim. Başarılarının devam etmesini yürekten diliyorum.
            Butona basıldığında sistem açılacak, açılışta ledler sıralı yanacak ve açılış sesi çıkacak, ardında motor sesine benzeyen bir ses sürekli çıkacak(Yani çalacak), sağa sola salarken sallama sesi çıkacak, tekrar butona bastığında sistem kapanacak, kapanırken ledler sıralı olarak sönecek ve kapanma sesi çıkacak, yani toplamda 5 veya altı ses sistemde olacak.(Elimde, AXL345 ve MPU-6050 Accelerometer + Gyro Accelerometer, arduino nano, USB li WT588, WTV020, SD okuyucu modul, MiniDvPlayer ,74hc595 entegre var bu bileşenlere rağmen doğru dürüst çalışan bir kod ve şema olmadığı için hiç birşey yapamadım.

          4. Sezgin GÜL

            Ses dosyası çalmak için mp3 module gerek yok. Sadece sd kart okuyucu ile yapılıyor. Birde mp3 modüller çok iyi çalışmıyor zaten. Bahsettiğin projeyi yapım aşamaları ile ayrıntılı olarak yakın zamanda sitede paylaşacağım. Ses dosyaları varsa mail adresine gönderin. mail: maker.robimek@gmail.com

  18. Vedat

    Sezgin GÜL çalışmalarınızda başarılar dilerim.
    STM32F103T8 -M3 mikroişlemcili bir board ve SST25VF080B serial flash birbirine bağlı olarak tera term ile program kodları ve sound.bin dosyası rs232 TTL çevirici ile TX ve RX yolu kullanılarak nasıl yüklenir. sound.bin dosyasının serial Flash’a yüklenmesi gerekiyor.

    1. Sezgin GÜL

      STM kullanmadım bilgim yok fakat bu sayfada anlatmış >> artekit.eu/diy-lightsaber-audio-board/

  19. Ahmet

    Bunun yapay zekası ile alakası varmı 😀 İf , else ile yapılacak emirleri tanımlamışsınız peki düzgün çalışıyor mu benimkinde duraksamalar meydana gelip sadece ilk söylediğim kelimenin tanımladığımız karşılığını söyleyip duruyor.

    1. Sezgin GÜL

      Yapay zeka sınırlı tanımlamalar yapılarak karar verme işlemidir. Buradaki projede öğrenilmiş yapay zeka var. Sistem düzgün çalışıyor. İlerleyen günlerde video atacağım. Aynı şeyi söylüyorsa replay modunda kalmıştır.

  20. ömer

    Sezgin hocam bir konuda yardımınızı istiyorum mümkünse. Robot teknolojisi konuşumu bilemiyorum ama tarımsal üretim aşamalarında bitkilerde görülebilecek hastalık, zararlı ve besin eksikliklerini tespit etmek için portatif, kamerası yardımıyla foto çekip hafızasında bulunan resimlerle eşleştirme yapabilecek ve ilaç, gübre vs. tavsiyesinde bulunabilecek (sesli sistem olabilir) bir şey tasarlamak ve projelendirmek istiyoruz. Bu bir okul projesi olacak ve yardımcı olursanız çok sevinirim.

    1. Sezgin GÜL

      Ömer bey sizin projeniz çok kompleks bir sistem yapılabilir fakat ticarileşme yönü olduğundan çok fazla bilgi veremeyeceğim. Genel hatlarıyla toprak nem sensörleri ve çeşitli kimyasal ölçüm sensörleri mevcut onları araştırabilirsin. Resim işleme ve karşılaştırmayı matlab ile yaptırabilirsin.

      1. ömer

        Sezgin bey sizce sakıncası olmazsa projenin adını “SEZGİN” olarak düşünüyoruz. Projede düşünülen cihaz asistan olarak görev çalışacak yapıda olacak. Yani kamerası aracılığıyla çekilen fotoğraf sayesinde veritabanına kaydedilmiş foto ve bilgilere yapay zeka olarak ulaşıp yorum yapacak ve bunu sesli olarak kullanıcıya aktaracak. Elde taşınabilir bir alet şeklinde olması avantaj sağlayacaktır diye düşünüyorum. Fotograf makinesi veya cep telefonu gibi bir cihaz olarak düşünülebilir. Özellikle sera üretimi yapılan bölgelerde üreticiye avantaj sağlayabileceği kanaatindeyim. Ticari boyutu noktasında hevesli kişiler varsa yapsınlar bence. İlkokul bilim projesi olarak prototip bize yeterli olacak. Bu noktalar üzerinden bize yardımcı olursanız seviniriz.

        1. Sezgin GÜL

          İsimde sıkıntı olmaz 🙂 Lakin projenin kapsamı geniş.İşin içine yapay zeka girmesi ayrı bir kısım. Onun yapılabilirliği uzun vadeli Ayrıca arduino resim işleyemiyor. Raspberry pi kullanman gerekir.İlk okul bilim projesi düzeyine göre bu proje çok üstte kalır 🙂 Prototip için siz araştırma yapınız Arduino kullanırsanız matlab gibi bir programda resim işlersiniz. Tabi konuşma kısmı da C# ile yapılabilir Daha doğrusu ikisini de aynı programa entegre edebilirsin. Araştır biraz nette çok kaynak var. İngilizce kaynaklardan araştırmanda fayda var daha çok şey bulursun 🙂 Yardım edebilirim ama şu aralar çok yoğunum.

        2. ahmet

          ömer hocam matlab ortamında görüntü anlık görüntü veya dosyaların olduğu klasörden 2 tanesini karşılaştırmasını yapan matlab gui arayüzünü kullanılarak yapılabilinir ama kullandığınız bilgisayarda matlaba öncelikli olarak görüntülerin olduğu dosyayı tanıtmanız gerekmektedir harici bir kamera kullanmak istiyorsanız bilgisayarın işletim sistemi buna izin vermemektedir ancak webcam kamera kullanabilirsiniz yoksa mecburen laptop kamerasını kullanmak zorunda kalacaksınız.

  21. Serdar Taneri

    Merhaba siparişlerim geldi projeye başlamaya kalktım ama aldıgım modul
    http://www.es.co.th/Schemetic/PDF/DFPLAYER_MINI.PDF budur, projeye bununla devam edebilirmiyim neleri değistirmem gerekir, baglantı ve program tarafında tesekkurler

    1. Sezgin GÜL

      Şu şekilde düzenlemeler yapman gerekecek. Sensörün kütüphanesi ekleyin. Aşağıdaki örnek kodda bakarak düzenleyin.
      #include // softwareserial kütüphanesş
      #include // mp3 modul kutuphanesi
      void setup () {
      Serial.begin (9600);
      mp3_set_serial (Serial); //mp3 modül serial haberleşmesi
      mp3_set_volume (10); // ses seviyesi
      }
      void loop () {
      mp3_play (1); // 0001.mp3 dosyasının çalınması
      delay (10000); //10 saniye çalma işlemi
      mp3_play (5); //0005.mp3 dosyasının çalınması
      delay (5000); // 5 saniye çalma işlemi
      }

      Modüle ses dosyalarını mp3 uzantılı olacak şekilde atman gerekir ve dosya isimleri 0001.mp3 şeklinde 4 haneli olmalıdır.Örnek kodda da gördüğün gibi. Bağlantılarda vcc 5v, gnd gnd, tx rx , rx tx pinlerine takılacak hoparlör pinleri de spk_1 artı uç ve spk_2 ise eksi uca takılacak.Datasheet e bakarsan o pinlerin hangileri olduğu yazıyor.
      İyi çalışmalar

      1. Serdar Taneri

        Teşekkürler , mp3 parçaları şu şekilde çalıyor , ama sizin yazdığınız gibi içindeki ilgili parçaları nasıl çağırabileceğimi bulamadım .

        #include
        #include

        SoftwareSerial mySerial(10, 11); // RX, TX

        //
        void setup () {
        Serial.begin (9600);
        mySerial.begin (9600);
        mp3_set_serial (mySerial); //set softwareSerial for DFPlayer-mini mp3 module
        mp3_set_volume (20);

        }

        //
        void loop () {
        mp3_play (1);
        delay (10000);
        mp3_play (3);
        delay (10000);
        mp3_play (2);
        delay (10000);
        }
        —————————————
        ((çalışan kısım yukarısı)) ama sizin yazdığınız gibi ilgili dosyaları nasıl çağıracağımı bulamadım

        while (Serial.available()){ //Okumak için kullanılabilir bayt olup olmadığını kontrol et
        delay(10); //10 milisaniye bekle
        char c = Serial.read(); //Seri okuma
        if (c == ‘#’) {break;} // # tespit edildiğinde döngüden çık
        voice += c; //Ses = ses + c Steno
        }

        if (voice.length() > 0) {
        Serial.println(voice);

        if(voice == “*ileri”||voice == “*ileri git”)
        {wtv020sd16p.playVoice(3);
        ileri();}
        else if(voice == “*geri”||voice == “*geri gel”)
        {wtv020sd16p.playVoice(2);
        geri();}
        else if(voice == “*sağa dön”||voice == “*sağ”)
        {wtv020sd16p.playVoice(7);
        sag();}
        else if(voice == “*sola dön”||voice == “*sol”)
        {wtv020sd16p.playVoice(1);
        sol();}
        else if(voice == “*dur”||voice == “*arabayı durdur”)
        {dur();
        wtv020sd16p.playVoice(11);}
        else if(voice == “*sol ileri”)
        {sol();
        delay(100);
        ileri();}
        else if(voice == “*sağ ileri”)
        {sag();
        delay(100);
        ileri();}
        else if(voice == “*sol geri”)
        {sol();
        delay(100);
        geri();}
        else if(voice == “*sag geri”)
        {sag();
        delay(100);
        geri();}
        else if(voice == “*ileri git dur”||voice == “*biraz ileri git”)
        {ileri();
        delay(1000);
        dur();}
        else if(voice == “*geri gel dur”||voice == “*biraz geri gel”)
        {geri();
        delay(1000);
        dur();}
        else if(voice == “*sola dön dur”||voice == “*biraz sola dön”)
        {sol();
        delay(300);
        dur();}
        else if(voice == “*sağa dön dur”||voice == “*biraz sağa dön”)
        {sag();
        delay(300);
        dur();}
        else if(voice == “*sola bak”||voice == “*soluna bak”)
        {wtv020sd16p.playVoice(8);
        solabak();}
        else if(voice == “*sağa bak”||voice == “*sağına bak”||voice == “*sabah”)
        {wtv020sd16p.playVoice(6);
        sagabak();}
        else if(voice == “*önüne bak”||voice == “*öne bak”)
        {wtv020sd16p.playVoice(5);
        onunebak();}
        else if(voice == “*ışığı aç”||voice == “*ledi yak”)
        {wtv020sd16p.playVoice(4);
        ledyak();}
        else if(voice == “*ışığı kapat”||voice == “*ledi söndür”)
        /*
        mp3_play (); //start play
        mp3_play (1); //play “mp3/0001.mp3”
        mp3_next (); //play next
        mp3_prev (); //play previous
        mp3_set_volume (uint16_t volume); //0~30
        mp3_set_EQ (); //0~5
        mp3_pause ();
        mp3_stop ();
        void mp3_get_state (); //send get state command
        void mp3_get_volume ();
        void mp3_get_u_sum ();
        void mp3_get_tf_sum ();
        void mp3_get_flash_sum ();
        void mp3_get_tf_current ();
        void mp3_get_u_current ();
        void mp3_get_flash_current ();
        void mp3_single_loop (boolean state); //set single loop
        void mp3_DAC (boolean state);
        void mp3_random_play ();
        */

        1. Sezgin GÜL

          Bu örneğe göre diğer komutları da ekleyebilirsin.

          while (Serial.available()){ //Okumak için kullanılabilir bayt olup olmadığını kontrol et
          delay(10); //10 milisaniye bekle
          char c = Serial.read(); //Seri okuma
          if (c == ‘#’) {break;} // # tespit edildiğinde döngüden çık
          voice += c; //Ses = ses + c Steno
          }

          if (voice.length() > 0) {
          Serial.println(voice);

          if(voice == “*ileri”||voice == “*ileri git”)
          {mp3_play (1); // çalınacak dosya
          ileri();}

          eğer çalışmassa mp3_play (1); den sonra delay komutu ile çalma süresini ekle

  22. Serdar Taneri

    Merhaba videosunu çektinizmi ? Bekliyoruz. Başarılar

    1. Sezgin GÜL

      Videosu kısa zaman içinde yayınlanacaktır.

    2. Serdar Taneri

      Merhaba birde Android için hangi programı kullanmalıyız.

      1. Sezgin GÜL

        Bu programı kullanın >> play.google.com/store/apps/details?id=robotspace.simplelabs.amr_voice

        1. Serdar Taneri

          Emeğiniz için teşekkürler, malzeme siparişlerimi verdim, gelince uygulayacağım .

          1. Sezgin GÜL

            Rica ederim Takıldığınız noktada sorabilirsiniz.

  23. ylcn

    Arduino mega yerine uno r3 kullansak sıkıntı olur mu?

    1. Sezgin GÜL

      Uno kullanabilirsiniz sıkıntı olmaz.