در این راهنما، نحوه استفاده از سنسور اولتراسونیک HC-SR04 با ESP32 و ESP8266 را برای رسیدن به فاصله تا یک شی با استفاده از سیستم عامل MicroPython یاد خواهید گرفت. این آموزش نحوه اتصال سنسور به بردهای ESP32 و ESP8266 را پوشش میدهد و یک اسکریپت ساده MicroPython برای رسیدن به فاصله تا یک شی و نمایش آن بر روی یک صفحه نمایش OLED ارائه میدهد. به منظور آپلود کد ها و برنامه نویسی در این پروژه از نرمافزار upycraft استفاده خواهیم کرد. در ادامه ساخت فاصله سنج با میکروپایتون با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
ماژول نمایشگر Oled 1306
نمایشگر OLED به واسطه تولید رنگهای اورگانیک و یا همان طبیعی و مصرف انرژی بسیار ناچیز، مورد توجه هستند. معمولا در پروژه های اینترنت اشیا و دیگر پروژه های امبدد از برای نمایش متن و مقادیر مختلف از نمایشگرهای Oled استفاده میشود. این ماژول ها در انواع مختلف بسته به نوع درایور راندازه یافت میشوند که یکی از پرطرفدارترین آن ها نمایشگر OLED با SSD1306 است.
ماژول فاصله سنج SRF
این نوع از ماژولهای فاصله سنج در انواع مختلفی تولید می شوند، که از محبوب ترین آن ها میتوان SRF-04 و SRF-05 را نام برد. نحوه کارکرد این ماژول ها با استفاده از دو نوع قطعه آلتراسونیک است که بر روی ماژول قرار دارد. یکی فرستنده امواج فراصوت و دیگری گیرنده امواج است. امواج التراسونیک بر اساس زمان ارسال بازخورد امواج، قادر به محاسبه فاصله تا جسم خواهد بود. همان طور که ذکر شد در این ماژول دو نوع قطعه التراسونیک وجود دارد که یکی از آن ها از نوع T یا فرستنده و دیگری از نوع R یا دریافت کننده است. پس ماژول به این صورت کار می کند که با ارسال و دریافت امواج التراسونیک فاصله با اجسام را در نهایت قابل محاسبه می کند.
وسایل مورد نیاز
شرح پروژه فاصله سنج با میکروپایتون
در این پروژه با استفاده از برد ESP32 و سنسور التراسونیک و همچنین با استفاده از زبان برنامه نویسی میکروپایتون دو سناریو فاصله سنجی به کمک این قطعات را اجرا خواهیم کرد تا بصورت مستقل و به کمک نمایشگر Oled این مقادیر بدست آمده برای کاربر نمایش داده شوند. در این پروژه از دو کتابخانه و یک فایل کد اصلی استفاده خواهیم کرد. کتابخانه مد نظر برای راهاندازی سنسور التراسونیک و نمایشگر به دلیل اینکه موجود نیستند پس خود آن ها را ساخته و همزمان در برد آپلود میکنیم.
اتصالات پروژه
در پروژه فاصله سنج با میکروپایتون سنسور اولتراسونیک HC-SR04 همانطور که در نمودار شماتیک زیر نشان داده شده است به ESP32 متصل می کنیم. در این شماتیک با توجه به کد پروژه پین Trig را به GPIO 5 و پین Echo را به GPIO 18 متصل می کنیم، اما می توانید از هر پین دیگری نیز استفاده کنید در صورت تغییر کد. همچنین در ادامه پین های نمایشگر Oled به پین های GPIO 21 و GPIO 22 در ESP32 متصل خواهند شد.
کد های پروژه فاصله سنج با میکروپایتون
کد های پروژه فاصله سنج با میکروپایتون شامل سه بخش میشوند، دو فایل برای راهاندازی نمایشگر و سنسور التراسونیک و اسکریپت اصلی برای اجرای سناریوی مدنظر. بخش اول کد های مرجع برای راهاندازی نمایشگر oled و srf04 را در ادیتور خود به عنوان فیل جدید در کنار پروژه اصلی که در ادامه معرفی خواهد شد، قرار دهید.
کد مربوط به راهاندازی SRF-04 در محیط میکروپایتون
راه های متعددی برای رسیدن به فاصله تا یک شی با استفاده از برد HC-SR04 و ESP32 با استفاده از MicroPython وجود دارد. ما از کتابخانه MicroPython HC-SR04 استفاده خواهیم کرد که رابط کاربری سنسور و اندازه گیری را آسان می کند. کتابخانه ای که ما استفاده خواهیم کرد به طور پیش فرض بخشی از کتابخانه استاندارد MicroPython نیست. بنابراین، باید کتابخانه زیر را در برد ESP32 خود آپلود کنیم در ادامه این کد را همانطور که ذکر شد با نام hcsr04.py ذخیره کنید.
import machine, time from machine import Pin class HCSR04: def __init__(self, trigger_pin, echo_pin, echo_timeout_us=500*2*30): self.echo_timeout_us = echo_timeout_us self.trigger = Pin(trigger_pin, mode=Pin.OUT, pull=None) self.trigger.value(0) self.echo = Pin(echo_pin, mode=Pin.IN, pull=None) def _send_pulse_and_wait(self): self.trigger.value(0) time.sleep_us(5) self.trigger.value(1) time.sleep_us(10) self.trigger.value(0) try: pulse_time = machine.time_pulse_us(self.echo, 1, self.echo_timeout_us) return pulse_time except OSError as ex: if ex.args[0] == 110: raise OSError('Out') raise ex def distance_mm(self): pulse_time = self._send_pulse_and_wait() mm = pulse_time * 100 // 582 return mm def distance_cm(self): pulse_time = self._send_pulse_and_wait() cms = (pulse_time / 2) / 29.1 return cms
کد مربوط به راهاندازی نمایشگر Oled در محیط میکروپایتون
محدودیت در دسترسی کامل به این مجموعه آموزش
دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندسهای دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید. |
نتیجه نهایی
در نهایت پس از آپلود کد های مربوط به کتابخانه ها و انجام تمام مراحل ذکر شده، در صورتی که مشکلی در مراحای انجام شده نباشد، با اتصال برد به سیستم یا تغذیه کردن برد، موارد مورد نظر یعنی مقادیر بدست آمده از سنسور التراسونیک به واحد سانتی متر در نمایشگر oled نمایش داده خواهند شد. همچنین قادر خواهیم در صورت نیاز این مقادیر را در ترمینال نرمافزار مورد استفاده که در این آموزش upycraft است، نمایش دهیم.
کلام آخر با سایفر
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.