آموزش کامل راه‌اندازی ماژول آلتراسونیک HC‑SR04 با آردوینو + پروژه‌های کاربردی

راه اندازی ماژول آلتراسونیک HC-SR04 با آردوینو | آیا تا بحال چیزی در مورد پژواک یابی جانورانی مانند نهنگ, خفاش و… به گوشتان خورده است؟ در این مقاله که توسط خانه رباتیک ایران آماده شده می‌خواهیم با ماژول HC-SR04 به این قدرت پژواک یابی دست پیدا کنیم.

راه اندازی ماژول آلتراسونیک HC-SR04 با آردوینو

ماژول آلتراسونیک HC-SR04

ماژول آلتراسونیک HC-SR04

نگاهی اجمالی به HC-SR04

HC-SR04 یک ماژول اندازه گیری مقرون به صرفه با مصرف انرژی پایین و آسان برای استفاده در محدوده‌ای از ۲ سانتی متر (۱ اینچ) تا ۴۰۰ سانتی متر (۱۳ فوت) می‌باشد.

ولتاژ کاری این ماژول ۵ ولت و از دو ترنسدیوسر به عنوان سنسور آلتراسونیک که مبدل انرژی الکتریکی فرکانس بالا به موج صوتی (انرژی مکانیکی) و بلعکس است استفاده شده است.  حرف R (گیرنده) و حرف T (فرستنده) در کنار هر ترنسدیوسر چاپ شده است.

ولتاژ کاری: ۵V DC
جریان کاری: ۱۵mA
فرکانس کاری: ۴۰KHz
حداقل فاصله: ۲cm
حداکثر فاصله: ۴۰۰cm
دقت اندازه گیری: ۳mm
زاویه اندازه گیری: ۱۵ درجه
ابعاد: ۴۵*۲۰*۱۵ cm

معرفی پایه‌های ماژول HC-SR04

راه اندازی ماژول آلتراسونیک HC-SR04 با آردوینو

راه اندازی ماژول آلتراسونیک HC-SR04 با آردوینو

Vcc: پایه مثبت تغذیه ماژول می‌باشد.

Gnd: پایه منفی تغذیه ماژول می‌باشد.

Trig:  همانطور که از نام این پایه معلوم است برای تحرک کردن ماژول و ارسال امواج آلتراسونیک استفاده می‌شود.

Echo: پس از دریافت امواج بازتاب شده ماژول HC-SR04 از طریق این پایه برای ما دیتا ارسال می‌کند.

آموزشگاه خانه رباتیک ایران

پژواک (Echo) چیست؟

پژواک یا انعکاس (طنین) یعنی صوت پس از بازتاب از منبع با یک تأخیر زمانی به منبع خود برگردد و توسط گوش شخص یا گیرنده‌ای که در این مقاله ماژول HC-SR04 است دریافت شود.

ماژول HC-SR04 دقیقا بر همین اساس کار می‌کند یعنی یک موج صوتی با فرکانس ۴۰۰۰۰ Hz ارسال می‌شود که فراتر از دامنه شنوایی انسان است و مقداری از این امواج پس از برخورد با جسم مقابل بازتاب و توسط ترنسدیوسر گیرنده آشکار می‌شود.

به بیان دقیق‌تر زمانیکه پایه Trig را به مدت ۱۰ میکروثانیه High (+5v) نگه دارید ماژول شروع به ارسال ۸ پالس آلتراسونیک که برابر با سرعت صوت است می‌کند.

بلافاصله بعد از ارسال این ۸ پالس پایه Echo به High تغییر وضعیت می‌دهد و منتظر امواج بازتاب شده می‌ماند, بعد از دریافت اولین موج بازتاب شده پایه Echo به Low تغییر پیدا کرده و ما با استفاده از این فاصله زمانی رفت و برگشت موج آلتراسونیک و دانستن سرعت صوت می‌توانیم فاصله بین ماژول تا مانع را حساب کنیم چناچه در برابر ماژول HC-SR04 مانعی وجود نداشته باشد پایه Echo بعد از ۳۸ میلی ثانیه به طور خودکار به Low می‌شود.

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

شروع پروژه HC-SR04 با آردوینو:

راه اندازی ماژول آلتراسونیک HC-SR04 با آردوینو

راه اندازی ماژول آلتراسونیک HC-SR04 با آردوینو

قطعات مورد نیاز:

  1. برد بورد
  2. ماژول
  3. HC-SR04 برد آردوینو

سیم بندی پروژه:

راه اندازی ماژول آلتراسونیک HC-SR04 با آردوینو

راه اندازی ماژول آلتراسونیک HC-SR04 با آردوینو

طبق تصویر پایه‌های Vcc و Gnd ماژول را به Vcc و Gnd برد آردوینو و پایه‌های Trig و Echo به ترتیب به پایه‌های ۶ و ۵ آردوینو متصل می‌شوند.

کد نویسی برای ماژول آلتراسونیک:

برای نوشتن کد در نرم افزار آردوینو به دو حالت می‌توانیم عمل کنیم. روش دوم که مسیر راحت‌تر و با دقت بسیار بالاتری نسبت به روش اول است استفاده از کتابخانه NewPing و روش اول با استفاده از متد Pulsein و محاسبات انجام می‌شود.

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

فاصله = زمان * سرعت

سرعت صوت برابر است با ۳۴۳ متر بر ثانیه که اگر تبدیل به سانتی متر بر میکرو ثانیه کنیم برابر می‌شود با ۰.۰۳۴۳ حال با استفاده از ضرب زمان اندازه گیری شده در سرعت صوت, فاصله بین ماژول تا مانع حساب می‌شود ولی بعد از انجام تمام این نکات می‌بینیم که مسافت حساب شده اشتباه و بیشتر از مقدار واقعی است.

نکته‌ای که در نظر نگرفتیم این است که پایه Echo مدت زمان رفت و برگشت را به ما می‌دهد. ولی ما باید فقط یکبار این مسافت را حساب کنیم پس با نصف کردن فاصله خروجی درست بدست می‌آید.

طبق حرف‌هایی که در قسمت‌های بالا گفتیم و سیم بندی پروژه کد آردوینو به صورت زیر است:

راه اندازی ماژول آلتراسونیک HC-SR04 با آردوینو

در خط ۱ و ۲ به عبارت‌های TRIGGER_PIN و ECHO_PIN مقدار‌های ثابت ۶ و ۵ را اختصاص داده‌ایم.

در این قسمت پایه ۶ آردوینو به عنوان خروجی و پایه ۵ آردوینو به عنوان ورودی در نظر گرفته شده است همچنین مقدار بادریت سریال برای نمایش خروجی تنظیم شده است.

قسمت اصلی کد ما در این بخش است در ابتدا تاخیری ۰.۱ ثانیه برای کند شدن روند نمونه برداری و چاپ آن در مانیتور سریال گذاشته شده است, سپس طبق گفته‌هایمان پایه Trig ماژول به مدت ۱۰ میکرو ثانیه ۱ می‌شود و بلافاصله به وسیله دستور pulseIn() مدت زمانی که پایه Echo 1 می‌باشد را محاسبه و طبق فرمولی که بدست آوردیم فاصله را محاسبه می‌کنیم و در مانیتور سریال نمایش می‌دهیم.

روش دوم کتابخانه NewPing:

ابتدا  باید کتابخانه NewPing را دانلود و از مسیر Sketch => Include Library => Add.Zip Library کتابخانه فایل Zip کتابخانه NewPing را انتخاب و به پروژه خود اضافه کنید.

کتابخانه NewPing را می‌توانید از لینک دانلود کنید.

کتابخانه NewPing با استفاده از یک سری عملیات تخصصی باعث برطرف شدن باگ‌های و مشکلات احتمالی این ماژول خواهد شد و تا ۱۵ ماژول بصورت همزمان می تواند راه اندازی کند.

کد برنامه ماژول HC-SR04 با استفاده از کتابخانه NewPing را می‌توانیم اینگونه بنویسیم:

ابتدا باید کتابخانه NewPing را فراخوانی کنیم.

راه اندازی ماژول آلتراسونیک HC-SR04 با آردوینو

در خط‌های ۳, ۴و ۵ به عبارت‌های TRIGGER_PIN ,ECHO_PIN و MAX_DISTANCE  مقدار‌های ثابت ۶, ۵  و ۴۰۰ را اختصاص داده‌ایم که برای تعیین پایه‌های TRIGGER و ECHO متصل شده به آردوینو و ماکزیمم فاصله‌ای که می‌خواهیم بر حسب سانتی متر بسنجیم.

خط هشتم شئ از کتابخانه NewPing را با اسم Iransonar درست می کنیم. و عبارت‌های اختصاص داده شده را به ترتیب قسمت ورودی آن می‌نویسیم.

در خط ۱۳ مقدار بادریت سریال برای نمایش خروجی تنظیم شده است.

در این قسمت با تاخیر ۰.۱ ثانیه با استفاده از تابع ping_cm() فاصله ماژول تا جسم مورد نظر بر حسب سانتی متر در متغییر dis میریزیم و در مانیتور سریال نمایش می‌دهیم.

آموشگاه رباتیک ایران

همچنین شما برای اندازه گیری با دقت اعشار می‌توانید از تابع ping() استفاده کنید برای این کار کافیست کد‌های زیر را جایگزین خط‌های ۱۸, ۱۹ و ۲۰ کنید.

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

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

پروژه‌های کاربردی با HC‑SR04

اندازه‌گیری فاصله در زمان واقعی

با این سنسور می‌توانید فاصله تا اجسام مختلف رو در سریال مانیتور ببینید یا روی LCD نمایش بدهید.

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

وقتی جسمی خیلی نزدیک شد (مثلاً کمتر از ۳۰ سانتی‌متر)، بازر یا LED هشدار بدهد.

ربات پرنده یا خودروی هوشمند

سنسور HC‑SR04 می‌تواند در ربات‌های اجتناب از برخورد به کار بره.

عیب‌یابی و نکات مهم

مقدار ۰ یا نتایج عجیب:
بررسی اتصال و ولتاژ سنسور را انجام دهید.

نویز در اندازه‌گیری:
ممکن است داده‌های پراکنده داشته باشید؛ می‌توان از فیلتر میانگین یا مدین برای دقت بهتر استفاده کرد.

حداقل و حداکثر برد:
HC‑SR04 معمولاً بین ۲ تا حدود ۴۰۰ سانتی‌متر فاصله را اندازه می‌گیرد.

پرسش‌های متداول

چرا مقدار فاصله همیشه ۰ نمایش داده می‌شود؟
ممکن است پایه‌ها به درستی وصل نشده باشند یا سنسور در ارسال پالس مشکل داشته باشد.

آیا HC‑SR04 روی بردهای دیگر هم کار می‌کند؟
بله، این سنسور با ESP32، ESP8266 و Raspberry Pi هم قابل استفاده است.

چطور می‌تونم داده‌ها رو روی LCD نمایش بدم؟
کافیه داده فاصله را از سریال مانیتور خوانده و آن را روی LCD چاپ کنید؛ معمولاً از ماژول I2C LCD کمک می‌گیرند.

آیا HC‑SR04 برای اندازه‌گیری سرعت هم قابل استفاده است؟
بله، در پروژه‌های تحقیقاتی از آن برای اندازه‌گیری سرعت با تکنیک‌های زمانی نیز استفاده شده است.

“لطفاً سوالات خود را با ذکر عنوان مقاله ارسال کنید؛ تیم خانه رباتیک ایران در کنار شماست.”

آماده سازی فرم
لطفا صبر کنید

فرم ساز آسان

شعبه ساری:  خیابان مهدیه، نبش بهمن شرقی

  • شماره تماس: ۰۹۱۱۷۱۲۹۸۶۴

  • اینستاگرام: khanerobotic

شعبه بابل: پل کارگر به سمت کشوری، روبروی ماکروویو، جنب فروشگاه جانبو

  • شماره تماس: ۰۱۱۳۲۲۲۳۹۲۹ و ۰۹۱۱۹۵۱۴۸۸۲

  • اینستاگرام: salam.electronic

شعبه قائم شهر: خیابان ساری، بین یاس ۲۰ و ۲۲

  • شماره تماس: ۰۱۱۴۲۰۳۰۱۱۵ و ۰۹۱۱۷۴۵۵۹۷۲

  • اینستاگرام: salam.electronic