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

پروژه شتاب سنج با سنسور mpu6050 و میکروپایتون در برد ESP32

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

در این آموزش از ماژول MPU6050 با ESP32 برای اندازه گیری مقادیر شتاب سنج، ژیروسکوپ را با استفاده از سیستم عامل MicroPython استفاده کنیم. در این آموزش نحوه آپلود کتابخانه MPU-6050 MicroPython را با استفاده از uPyCraft IDE یا Thonny IDE روی بردهای ESP آموزش خواهم داد. همچنین، نحوه دریافت شتاب سنج، ژیروسکوپ را از ماژول MPU-6050 با ESP32 خواهیم دید. در ادامه آموزش MPU6050 با میکروپایتون با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

پروژه شتاب سنج با سنسور mpu6050 و میکروپایتون در برد ESP32 - دیجی اسپارک

 


ماژول MPU6050


حالا زمان این رسیده با سخت افزار اصلی این آموزش، یعنی MPU6050 بیشتر آشنا بشیم. Mpu6050 دارای یک شتاب سنج سه محوره و یک ژیروسکوپ سه محوره MEMS می‌باشد. دقت ماژول مبدل آنالوگ به دیجیتال ۱۲ بیت بوده و می‌تواند مقادیر X ، Y ، Z را در یک زمان اندازه گیری کند. بافر این ماژول از نوع FIFO با ظرفیت ۱۰۲۴ بایت می‌باشد. این ماژول به عنوان Slave به آردوینو توسط پایه‌های SCL و SDA متصل می‌شود. با استفاده از پردازشگر دیجیتال، ۴ خروجی برای دستیابی به دقت قابل توجه، در حرکت‌های کند و سریع در سنسور فراهم کرده است. با این روش کاربر می‌تواند بازه اندازه گیری را متناسب با شتاب یا سرعت تغییر دهد. به همین منظور در قسمت ژیروسکوپ سنسور چهار بازه ۲۵۰±، ۵۰۰±، ۱۰۰۰± و ۲۰۰۰± درجه بر ثانیه و در قسمت شتاب سنج سنسور چهار بازه ۲g، ±۴g، ±۸g، ±۱۶g± برای کاربر قابل انتخاب خواهد بود. توجه داشته باشید که ولتاژ کاری این ماژول ۳ الی ۵ ولت می‌باشد.

ماژول شتاب و ژایرو MPU6050 و میکروپایتون - دیجی اسپارک

 


تراشه ESP32


ESP32 می تواند به عنوان یک سیستم کامل مستقل یا به عنوان یک دستگاه MCU عمل کند و بار اضافی ارتباطات را در پردازنده اصلی برنامه کاهش دهد. ESP32 می تواند با سیستم های دیگر ارتباط برقرار کند تا از طریق SPI عملکرد Wi-Fi و بلوتوث را ارائه دهد. ESP32 با سوئیچ های آنتن داخلی، RF balun، تقویت کننده قدرت، تقویت کننده دریافت، فیلترها و ماژول های مدیریت توان یکپارچه شده است. ESP32 با حداقل الزامات برد مدار چاپی (PCB) ، عملکرد و تطبیق پذیری بی نظیری را به برنامه های شما اضافه می کند. برد ESP32 نسل پیشرفته ESP8266 است. یکی از تفاوت‌های آن بلوتوث داخلی‌اش می‌باشد. همچنین دارای هسته وایفای ۲,۴ گیگا هرتزی و بلوتوث داخلی تولید شده با تکنولوژی ۴۰ نانومتری شرکت TSMC می‌باشد. این ماژول دارای بهترین پرفورمنس در مصرف انرژی می‌باشد یعنی با کمترین مصرف انرژی بهترین نتیجه را برای ما به همراه دارد. اگر بخواهیم دقیق‌تر به این برد نگاه کنیم باید بگوییم که این یک chip است که پلتفرم NodeMCU در اون پیاده سازی شده که به این نوع چیپ ها System on a chip microcontrollers هم گفته می‌شود.

 


شرح پروژه MPU6050 با میکروپایتون


MPU6050 داده‌های خروجی را در یک گذرگاه I2C ارائه می‌کند. بنابراین، می‌توانیم از رابط باس ۱۲C MPU6050 برای انتقال مقادیر شتاب‌سنج ۳ محوره و ژیروسکوپ ۳ محوره به ESP3 استفاده کنیم. در پروژه MPU6050 با میکروپایتون ابتدا کتابخانه های مورد نیاز را به محیط نرم‌افزاری خود اضافه می‌کنیم و در ادامه با استفاده از یک فایل جدید اقدام به راه‌اندازی سناریو اصلی برای دریافت اطلاعات مورد نیاز از MPU6050 خواهیم کرد.

پروژه MPU6050 با میکروپایتون و برد ESP32 - دیجی اسپارک

 


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


ماژول mpu6050

برد ESP32

 


اتصالات پروژه MPU6050 با میکروپایتون


MPU6050 دارای ۸ پین برای راه‌اندازی است، اما برای اتصال به ESP32 و NodeMCU، تنها به چهار پایه اول نیاز داریم. یعنی VCC، GND، SCL و SDA که برای انتقال دیتا با استفاده از پروتکل i2c  و همچنین تغذیه ماژول استفاده می‌شوند. جدول اتصالات بین دو ماژول را نشان می دهد. پین VCC با ولتاژ ۳٫۳ ولت از ماژول به ESP32 برای تغذیه متصل می‌شود. پایه SCL و پایه SCL به ESP32 متصل خواهند شد. به همین ترتیب، پایه SDA به پایه GPIO21 و SDL به GPIO22 بردهای ESP متصل می‌شود.

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

 


کتابخانه MPU6050


به طور پیش فرض، در MicroPython کتابخانه MPU6050 وجود ندارد. اما میکروپایتون I2C API ESP32 را ارائه می دهد که می تواند برای خواندن مقادیر از ماژول MPU6050 استفاده شود. در ادامه نحوه نصب کتابخانه MPU6050 برای استفاده در MicroPython را بررسی خواهیم کرد. این مرحله ضروری است زیرا خود MicroPython شامل کتابخانه برای راه‌اندازی نیست. ابتدا یک NEW FILE در نرم‌افزار کدنویسی خود ایجاد کنید، و با نام mpu6050.py ذخیره کنید. درنهایت کد را  DOWNLOAD AND RUN کنید.
import machine


class accel():
    def __init__(self, i2c, addr=0x68):
        self.iic = i2c
        self.addr = addr
        self.iic.start()
        self.iic.writeto(self.addr, bytearray([107, 0]))
        self.iic.stop()

    def get_raw_values(self):
        self.iic.start()
        a = self.iic.readfrom_mem(self.addr, 0x3B, 14)
        self.iic.stop()
        return a

    def get_ints(self):
        b = self.get_raw_values()
        c = []
        for i in b:
            c.append(i)
        return c

    def bytes_toint(self, firstbyte, secondbyte):
        if not firstbyte & 0x80:
            return firstbyte << 8 | secondbyte
        return - (((firstbyte ^ 255) << 8) | (secondbyte ^ 255) + 1)

    def get_values(self):
        raw_ints = self.get_raw_values()
        vals = {}
        vals["AcX"] = self.bytes_toint(raw_ints[0], raw_ints[1])
        vals["AcY"] = self.bytes_toint(raw_ints[2], raw_ints[3])
        vals["AcZ"] = self.bytes_toint(raw_ints[4], raw_ints[5])
        vals["Tmp"] = self.bytes_toint(raw_ints[6], raw_ints[7]) / 340.00 + 36.53
        vals["GyX"] = self.bytes_toint(raw_ints[8], raw_ints[9])
        vals["GyY"] = self.bytes_toint(raw_ints[10], raw_ints[11])
        vals["GyZ"] = self.bytes_toint(raw_ints[12], raw_ints[13])
        return vals  # returned in range of Int16
        # -۳۲۷۶۸ to 32767

    def val_test(self):
        from time import sleep
        while 1:
            print(self.get_values())
            sleep(0.05)

 


بررسی کد و آپلود


در این قسمت پروژه MPU6050 با میکروپایتون نوبت به اجرای سناریوی اصلی MicroPython برای MPU6050 است تا مقادیر سنسور را دریافت کنیم. کد زیر را با نام main.py ذخیره و در ادامه main.py را در برد ESP32 خود آپلود کنید. این کد میکروپایتون مقادیر شتاب‌سنج، ژیروسکوپ را از MPU6050 با استفاده I2C می‌خواند و آنها را در کنسول MicroPython نمایش می‌دهد.

 

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

 

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


نتیجه نهایی


در نهایت پس از آپلود کد های این پروژه از جمله فایل کتابحانه و کد اصلی پروژه و برقراری اتصالات ذکر شده، مقادیر سنسور MPU6050 در ترمینال نرم‌افزار upycraft نمایش داده خواهد، با استفاده از آموزش های قبلی قادر خواهید به این پروژه قابلیت های جدید اضافه کنید مانند نمایشگر oled و یا کنترل موتور dc با استفاده مقادیر ژایرو.

 


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


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

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

 

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

 

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

CiferTech

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