شاید تا کنون در پروژههایتان با این مسله برخورد کرده باشید که صدای محیط را تشخیص دهید و یا در صورتیکه صدایی شنیده شد سیستم هشدار دهد و …
در این قسمت از پروژه های آردوینو میخواهیم به برسی این مسله بپردازیم و در نهایت به صورت عملی راهکار ارائه شده را تست کنیم.
اجازه دهید قبل از اینکه به معرفی این ماژول برسیم ابتدا با تعریف تشخیص صوت و پردازش صوت آشنا شویم.
تشخیص صوت چیست؟
اگر به طور خلاصه بخواهیم تشخیص صوت را تعریف کنیم میتوان گفت که، تشخیص صوت در واقع کار تشخیص دادن صدا را برعهده دارد و نمیتواند تشخیص دهد که صدای مربوطه چیست و تولید کننده این صدا چه کسی بوده و … فقط قادر به تشخیص صدا در محیط میباشد.
پردازش صوت چیست؟
پردازش صوت، قادر است که علاوه بر تشخیص صدای محیط، صدای تشخیص شده را آنالیز کند و به عبارتی پارامترهایی مثل اینکه صدای تشخیص داده شده مربوط به انسان است یا حیوان، آیا صدای تشخیص داده شده مربوط به فرد X است یا Y و … شاید برایتان هیجان انگیز باشد که این سیستم چطور کار میکند که توصیه میکنم اگر به این مبحث علاقهمند هستید حتما بحث پردازش سیگنالهای دیجیتال را یاد بگیرید و یکی از بهترین نرمافزارهایی که میتواند به شما کمک کند نرمافزار Matlab است. و اگر به دنبال پیادهسازی سختافزاری برای این کار هستید توصیه میکنیم که از تراشههای FPGA شرکت Xilinx و یا از DSP های قدرتمند شرکت TI استفاده کنید.
شاید برای شما مفید باشد: آموزش FPGA
دقت کنید که در این پروژه میخواهیم تشخیص صدا را توسط آردوینو انجام دهیم نه پردازش صوت.
معرفی ماژول تشخیص صدا
ویژگیای سخت افزاری
خب پس از اینکه با این ماژول آشنا شدیم نوبت به راهاندازی این ماژول رسیده است.
معرفی پایههای ماژول تشخیص صدا
راهاندازی ماژول تشخیص صدا با آردوینو
وسایل مورد نیاز جهت راهاندازی ماژول تشخیص صوت با آردوینو
نحوه اتصال ماژول تشخیص صدا به آردوینو
خب پس از اینکه ماژول را طبق تصویر بالا به آردوینو متصل کردیم. نوبت به برنامه نویسی ماژول میرسد.
برنامه نویسی ماژول تشخیص صدا با آردوینو
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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 استفاده کنیم.
برنامه هم دقیقا مثل برنامه بالا است با این تفاوت که پین متصل به آردوینو و ماژول فرق میکند که اگر به تصویر دقت کنید متوجه این اتصالات خواهید شد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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 های شما واکنش میدهند که در نوع خودش بسیار جذاب است) و یا پروژه تشخیص صدای محیط اطراف تا شعاع مشخص و … که انجام هر یک از آنها کاملا بستگی به خلاقیت شما در برنامهنویسی دارد.
امیدوارم که این آموزش هم برای شما مفید واقع شده باشد.
سلام من میخوام کاری کنم که اگه کسی نزدیک موقعیتی شد و یا صدای شنید بازر آلارم بده درواقع از اولتراسونیک، بازر و این سنسور استفاده میخوام بکنم به نظرتون منطقی هست یا روش های بهتری هست؟ بعد خروجی آنالوگ این سنسور مگه نباید با analogread خونده بشه توی مقاله چیز دیگه ای هست
چرا از سنسور های PIR استفاده نمی کنید ؟
ببخشید من یه اردوینو نانو دارم و می خوام توسط این سنسور یک led رو روشن کنم و تمام قطعات را درست به هم وصل می کنم و برنامشو رو اردوینو اپلود می کنم ولی led همون طور خاموش می مونه و هیچ واکنشی نسبت به صدا نشون نمی ده ولی وقتی اردوینو را فشار می دم یا تکون می دم led جدا از سنسور روشن می شه. شما می تونید راهنماییم کنید؟
احتمالا نویز دستتون باعث روشن شده میشه !
حساست میکروفون رو تغییر بدید شاید مشکل از اون باشه
در بخش دوم میشد کد بهتری نوشت و بهتر تمایز رو توضیح داد پایهa0 برای راه اندازی بصورت انالوگ هست و اگر به ورودی انالوگ اردوینو متصل کنیم میتوانیم مقادیر انالوگ رو در سریال ببینیم در واقع برای پروژه ای که گفتید تماسز بین صدای شخصxوy میتوان از این روش استفاده کرد به این صورت که مثلا شخص اول یک مقدار انالوگ رو به ما میده و شخص بعد مقدار دیگر و با چک کردن این دو عدد انالوگ در یک شرط میتوان تشخیص داد صدا متعلق به کیست؟!
اما نکته ای که هست کیفیت اصلا خوبی این ماژول نداره و من که ازش راضی نبودم.
ممنون از سایت خوبتون
سلام دوست عزیز بله اگر ریز تر به قضیه نگاه کنیم حرف شما صحیح تره و ممنونم بابت ریز بینیتون در مورد کیفیت صدایی که گفتید همونطوری که عرض کردم برای تشخیص صدا گزینه بدی نیست برای کارای ازمایشگاهی و … اما اگر به صورت حرفه ای بخواهید کار کنید توصیه بنده اینکه سراغ ماژول های دیگه ای که توی بازار هستند برید و استفاده کنید.
باز هم متشکرم از اینکه ما رو با نظرات خودتون خوشحال می کنید.
موفق باشید.
آقا زشته این چه پروژه ایه????
خوب الکترونیک از آسون شروع میشه تا سخت :دی