برد Esp32 میکروپایتون Micropython

پروژه ساخت فاصله‌سنج با ماژول SRF04 برد ESP32 و میکروپایتون

نوشته شده توسط CiferTech

در این راهنما، نحوه استفاده از سنسور اولتراسونیک HC-SR04 با ESP32 و ESP8266 را برای رسیدن به فاصله تا یک شی با استفاده از سیستم عامل MicroPython یاد خواهید گرفت. این آموزش نحوه اتصال سنسور به بردهای ESP32 و ESP8266 را پوشش می‌دهد و یک اسکریپت ساده MicroPython برای رسیدن به فاصله تا یک شی و نمایش آن بر روی یک صفحه نمایش OLED ارائه می‌دهد. به منظور آپلود کد ها و برنامه نویسی در این پروژه از نرم‌افزار upycraft استفاده خواهیم کرد. در ادامه ساخت فاصله سنج با میکروپایتون با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

فاصله سنج با میکروپایتون و ESP-Cam - دیجی اسپارک

 


ماژول نمایشگر Oled 1306


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

ماژول نمایشگر Oled 1306 در برنامه نویسی میکروپایتون - دیجی اسپارک

 


ماژول فاصله سنج SRF


این نوع از ماژول‌های فاصله سنج در انواع مختلفی تولید می شوند، که از محبوب ترین آن ‌ها می‌توان SRF-04 و SRF-05 را نام برد. نحوه کارکرد این ماژول ها با استفاده از دو نوع قطعه آلتراسونیک است که بر روی ماژول قرار دارد. یکی فرستنده امواج فراصوت و دیگری گیرنده امواج است. امواج التراسونیک بر اساس زمان ارسال بازخورد امواج، قادر به محاسبه فاصله تا جسم خواهد بود. همان طور که ذکر شد در این ماژول دو نوع قطعه التراسونیک وجود دارد که یکی از آن ها از نوع T یا فرستنده و دیگری از نوع R یا دریافت کننده است. پس ماژول به این صورت کار می کند که با ارسال و دریافت امواج التراسونیک فاصله با اجسام را در نهایت قابل محاسبه می کند.

 


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


ماژول فاصله سنج SRF04

برد ESP32

نمایشگر Oled 0.96

 


شرح پروژه فاصله سنج با میکروپایتون


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

شرح پروژه فاصله سنج میکروپایتون micropython - دیجی اسپارک

 


اتصالات پروژه


در پروژه فاصله سنج با میکروپایتون سنسور اولتراسونیک HC-SR04 همانطور که در نمودار شماتیک زیر نشان داده شده است به ESP32 متصل می کنیم. در این شماتیک با توجه به کد پروژه پین Trig را به GPIO 5 و پین Echo را به GPIO 18 متصل می کنیم، اما می توانید از هر پین دیگری نیز استفاده کنید در صورت تغییر کد. همچنین در ادامه پین های نمایشگر Oled به پین های GPIO 21 و GPIO 22 در ESP32 متصل خواهند شد.

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

 


کد های پروژه فاصله سنج با میکروپایتون


کد های پروژه فاصله سنج با میکروپایتون شامل سه بخش می‌شوند، دو فایل برای راه‌اندازی نمایشگر و سنسور التراسونیک و اسکریپت اصلی برای اجرای سناریوی مدنظر. بخش اول کد های مرجع برای راه‌اندازی نمایشگر 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 در محیط میکروپایتون

یک فایل جدید به نام ss1306.py ایجاد کنید و کد زیر را کپی کنید. دقیقا مانند فرآیند قبل که برای srf04 انجام دادیم.

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

 

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


نتیجه نهایی


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

 

 


کلام آخر با سایفر


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

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

 

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

 

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

CiferTech

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