تحلیل کتابخانه

تحلیل و بررسی کتابخانه AudioFrequencyMeter.h

audiofrequencymeter-h-arduino-library-digispark
نوشته شده توسط معین صابری

در مجموعه آموزش های تحلیل و بررسی کتابخانه های آردوینو، این قسمت را به یکی از کتابخانه های کاربردی اختصاص می دهیم. حتما در رابطه با فرکانس مترها اطلاع دارید. فرکانس مترها ابزاری جهت سنجش میزان فرکانس ورودی به شمار می روند. به کمک این ابزار می توانید میزان تغییرات موج و نمودار گرافیکی آن را ترسیم نمود. یکی از مهم ترین امواج موجود در فضای اطراف ما، امواج صوتی هستند. زمانیکه صدایی را می شنویم، در حقیقت انرژی حاصل از موج و برخورد آن به مولوکول های هوا، سبب شنیدن صدا توسط گوش ما می شود.

سنجش اموا صوتی از حیث فرکانس، موردی پرکابرد در صنایع و پروژه های مختلف است. به کمک اندازه گیری فرکانس امواج صوتی، می توانیم داده های بسیاری را گرد آوری کنیم. یکی از ابزارهای مهم جهت سنجش فرکانس صوت، استفاده از میکروکنترلرها با توجه با قابلیت ها و امکانات درونی آن هاست. در کنار این، صرف وجود میکروکنترلر کافی نیست. در این آموزش به کمک کتابخانه AudioFrequencyMeter  می توانیم به تحلیل امواج صوتی و فرکانس آن ها بپردازیم. مطابق رویه معمول، ابتدا به نحوه نصب کتابخانه، الزامات فنی و سپس توابع کلیدی خواهیم پرداخت. در نهایت با ارایه مثال، نحوه استفاده از توابع را در برنامه های کلیدی خواهیم آموخت. در ادامه آموزش تحلیل کتابخانه با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

 


نصب کتابخانه AudioFrequencyMeter.h


همانطور که اطلاع دارید، کتابخانه ها یکی از ابزارهای کلیدی و کاربردی در برنامه نویسی به شمار می روند. به کمک این ابزار، می توانیم توابع نوشته شده در فایلهایی به نام کتابخانه ذخیره کرده و سپس در پروژه های متعدد از آن استفاده کنیم.  همانطور که پیشتر گفته شد، برای راه اندازی و کار با ماژول کتابخانه توسعه داده شده است. برای استفاده از این کتابخانه، ابتدا باید آن را نصب کنیم. برای نصب کتابخانه در محیط آردویینو، ابتدا مطابق تصویر زیر بر روی گزینه Tools و سپس Manage Libraries کلیک کنید.

اصول نصب کتابخانه در آردوینو - دیجی اسپارک

 

پس از کلیک بر روی گزینه Manage Libraries، در صفحه ظاهر شده، در قسمت کادر جستجو، عبارت AudioFrequencyMeter.h را جستجو نموده و کتابخانه مشخص شده در تصویر زیر را نصب نمایید.

روش دانلود کتابخانه audiofrequencymeter آردوینو - دیجی اسپارک

 


الزامات و نکات فنی کتابخانه AudioFrequencyMeter.h


کتابخانه AudioFrequencyMeter.h، یک کتابخانه جهت دریافت و سپس تحلیل امواج صوتی در ورودی است. این کتابخانه می تواند پالس های صوتی در ورودی میکروکنترلر را شناسایی کرده و سپس فرکانس آن ها را تشخیص دهد. این کتابخانه بر روی بعضی از بردهای آردوینو قابل اجراست. به عبارت دیگر، این کتابخانه قابلیت اجرا روی بردهای معمول آردوینو نظیر UNO و یا MEGA را نداشته و تنها بر روی بردهای سری MKR و NANO33 قابل اجراست. از طرف دیگر، این کتابخانه سیگنال های صوتی را از طریق رابط ADC میکروکنترلر دریافت و سپس تحلیل می کند.

حال که با نصب و الزامات کتابخانه آشنا شدیم، نوبت به تحلیل و بررسی توابع کلیدی و کاربردی کتابخانه می رسد. این توابع در قسمت بعدی شرح و تفصیل می یابند.

 


توابع کلیدی و کاربردی کتابخانه AudioFrequencyMeter.h


پس از آشنایی با الزامات کتابخانه، نوبت به تحلیل و بررسی توابع کلیدی و کاربردی می رسد. جدول زیر شرح این توابع را نمایش می دهد.

شرح ورودی ها تابع
این تابع در حقیقت تابع سازنده کلاس کتابخانه است. بدون ورودی AudioFrequencyMeter()
این تابع ارتباط بین برد و سیگنال ورودی را تعیین و راه اندازی می کند. ورودی اول پایه جهت اتصال سیگنال موج ورودی و ورودی دوم نرخ نمونه برداری از سیگنال است. ورودی نخست جهت تعیین پایه ورودی

ورودی دوم جهت تعیین نرخ نمونه برداری

void begin(int pin, unsigned int sampleRate)
این تابع ارتباط با سیگنال ورودی را قطع کرده و روال اجرا کتابخانه را متوقف می سازد. بدون ورودی void end(void)
به کمک این تابع می توان clipping موج را تشخیص داد. پایه تعین شده در ورودی تابع جهت تعیین پارامتر است. ورودی جهت تعیین پایه void setClippingPin(int pin)
به کمک این تابع می توانید میزان آستانه دامنه موج را تعیین کنید. این آستانه در ورودی تابع قرار می گیرد. ورودی جهت تعیین آستانه void setAmplitudeThreshold(int threshold)
به کمک این تابع می توان میزان خطای تایمر جهت اندازه گیری موج را تعیین نمود. این خطا در ورودی قرار می گیرد. ورودی جهت تعیین میزان خطا void setTimerTolerance(int tolerance);
به کمک این تابع می توان میزان شیب موج  نسبت به محور افقی را تنظیم نمود. ورودی جهت تعیین میزان خطا void setSlopeTolerance(int tolerance);
به کمک این تابع می توان پهنای باند موج را تعیین نمود.. ورودی نخست حداقل و ورودی دوم حداکثر فرکانس موج را تعیین می کند. این تابع در حقیقت همانند یک فیلتر میان گذر عمل می کند. ورودی اول جهت تعیین حداقل فرکانس

ورودی دوم جهت تعیین حداکثر فرکانس

   void setBandwidth(float minFrequency, float maxFrequency)
این تابع فرکانس موج ورودی را اندازه گیری کرده و در خروجی خود قرار می دهد. بدون ورودی   float getFrequency(void)

 

در رابطه با توابع فوق و کتابخانه فرکانس متر صوتی، نکاتی وجود دارد. این نکات به شرح زیر بیان می شود.

۱-مفهوم clipping: زمانیکه موج از حداکثر مقدار خود خارج شود، این اصطلاح در رابطه با آن به کار برده می شود.

۲- مفهوم slope : میزان زاویه موج نسبت به سطح و محور افقی گفته می شود.

در کنار این، این کتابخانه دارای مقادیر پیش فرضی است. این مقادیر در زیر تعریف می شود.

ثابت تعریف شده کتابخانه مقدار پیشفرض پارامتر
DEFAULT_AMPLITUDE_THRESHOLD ۳۰ آستانه دامنه
DEFAULT_TIMER_TOLERANCE ۱۰ میزان خطای تایمر موج
DEFAULT_SLOPE_TOLERANCE ۳ میزان خطای slope
DEFAULT_MIN_FREQUENCY ۶۰ حداقل فرکانس موج
DEFAULT_MAX_FREQUENCY ۱۵۰۰٫۰۰ حداکثر فرکانس موج

 

پس از آشنایی با کتابخانه، توابع و ثوابت، نوبت به اجرای نمونه برنامه می رسد. همانطور که پیشتر هم گفته شد، این کتابخانه بر روی بردهای آردوینو سری MKR و NANO33IOT قابل اجراست. جهت اجرای نمونه برنامه، در سیستم عامل ویندوز، مسیر Documents->Arduino->Libraries->AudioFrequencyMeter را یافته و در قسمت Examples، برنامه نمونه را اجرا نمایید.

 


لوازم مورد نیاز


لینک خرید برد NANO33IOT، کلیک کنید

 


جمع بندی


فرکانس سنجی یکی از مهم ترین پروژه هایی است که با میکروکنترلرها انجام می گیرد. یکی از امواج مهم جهت سنجش، امواج صوتی هستند. با سنجش فرکانس امواج صوتی می توان به داده های مهمی دست یافت. در این آموزش به تحلیل و بررسی کتابخانه AudioFreqencyMeter پرداختیم. این کتابخانه به ما امکان می دهد که در بردهای مختلف MKR آردوینو و NANO33، فرکانس صوتی در ورودی را اندازه گیری نماییم. این آموزش به تحلیل کتابخانه پرداخت. در ابتدا نحوه نصب، الزامات فنی و بردهای مورد پشتیبانی از نظر گذرانده شد. در ادامه به تحلیل و بررسی توابع کلیدی و کاربردی کتابخانه، پرداختیم. در نهایت با معرفی مثال کتابخانه، بحث را به پایان بردیم.

چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند می‌توانید از همین طریق اطلاع رسانی کنید.

 

درباره نویسنده

معین صابری

کارشناسی ارشد رشته معماری سیستم های کامپیوتری

مالي که ز تو کس نستاند، علم است
حرزي که تو را به حق رساند، علم است
جز علم طلب مکن تو اندر عالم
چيزي که تو را ز غم رهاند، علم است
(شیخ بهایی)

تبادل نظر و رفع عیب با ثبت دیدگاه