آردوینو آموزش آردوینو

آموزش راه اندازی ultrasonic و بلندگو

نوشته شده توسط محمدی

سنسور آلتراسونیک قادر به تعیین فاصله غیرتماسی می‌باشد و میتواند بوسیله ارسال و دریافت امواج فراصوت فاصله از جسم مورد نظر را تعیین کند.همچنین میتوانیم از سنسور فاصله سنج آلتراسونیک بعنوان هشدار دهنده فاصله مجاز استفاده کنیم که کاربردهای فراوانی در زندگی روزمره دارد.
در این آموزش قصد داریم با ماژول آلتراسونیک و یک عدد بلندگو فاصله‌سنج خودمون رو شرطی سازی کنیم.یعنی کاری کنیم که ربات یا هر وسیله ای که سنسور آلتراسونیک روش سوار هست از یه فاصله به این طرف یه واکنش خاصی از خودش نشون بده.
برای آشنایی بیشتر با ماژول آلتراسونیک کافی ست بدانید که این ماژول از دو قسمت فرستنده موج و گیرنده آن تشکیل شده است که سرعت موج رفت و برگشتی که مقدار مشخصی دارد ( و البته در محیط های مختلف , مقدار متفاوتی دارد ) را تقسیم بر زمان یک رفت و برگشت میکند و فاصله را نشان میدهد.
این واکنش میتونه به صدا در اومدن یک بلندگو باشه یا میتونه توقف موتور باشه یا میتونه هرچیز دیگه ای باشه. در این آموزش ما با به صدا درومدن یک بلندگو کار خودمون رو انجام دادیم.

تجهیزات مورد نیاز :

برای شروع مطابق تصاویر زیر پایه های سنسور آلتراسونیک را روی برد بورد خود سوار کنید و سپس سیم ها را مطابق شکل به آردوینو متصل کنید :

آلتراسونیک

آلتراسونیک

 

پایه های التراسونیک را به ترتیب زیر متصل میکنیم :

  • VCC to 5V
  • GND to GND
  • Trig to PIN7
  • Echo to PIN6

پایه های buzzer را به شکل زیر متصل میکنیم :

  • S to PIN4
  • (-) GND to

و حالا به سراغ برنامه قسمت برنامه نویسی برنامه میرویم :

int buzzer=4;
int echoPin=6;
int trigPin=7;
int sound = 120;

void setup() {
	// put your setup code here, to run once:
	Serial.begin (9600);
	pinMode(trigPin, OUTPUT);
	pinMode(echoPin, INPUT);
	pinMode(buzzer, OUTPUT);
}

void loop() {
	// put your main code here, to run repeatedly:
	long duration, distance;
	digitalWrite(trigPin, LOW); 
	delayMicroseconds(2);
	digitalWrite(trigPin, HIGH);
	delayMicroseconds(10);
	digitalWrite(trigPin, LOW);
	duration = pulseIn(echoPin, HIGH);
	distance = (duration/2) / 29.1;
	
	 if (distance > 30 || distance <= 0){
		Serial.println("Out of range");
		noTone(buzzer);
	}
	else {
		Serial.print(distance);
		Serial.println(" cm");
		tone(buzzer, sound);
	 
	}
}

شرح برنامه :

  • تعریف بلندگو :
    – buzzer به عنوان پین شماره ۴
  • تعریف متغییر های آلتراسونیک :
    – echoPin بعنوان پین شماره ۶
    – trigPin بعنوان پین شماره ۷
  • متغیر صدا برای تغییر Sound Tone
    – با مقدار دلخواه ۱۲۰
int buzzer=4;
int echoPin=6;
int trigPin=7;
int sound = 120;

در حلقه setup با دستور serial.begin 9600 ارسال اطلاعات سریال از میکروکنترلر به کامپیوتر ( با ماکسیمم سرعت ۹۶۰۰ بیت بر ثانیه ) را آغاز میکنیم .

Serial.begin (9600);

دو کمیت اعشاری long با نام های duration , distance را در حلقه void loop تعریف میکنیم تا صرفا در همین حلقه از آنها استفاده نماییم

در قدم بعدی ولتاژ trigPin را هر ۲ میکروثانیه وصل میکنیم و به مقدار ۱۰ میکروثانیه جریان را روشن یا (HIGH) قرار میدهیم.

کمیت duration را از echoPin میگیریم و مقدار آن را تقسیم بر دو , تقسیم بر ۲۹.۱ میکنیم. برای اینکه بدانید چرا از این اعداد استفاده کردم پیشنهاد می‌شود پست مربوط به سنسور آلتراسونیک را مطالعه فرمایید.

حال از دستور if استفاده میکنیم و مقدار به ازای مقدار distance بالاتر از ۳۰ سانتی متر , دستور serial.print مقدار distance و عبارت خارج از محدوده را تایپ میکنیم.

از دستور else برای مقادیر کمتر از ۳۰ سانتی متر استفاده میکنیم و مقدار ولتاژ پین شماره ۴ را با مقدار ۱۲۰ که در متغیر sound تعریف کردیم جای گذاری میکنیم. همچنین مقدار distance را چاپ میکنیم.

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

محمدی

دانشجوی رشته متولورژی و علاقه مند به علم و تکنولوژی

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

۱۶ دیدگاه

    • سلام جناب محمدی
      جسارتا برای ساخت یک نمونه از این قطعه نیاز به همکاری شما دارم , امکانش هست شماره تماس رو برام ایمیل بفرمایید یا با شماره ******* تماس بگیرید

  • خواهش میکنم دوست عزیز
    امیدوارم بتونیم از توانمندی ها و دانش همدیگه توی بستر دیجی اسپارک به خوبی بهره‌مند بشیم.

  • سلام
    میخوام بدون درایور ازین ماژول استفاده کنم
    ولی نمیدونم باید چیکار کنم
    فقط فرستنده و گیرنده دارم ک توی یک مجموعه هستش ازین ضد اب ها هستش
    بدون درایورش چجوری باید استفاده کنم؟
    ممنون

    • با سلام
      ضمن تشکر از توجه شما، برای این منظور باید دیتاشیت قطعه مورد نظرتان را بررسی کنید. سپس پروتکل ارتباطی را بر اساس اطلاعات دیتاشیت انتخاب کنید.

  • با سلام خدمت استاد بزرگوار
    این سوال ذهنمو درگیر کرده بودکه ایا میتونم ۳ یا ۴ تا سنسور رو با یک برد اردونیو uno راه بندازم .
    با تشکر ممنون میشم پاسخ بدید

  • استاد ببخشید
    میشه وقتی چیزی نزدیک تر میشه بازر تند تند بزنه و وقتی کمی دور میشه بازر یواش بزنه

    • با سلام و تشکر از شما
      تا جایی که بنده اطلاع دارم، این کتابخانه برای برد آردوینو DUE کارایی ندارد. از دیگر کاربران که در این زمینه تجربه دارند، تقاضا میشود در تکمیل این بحث شرکت کنند.

  • سلام وقتتون بخیر ببخشید میشه لطف کنید راهنمایی کنید که اگر من از بیست سنسور التراسونیک برای تشخیص ترافیک استفاده کنم داده های سنسورها چگونه دریافت کنم به چه صورت می باشد؟