یکی از کارهای ساده‌ای که می‌توان به کمک بوردهای ارزان‌قیمت Arduino انجام داد، پلی کردن فایل صوتی است. می‌توانید فایل صوتی را به فرمت wav تبدیل کنید و روی کارت حافظه ذخیره کرده و سپس با استفاده از رابط SPI، دیتا را خوانده و صدا را از اسپیکر پخش کنید.

در این مقاله به نحوه‌ی کار با ماژول کارت‌خوان و پلی کردن فایل صوتی از طریق اسپیکر می‌پردازیم.

قطعات موردنیاز

ماژول کارت‌خوان یا SD Card Reader یکی از صدها ماژولی است که می‌توان به بوردهای آردوینو متصل کرد. در این پروژه‌ی کوچک از یک ماژول ساده برای قرائت کردن اطلاعات فایل صوتی که روی کارت SD ذخیره شده، استفاده می‌کنیم.

ساخت پخش‌کننده صدا با آردینو

دیگر قطعات موردنیاز به صورت زیر است:

  • Arduino UNO
  • سیم‌های رابط
  • آمپلی‌فایر صدا
  • اسپیکر یا بلندگو

برنامه‌نویسی در Arduino IDE

برنامه‌ی موردنیاز برای خواندن داده‌های موجود روی کارت حافظه بسیار ساده و کوتاه است:

ساخت پخش‌کننده صدا با آردینو

برای خواندن حافظه از کتابخانه‌ی SD.h استفاده می‌شود. برای کار با رابط SPI نیز به کتابخانه‌ی SPI.h نیاز است. برای تبدیل کردن فایل صوتی به صدا، به کتابخانه‌ی TMRpcm.h نیاز داریم. لذا در ابتدای برنامه سه لایبرری موردبحث را include کنید. برنامه‌ی کامل به صورت زیر است:

#include "SD.h" //کتابخانه‌ی کارت حافظه
#define SD_ChipSelectPin 4 //انتخاب پین اس‌اس برای ماژول کارت حافظه

#include "SPI.h"

#include "TMRpcm.h" //نام کتابخانه‌های موردنیاز

TMRpcm Memoria; //نام دلخواه

void setup(){

Serial.begin(9600); //آغاز استفاده از پورت سریال

if (!SD.begin(SD_ChipSelectPin)) { /

return;

}

Memoria.speakerPin = 9; //پین مربوط به اسپیکر که معمولاً پین شماره ۹ است

}

void loop(){

Memoria.setVolume(5); //بلندی صدا را می‌توانید با عدد ۷ تنظیم کنید

Memoria.quality(1); //فقط ۱ یا ۰ که عدد ۱ برای کیفیت بهتر است

Memoria.play("1.wav"); //نام فایل صدا

delay(10000); //دقت کنید که تأخیر به اندازه‌ی مدت زمان فایل صوتی باشد!

//می‌توانید دستورات دیگری بنویسید تا آردوینو هم‌زمان با پخش موسیقی، کار دیگری مثل کنترل یا بررسی حسگرها را انجام بدهد.
}

توجه داشته باشید که پس از تأخیر یا delay پایانی که ۱۰ ثانیه است، می‌توانید کدهایی برای انجام امور کنترلی اضافه کنید. به عنوان مثال یک سیستم امنیتی بسازید که با چک کردن تعدادی سنسور، صدای آژیر پخش کند.

تبدیل فرمت صدا به wav

همان‌طور که در ابتدا اشاره کردیم، به فایل صوتی با فرمت wav نیاز داریم. این فرمت حجیم و غیرفشرده است و شاید کمتر با این نوع فایل مواجه شده باشد اما نرم‌افزارهای زیادی برای تبدیل کردن فایل‌های متداول نظیر MP3 و M4A و غیره به فرمت WAV وجود دارد. اگر نمی‌خواهید نرم‌افزار اضافی نصب کنید، می‌توانید کانورت کردن فرمت را به کمک سرویس‌های تحت وب انجام بدهید. سایت online-convert را برای این منظور پیشنهاد می‌کنیم.

در این سایت روی دکمه‌ی Choose Files کلیک کنید و فایل موردنظر را انتخاب کنید. گام بعدی چک کردن تنظیمات است.

دقت کنید که رزولوشن یا Bit Depth را ۸ بیت در نظر بگیرید. فرکانس نمونه‌برداری ۱۶ کیلوهرتز مناسب است و همین‌طور صدا را به صورت تک‌کاناله یا Mono تبدیل کنید. در نهایت برای شروع تبدیل فرمت، روی Start conversion کلیک کنید.

ساخت پخش‌کننده صدا با آردینو

پس از تکمیل فرآیند فایل wav آماده‌ی انتقال به کارت حافظه خواهد بود. پس از کپی کردن فایل، کارت حافظه را داخل ماژول SD Card Reader قرار دهید.

دیاگرام مدار و اتصال قطعات

در تصویر زیر شیوه‌ی متصل کردن ماژول کارت حافظه به بورد Arduino UNO را مشاهده می‌کنید. این ماژول مثل اغلب ماژول‌ها به ولتاژ ۵ ولت و همین‌طور ۰ یا GND نیاز دارد. ۴ پایه‌ی دیگر آن را مطابق شکل به پین‌های ۳ و ۱۱ و ۱۲ و ۱۳ متصل کنید. البته در صورت استفاده از پین‌های دیگر، می‌بایست برنامه را اندکی تغییر بدهید.

ساخت پخش‌کننده صدا با آردینو

با توجه به تصویر فوق، اتصال پین‌ها به صورت زیر انجام می‌شود:

پین ۴ به پین SS

پین 11 به پین  MOSI

پین 12 به پین MISO

پین 13 به پین SCK

پین 5v به پین 5v

پین Gnd به پین Gnd

سیگنال خروجی که PWM است را از پین شماره ۹ به آمپلی‌فایر صدا متصل می‌کنیم.

دقت کنید که امکان متصل کردن مستقیم آردوینو به اسپیکر وجود دارد اما اگر اسپیکر توان مصرفی بالایی داشته باشد، بورد Arduino آسیب می‌بیند.

اگر سیگنال PWM را با اسیلوسکوپ چک کنید، سیگنالی شبیه تصویر زیر می‌بینید.

ساخت پخش‌کننده صدا با آردینو