ضبط و پخش فایل صوتی توسط شلید VS1053
تراشههاي پخش و ضبط صدا
در برخي از پروژههاي ميكروكنترلري اين نياز احساس ميشود كه صدايي را به عنوان راهنما و يا هشدار بتوان پخش كرد. مثلاً در سخنگوي هوشمند اتومبيل در اتومبيل سمند با بازشدن دربها و يا كاهش بنزين و … هشدارهايي پخش ميشود يا برخي از دستگاهها مانند تلفن كنندههاي اتوماتيك كه در سيستمهاي امنيتي كاربرد دارند، با تحريك شدن از طرف دستگاه مركزي، با شماره تلفنهاي ذخيره شده در حافظه خود تماش گرفته و پيغامي را پخش ميكنند. با دقت در اطرافمان، موارد زيادي از دستگاههاي سخنگو ديده ميشود كه همگي آنها از قدرت يك تراشه ضبط و پخش صدا بهره ميبرند.
معرفی شلید VS1053
این شیلد VS1053 جهت ضبط و پخش فایل های صوتی و به منظور ارتباط آسان با بردهای آردوینو طراحی شده است. و از تراشه ی VS1053B بهره می گیرد. قابلیت پخش انواع فرمت های صوتی از جمله mp3 , ogg از روی مموری کارت mircroSD card را دارد. ترتیب و محل سوکت های این برد طوری طراحی شده که بدون نیاز به سیم بندی مثل یک غلاف به برد آردوینو متصل شود.
ویژگی ها:
- خروجی صدای استریو
- دارای تقویت کننده ی داخلی
- قابلیت پخش انواع مختلف فرمت های صوتی
- قابلیت ضبط بدون وقفه ی صدا
- پروتکل ارتباطی SPI جهت ارتباط با میکروکنترلر ها
- سوکت های هدفون و میکروفون
- ولتاژ تغذیه: 5 ولت DC
- جریان منبع تغذیه: 800mA
- پشتیبانی از آردوینو و سایر میکروکنترلر ها
- نوع کارت حافظه: MicroSD card / TF card
کاربردها:
- سیستم های الکترونیکی گویا
- کاربردهای تبلیغاتی
- برد صوتی آسانسور
- خانه های هوشمند
- و هر پروژه ای که به پخش یا ضبط با کیفیت صدا نیاز داشته باشد.
دانلود کتابخانه شلید VS1053 آردوینو
در این کتابخانه مثال های راه اندازی ماژول ضبط و پخش صدا به طور کامل موجود است.
نمونه کد برای پخش فایل های صوتی شلید VS1053 آردوینو
// include SPI, MP3 and SD libraries #include <SPI.h> #include <Adafruit_VS1053.h> #include <SD.h> // define the pins used //#define CLK 13 // SPI Clock, shared with SD card //#define MISO 12 // Input data, from VS1053/SD card //#define MOSI 11 // Output data, to VS1053/SD card // Connect CLK, MISO and MOSI to hardware SPI pins. // See http://arduino.cc/en/Reference/SPI "Connections" // These are the pins used for the breakout example #define BREAKOUT_RESET 9 // VS1053 reset pin (output) #define BREAKOUT_CS 10 // VS1053 chip select pin (output) #define BREAKOUT_DCS 8 // VS1053 Data/command select pin (output) // These are the pins used for the music maker shield #define SHIELD_RESET -1 // VS1053 reset pin (unused!) #define SHIELD_CS 7 // VS1053 chip select pin (output) #define SHIELD_DCS 6 // VS1053 Data/command select pin (output) // These are common pins between breakout and shield #define CARDCS 4 // Card chip select pin // DREQ should be an Int pin, see http://arduino.cc/en/Reference/attachInterrupt #define DREQ 3 // VS1053 Data request, ideally an Interrupt pin Adafruit_VS1053_FilePlayer musicPlayer = // create breakout-example object! Adafruit_VS1053_FilePlayer(BREAKOUT_RESET, BREAKOUT_CS, BREAKOUT_DCS, DREQ, CARDCS); // create shield-example object! //Adafruit_VS1053_FilePlayer(SHIELD_RESET, SHIELD_CS, SHIELD_DCS, DREQ, CARDCS); void setup() { Serial.begin(9600); Serial.println("Adafruit VS1053 Simple Test"); if (! musicPlayer.begin()) { // initialise the music player Serial.println(F("Couldn't find VS1053, do you have the right pins defined?")); while (1); } Serial.println(F("VS1053 found")); SD.begin(CARDCS); // initialise the SD card // Set volume for left, right channels. lower numbers == louder volume! musicPlayer.setVolume(20,20); // Timer interrupts are not suggested, better to use DREQ interrupt! //musicPlayer.useInterrupt(VS1053_FILEPLAYER_TIMER0_INT); // timer int // If DREQ is on an interrupt pin (on uno, #2 or #3) we can do background // audio playing musicPlayer.useInterrupt(VS1053_FILEPLAYER_PIN_INT); // DREQ int // Play one file, don't return until complete Serial.println(F("Playing track 001")); musicPlayer.playFullFile("track001.mp3"); // Play another file in the background, REQUIRES interrupts! Serial.println(F("Playing track 002")); musicPlayer.startPlayingFile("track002.mp3"); } void loop() { // File is playing in the background if (musicPlayer.stopped()) { Serial.println("Done playing music"); while (1); } if (Serial.available()) { char c = Serial.read(); // if we get an 's' on the serial console, stop! if (c == 's') { musicPlayer.stopPlaying(); } // if we get an 'p' on the serial console, pause/unpause! if (c == 'p') { if (! musicPlayer.paused()) { Serial.println("Paused"); musicPlayer.pausePlaying(true); } else { Serial.println("Resumed"); musicPlayer.pausePlaying(false); } } } delay(100); }
برای اضافه کردن کتابخانه به برنامه آردوینو می توانید از آموزش اضافه کردن کتابخانه به نرم افزار آردوینو استفاده کنید.