سنسور آلتراسونیک قادر به تعیین فاصله غیرتماسی میباشد و میتواند بوسیله ارسال و دریافت امواج فراصوت فاصله از جسم مورد نظر را تعیین کند.همچنین میتوانیم از سنسور فاصله سنج آلتراسونیک بعنوان هشدار دهنده فاصله مجاز استفاده کنیم که کاربردهای فراوانی در زندگی روزمره دارد.
در این آموزش قصد داریم با ماژول آلتراسونیک و یک عدد بلندگو فاصلهسنج خودمون رو شرطی سازی کنیم.یعنی کاری کنیم که ربات یا هر وسیله ای که سنسور آلتراسونیک روش سوار هست از یه فاصله به این طرف یه واکنش خاصی از خودش نشون بده.
برای آشنایی بیشتر با ماژول آلتراسونیک کافی ست بدانید که این ماژول از دو قسمت فرستنده موج و گیرنده آن تشکیل شده است که سرعت موج رفت و برگشتی که مقدار مشخصی دارد ( و البته در محیط های مختلف , مقدار متفاوتی دارد ) را تقسیم بر زمان یک رفت و برگشت میکند و فاصله را نشان میدهد.
این واکنش میتونه به صدا در اومدن یک بلندگو باشه یا میتونه توقف موتور باشه یا میتونه هرچیز دیگه ای باشه. در این آموزش ما با به صدا درومدن یک بلندگو کار خودمون رو انجام دادیم.
تجهیزات مورد نیاز :
- میکروکنترلر آردوینو UNO
- سنسور فاصله سنج آلتراسونیک SRF05 (یا مشابه آن)
- بلندگو ( بلندگویی که در این آزمایش استفاده کردیم یکی از سنسورهای پکیج فروشگاه میباشد )
- برد بورد
- تعدادی سیم
برای شروع مطابق تصاویر زیر پایه های سنسور آلتراسونیک را روی برد بورد خود سوار کنید و سپس سیم ها را مطابق شکل به آردوینو متصل کنید :
پایه های التراسونیک را به ترتیب زیر متصل میکنیم :
- 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 راه بندازم .
با تشکر ممنون میشم پاسخ بدید
با سلام
ضمن تشکر از توجه شما، در این خصوص مشکلی ندارد، شما با رعایت پینهای آردوینو (آنالوگ و دیحیتال) میتوانید چند سنسور مختلف اتصال دهید.
نه مهندس منظورم این بود که ۳ سنسور اولترا سونیک رو میتونم با یک اردونیو راه بندازم
در این صورت هم مشکلی نخواهد داشت. البته بنده دیتاشیتها را بررسی نکردهام ولی این موضوع دور از دسترسی نیست.
استاد ببخشید
میشه وقتی چیزی نزدیک تر میشه بازر تند تند بزنه و وقتی کمی دور میشه بازر یواش بزنه
با سلام
ضمن تشکر از توجه شما، بله شدنی است.
سلام
دستور tone , notone در آردوینو DUE وجود ندارد چگونه از آن استفاده شود؟
با سلام و تشکر از شما
تا جایی که بنده اطلاع دارم، این کتابخانه برای برد آردوینو DUE کارایی ندارد. از دیگر کاربران که در این زمینه تجربه دارند، تقاضا میشود در تکمیل این بحث شرکت کنند.
سلام وقتتون بخیر ببخشید میشه لطف کنید راهنمایی کنید که اگر من از بیست سنسور التراسونیک برای تشخیص ترافیک استفاده کنم داده های سنسورها چگونه دریافت کنم به چه صورت می باشد؟
با سلام
در این خصوص در آموزش زیر به این مورد اشاره شده است.
آلتراسونیک
از بلندگوی هدفون میشه استفاده کرد؟
با سلام
خیر، آلتراسونیک یک سنسور مجزاست.