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

راه اندازی سنسور فاصله سنج آلتراسونیک در Raspberry Pi

در این آموزش ابتدا معرفی مختصری در رابطه با سنسور فاصله سنج آلتراسونیک (Ultrasonic distance sensor) خواهیم داشت، سپس نحوه راه اندازی و روش اتصال این سنسور به بورد رزبری پای را آموزش خواهیم داد. همراه ما باشید و در انتهای آموزش سوالات خود را بپرسید، خیلی زود جواب خواهیم داد.


معرفی سنسور آلتراسونیک (Ultrasonic distance sensor)

سرعت صوت در هوا برابر با 343 متر بر ثانیه است. سنسور فاصله سنج آلتراسونیک (فراصوت) پالس‌هایی ارسال می‌کند که انسان‌ها قادر به شنیدن آن نیستند. این سنسور امواج صوتی منعکس شده از سوی جسم را تشخیص می‌دهد. در نتیجه بر مبنای سرعت صوت، فاصله از شی را محاسبه می‌کند. برای مشاهده لیست فروشندگان سنسور آلتراسونیک کلیک کنید.

سنسور آلتراسونیک (Ultrasonic distance sensor)

سنسور مورد استفاده در این آموزش سنسور آلتراسونیک SR-04 می باشد و پایه های آن به شکل زیر است:

سنسور آلتراسونیک (Ultrasonic distance sensor)


نحوه کابل‌کشی در رزبری پای

در شکل زیر نحوه سیم کشی به پین های بورد رزبری پای را مشاهده می کنید. سنسور آلتراسونیک به دو پین GPIO (یکی برای Echo و دیگری برای Trigger) ، پین زمین و پین 5V وصل می‌شود. استفاده از دو قطعه مقاوت الکتریکی (330 اُهم و 470 اُهم) به عنوان مقسم ولتاژ ضروری می باشد:

سیم کشی سنسور آلتراسونیک به رزبری پای


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

به منظور استفاده از سنسور آلتراسونیک در پایتون، باید بدانید پین‌های Echo و Trigger به کدام پین‌های GPIO وصل شده‌اند.

  • برای خواندن DistanceSensor از کد زیر استفاده کنید:
from gpiozero import DistanceSensor
ultrasonic = DistanceSensor(echo=17, trigger=4)
while True:
    print(ultrasonic.distance)

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


محدوده تشخیص (Range)

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

  • با استفاده از حلقه و زمانی که سنسور در محدوده و یا خارج از یک محدوده مشخص قرار دارد، پیام‌هایی منتشر کنید:
while True:
    ultrasonic.wait_for_in_range()
    print("In range")
    ultrasonic.wait_for_out_of_range()
    print("Out of range")

حالا دست‌تان را در مقابل سنسور تکان دهید؛ همزمان با اینکه دست‌تان به سنسور نزدیک و یا از آن دور می‌شود، پیام‌هایی با مضمون در محدوده (In range) و خارج از محدوده (Out of range) به شما نشان داده می‌شود.

  • محدوده پیشفرض 3/0 متر است. در زمان راه‌اندازی سنسور می‌توان محدوده تشخیص را هم پیکربندی کرد:
ultrasonic = DistanceSensor(echo=17, trigger=4, threshold_distance=0.5)

البته پس از ساخت سنسور و با تنظیم threshold_distance بر روی یک عدد مشخص، می‌توان محدوده تشخیص را تغییر داد:

ultrasonic.threshold_distance = 0.5
  • حلقه قبلی را مجددا امتحان کنید و محدوده جدید را مشاهده کنید.
  • توابع wait_for بلاک شونده هستند (blocking)؛ به عبارت دیگر این توابع برنامه را تا زمانی که اجرا شوند، متوقف می‌کنند. عمل دیگری که در هنگام ورود و خروج سنسور به محدوده می‌توانید انجام دهید این است که از ویژگی‌های when استفاده کنید؛ با استفاده از این ویژگی‌ می‌توانید در زمان اجرای کد، کارهایی در پس‌زمینه انجام دهید.

تعریف تابع محدوده تشخیص

در گام اول باید یک تابع برای برای زمانی که سنسور در محدوده قرار دارد و برای عملی که می‌خواهید انجام دهید ایجاد کنید:

def hello():
    print("Hello")

سپس ultrasonic.when_in_range را بر روی نام این تابع تنظیم کنید:

ultrasonic.when_in_range = hello
  • تابع دیگری برای زمانی که سنسور خارج از محدوده است ایجاد کنید:
def bye():
    print("Bye")

 ultrasonic.when_out_of_range = bye

پس از اجرای این کدها، زمانی که دست شما در محدوده مشخص شده قرار بگیرد پیام “hello” و زمانی که از محدود مورد نظر خارج شود “bye” نشان داده می‌شود.

  • اگر توجه کرده باشید فاصله سنسور بر روی 1 متر ثابت مانده است. به این دلیل که حداکثر فاصله پیشفرض 1 متر است و می‌توانید در زمان راه‌اندازی (setup) آن را پیکربندی کنید:
ultrasonic = DistanceSensor(echo=17, trigger=4, max_distance=2)

پس از راه‌اندازی هم می‌توانید آن را پیکربندی کنید:

ultrasonic.max_distance = 2
  • سعی کنید مقادیر مختلفی برای max_distance و threshold_distance تعیین کنید.

این مقاله چطور بود ؟
+1
3
+1
22
+1
0
مشاهده بیشتر

محمد حسنی

علاقمند به حوزه IoT و الکترونیک. در حال حاضر به مدت یکسال است که در تیم سخت افزار سازان نام آور به تولید محتوا مشغول هستم.

نوشته های مشابه

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

دکمه بازگشت به بالا