آموزش رزبری پای رزبری پای

راه اندازی سنسور آلتراسونیک با رزبری پای پیکو PICO و Thonny Python

srf-with-raspberry-pi-pico-and-thonny-python-digispark
نوشته شده توسط پریسا پوربلورچیان

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

راه اندازی سنسور فاصله سنج آلتراسونیک SRF با رزبری پای پیکو - دیجی اسپارک

 


رزبری پای پیکو


برد رزبری پای پیکو از کوچکترین قطعات برای پشتیبانی از تراشه RP2040  استفاده کرده است از کریستال گرفته تا منبع تغذیه. اکثر پایه های میکروکنترلر RP2040 از چپ و راست به برد و پایه های IO آورده شده و چهار پایه IO از RP2040 برای عملکردهای داخلی استفاده می‌شود. تکنولوژی ساخت برد رزبری پای پیکو و پایه های GPIO به صورتی است که قابلیت نصب بر روی مکان های دیگر برای اجرا و ساخت پروژه ها را دارد. برای اینکار از ۴۰ ردیف پین هدر استاندارد با فاصله ی ۰٫۱ از یکدیگر قرار گرفته شده است و حتی متناسب با تمامی برد بردهای استاندارد می‌باشد. پیکو از یک BUCK-BOOST SMPS برای تامین ولتاژ ۳٫۳ ولت برای تعذیه RP2040 و مدار داخلی بهره میبرد. به همین دلیل انعطاف پذیری قابل توجهی برای اعمال ولتاژ وجود دارد و  به راحتی میتوانید از تغذیه باتری لیتیومی تک سل و یا باتری ۳ سل AA استفاده کنید.

برد رزبری پای پیکو Pico راه اندازی اولیه - دیجی اسپارک

 


سنسور آلتراسونیک SRF04


سنسور آلتراسونیک SRF04 یک سنسور فاصله است که با استفاده از امواج صوتی با فرکانس بالا که به عنوان آلتراسونیک شناخته می‌شوند، فاصله را اندازه‌گیری می‌کند. این سنسور از تکنولوژی ارسال و دریافت امواج صوتی برای تشخیص فاصله بهره می‌برد و براساس زمان لازم برای بازتاب امواج صوتی از یک سطح مقابل به سنسور، فاصله را تخمین می‌زند.SRF04 دارای یک ترانسیور الکترونیکی است که به صورت موج مستطیلی سیگنال‌های صوتی با فرکانس ۴۰ کیلوهرتز را ارسال می‌کند. سپس با استفاده از میکروفونی که در سنسور وجود دارد، سیگنال بازتابی را که توسط اجسام موجود در مسیر بازتاب می‌شود، تشخیص می‌دهد. با توجه به زمان لازم برای بازتاب سیگنال، سنسور می‌تواند فاصله را محاسبه کند.SRF04 با ولتاژ تغذیه ۵ ولت عمل می‌کند و خروجی خود را به صورت سیگنال پالس تحویل می‌دهد. این سیگنال پالس می‌تواند به صورت آنالوگ یا دیجیتال باشد و بسته به نحوه تنظیم سنسور، می‌تواند فاصله را به صورت مستقیم (به طور مثال به سانتیمتر) یا به صورت مقیاس شده (به عنوان مثال بازه‌ای از ۰ تا ۲۵۵) ارائه دهد.از سنسور SRF04 در بسیاری از پروژه‌ها و کاربردها استفاده می‌شود، از جمله رباتیک، اتوماسیون خانگی، سامانه‌های امنیتی و ردیابی فاصله.سنسور SRF04 دارای ویژگی‌هایی است که آن را برای استفاده در برخی از کاربردها مناسب می‌کند:

  • دقت: سنسور SRF04 دقت بالایی در اندازه‌گیری فاصله دارد. با توجه به فرکانس بالای امواج صوتی که استفاده می‌شود، امکان اندازه‌گیری دقیق فاصله را فراهم می‌کند.
  • محدوده اندازه‌گیری: SRF04 قادر به اندازه‌گیری فواصل در بازه‌ای خاص است. معمولاً قابلیت اندازه‌گیری فواصل بین ۲ سانتیمتر تا ۴ متر را دارد. با انتخاب محدوده مناسب، می‌توان این سنسور را برای بسیاری از کاربردها استفاده کرد.
  • رابط استاندارد: سنسور SRF04 از رابط استاندارد PWM (Pulse Width Modulation) برای ارسال سیگنال خروجی استفاده می‌کند. این به معنای آن است که با استفاده از یک ورودی دیجیتال، می‌توان مقدار فاصله را به راحتی خواند.
  • سرعت بالا: سنسور SRF04 عملکردی سریع دارد و قادر به اندازه‌گیری فاصله با سرعت بالا است. این ویژگی آن را برای کاربردهایی که نیاز به پاسخگویی سریع دارند، مناسب می‌سازد.
  • قابلیت تنظیم: SRF04 قابلیت تنظیم و پیکربندی دارد. با تغییر تنظیمات، می‌توانید واحد اندازه‌گیری را (مثلاً سانتیمتر یا اینچ) و روش خروجی (آنالوگ یا دیجیتال) تغییر دهید، به نحوه کارکرد سنسور در محدوده‌های خاص می‌توانید تاثیر بگذارید.

 با استفاده از پین‌های دیجیتال و آنالوگ، به میکروکنترلرها متصل می‌شود. این ویژگی به شما امکان می‌دهد سنسور را به سیستم‌های مبتنی بر میکروکنترلر مختلفی مانند Arduino، Raspberry Pi و دیگر پلتفرم‌ها متصل کنید.سنسور SRF04 قدرت مصرف کمی دارد و از طریق ولتاژ تغذیه ۵ ولت عمل می‌کند. این ویژگی آن را مناسب برای کاربردهایی می‌کند که نیاز به مصرف انرژی پایین دارند و برای استفاده در سیستم‌های قدرت‌مند پردازشی مناسب است. سنسور SRF04 قابلیت عملکرد در شرایط مختلف را دارد. می‌توان از آن در محیط‌های دمایی مختلف و در صنایع مختلف مانند رباتیک، اتوماسیون خانگی، ردیابی فاصله و سیستم‌های امنیتی استفاده کرد. به طور کلی، سنسور SRF04 یک سنسور فاصله قدرتمند و با کارایی بالا است که برای اندازه‌گیری دقیق فواصل در برنامه‌ها و پروژه‌های الکترونیکی متنوع مورد استفاده قرار می‌گیرد.

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

Distance (in cm) = (elapsed time * sound velocity (340 m/s)) / 100 / 2

 

ویژگی های SRF04

  • ولتاژ کاری :+۵V DC
  • جریان : <2mA
  • جریان کاری: ۱۵mA
  • زاویه دید: <15°
  • رنج تشخیص فاصله : ۲cm – ۴۰۰ cm/1″ – ۱۳ft
  • رزولوشن : ۰٫۳ cm
  • اندازه گیری زاویه: ۳۰ degree
  • ورودی پهنای باند پایه تریگر: ۱۰uS
  • ابعاد : ۴۵mm x 20mm x 15m

 

سنسور آلتراسونیک مدل SRF04 از چهار پایه تشکیل شده است.

  • پایه‌ی ترنسمیتر پایه ی تریگر ارسال سیگنال می‌کند.
  • زمانیکه سیگنال یک شی را تشخیص داد، منعکس می‌شود.
  • سپس پایه ی ترنسمیتر یعنی پایه ECHO آن را دریافت می‌کند.
  • زمان بین ارسال و دریافت سیگنال به ما این اجازه را میدهد تا فاصله تا شی  را محاسبه کنیم.

 


پایه های آلتراسونیک


سنسورهای آلتراسونیک مانند SRF04 اغلب دارای چهار پایه هستند که عبارتند از:

  • Vcc (تغذیه): این پایه برای اتصال به منبع تغذیه مورد استفاده قرار می‌گیرد. معمولاً سنسورهای آلتراسونیک به ولتاژ ۵ ولت تغذیه می‌شوند، اما حتماً باید دیتاشیت سنسور مورد استفاده را بررسی کنید تا ولتاژ تغذیه صحیح را تعیین کنید.
  • GND (زمین): این پایه برای اتصال به سطح زمین سیستم استفاده می‌شود و برای ایجاد ارتباط الکتریکی مشترک مورد نیاز است.
  • Trig (تریگ): این پایه برای ارسال سیگنال تریگر به سنسور استفاده می‌شود. سیگنال تریگر به سنسور ارسال می‌شود تا امواج صوتی را ایجاد کرده و به فاصله مورد نظر بفرستد.
  • Echo (اکو): این پایه برای دریافت سیگنال اکو از سنسور استفاده می‌شود. سیگنال اکو، سیگنال بازتابی از اجسام موجود در مسیر امواج صوتی است که توسط سنسور دریافت می‌شود.

به طور کلی، پایه‌های آلتراسونیک با نام‌های Vcc، GND، Trig و Echo شناخته می‌شوند، اما همچنین ممکن است برخی از سنسورها دارای پایه‌های اضافی باشند که برای تنظیمات مختلف یا وظایف خاص مورد استفاده قرار می‌گیرند.

  • VCC: +5VDC
  • Trig : Trigger (INPUT)
  • Echo: Echo (OUTPUT)
  • GND: GND

 

سنسور آلتراسونیک SRF04 و رزبری پای پیکو - دیجی اسپارک

 


کدنویسی و تحلیل پایتون


برای کدنویسی میکروپایتون در قدم اول کتابخانه های Pin و Timer را فراخوانی می‌کنیم.

from machine import Pin, Timer
import utime

 

در قدم بعدی یک تایمر تنظیم می کنیم تا بتوانیم تابعی را که به طور منظم در یک بازه زمانی فراخوانی می شود ، استفاده کنیم.

timer = Timer()

 

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

trigger = Pin(14, Pin.OUT)

 

سپس پایه ی ترنسمیتر یعنی پایه ECHO سیگنال را دریافت کرده  و بع عنوان ورودی در برنامه تعریف می‌شود.

echo = Pin(15, Pin.IN)

 

همچنین از یک ال ای دی برای خروجی جهت اجرای دستورات شرطی به صورت خروجی در برنامه تعریف می‌کنیم.

led = Pin(16, Pin.OUT)

 

 سپس یک فانکشن برای دریافت فاصله از سنسور آلتراسونیک مینویسیم که با Timer رابطه ی مستقیمی دارد.

distance = 0

def get_distance(timer):
    global distance

 

سپس پایه ی تریگر High شده و برای مدت چند ثانیه صبر می‌کنیم.

 trigger.high()
    utime.sleep(0.00001)

 

سپس پایه echo LOW شده و تا زمانیکه سیگنال اکو توسط پایه ECHO تشخیص داده شود، صبر می‌کند.

 trigger.low()

 

در این بخش از دو تابع حلقه برای اندازه گیری مدت زمان ECHO استفاده می‌کنیم. برای اندازه گیری دقیق پارامتر از تابع utime.ticks_us() استفاده می‌کنیم.

تابع utime یک فانکشن برای دریافت زمان و تاریخ دقیق و اینتروال و برای تاخیرها برای ما در برنامه فراهم می‌کند.

 while echo.value() == 0:
        start = utime.ticks_us()
    while echo.value() == 1:
        stop = utime.ticks_us()

 

تفاوت بین زمان شروع و زمان پایان پایه echo، مدت زمان پالس اکو را برای ما محاسبه می‌کند. باتوجه به اینکه سنسور آلتراسونیک از صدا استفاده می کند می توانیم با آگاهی از سرعت صدا در هوا ، فاصله بین مانع و سنسور را محاسبه کنیم.

duration = stop - start
    distance = (duration * 0.0343 ) /2
    print("Distance:",distance,"cm")
    return distance

 

اکنون تایمر را مقدار دهی اولیه می کنیم و فرمان هر یک ثانیه اجرا شدن را به آن میدهیم.

timer.init(freq=1, mode=Timer.PERIODIC, callback=get_distance)

 

حال اگر بخواهیم دستورات شرطی به برنامه اضافه کنیم، به عنوان مثال اگر فاصله تشخیص شی کمتر یا بیشتر از ۱۰ سانتی متر باشد، یک خروجی برای ما فعال شود، از تابع if else استفاده می‌کنیم.

یک متغیر برای وضعیت تابع ال ای دی مشخص می‌کنیم، اگر led.value مقدار یک باشد، فعال و اگر led.value صفر باشد، غیرفعال است.

while True:
    if distance < 10:
        led.value(1)
    else:
            led.value(0)

 


 کد کامل برنامه پایتون


 

from machine import Pin, Timer
import utime

timer = Timer()
trigger = Pin(14, Pin.OUT)
echo = Pin(15, Pin.IN)
led = Pin(16, Pin.OUT)
distance = 0

def get_distance(timer):
    global distance
    trigger.high()
    utime.sleep(0.00001)
    trigger.low()
    
    while echo.value() == 0:
        start = utime.ticks_us()
    while echo.value() == 1:
        stop = utime.ticks_us()
        
   
    duration = stop - start
    distance = (duration * 0.0343 ) /2
    print("Distance:",distance,"cm")
    return distance


timer.init(freq=1, mode=Timer.PERIODIC, callback=get_distance)
while True:
    if distance < 10:
        led.value(1)
    else:
            led.value(0)

 

تصویر برنامه در Thonny به صورت زیر است.

 

برای اجرای برنامه ی نوشته شده آن را در ابتدا ذخیره کنید. دو روش برای ذخیره وجود دارد.

  • ذخیره بر روی سیستم مورد استفاده
  • ذخیره بر روی رزبری پای پیکو Raspberry Pi Pico

 سپس F5 را زده یا بر روی Run Current Script کلیک کنید. برنامه اجرا شده و در shell فاصله ی اندازه گیری شده نمایش داده می‌شود.

 


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


برای اتصال سنسور آلتراسونیک به رزبری پای پیکو فقط به چهار پایه نیاز داریم.

  • VCC
  • GND
  • TRIGGER
  • ECHO

پایه های رزبری پای پیکو به صورت زیر است که ما فقط به پایه های GP و ۳٫۳OUT و GND نیاز داریم.

 

  • پایه TRIGGER به پایه GP14 متصل شده است.
  • پایه ECHO به پایه GP15 متصل شده است.
  • پایه VCC به پایه ۳V3OUT متصل شده است.
  • پایه GND به پایه GND متصل شده است.

سنسور آلتراسونیک و برد رزبری پای پیکو Pico - دیجی اسپارک

 


وسایل مورد نیاز


رزبری پای پیکو RASPBERRY PI PICO

سنسور آلتراسونیک SRF04

ال ای دی LED

برد بورد BREADBOARD

کابل فلت

 

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

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

 

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

پریسا پوربلورچیان

تولید کننده محتوا / کارشناس IOT

زندگی یعنی پژوهش و فهمیدن چیزی جدید

تلاشم بر این است تجربیاتم در زمینه IOT‌ را به بهترین شکل با شما در میان بگذارم.

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

۹ دیدگاه

  • سلام ممنون که این اموزش ها رو میگذارین..واقعا تنظیم کردن این اموزش ها زحمت زیادی داره و وقت زیادی ازادم میگیره…فک کنم کاربا اردینوRP2040 راحت تراز رزبری بیکو باشه من با لایبری هاش مشکل دارم شما از کجا دانلود کردید

    • با سلام
      سپاس از همراهی شما کاربر گرامی
      هر دو جذابیت و تجربه های خاص خودشان را دارند که میتوانید ایده های متفاوتی را اجرا کنید. چه کتابخانه ای مد نظرتان است؟

  • با سلام
    نمونه کدهایی در اینترنت دیدم کمتر از تابع def استفاده شده آیا دلیلی برای استفاده شما وجود دارد

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