آردوینو, پروژه آردوینو

آموزش راه اندازی ماژول میکروفون FC-04 با آردوینو

آموزش راه اندازی ماژول میکروفون با آردوینو

اگر به دنبال راه اندازی ماژول میکروفون با آردوینو هستید ولی نمی‌دانید این کار را دقیقاً چه‌طور انجام دهید، این مطلب از بلاگ بهنام رباتیک را از دست ندهید.

فهرست مطالب

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

به طور کلی سنسورهای صدا قیمت پایین، کاربری آسان و توانایی‌های زیادی دارند به طوری که می‌توانند صداهای صحبت انسان‌ها، دست زدن آنها و همچنین باز و بسته شدن درها را تشخیص دهند.

شما می‌توانید از این سنسورها در پروژه‌های مختلف حساس به صدا بهره ببرید تا مثلاً با دست زدن یک چراغ را خاموش و روشن کنید.

میکروفون‌های الکتریکی چگونه کار می‌کنند؟

درون هر میکروفون، یک دیافراگم نازک و یک پوشش پشتی وجود دارد که در کنار یکدیگر حکم خازن را خواهند داشت.

نحوه کارکرد میکروفون‌های الکتریکی
نحوه کارکرد میکروفون‌های الکتریکی

زمانی که در میکروفون حرف می‌زنید، صدای شما امواجی را ایجاد می‌کند که دیافراگم را تکان می‌دهند و در نهایت آن را به لرزه در می‌آورند.

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

لوازم مورد نیاز برای پروژه راه اندازی ماژول میکروفون با آردوینو

در ادامه لوازم مورد برای این پروژه آورده شده است که شما می‌توانید با کلیک کردن روی هر دکمه، کالای مدنظر خود را خریداری کنید.

مروری بر سخت‌افزار پیش از آغاز پروژه راه اندازی ماژول میکروفون با آردوینو

سنسور صدا یک برد کوچک دارد که به میکروفون 50 هرتز تا 10 کیلوهرتز و چند مدار پردازشگر مجهز شده تا امواج صوتی را به سیگنال‌های الکتریکی تبدیل کند.

این سیگنال الکتریکی در ادامه به مقایسه‌کننده فوق دقیق LM393 می‌رسد تا به سیگنال دیجیتال تبدیل شده و به پین خروجی انتقال داده شود.

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

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

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

نکته: پتانسیومتر را بر خلاف عقربه‌های ساعت بچرخانید تا میزان حساسیت افزایش و طبق مسیر عقربه‌های ساعت بچرخانید تا میزان حساسیت کاهش یابد.

این ماژول دو LED دارد؛ زمانی که ماژول روشن می‌شود، LED پاور روشن خواهد شد و وقتی هم که شدت صدا از مقدار حساسیت تعیین شده بیشتر می‌شود، LED نشانگر روشن خواهد شد.

نمایی از ماژول میکروفون FC-04
نمایی از ماژول میکروفون FC-04

پین‌های سنسور صدا

VCC: با استفاده از این پین، قدرت لازم را به سنسور خواهید رساند. پیشنهاد می‌شود که ولتاژ بین 3.3 تا 5 ولت را به سنسور اعمال کنید.

GND: پین اتصال به زمین

OUT: زمانی که صدایی به سنسور نرسد، خروجی آن HIGH می‌شود و زمانی که صدایی را تشخیص می‌دهد، خروجی آن LOW خواهد شد. شما می‌توانید این پین را مستقیماً به هر پین دیجیتالی در هر بورد آردوینو یا رله متصل کنید.

پین‌های ماژول میکروفون FC-04
پین‌های ماژول میکروفون FC-04

سیم‌کشی مدار برای راه اندازی ماژول میکروفون با آردوینو

حالا بیایید سنسور صدا را به آردوینو وصل کنیم. این اتصالات تا حد زیادی ساده هستند. کار خود را با وصل کردن پین VCC ماژول به پین 5 ولت آردوینو شروع کنید و در ادامه پین اتصال به زمین (GND) ماژول و آردوینو را به هم بزنید. در نهایت پین خروجی (OUT) ماژول را به پین شماره 8 آردوینو وصل کنید. سیم‌کشی مدار را در تصویر زیر می‌بینید.

سیم‌کشی ماژول سنسور صدا به آردوینو
سیم‌کشی ماژول سنسور صدا به آردوینو

تعیین مقدار حساسیت برد برای راه اندازی ماژول میکروفون با آردوینو

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

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

مثال اول؛ تشخیص صدای معمولی پس از راه اندازی ماژول میکروفون با آردوینو

مثال ساده‌ای که در ادامه آمده، صدای دست زدن را تشخیص و پیامی را روی مانیتور سریال نشان می‌دهد. از این کد استفاده کنید تا در ادامه در مورد جزئیات آن صحبت کنیم.

				
					#define sensorPin 8

// Variable to store the time when last event happened
unsigned long lastEvent = 0;

void setup() {
	pinMode(sensorPin, INPUT);	// Set sensor pin as an INPUT
	Serial.begin(9600);
}

void loop() {
	// Read Sound sensor
	int sensorData = digitalRead(sensorPin);

	// If pin goes LOW, sound is detected
	if (sensorData == LOW) {
		
		// If 25ms have passed since last LOW state, it means that
		// the clap is detected and not due to any spurious sounds
		if (millis() - lastEvent > 25) {
			Serial.println("Clap detected!");
		}
		
		// Remember when last event happened
		lastEvent = millis();
	}
}
				
			

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

پیام خروجی سنسور صدا
پیام خروجی سنسور صدا

توضیح کد پروژه اول راه اندازی ماژول میکروفون با آردوینو

کدهای نوشته شده با معرفی پین آردوینو که به پین OUT سنسور صدا وصل گردیده، آغاز می‌شود.

				
					#define sensorPin 8
				
			

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

				
					unsigned long lastEvent = 0;
				
			

در قسمت Setup، پین خروجی سنسور را طوری تنظیم می‌کنیم که به عنوان ورودی فعالیت کند و یک ارتباط سریال به وجود بیاورد.

				
					pinMode(sensorPin, INPUT);
Serial.begin(9600);
				
			

در قسمت Loop، ابتدا خروجی سنسور را می‌خوانیم.

				
					int sensorData = digitalRead(sensorPin);
				
			

وقتی سنسور صدای بلندی را تشخیص می‌دهد که از مقدار حساسیت تعیین شده بیشتر است، خروجی را LOW معین خواهد کرد. با این حال، باید مطمئن باشیم که صدا حتماً صدای دست زدن است و ارتباطی با صداهای پس‌زمینه ندارد. بر این اساس، بعد از تعیین خروجی LOW، به مدت 25 میلی‌ثانیه صبر خواهیم کرد تا پیام Clap detected روی سریال مانیتور نمایش داده شود.

				
					if (sensorData == LOW) {
	if (millis() - lastEvent > 25) {
		Serial.println("Clap detected!");
	}
	lastEvent = millis();
}
				
			

مثال دوم؛ کنترل دستگاه‌ها با صدای دست زدن در پروژه راه اندازی ماژول میکروفون با آردوینو

در پروژه بعدی، از سنسور صدا استفاده می‌کنیم تا با صدای دست زدن، یک دستگاه دارای قدرت AC را فعال نماییم.

این پروژه وسایل AC که از ماژول‌های رله تک کاناله بهره می‌برند را کنترل می‌کند.

سیم‌کشی پروژه دوم راه اندازی ماژول میکروفون با آردوینو

سیم‌کشی این پروژه بسیار آسان است.

هشدار: این برد با ولتاژ AC زیاد سروکار دارد. استفاده نادرست از آن ممکن است سبب جراحت شدید و یا حتی مرگ شود بنابراین صرفاً و حتماً کسانی آن را انجام دهند که دانش کافی در مورد ولتاژ زیاد دارند.

بیایید با اعمال نیرو به سنسور و ماژول رله کار خود را شروع کنیم. پین VCC ماژول را به پین 5 ولت آردوینو و پین اتصال به زمین (GND) ماژول را به پین اتصال به زمین (GND) آردوینو وصل کنید.

اینک پین خروجی (OUT) سنسور صدا را به پین دیجیتالی شماره 7 آردوینو بزنید و پین ورودی (IN) ماژول رله را به پین دیجیتالی شماره 8 آردوینو متصل نمایید.

به علاوه، می‌بایست ماژول رله را به دستگاه دارای قدرت AC که می‌خواهید کنترل کنید، وصل نمایید. ضمن اینکه باید خط جریان مستقیم را ببرید و یک طرف سیم بریده شده را به COM و طرف دیگر را به NO بزنید.

سیم‌کشی این مدار در ادامه آورده شده است.

سیم‌کشی سنسور صدا و رله با آردوینو
سیم‌کشی سنسور صدا و رله با آردوینو

کدهای آردوینو برای راه اندازی ماژول میکروفون با آردوینو

در ادامه کدهای مربوط به کنترل کردن یک دستگاه با صدای دست زدن آورده شده است.

				
					#define sensorPin 7
#define relayPin 8

// Variable to store the time when last event happened
unsigned long lastEvent = 0;
boolean relayState = false;    // Variable to store the state of relay

void setup() {
	pinMode(relayPin, OUTPUT);  // Set relay pin as an OUTPUT pin
	pinMode(sensorPin, INPUT);  // Set sensor pin as an INPUT
}

void loop() {
	// Read Sound sensor
	int sensorData = digitalRead(sensorPin);

	// If pin goes LOW, sound is detected
	if (sensorData == LOW) {

	// If 25ms have passed since last LOW state, it means that
	// the clap is detected and not due to any spurious sounds
	if (millis() - lastEvent > 25) {
		//toggle relay and set the output
		relayState = !relayState;
		digitalWrite(relayPin, relayState ? HIGH : LOW);
	}

	// Remember when last event happened
	lastEvent = millis();
	}
}
				
			

وقتی کدها را وارد کردید، هر بار که دست می‌زنید، سنسور باید دستگاه را روشن و خاموش کند.

توضیح کد پروژه دوم راه اندازی ماژول میکروفون با آردوینو

اگر این کد را با کدهایی که قبل‌تر داده بودیم مقایسه کنید، متوجه شباهت‌هایی می‌شوید هرچند تفاوت‌های ناچیزی نیز به چشم می‌خورد.

در ابتدا پین آردوینو که به پین ورودی یا کنترل (IN) رله متصل می‌شود را مشخص می‌کنیم. ضمن اینکه متغیر تازه ایجاد شده relayState که وضعیت رله را ذخیره می‌کند را تعریف می‌کنیم.

				
					#define relayPin 7

boolean relayState = false;
				
			

در قسمت Setup، متغیر relayPin به عنوان خروجی مشخص می‌شود.

				
					pinMode(relayPin, OUTPUT);
				
			

حالا هر وقت صدای دست زدن ایجاد می‌شود، به جای اینکه روی سریال مانیتور پیامی نمایش داده شود، وضعیت رله تغییر خواهد کرد.

				
					relayState = !relayState;
digitalWrite(relayPin, relayState ? HIGH : LOW);
				
			

عیب یابی پروژه راه اندازی ماژول میکروفون با آردوینو

اگر سنسور به خوبی کار نمی‌کند، راهکارهای زیر را انجام دهید:

  • پین تغذیه را چک کنید چرا که ماژول میکروفون مجهز به مدار آنالوگ است که نسبت به نویز در منبع تغذیه حساسیت دارد.
  • میکروفون الکتریکی قرار گرفته روی ماژول نسبت به لرزش‌های مختلف و نویز باد از خودش حساسیت نشان می‌دهد به همین خاطر باید آن را روی یک سطح مقاوم در برابر لرزش و تکان بگذارید تا جابه‌جا نشود.
  • سطح تشخیص صدای این سنسور صدا پایین است و شاید به 10 اینچ برسد به همین علت می‌بایست منبع صدا را به میکروفون نزدیک‌تر نمایید تا خروجی دقیق‌تری دریافت کنید.

1 دیدگاه در “آموزش راه اندازی ماژول میکروفون FC-04 با آردوینو

  1. mortezahsn گفت:

    نقشه مدار رو هم اگه میشه بزارید
    هم تصویر هم با پروتئوس

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *