راه اندازی سنسور آلتراسونیک SR04 با آردوینو

آیا میدانستید با استفاده از سنسور آلتراسونیک SR04 میتوانید به پروژههای آردوینو خود قدرتی همانند قدرت خفاش دهید؟
قدرتی که ما در مورد آن صحبت میکنیم، امکان تشخیص اشیاء در فاصله 13 فوتی (حدود 4 متر) است. همانطور که خفاش میتواند بهراحتی این کار را انجام دهد، این سنسور نیز از چنین قابلیتی برخوردار است. اگر شما هم از خوردن رباتتان به دیوار میترسید، حتما به یکی از این سنسور ها نیاز خواهید داشت!
از جمله مزایای این سنسور کممصرف بودن (مناسب برای دستگاههای باتری دار)، قیمت ارزان و قابلیت ارتباط آسان با آن است. به علاوه، این سنسور بین کسانی که عاشق سرگرمی هستند، نیز بسیار شناخته شده است. البته نکته جالب در مورد این سنسور، شباهت عجیب آن به چشمان رباتهای وال ای (Wall-E) است.
در ادامه در مورد این سنسور و نحوه راهاندازی آن با آردوینو صحبت خواهیم کرد.
آلتراسونيك چيست؟
آلتراسونيك يك موج صوتي بوده كه فركانس آن بيشتر از محدوده شنوايي انسان است (موج فراصوت).

گوش انسان قادر به شنيدن امواج صوتي با نوسانات 20 تكرار در ثانيه (سر و صداي عميق) تا 20000 تكرار در ثانيه (سوت بلند) است. آلتراسونيك داراي فركانسي بيش از 20 كيلوهرتز بوده و بنابراين اين موج صوتي توسط گوش انسان قابل شنيدن نيست.
مرور سختافزاری ماژول سنسور آلتراسونیک SR04
هسته مركزي اين سنسور از دو ترنسديوسر آلتراسونيك تشكيل شده است. يكي از آنها بهعنوان فرستنده سيگنال الكتريكي را به پالسهاي صوتي آلتراسونيك 40KHz تبديل ميكند. گيرنده منتظر دريافت پالسهاي ارسالي ميشود. چنانچه چيزي دريافت كند، يك پالس در خروجي خود توليد ميكند. عرض اين پالس جهت تعيين فاصلهاي كه موج طي كرده است، استفاده ميشود.
سنسور آلتراسونیک SR04 اندازه كوچكی دارد و در پروژههاي رباتيك براي فاصله سنجي در رنج 2cm تا 400cm (يك اينچ تا 13 فوت) با دقت 3mm قابل استفاده است. ولتاژ كاري اين سنسور 5 ولت بوده و ميتوان آن را مستقیماً به آردوينو يا هر ميكروكنترلر 5 ولتي ديگري وصل نمود. مشخصات فني اين سنسور بهصورت زير است:
| DC 5V | ولتاژ كاري |
| 15mA | جريان كاري |
| 40KHz | فركانس كاري |
| 4m | ماكزيمم رنج فاصله سنجي |
| 2cm | مينيمم رنج فاصله سنجي |
| 3mm | دقت فاصله سنجي |
| 15degree | زاويه اندازه گيري |
| 10µS TTL pulse | سيگنال ورودي تريگر |
| 45x20x15mm | ابعاد |
پایه های سنسور آلتراسونيک HC-SR04
در اين بخش نگاهي به پينهاي ماژول داريم

- VCC : پين تغذيه ماژول بوده كه به پين 5 ولت آردوينو متصل ميشود.
- Trig : اين پين براي تريگر كردن پالس صوتي آلتراسونیك استفاده ميشود.
- Echo : وقتیکه سيگنال بازگشتي دريافت ميشود، اين پين يك پالس توليد ميكند. طول پالس متناسب با مدت زماني است كه طول كشيده تا سيگنال ارسالي دريافت شود.
- GND : پين زمين سنسور است كه به زمين آردوينو متصل ميشود.
سنسور فاصلهسنج آلتراسونيک HC-SR04 چگونه كار میكند؟
هنگامیکه يك پالس تريگر 10 ميكروثانيهاي به پين Trig اعمال شود، سنسور شروع به كار ميكند و 8 پالس صوتي 40KHz ارسال ميكند. الگوي اين رشته پالس 8 تايي بهنوعی امضاي يكتاي سنسور ارسالکننده امواج است و به گيرنده سنسور اجازه تشخيص سيگنال ارسالي همان سنسور را در بين ساير سيگنالهاي آلتراسونيكي كه احتمالاً در محيط وجود دارند، خواهد داد (نويز آلتراسونيكي محيط).
پالسهاي هشتتایی آلتراسونيك توسط فرستنده در هوا منتشر ميشوند. در همين حين، مقدار منطقي پين Echo بهصورت High خواهد شد تا فرايند دريافت سيگنال برگشتي را آغاز كند. چنانچه هيچ سيگنال برگشتي دريافت نشود، مقدار پين Echo پس از مهلت زماني 38 میلیثانیه مجدداً Low خواهد شد. بنابراين ميتوان گفت كه پالس 38 میلیثانیه به اين مفهوم است كه هيچ مانعي تا حد رنج نهايي فاصلهسنجي سنسور آشكار نشده است.

اگر پالسهاي ارسالي برگشت داده شوند، بهمحض دريافت توسط گيرنده سنسور مقدار پين Echo بهصورت Low خواهد شد. بنابراين بسته به مدتزمانی كه دريافت سيگنال برگشتي طول كشيده، يك پالس با عرض 150 ميكروثانيه تا 25 ميليثانيه توليد خواهد شد.

عرض پالس دريافتي براي محاسبه مسافت مانع روبرو مورداستفاده قرار ميگيرد. اين كار با استفاده از معادله فاصله-سرعت-زمان بهسادگی انجام ميشود. چنانچه اين رابطه را فراموش كردهايد، کافی است از شكل زير استفاده كنيد.

اجازه بدهيد براي روشن شدن موضوع از يك مثال استفاده كنيم. فرض كنيد مانعي در مقابل سنسور قرار دارد و عرض پالس پين Echo برابر 500 ميكروثانيه باشد. اكنون محاسبه ميكنيم كه مانع در چه فاصلهاي از سنسور قرار داشته است. از معادله زير استفاده ميكنيم:
Distance = Speed x Time
مقدار زمان را برابر 500µs داريم. سرعت صوت در هوا نيز برابر 340m/s است. براي محاسبه فاصله لازم است سرعت را برحسب cm/µs درنظر بگيريم. با كمك جستجوي Google بهسادگی ميتوانيد متوجه شويد كه سرعت صوت برحسب واحد مورد نظر 0.034cm/µs است. بنابراين فاصله بهصورت زير محاسبه ميشود:
Distance = 0.034 cm/µs x 500 µs
اما كار تمام نشده است! به ياد آوريد كه عرض پالس مشخصکننده زماني است كه سيگنال ارسال و پس از برخورد با مانع برگشت شده است. بنابراين لازم است نتيجه را بر 2 تقسيم كنيد.
Distance = (0.034 cm/µs x 500 µs) / 2
Distance = 8.5 cm
اكنون مشخص شد كه مانع پيش رو در فاصله 8.5 سانتيمتري سنسور بوده است.
برای راه اندازی سنسور آلتراسونیک SR04 با آردوینو به یکسری قطعات نیاز داریم که در ادامه به توضیح آنها می پردازیم.
قطعات مورد نیاز
- ماژول میکروکنترلر آردوینو UNO
- نمایشگر سبز 2*16 ال سی دی
- ماژول فاصله سنج SR04 چینی
- پین هدر 40*1 صاف نری
- سیم برد بوردی 65 تایی
- مینی برد بورد 400 سوراخ
- مقاومت 220 اهم 1/4 وات
- پتانسیومتر 5 کیلو اهم خوابیده
- کابل نری USB نوع A به نری USB نوع B
سیمکشی- راه اندازی سنسور آلتراسونیک SR04 با آردوینو
اکنونکه اطلاعات كافي در خصوص سنسور فاصلهسنج آلتراسونيك HC-SR04 را در اختيار داريم نوبت به بررسي نحوه اتصال آن به آردوينو فرا رسيده است.
راه اندازی سنسور آلتراسونیک SR04 با آردوینو بسيار ساده است. سنسور را بر روي برد قرار دهيد و پين VCC و GND آن را به ترتيب به پين 5 ولت و زمين آردوينو متصل كنيد. نتيجه كار باید شبيه به شكل زير شود:

اكنون به كد آردوينو براي تست و آزمون سنسور ميپردازيم.
كد آردوينو- استفاده از كتابخانه NewPing
بجاي تريگر كردن سنسور آلتراسونيك و اندازهگيري دستي عرض پالس سيگنال دريافتي در اين بخش از يك كتابخانه خاص استفاده ميكنيم. چندين كتابخانه براي اين كار وجود دارد كه متداولترین آنها كتابخانه “NewPing” نام دارد. ابتدا اين كتابخانه را از Bitbucket repo دانلود كنيد یا بهسادگی بر روي لينك زير براي دريافت فايل zip. آن كليك كنيد.
براي نصب اين كتابخانه نرمافزار Arduino IDE را باز كنيد و به Sketch > Include Library > Add .ZIP Library برويد و فايل دانلود شدهي NewPing.ZIP را انتخاب كنيد. اگر براي نصب كتابخانه به اطلاعات بيشتري نياز داريد آموزش Installing an Arduino Library را مشاهده كنيد.
كتابخانه NewPing کاملاً تخصصي بوده و به شكل قابل توجهي كارايي برنامه را بهبود ميدهد. اين كتابخانه ميتواند تا 15 سنسور را همزمان پشتيباني كند و خروجي را مستقیماً برحسب واحدهاي سانتيمتر، اينچ و فاصله زماني ارائه كند.
كد برنامه بهصورت زير است:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
|
خروجي برنامه بر روي سريال مانيتور بهصورت زير خواهد بود.

توضيح كد
برنامه بالا بسيار ساده بوده و بهخوبی كار ميكند. اما اين برنامه فقط داراي رزولوشن اندازهگيري يك سانتیمتر است. اگر بخواهيد فاصله را با دقت اعشار اندازهگيري كنيد ميتوانيد بجاي اينكه از NewPing در مد distance استفاده كنيد، آن را در مد duration بكار بگيريد. کافی است اين خط برنامه را
1 2 |
|
با خط زير جايگزين كنيد.
1 2 |
|
براي بهبود دقت اندازهگيري سنسور آلتراسونیک SR04 ميتوان از تابع ديگري به نام “iterations” از كتابخانه NewPing استفاده نمود. عنوان اين دستور به معني تكرار كردن بوده و بدين مفهوم است كه به سمت چيزي بيش از یکبار برويم و اين دقیقاً همان كاري است كه مد iteration mode انجام ميدهد. بجاي یکبار، چندين بار اندازهگيري انجام ميشود و قرائتهاي نامعتبر كنار گذاشته ميشود و متوسط بقيه اندازهگيريها در نظر گرفته ميشود. بهصورت پیشفرض، 5 بار اندازهگیری انجام خواهد شد. اما شما ميتوانید بهگونهای تنظیم كنيد که هر تعداد تمايل داريد، اندازهگيري شود.
1 2 |
|
فاصلهياب از راه دور (Contactless Distance Finder)
در اين بخش پروژهاي از نحوه بهکارگیری سنسور آلتراسونيك براي طراحي يك فاصلهسنج از راه دور ارائه ميشود. در اين پروژه از يك ال سي دي 2×16 كاراكتري براي ايجاد يك ميله افقي جهت نمايش گرافيكي فاصله تا مانع و درج عدد فاصله در زير آن استفاده ميكنيم. چنانچه با اين ال سي دي آشنايي نداريد، از جزوه آموزشي زير استفاده كنيد.
اكنون نوبت به اتصال LCD به شكل زير است:

قبل از آپلود كردن كد لازم است كتابخانه LCDBarGraph را نصب كنيم. اين كتابخانه به رسم بارگراف افقي بر روي LCD بطوريكه طول ميله (bar) متناسب با ارزش آن تغيير كند، كمك خواهد كرد. اين كتابخانه را ميتوانيد از Arduino Playground دانلود كنيد يا براي دانلود فايل آن، بر روی لينك زير كليك كنيد.
پس از نصب كتابخانه، از كد زير استفاده كنيد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
|
خروجي به شكل زير خواهد بود:

توضيح كد
ابتدا لازم است كتابخانه LiquidCrystal را فراخواني كنيد و در گام بعد LcdBarGraph را ايجاد كنيد. رفرنس LiquidCrystal بايد به تابع constructor مربوط به LcdBarGraph داده شود. اين constructor سه متغير اضافيتر نيز نياز دارد. دومين متغير، تعداد كاراكتر ستوني LCD است (كه در پروژه ما برابر 16 است). دو متغير آخر دلخواه هستند و با استفاده از آنها ميتوان موقعيت دلخواه نمودار میلهای را تنظيم نمود.
1 2 |
|
اكنون فاصله مانع تا سنسور محاسبه ميشود و با استفاده از تابع drawValue(value, maxValue) بارگراف بين 0 تا مقدار maxValue نمايش داده ميشود.
1 2 |
|
اتصال سنسور HC-SR04 با مد سه سيم (3-Wire Mode)
در مد سه سيم شما بجاي دو اتصال فقط به يك اتصال به پين ديجيتال I/O آردوينو نياز داريد. بسياري از سنسورهاي آلتراسونيك نظير سنسور parallax ping بر مبناي اين مد كار ميكنند. در مد سه سيم يك پين I/O تكي هم بهعنوان ورودي و هم بهعنوان خروجي عمل ميكند. اين نوع عملكرد به اين دليل قابل اجرا است كه هيچ موقع ورودي و خروجي بهصورت همزمان مورد استفاده قرار نميگيرند. با حذف نياز به يكي از پينهاي آردوينو، در حقيقت ميتوان از اين پين براي كاربردهاي ديگر استفاده نمود. بعلاوه، در مواقع استفاده از برخي چيپها نظير ATtiny85 كه داراي تعداد محدودي پين I/O هستند، استفاده از مد سه سيم ميتواند بسيار مفيد واقع شود.
در شكل زير نحوه اتصال سنسور آلتراسونيك HC-SR04 در مد سه سيم به آردوينو نمايش داده شده است.

همانگونه كه از شكل مشاهده ميشود هر دو پين Trig و Echo به پين شماره 9 آردوينو متصل شده است. تنها موردي كه در كد بايد اصلاح شود اين است كه پين شماره 9 براي هر دو پين Trig و Echo سنسور تعريف شود. باقی كد هيچ تفاوتي نخواهد داشت.
1 2 |
|
برای راه اندازی HC-SR04 چه محدوديتهایی وجود دارد؟
با در نظر داشتن دقت و عملكرد كلي ميتوان گفت كه HC-SR04 بخصوص در مقايسه با ساير سنسورهاي فاصلهسنج ارزانقیمت، كارايي بسيار خوبي دارد. البته به اين مفهوم نيست كه اين سنسور قادر به فاصله سنجي هر چیزی خواهد بود. در ادامه برخي از مواردی كه سنسور قادر به فاصله سنجي در آن موقعيت نیست را ارائه می دهیم.
- هنگامیکه فاصله بين سنسور و مانع بيشتر از 13 فوت (حدود 4 متر) باشد

- سطح مانع پيش رو صيقلي بوده و داراي خاصيت رفلكتي در زاويه كم باشد بهگونهای كه سيگنال صوتي ارسالي به سمت سنسور بازگشت داده نشود.

- اندازه مانع پيش روي سنسور آنقدر كوچك باشد كه سيگنال برگشتي به سمت سنسور بازگشت داده نشود. همچنين، اگر سنسور آلتراسونیک SR04 در پائين وسيله مورد نظر كار گذاشته شود، ممكن است هيچ سيگنالي از سمت سطح برگشت داده نشود.

- هنگام آزمايش با سنسور متوجه شديم كه برخي اجسام با سطح نرم و غیرمنظم (مانند حيوانات عروسكي)، بيشتر از آنكه سيگنال را برگشت دهند آن را جذب ميكنند و بنابراين تشخيص آنها براي سنسور مشكل خواهد بود.

تأثیر حرارت بر اندازهگیری فاصله
سنسور آلتراسونیک SR04 در اغلب پروژهها نظير سيستم تشخيص مهاجم و سيستم آلارم مجاورتي دقت قابل قبولي دارد. اما در مواردي ممكن است شما تمايل به طراحي سيستم فاصله سنجي در فضاي بيرون با شرايط دمايي غیرمعمول داشته باشد (خيلي گرم يا بسيار سرد). در چنين موقعيتهايي بايد دقت كنيد كه سرعت صوت در هوا بسته به ميزان دما، فشار و رطوبت تغيير خواهد كرد. با توجه به استفاده از مقدار سرعت صوت در هوا در محاسبه فاصله سنسور تا مانع، اندازهگيري سنسور در شرايط محيطي غيرمعمول تحت تأثیر قرار خواهد گرفت. چنانچه مقدار دما (C°) و رطوبت را داشته باشيد، سرعت صوت را میتوانيد از رابطه زير بدست آورید.
Speed of sound m/s = 331.4 + (0.606 * Temp) + (0.0124 * Humidity)
امیدواریم با استفاده از اطلاعاتی که در این مقاله به دست آورده اید، بتوانید به راحتی این سنسور قدرتمند را راه اندازی کنید و قدرت خفاش ها را تجربه کنید. اگر به راهنمایی بیشتری در این زمینه نیاز داشتید، می توانید با نوشتن دیدگاه خود با ما در ارتباط باشید.





