شاید تاکنون در پروژههایتان با این مسئله برخورد کردهباشید که صدای محیط را تشخیصدهید و یا درصورتیکه صدایی شنیدهشد سیستم هشدار دهد و… در این مقاله میخواهیم به بررسی این مسئله بپردازیم و درنهایت بهصورت عملی راهکار ارائهشده را تستکنیم. اجازهدهید قبلاز اینکه به معرفی این ماژول برسیم ابتدا با تعریف تشخیص صوت و پردازش صوت آشناشویم.
تشخیص صوت چیست؟
اگر بهطورخلاصه بخواهیم تشخیص صوت را تعریفکنیم میتوان گفت که تشخیص صوت درواقع کار تشخیصدادن صدا را برعهده دارد و نمیتواند تشخیصدهد که صدای مربوطه چیست و تولیدکننده این صدا چهکسی بوده و… فقط قادر به تشخیص صدا در محیط میباشد.
پردازش صوت چیست؟
پردازش صوت، قادر است که علاوهبر تشخیص صدای محیط، صدای تشخیصشده را آنالیز کند و بهعبارتی پارامترهایی مثل اینکه صدای تشخیصدادهشده مربوط به انسان است یا حیوان، آیا صدای تشخیصدادهشده مربوط به فرد X است یا Y و… شاید برایتان هیجانانگیز باشد که این سیستم چطور کار میکند که توصیه میکنم اگر به این مبحث علاقهمند هستید حتما بحث پردازش سیگنالهای دیجیتال را یاد بگیرید و یکیاز بهترین نرمافزارهایی که میتواند به شما کمک کند نرمافزار Matlab است. و اگر بهدنبال پیادهسازی سختافزاری برای این کار هستید توصیه میکنیم که از تراشههای FPGA شرکت Xilinx و یا از DSP های قدرتمند شرکت TI استفادهکنید.
دقتکنید که در این پروژه میخواهیم تشخیص صدا را توسط آردوینو انجام دهیم نه پردازش صوت.
معرفی ماژول تشخیص صدا
ویژگیهای سخت افزاری
- تشخیص شدت صدای محیط
- قابل تنظیم بودن حساسیت
- ولتاژ کاری ۳.۳ولت
- خروجی بهصورت دیجیتال(۰ یا ۱)
- قابلیت اتصال بهطورمستقیم به ولتاژ ۵ ولت
خب پساز اینکه با این ماژول آشنا شدیم نوبت به راهاندازی این ماژول رسیدهاست.
معرفی پایههای ماژول تشخیص صدا
راهاندازی ماژول تشخیص صدا با آردوینو
وسایل موردنیاز جهت راهاندازی ماژول تشخیص صوت با آردوینو
- آردوینو
- ماژول تشخیص صدا که در بالا معرفی شد
- بردبرد
- سیم بردبردی
نحوه اتصال ماژول تشخیص صدا به آردوینو
خب پساز اینکه ماژول را طبق تصویر بالا به آردوینو متصل کردیم. نوبت به برنامه نویسی ماژول میرسد.
برنامه نویسی ماژول تشخیص صدا با آردوینو
int buttonpin = 3; // define D0 Sensor Interface int value = 0; void setup () { pinMode (buttonpin, INPUT) ; } void loop () { value = digitalRead(buttonpin); if (value == HIGH) { Serial.println(" detected"); } else { Serial.println(" not detected"); } }
درواقع کل کاری که این برنامه انجام میشود این است که پین دیتا ماژول که به آردوینو متصلشدهاست را میخواند درصورتیکه در این پین تغیر وضعیتی شاهد باشیم آنرا طبق متغیری که تعریف کردهایم در سریال مانیتور خواهیمدید. شاید برای برخیاز شماها این سوال پیش آید که پایه A0 روی ماژول چیست؟ درواقع ازطریق این پین، قادرخواهیمبود بهجای اینکه از پایه دیجیتال یعنی D0 استفادهکنیم. برنامه هم دقیقا مثل برنامه بالا است با این تفاوت که پین متصل به آردوینو و ماژول فرق میکند که اگر به تصویر دقتکنید متوجه این اتصالات خواهید شد.
int buttonpin = A0; // define A0 Sensor Interface int value = 0; void setup () { pinMode (buttonpin, INPUT) ; } void loop () { value = digitalRead(buttonpin); if (value == HIGH) { Serial.println(" detected"); } else { Serial.println(" not detected"); } }
دقتکنید که پساز مطالعه این مقاله شما قادر خواهید بود که خودتان پروژه رقص نور LED را با صوت انجام دهد(بهطورمثال یک موزیک پخش میکنید و متناسب با آن LEDهای شما واکنش میدهند که در نوع خودش بسیارجذاب است) و یا پروژه تشخیص صدای محیط اطراف تا شعاع مشخص و… که انجام هریک از آنها کاملا بستگی به خلاقیت شما در برنامهنویسی دارد. امیدوارم که این آموزش هم برای شما مفید واقعشدهباشد.
منبع: سیسوگ