Control 3D Model With MPU6050

Published on

Category

تا به امروز آموزش های متفاوتی با استفاده ماژول ژایرو MPU6050 منتشر شده، در این آموزش قصد داریم با استفاده از ماژول پرکاربرد MPU6050  و همچنین نمایشگر Oled، یک مدل سه بعدی را کنترل کنیم با استفاده از تغییر مقادیر x, y که از ماژول ژایرو بدست می‌آید. در این آموزش از برد آردوینو نانو به عنوان برد راه‌انداز استفاده خواهیم کرد. برای آموزش های بیشتر به CiferTech مراجعه کنید، همچنین برای حمایت از من حتما پیج من در اینستاگرام را دنبال کنید. ^-^


ماژول MPU6050


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


برد آردوینو (Arduino)


مجموعه برد های آردوینو از جمله برد های توسعه پرطرفدار بین مهندسین امبدد هستند که در مدل های مختلفی از جمله Micro ,  proMini , Nano , Uno و همچنین Mega قابل تهیه هستند، هسته مرکزی این برد های محبوب از سری AtMega328 می باشد. آردوینو پلتفرم سخت‌افزاری و نرم‌افزاری متن‌باز است. همان طور که قبل تر اشاره کردیم، پلتفرم آردوینو شامل یک میکروکنترلر تک‌بردی متن‌باز است که قسمت سخت‌افزار آردوینو را تشکیل می‌دهد. علاوه بر این، پلتفرم آردوینو یک نرم‌افزار آردوینو IDE که به منظور برنامه‌نویسی برای بردهای آردوینو طراحی شده‌است و یک بوت لودر نرم‌افزاری که بر روی میکروکنترلر بارگذاری می‌شود را در بر می‌گیرد.


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


معمولا در پروژه های اینترنت اشیا و دیگر پروژه های امبدد از برای نمایش متن و مقادیر مختلف از نمایشگر های Oled استفاده می شود، این ماژول ها بدر انواع مختلق بسته به نوع ذرایور  اندازه یافت می شوند که یکی از پرطرفدار ترین آن ها SSD1306 می باشد، این نوع از Oled ها معمولا در اندازه های ۰٫۹۶ و ۱٫۳ اینچ ساخته می شوند همچنین پروتکل ارتباطی Oled ها I2C می باشد.


توضیح تکمیلی


در این آموزش اقدام به کنترل یک مکعب خواهیم کرد، در کد پروژه مکعب را طراحی می کنیم، به این صورت که زوایای مختلف را در کد تعریف و در شرط های برنامه به ازای تغییر مقادیر x, y تغییرات ظاهری مکعب را نیز مشخص خواهیم کرد. و در نهایت شکل معکب را در نمایشگر Oled چاپ می کنیم و تغییر زاویه ماژول MPU شاهد تغییر زوایای مکعب خواهیم بود.


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


ماژول MPU6050

برد آروینو نانو (Arduino nano)

نمایشگر Oled 0.96


نصب کتابخانه مورد نیاز


ابتدا در نرم افزار Arduino IDE اقدام به نصب کتابخانه مورد نیاز خواهیم‌کرد. مراحل زیر را دنبال کنید:

  1. این مسیر را دنبال کنید Sketch Include Library > Manage Libraries
  2. کلمه Adafruit SSD1306  را جستجو کنید.
  3. کتابخانه را نصب کنید.
  • سپس کلمه “GFX” را جستجو کنید و آن را نصب کنید.


تست و راه‌اندازی


در اولین مرحل اتصالات را طبق جدول و شماتیک زیر برقرار کنید، برای را‌ه‌اندازی قطعات استفاده شده در این آموزش از پروتکل I2C استفاده می‌کنیم، به این صورت که پین های SCL, SDA به پین های A4, A5 متصل خواهند شد.

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

در این چند خط راه‌اندازی های اولیه برای دو ماژول استفاده شده را انجام خواهیم داد، برای مثال مشخص کردن I2C آدرس ها برای هر ماژول و همچنین متغیر های اولیه.

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

کد کامل پروژه.


جمع بندی


در این آموزش با استفاده از ماژول MPU6050 و همچنین برد آردوینو نانو و نمایشگر Oled توانستیم با استفاده از مقادیر بدست آمده از ماژول ژایرو یک مکعب 3D را نسبت تغییرات در این مقادیر حرکت دهیم.

  • تنظیمات منوی tools در نرم افزار Arduino IDE نیز مانند تصویر زیر است.

Leave a Reply

Your email address will not be published. Required fields are marked *