سنسور آلتراسونیک، از سری سنسورهای پرمصرف و کاربردی برای تشخیص مانع، استفاده در ساخت مایع ریز، ساخت ربات و تولید موج آلتراسونیک است. از همین رو بسیاری از کاربران اقدام به راه اندازی آن با تمامی میکروکنترلرهای محبوب میکنند. در این آموزش روش راه اندازی و تست آلتراسونیک با رزبری پای پیکو را یاد خواهیم گرفت. در ادامه با مرجع تخصصی رزبری پای به زبان فارسی، دیجی اسپارک همراه باشید.
رزبری پای پیکو
برد رزبری پای پیکو از کوچکترین قطعات برای پشتیبانی از تراشه RP2040 استفاده کرده است از کریستال گرفته تا منبع تغذیه. اکثر پایه های میکروکنترلر RP2040 از چپ و راست به برد و پایه های IO آورده شده و چهار پایه IO از RP2040 برای عملکردهای داخلی استفاده میشود. تکنولوژی ساخت برد رزبری پای پیکو و پایه های GPIO به صورتی است که قابلیت نصب بر روی مکان های دیگر برای اجرا و ساخت پروژه ها را دارد. برای اینکار از ۴۰ ردیف پین هدر استاندارد با فاصله ی ۰٫۱ از یکدیگر قرار گرفته شده است و حتی متناسب با تمامی برد بردهای استاندارد میباشد. پیکو از یک BUCK-BOOST SMPS برای تامین ولتاژ ۳٫۳ ولت برای تعذیه RP2040 و مدار داخلی بهره میبرد. به همین دلیل انعطاف پذیری قابل توجهی برای اعمال ولتاژ وجود دارد و به راحتی میتوانید از تغذیه باتری لیتیومی تک سل و یا باتری ۳ سل AA استفاده کنید.
سنسور آلتراسونیک 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
کدنویسی و تحلیل پایتون
برای کدنویسی میکروپایتون در قدم اول کتابخانه های 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 متصل شده است.
وسایل مورد نیاز
رزبری پای پیکو RASPBERRY PI PICO
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.
سلام ممنون که این اموزش ها رو میگذارین..واقعا تنظیم کردن این اموزش ها زحمت زیادی داره و وقت زیادی ازادم میگیره…فک کنم کاربا اردینوRP2040 راحت تراز رزبری بیکو باشه من با لایبری هاش مشکل دارم شما از کجا دانلود کردید
با سلام
سپاس از همراهی شما کاربر گرامی
هر دو جذابیت و تجربه های خاص خودشان را دارند که میتوانید ایده های متفاوتی را اجرا کنید. چه کتابخانه ای مد نظرتان است؟
Pin, Timer
با سلام
سوال خود را مطرح کنید تا راهنمایی شود.
سلام امیدوارم خوب باشید
لینک دانلود کتابخانه Pin وTimer میخواستم
سپاس
با سلام
هر دو جز کتابخانه های پیشفرض هستند و نیازی به دانلود نیست.
با سلام
نمونه کدهایی در اینترنت دیدم کمتر از تابع def استفاده شده آیا دلیلی برای استفاده شما وجود دارد
با سلام
نوشتن تابع در برنامه کد را منسجم و یکپارچه تر خواهد کرد.
خوبیش اینه همون تکنیک آردوینو رو میشه اینجا هم پیاده کرد و سرعت یادگیری بیشتر میشه
با سلام
کاربر گرامی سپاس از همراهی شما
از اینکه تجربه خود را با دیگر کاربران به اشتراک میگذارید، صمیمانه سپاسگزاریم.