Arduino ile SD Karttan mp3 Ses Dosyası Çalma

72 72.353

Merhaba arkadaşlar bu uygulamamızda mp3 modül kullanmadan sd karttan wav uzantılı ses dosyalarını okutup çalacağız. Önceki projemizde wtv020 mp3 modül kullanarak bu işlemi yapmıştık. Bu uygulamada ise bu modülü kullanmadan aynı tarz ses dosyalarını çaldıracağız.

Malzemeler:

  1. Arduino
  2. Sd kart Modül
  3. Hoparlör
  4. sd kart ve adaptörü

Elektronik Kısım:

Devrenin fritzing çizimini buradan indirebilirsiniz.Şekildeki gibi devre bağlantılarımızı yapalım. Sd kart modül SPI protokolüne göre haberleştiği için arduino modellerinde SPI pinleri değişiklik gösterir. Farklı model kullanırsanız pinlerini o modelin SPI pinlerine göre takmalısınız.

Mp3 dosyasını wav formatına dönüştürmelisiniz. Online wav conventer sitesinde dönüştürme işlemini yapabilirsiniz. Mp3 dosyasını aşağıdaki gibi 8 bit 32000 Hz Stereo olarak ayarlayıp convert file butonuna tıklayın. İndirdiğiniz dosyaları direk sd kartınıza yükleyin.

Yazılım Kısmı:

Mp3 modül kullanmadan sd karttan audio wav ses dosyası olarak çalmak için kütüphane kullanıyoruz. Aşağıdaki bağlantıdan kütüphaneyi indirebilirsiniz.

Kütüphane : SimpleSDAudio

Örnek kod:

#include <SimpleSDAudio.h>
 
void setup()
{ 
 
 SdPlay.setSDCSPin(4); // sd kart cs pini
 
 if (!SdPlay.init(SSDA_MODE_FULLRATE | SSDA_MODE_MONO | SSDA_MODE_AUTOWORKER))
 {
 while(1); 
 } 
 
 if(!SdPlay.setFile("music.wav")) // müzik dosya adı
 {
 while(1); //dosya bulunamassa durdur
 } 
}
 
void loop(void) {
 
 SdPlay.play(); // seçilen dosyayı çal
 
 while(!SdPlay.isStopped()) { // müzik bittiğinde tekrar çal
 ; 
 }
}

 

Hoparlörün artı pini arduino mega hariç diğer modellerde dijial 9. pine, arduino megada ise dijital 44. pine takınız. Kodda hoparlör pinini belirtmiyoruz. Kütüphane otomatik olarak bu pinlerden çıkış vermiş.

Uygulamamız bu kadar. Önceki projelerimizden sesli renk okuyucu yapmıştık. Fakat onda wtv020 mp3 modül kullanmıştım. Bu uygulamaya göre uyarladım. Aşağıda kodunu alabilirsiniz.

// Sesli Renk Okuyan Robot Projesi
//Coder Sezgin Gül
// 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();
}
else if ((r < 0.95) && (g > 1.4) && (b < 0.9)) { 
Serial.print("\tYESIL"); 
 SdPlay.setFile("ysl.wav"); 
 SdPlay.play();
}
else if ((r < 0.8) && (g < 1.2) && (b > 1.2)) { 
Serial.print("\tMAVI"); 
 SdPlay.setFile("mavi.wav"); 
 SdPlay.play();
}
else if ((r > 1.15) && (g > 1.15) && (b < 0.7)) { 
 Serial.print("\tSARI"); 
 SdPlay.setFile("sari.wav"); 
 SdPlay.play();
 } 
 else if ((r > 1.4) && (g < 1.0) && (b < 0.7)) { 
Serial.print("\tTURUNCU");
 SdPlay.setFile("trnc.wav"); 
 SdPlay.play();
}
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.

72 Yorum
  1. Murat

    Arduino unoya TDA2030 Amfi Modülü bağlantısı nasıl yapılır. Occ ve gnd besleme in ve gnd uçlarına 9 ve gnd uçlarını mı giriyoruz.

  2. Ayhan ÜNAL

    Merhaba; konu başlığınız hatalıdır. “Arduino Ile SD Karttan wav Ses Dosyası Çalma” olmalı. Çünkü sd karta mp3 değil wav yüklüyorsunuz.

  3. T.Mutlu

    hocam emeğine sağlık. hoparlörden ses çok az geliyor. nasıl artırabiliriz

  4. Gökhan

    Hocam Merhabalar Ben Bunu Butonlu Hale Dönüştürmem Lazım Yani 1 Butona Bastığımda 1 Ses Dosyasını 2 Butona Bastığım Zaman 2 Ses Dosyasını Okuması Lazım Acaba Yardımcı Olabilirmişsiniz Bu Konulardan Uzağım Biraz Hoca Ödev Olarak Verdi

    1. Serkan çevirici

      Butonun her basışında bir tane int degiskenine kaydetmen ve bunu da sd kart ile iliskilendirmen gerek surekli basarsan bu sefer eger 34 tane ses dosyasi var ise surekli basarak 36 yaptin degilim hic birsey calmayacak buna cozum olarak ya reset butonu koyacaksin bu reset in amaci sd kart ile iliskilendirilen degiskeni sifirlamak ya da arduino ya kac tane ses dosyasi varsa saydirtmak ve eger 35 tane ses dosyasi varsayalim bunu da butona basma sayisi ile iliskilendirdiginde 36 kere butona bastiginda degiskeni sifirlayacak tekrar 1 den baslatican yani mantik şu

      if(butonabasmasayisi > sdkartakisesdosyasi)
      {
      Butonabasmasayisi =0;

      }

  5. oğuz

    merhablar ben bu projeyi mblock üzerinden yapmaya çalışıyorum ama blok kodları bir türlü yapamadım bana yardımcı olursanız sevinirim

  6. ENDER VURAL

    Burada oluşturdugumuz yapıda, içindeki örneği 10 sn lik ses kaydını, 5 dak bir tekrarlasın şeklinde yapıpyı nasıl devşirebiliriz?

    1. Serkan çevirici

      Delay komudunu soyle kullanabilirsin
      Delay(300000);
      Bunu da loop a yazarsin

  7. Ömer

    Hocam ardunio Nano ile yapılabilir mi
    Kartal vs sesi yükleyip yarım saat te bir çalıştırmak istiyorum vede anfi bağlamam gerekiyor 12 voltluk 10 w Lik iki tane anfi yapılabilir mi teşekkür ederim.

  8. yiğit yalçın

    merhaba aynısını yaptım fakat ses çok az çıkıyor yardım eder misiniz ?

  9. cengiz

    Aynısını yaptım fakat müzik çok hızlı çalıyor. bu sorunu nasıl çözebilirim

    1. Gürkan

      SSDA_MODE_HALFRATE yaparsanız müzik normal çalacaktır

  10. CAGRI DURMAZ

    Bende şöyle bir problem oldu. Devreyi kurunca mp3 ü wav a çevirdiğim ses dosyasını sd karta attıktan sonra oynatırken çok hızlı çalmaya başladı. Şu linkteki gibi;

    Eğer arduino kodundaki Fullrate i Halfrate olarak değiştirirseniz sorun çözülüyor.Sanırım hoparlörle alakalı bilmiyorum ama bnzer problemi bir ben yaşamışım heralde hiç biryerde yok.

  11. fatoş

    Merhabalar ,Ben sizin yaptığınız kodları yazdım bağlantıları da yaptım .Herşey normal çalışıyordu fakat şimdi çalışmıyor. Kablolarıda kontrol ettim bir değişiklik yok.Micro cd okuyucumuda değiştirdim yine çalışmıyor.Renk okuyor fakat ses çıkmıyor.Ne yapmam lazım yardımcı olur musunuz? .Şimdiden Teşekkür Ederim.

  12. cem

    merhabaa sadece kulaklik takildiginda otomatik mp3 yurutup kulaktik ciktiginda durduran ve tekrar takildiginda yeniden baslatan bir kod yazilabilir mi ?

  13. Eren

    Merhaba her şeyi yaptım ama loop kısmın da wifi modülünü çalıştırmam lazım ama while döngüsü yüzünden loop kısmına geçemiyorum sebebi nedir?

  14. burak

    seri port ekranında sensörü görmüyor.

  15. Yasey

    Ardunio mega ile aynı şekilde bagladım unoda sesi aldım ardunio megada ise her şey aynın hoporlorun + pini 44 de oldugu halde ses vermiyor

    1. burak

      nasıl yaptınız benim sensör seri port ekranında görmüyor. Bide seside vermiyor.

  16. Berkan

    Arduino mega kullanıyorum Mega için pinler nelerdir acaba ?

  17. Mehmet

    Arduıno uno var bende programı atıp ses dosyasını değiştirmeme ragmen hiç bir tepki alamıyorum.hoparlör yerıne buzzer kullandım. onunla ılgısı olabılır mı?

  18. çağla

    Merhaba,
    Ben bu sistemi tek arduino ile rfıd ve sd kart modül aracılığıyla yaptım fakat rfıd kart ı okuttuktan sonra elde ettiğim ses çok kalitesizdi acaba ses frakansıyla mı alakalıdır ? tek başına sd karttan sağlıklı ses alıyorken rfıd modül ile kullandığımda ses kalitesi düşüyor bu problemi nasıl çözebilirim?

    1. Sezgin GÜL

      döngüye girdiğinde baudrate değeri herzi etkiler. o yüzden ses dosyasının herz değerini arttırın.

  19. Büşra

    Merhaba.
    Ben TCS3200 ile yapmaya çalışıyorum; ancak kütüphane tanımlamasını nasıl yapmalıyım. Kodum hata veriyor.

    1. Mesut

      Ben sana yardımcı olabilirim. Bende TC3200 ile bitirme projemi yaptım. Renklere göre ses dosyalarını okutuyorum.
      sessizson1@gmail.com bu adrese mail atarsan yardımcı olmaya çalışırım.

  20. Yıldız Karayer

    Merhaba. Daha fazla renk skalası için mesela mor, turkuaz vs. RGB degerleri nasıl girebiliriz?

    1. Sezgin GÜL

      renk üzerine tutun ve r g b değerlerini serial monitöre yazdırın. O değerleri kapsayacak şekilde sınır değerleri oluşturarak rengi tanıtabilirsiniz.

  21. Dan Chesa

    merhaba. ozum dilerim, inglische lutfen. cioc tesekur ederim.

  22. şahin

    kolay gelsin.yukarıdaki uygulamayı yaptım fakat bazı sıkıntılar çıkıyo.113 tane ses dosyası çalıyorum ve 84 ten sonrası kitleniyo.84 tane sese kadarki kısımdada sistem çalışıyor gibi görünüyor fakat seslerin çoğu çalmıyor.sebebi ne olabilir teşekkürler.

  23. Resul

    Merhaba hoparlörün özellikleri hakkında bilgi verebilirmisiniz.

  24. çağla

    Ben bu sistemi rfid kart modülüyle birlikte yapmaya çalışıyorum. Aynı pin üzerinden birden fazla spı bağlantı yapabileceğimi söylemiştiniz. Bunun üzerine sd kart modülünün de rfid kart modülününde bildiğiniz gibi mosi miso ve sck pinleri aynı.Board üzerinden ikisini de aynı pinlere yönlendirdim ama sadace rifid kart modülü çalıştı acaba farklı bir şekilde mi bağlantı yapmam gerkiyor. Yardımcı olursanız çok sevinirim.

    1. Sezgin GÜL

      İkisini birlikte dediğiniz şeklide yapabilirsiniz. sd kartın pinlerini doğru taktığınızdan ve kodda da doğru eklendiğinden emin olun. sd kartın cs pinini kodda yazıyorsunuz.

  25. ÇAĞRI ESEN

    microsd card adapter ile yapılabilir mi acaba böyle bir şey

  26. eren

    Mp3 mü çalmış oldu şimdi bu proje?

  27. Sena

    Merhaba ben sd kart modülünün bağlantılarını yaptığımda karta kodu atarken hata veriyor. Karta yüklenirken sorun oluştu diyor ama sd modülü çıkarınca hatasız kod yükleniyor. Çalıştıramadım yardım ederseniz çok sevinirim.

    1. Sezgin GÜL

      merhaba, sd kart takılı olsa bile kodu yüklerken hata vermez normalde. çıkarınca yükleme yaptıysa da sorun yok. yükleme yaptığınız halde çalışmıyor ise dosya formatlarında ya da sd kart iletişiminde sorun vardır.

  28. ömer

    .merhaba
    Başlıkta her nekadar mp3 yazsa da sizinki wav player. Neden mp3 ibaresini kullandınız merak ettim

  29. heosıs

    arkadaşlar bitirme ödevim biri bana yardımcı olabilir mi rica etsem birkaç sorum olacaktı.

  30. yakup

    aruıno yu amfii yeri ne kullanabilirmiyiz

    ses yükseltme telefon

  31. Mehmet

    Merhaba. Sd kart modülündeki sesi sorunsuz çaldırabiliyoruz. Ancak projemizde
    Servo motor oldugu icin Sd card kütüphanesi ve servo kütüphanesi çakışıyor. Bir öneriniz varmı ? Teşekkürler

    1. heosıs

      kardeş benimle bir iletişime geçebilir misin birkaç sorum olacaktıda.

  32. robotist

    merhaba bu sd kartlı modül gibi başka hangi markalar var tercih edeceğiniz

  33. MeSerdar

    Merhaba. Sd kart modülündeki sesi sorunsuz çaldırabiliyoruz. Ancak projemizde
    Servo motor oldugu icin Sd card kütüphanesi ve servo kütüphanesi çakışıyor. Bir öneriniz varmı ? Teşekkürler

  34. mo

    acaba birden çok ses kaydını bir tuşla random duyma istediğimde ne yapmam gerekiyor, yardımcı olabilir misiniz?
    şöyle bir instruction var: instructables.com/id/Playing-Wave-file-using-arduino/
    ama sizin yaptığınız gibi daha basit bir sistemin üzerinden nasıl ilerlenebilir?

  35. Medjai

    Greetings!
    Good decision, but please help.
    How to make that sound starts when you press the button? And stops after its release as a car horn.
    And whether it is possible to make some buttons with different sounds?
    Thanks for the help!

  36. fatih

    sketch_jun0002b.ino:5:48: fatal error: TMRpcm.h: No such file or directory hatası veriyor programda

    1. Sezgin GÜL

      TMRpcm kütüphanesini indirip ekle.

      1. fatih

        ardunio due ye göre yapmaya çalışırıyorum ama avr sam hatası da veriyor kütüphaneleri yüklememe rağmen hata veriyor program yardımcı olur musunuz ?

  37. DuinoGuy

    Transistor kullanmanız gerek. Yukarıdaki devrede kullanılmamış. Cızırtı olması çok normal. 2n2222 veya bc546, bc548 kullanabilirsiniz.

  38. Burak Özgür

    Teşekkür ederim sorun çözüldü ses geliyor fakat bir cızırtı var 5v bir anfi bağladık düzelmedi o konuda yardımcı olur musunuz?

  39. Burak Özgür

    Sezgin abi üniversite bitirme projemiz var yardımcı olur musunuz bir tek sorun yaşıyoruz mp3 dosyasını wav uzantılı dosyasına çevirir iken çok takıldık ses kaydımızı dönüştürmeye çalışıyoruz nafile olmuyor 5w hoparlör kullanıyoruz sesin çıktığını anlıyoruz ritim den fakat ses anlaşılmaz bir durumda sorun dönüşümden kaynaklanıyor ola bilirmi ?

    1. Sezgin GÜL

      8bit 32000 hz stereo olarak çevirin
      Ayrıca kod kısmında da ses dosyasından sonra gecikme vermeniz lazım.
      örnek;
      SdPlay.setFile(“ses.wav”);
      SdPlay.play();
      delay(5000); >> ses dosyası çalma süresinin üzerinde gecikme verin

  40. CAN

    Merhabalar nerede hoparlörü nereden temin edebilirim 0.5W hoparlör yeterli olur mu ? Yoksa düşük mü gelir sesi ?

    1. Sezgin GÜL

      mini ses bombası kullanın.

  41. sema

    Bir soru sorabilir miyim?Ben renkli ses okuyucuyu yapmak istiyorum ama ya renki tanıdı ya da ses bir geldi bir gelmedi.Benim renk sensörüm tcs3200 .Pin bağlantılarını nasıl yapmalıyım çünkü sd card ile renk sensörü pinleri aynı yerler .Çok az zamanım kaldı nasıl yapmalıyım? sd card fail yazdı .Çok renk olmasına bile gerek yok sadece 3 renk dese yeter.

    1. sema

      tcs3200 renk sensörüyle ilgili doğru düzgün hiç bir bilgi yok. Amacım neydi bu sensörü almakta ama artık geçti ve yine hiçbir şeyi çalıştıramadım.

      1. Sezgin GÜL

        TCS34725 rgb renk sensörünü kullanın sorunsuz çalışıyor. Yukarıda projenin altında sesli okuma kodu da var.

        1. sema

          ama elimde tcs3200 var onunla ne yapabilirim?

  42. Salih

    SdPlay.play(); kısmı boşmu kalacak ?

    1. Sezgin GÜL

      boş mu kalacak derken? şu şekilde fonksiyondaki parantezin için boş olacak. bu fonksiyon önceden belirlenen dosyayı çaldırır.

  43. serdar

    SdPlay was not declared in this scope uyarısı alıyorum hocam …

    1. Sezgin GÜL

      aynı kodu derlerken almışsan ya kütüphane eklemedin ya da arduino sürümünden kaynaklı kütüphane çalışmıyor olabilir.

      1. emre

        sezgin bey telinizi vere bilir misiniz
        bilecik şeyhedebali ünisinde okuyorum bu devreyi şipariş verdim yapamazsam kalıyom yardım eder msiniz?

        1. Sezgin GÜL

          0 538 665 48 24

  44. asker

    öncelikle ellerine sağlık bir sorum olucaktı peki 3 bacaklı haporlörü nasıl bağlaya biliriz biri VCC diğeri GND, birde OUT var bunları nasıl bağlaya biliriz?

    1. Sezgin GÜL

      jak uçlu olan hoparlörden bahsediyorsan kablolardan biri gnd diğer ikiside sağ ve sol kısımdır. Masaüstü olanlarda ise out sinyal pinine diğerleri de enerji pinlerine takılır.

      1. asker

        teşekkürler dostum kolay gelsin

  45. selçuk

    Hocam sd kartın kaç gb olduğunun bi önemi var mı? İllaki micro sd kart+adaptör mü olması gerekiyor yoksa direk adaptör boyutundaki sd kartlar olur mu?

    1. Sezgin GÜL

      Sd kartın boyutu fark etmiyor. İstediğini kullan. Fakat ses dosyalarının isimlerinin uzunluğu 5-6 karakteri geçmemeli. Aksi halde okumaz.

      1. Tuğba nur

        Hocam merhabalar kütüphane dosyası açılmıyor link atarmısınız?

    2. Sezgin GÜL

      Büyük sd kartlar modüle boyut olarak uyumlu ise kullanabilirsin.

    3. asdf

      olur olur