تحلیل کتابخانه

تحلیل و بررسی کتابخانه GY521.h

نوشته شده توسط معین صابری

سنسورهای ژیرسکوپ یکی از مهم ترین و پرکاربردترین ابزارها در صنایع پروازی نظیر طراحی پهپادها و سایر صنایع نظیر خودروسازی به شمار می روند. سنسور GY521 یکی از سنسورهای ژیرسکوپ پرکاربرد است. به کمک  این سنسور می توانید زاویه، شتاب و ژیرو را در جهت های X,Y,Z محاسبه کرده و بدست آورید. جهت راه اندازی و کار با این سنسور کتابخانه تحت آردوینو توسعه یافته است. بدین ترتیب شما می توانید به سادگی و در کمترین زمان ممکن، این سنسور را راه اندازی کنید. در این آموش به تحلیل و بررسی این کتابخانه کاربردی می پردازیم. مطابق سایر آموزش های کتابخانه، ابتدا نب و نکات فنی را بررسی کرده و سپس به تحلیل توابع کلیدی آن پرداخته می شود. در نهایت با ارائه مثالی، نحوه استفاده از توابع را در برنامه ها، مشاهده می کنیم. در ادامه، با مرجع تخصصی رزبری پای و آردوینو به زبان فارسی، دیجی اسپارک، همراه باشید.

 


نصب کتابخانه GY521.h


به منظور استفاده از کتابخانه GY521.h، ابتدا می بایست آن را نصب کنیم. در این قسمت به نصب کتابخانه سنسور شتاب سنج با جستجو در مخازن آردوینو می پردازیم. به همین منظور، ابتدا در نرم افزار آردوینو بر روی گزینه Tools و سپس Manage Libraries را کلیک کنید. پس از کلیک بر روی این گزینه، با تصویر زیر رو به می شوید. این منو کتابخانه های در دسترس را به شما نشان می دهد. شما نیز می توانید با جستجوی نام کتابخانه مورد نظر خود، آن را در مخازن آردوینو یافته و سپس نصب کنید.

Analysis of DFPlayerMini.h library - دیجی اسپارک

 

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

مراحل نصب کتابخانه GY521.h - دیجی اسپارک

 

توجه: ورژن کتابخانه استفاده شده در این آموزش ۰٫۳٫۴ است.

 


الزامات و نکات فنی کتابخانه GY521.h


در این قسمت به بررسی نکات فنی و بردهای مورد پشتیبانی کتابخانه GY521 می پردازیم. سنسور ژیروسکوپ GY521 دارای پورت سریال I2C جهت تبادل داده با میکروکنترلرهاست. بنابارین جهت ارتباط با بردهای آردوینو می بایست این موضوع را مد نظر داشته باشید. با توجه به این موضوع، به نظر می رسد که از این سنسور می توانیم در بردهای ESP نیز استفاده نماییم. جدول زیر پایه های I2C بردهای مختلف را نمایش می دهد.

شماره پایه ها نام برد
GPIO5->SCL

GPIO4->SDA

ESP8266
A4->SDA

A5->SCL

UNO
A4->SDA

A5->SCL

MEGA

 

پس از بررسی نکات فنی، به تحلیل و بررسی توابع کلیدی این کتابخانه می پردازیم.

 


توابع کلیدی کتابخانه GY521.h


در این قسمت به تحلیل و بررسی توابع کلیدی کتابخانه می پردازیم. جدول زیر این توابع را به همراه کاربرد نمایش می دهد.

شرح ورودی تابع
به کمک این تابع سنسور و کلیه تنظیمات آن به صورت نرم افزاری ریست خواهد شد. بدون ورودی void     reset()
به کمک این تابع می توان آماده بودن سنسور را کنترل نمود. بدون ورودی int16_t  read()
به کمک این تابع می توانید حساسیت سنسور را به شتاب گرانشی تنظیم نمایید. برای این تابع ورودی ها به صورت زیر است:

۰: ۲g

۱:۴g

۲:۸g

۳:۱۶g

ورودی از نوع بدون علامت ۸ بیتی bool     setAccelSensitivity(uint8_t as)
به کمک این تابع می توانید حساسیت سنسور را نسبت به شتاب گرانشی محاسبه کرده و در خروجی آن قرار دهید. این خروجی می تواند ۰،۱،۲ و ۳ باشد که به ترتیب برابر با ۲g، ۴g، ۸g، و ۱۶g خواهد بود. بدون ورودی uint8_t  getAccelSensitivity()
به کمک این تابع می توانید حساسیت سنسور را به ژایرو تنظیم کنید. برای این تابع ورودی ها به صورت زیر است:

۰: ۲۵۰ درجه بر ثانیه

۱:۵۰۰ درجه بر ثانیه

۲:۱۰۰۰ درجه بر ثانیه

۳:۱۲۰۰ درجه بر ثانیه

ورودی از نوع بدون علامت ۸بیتی جهت تنظیم حساسیت setGyroSensitivity(uint8_t gs)
به کمک این تابع می توانید میزان حساسیت سنسور را نسبت به ژایرو سنجیده و در خروجی قرار دهید. خروجی های این تابع بین ۰ الی ۳ بوده که بیانگر ۲۵۰، ۵۰۰، ۱۰۰۰ و ۱۲۰۰ درجه بر ثانیه خواهد بود. بدون ورودی   uint8_t  getGyroSensitivity()
این تابع شتاب را در محور x اندازه گرفته و در خروجی قرار می دهد. بدون ورودی   float    getAccelX()
این تابع شتاب را در محور y اندازه گرفته و در خروجی قرار می دهد. بدون ورودی float    getAccelY()
این تابع شتاب را در محور Z اندازه گرفته و در خروجی قرار می دهد. بدون ورودی   float    getAccelZ()
این تابع زاویه را در محور X اندازه گرفته و در خروجی قرار می دهد. بدون ورودی float    getAngleX()
این تابع زاویه را در محور Y اندازه گرفته و در خروجی قرار می دهد. بدون ورودی float    getAngleY()
این تابع زاویه را در محور Z اندازه گرفته و در خروجی قرار می دهد. بدون ورودی float    getAngleZ()
این تابع ژایرو را در محور x اندازه گرفته و در خروجی قرار می دهد. بدون ورودی float    getGyroX()
این تابع ژایرو را در محور y اندازه گرفته و در خروجی قرار می دهد. بدون ورودی float    getGyroY()
این تابع ژایرو را در محور z اندازه گرفته و در خروجی قرار می دهد. بدون ورودی float    getGyroZ()
این تابع pitch(گردش حول محور x) را اندازه گرفته و در خروجی قرار می دهد. بدون ورودی   float    getPitch()
این تابع Roll(گردش حول محور y) را اندازه گرفته و در خروجی قرار می دهد. بدون ورودی   float    getRoll()
این تابع yaw(گردش حول محور z) را اندازه گرفته و در خروجی قرار می دهد. بدون ورودی   float    getYaw()
به کمک این تابع می توانید دمای محیط را اندازه گیری نموده و در خروجی قرار دهید. بدون ورودی float    getTemperature()

پس از بررسی توابع، نوبت به اجرای یک نمونه برنامه می رسد. قسمت بعدی مربوط به این مورد است.

 


اجرای یک نمونه برنامه


در این قسمت به اجرای یک نمونه برنامه می پردازیم. در این برنامه شتاب و ژایرو را در محورهای مختلف، به همراه دمای محیط اندازه گرفته و در متغیرهای مختلف ذخیره می نماییم.

#include "GY521.h"

GY521 sensor(0x69);  // ایجاد یک نمونه شی از کلاس کتابخانه، این تابع در حقیقت تابع سازنده بوده که ورودی آن آدرس سنسور است.
void setup()
{
  Serial.begin(115200);
 delay(200);
  Wire.begin(); //راه اندازی پورت I2C
  delay(100);
  sensor.setAccelSensitivity(0);  // 2g  تنطیم حساسیت شتاب روی
  sensor.setGyroSensitivity(0);   // 250 degrees/s    تنظیم حساسیت ژایرو روی
}

void loop()
{
  sensor.read();  //توجه: پیش از خواندن داده ها باید این تابع رافراخوانی نماییم.
  int ax = sensor.getAccelX();
  int ay = sensor.getAccelY();
  int az = sensor.getAccelZ();
  int gx = sensor.getGyroX();
  int gy = sensor.getGyroY();
  int gz = sensor.getGyroZ();
  int t = sensor.getTemperature();
}

 


لوازم متناسب با کتابخانه


سنسور شتاب و ژایرو GY521

انواع برد آردوینو

 


جمع بندی


در این آموزش به تحلیل و بررسی کتابخانه GY521.h پرداختیم. این کتابخانه راه اندازی و کار با سنسور شتاب و ژایرو GY521 را بسیار ساده می کند. این کتابخانه دارای توابع متعدد و بسیاری است که در این آموزش به تحلیل و بررسی آن پرداختیم. در این آموزش ابتدا به نحوه نصب این کتابخانه و نکات فنی آن پرداختیم. در ادامه آن به تحلیل و بررسی توابع کلیدی و کاربردی کتابخانه پرداختیم. در نهایت با ارائه یک مثال، چگونگی استفاده از توابع را در برنامه های کاربردی، مشاهده نمودیم.

 

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

 

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

معین صابری

کارشناسی ارشد رشته معماری سیستم های کامپیوتری

مالي که ز تو کس نستاند، علم است
حرزي که تو را به حق رساند، علم است
جز علم طلب مکن تو اندر عالم
چيزي که تو را ز غم رهاند، علم است
(شیخ بهایی)

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