آردوینو نمایشگر OLED پروژه های آردوینو

آموزش راه اندازی ماژول قطب نما با نمایشگر OLED برد آردوینو

آموزش ماژول قطب نما gy271 آردوینو
نوشته شده توسط علیرضا قربانی

آموزش ماژول قطب نما +نمایشگر OLED  آردوینو

در پست‌های قبلی به آموزش راه‌‌اندازی ماژول قطب‌نمای HMC5883 gy-271 به همراه نمایش آن بر روی LCD کاراکتری با استفاه از کتابخانه Adafruit_HMC5883_Unifiedپرداختیم. در این قسمت  به آموزش راه‌اندازی ماژول HMC5883 gy-271 با استفاده از کتابخانه compass به همراه نمایش جهت ناوربری بر روی OLED  می‌پردازیم. در ادامه با مرجع تخصصی آردوینو ، دیجی اسپارک همراه باشید.gy271 HMC8358  یک قطب نمای سه محوره دیجیتال است که میتواند شدت میدان مغناطیسی را تا ۸+/- گائوس با دقت ۵ میلی گائوس اندازه گیری کند. توسط ماژول HMC5883 میتوان زاویه خود را نسبت به محور ها با دقت ۱ الی ۲ درجه محاسبه نمود. از ماژول HMC5883 GY271 میتوان در سیستم ناوبری اتوماتیک ، سیستم های جهت یابی ربات و  … استفاده نمود .

مشخصات ماژول قطب‌نمایgy-271

پروتکل ارتباطی I2C

دارای دقت ۱ تا ۲ درجه

ADC داخلی ۱۲ بیتی

دیتاریت ۱۶۰ هرتز

اندازه گیری ۸ تا ۸- شدت میدان مغناطیسی

 

سخت‌افزار مورد نیاز

آردوینو Uno

ماژول قطب نمای HMC5883 gy 271

ماژول OLED I2C

 

اتصالات

آموزش ماژول HMC5883 gy271

اتصال قطب نما + OLED + آردوینو

 

 

برای نمایش جهت ناوبری از ماژول OLED I2C استفاده شده است که آموزش‌ها و کتابخانه آن در لینک زیر موجود می‌باشد:

آموزش  ماژول نمایشگر OLED I2C در آردوینو بخش اول

 

در این آموزش از کتابخانه compass استفاده شده است که می‌توایند آن را از لینک زیر دانلود نمایید.

دانلود کتابخانه compass.h

توسط این کتابخانه می‌توان زوایه‌ی هر محور را نسبت به قطب شمال جغرافیایی اندازه‌گیری نمود.شمال جغرافیایی جهت قطب شمال جغرافیایی محلی است که محور گردش زمین سطح آن‌را قطع می‌کند. هر نقطه‌ای در سطح زمین که امتداد مستقیم آن به قطب شمال جغرافیایی برسد، شمال جغرافیایی یا شمال حقیقی یا شمال واقعی نامیده می‌شود. همه خطوط طول جغرافیایی، خطوط شمال واقعی هستند.شمال جغرافیایی در مقابل قطب مغناطیسی شمال به‌کار می‌رود. بنابراین شمال حقیقی زمین از جهتی که قطب‌نماهای معمولی نشان می‌دهند، مقداری فاصله دارد.زاویه بین شمال حقیقی و شمال مغناطیسی، «میل مغناطیسی» نامیده می‌شود. برخی نقشه‌ها تفاوت شمال حقیقی و شمال مغناطیسی را مشخص می‌کنند.قطب‌نمای ژیروسکوپی بر خلاف قطب‌نماهای عادی  همواره جهت شمال حقیقی را نشان می‌دهد، نه شمال مغناطیس را؛ زیرا به مغناطیس وابستگی ندارد.

 

محور مغناطیسی زمین با محور جغرافیایی آن (محور چرخش زمین) به طور کامل موازی نیست. در نتیجه خواندن یک قطب‌نما تا حدودی از شمال جغرافیایی انحراف دارد. این انحراف که با مکان تغییر می‌کند وردش مغناطیسی یا میل مغناطیسی نامیده می‌شود.میل مغناطیسی، در هر نقطه از زمین، زاویه بین شمال حقیقی و شمال مغناطیسی در آن نقطه است؛ یعنی زاویهٔ بین سمتی که عقربهٔ قطب‌نما نشان می‌دهد، و سمت شمال جغرافیایی. برخی از منابع مختلف میل مغناطیسی را «وردش مغناطیسی» هم می‌نامند که درست است. برخی هم به اشتباه آن را انحراف مغناطیسی گفته‌اند، ولی این واژه، برای انحراف ناچیز عقربهٔ قطب‌نما در اثر عوامل محیطی (مانند وسایل آهنی و منابع الکتریکی و غیره) است و هیچ ارتباطی با زاویه میل مغناطیسی در یک محل ندارد.

 

آموزش راه اندازی ماژول قطب نما GY271 HMC5883L

 

 

برای بدست آوردن جهت شمال مغناطیسی ابتدا باید میل مغناطیسی را  بر اساس مراحل زیر بدست آوردیم:

برای پیدا کردن میل مغناطیسی می‌بایست ابتدا وارد سایت زیر شویم.

http://www.magnetic-declination.com/

در این سایت مقدار فیلد Magnetic declination برابر میل مغناطیسی می‌باشد.

 

آموزش راه اندازی ماژول قطب نما GY271 HMC5883L

 

در عکس بالا شما دو عدد °۳ و همچنین ’۴۹ را مشاهده میکنید. عدد ۴۹ بر پایه ی واحد دقیقه‌ی قوسی(هر دقیقه قوسی معادل  یک شصتم یک درجه است) می‌باشد و باید آن را به درجه تبدیل کنید و به عدد ۳ اضافه کنید.

۴۹÷۶۰=۰٫۸۱۶۶۶۶۶

۳+۰٫۸۱۶۶۶۶=۳٫۸۱۶۶۶۶۶۶

 

 

کدهای برنامه

 

 

توابع به کار رفته در کدهای فوق

compass_offset_calibration(int select)

 

این تابع برای کالیبراسیون ماژول قطب‌نما استفاده می‌شود.این تابع می‌تواند ۴ مقدار زیر را بپذیرد:

select=1

در این حالت میزان خطا کالبیره می‌شود.

select=2

در این حالت میزان انحراف از محورها کالیبره می‌شود.

select=3

در این حالت میزان انحراف از محور‌ها و همچنین درصد خطا کالیبره می‌شود.

select=any

در این حالت عمل کالیبراسیون انجام نمی‌شود.

compass_init(int gain)

به وسیله این تابع میزان دقت اندازه‌گیری مشخص می‌شود.این تابع می‌تواند مقادیر زیر را دریافت کند:

gain=0: max scale = 0.73 gauss
gain=1: max scale = 0.92 gauss
gain=2: max scale = 1.22 gauss
gain=3: max scale = 1.52 gauss
gain=4: max scale = 2.27 gauss
gain=5: max scale = 2.56 gauss
gain=6: max scale = 3.03 gauss
gain=7: max scale = 4.35 gauss

 

 compass_scalled_reading()

 

به وسیله‌ی این تابع مقدار اندازه گیری شده در راستای سه محور x , y و z بروزرسانی می‌شود و مقادیر آن‌ها را در متغیرهایی به نام  compass_x_scalled ، compass_y_scalled و  compass_z_scalled می‌ریزد.

 

 compass_heading()

به وسیله‌ی این تابع علاوه بر بروزرسانی سه مقدار اندازه گیری شده در راستای سه محور x, y و z ، مقدار زاویه‌ی ماژول نسبت به شمال جغرافیایی را بروزرسانی می‌کند و مقدار آن را در متغیری به نام bearing می‌ریزد.

 

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

علیرضا قربانی

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

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

۲۰ دیدگاه

  • سلام
    جناب مهندس چرا باید مقدار دقیقه را بعد از تبدیل، به عدد سه اضافه کنیم؟

    درضمن ممنونم بابت آموزشتون

    • با سلام و عرض پوزش از مهندس عزیز که من جای ایشون پاسخ میدم
      دوست عزیز اگه کد را دقیق مطالعه کرده باشید در یا کامنت جواب شما رو دادن که من مجددا آن را براتون می نویسم
      “اضافه کردن میل مغناطیسی به شمال جغرافیایی برای بدست آوردن مقدار شمال مغناطیسی”
      که این میل مغناطیسی با ممیز شناور طولانی انتخاب شده که کمترین مشکل مسیر یابی رو داشته باشیم
      تشکر

  • با سلام و تشکر از سایت عالیتون
    یک مشکلی رو برای این پروژه بهش برخورد کردم که بعد از چندروز تلاش بالاخره تونستم راه اندازیش کنم.
    گفتم به اشتراک بذارم تا بقیه دوستان به این مشکل نخورن.
    ماژول GY-271 که در این پروژه استفاده شده از نوع اورجینال هست که با کد HMC5883 شناخته میشه و روی IC کد L883 حک شده ولی متاسفانه اکثر ماژول های GY-271 موجود در بازار برای یک شرکت فرعی هستند و با کد QMC5883 شناخته میشن و روی IC کد DA5883 حک شده. برای راه اندازی این ماژول باید از کتابخونه جداگونه که برای QMC5883 هست استفاده کنید چون آدرس رجیستر و … این دو نوع ماژول کاملا باهم فرق دارن!

    • سلام.یعنی این برنامه ای که الان دوستمون گذاشته تو این پست روی QMC5883 جواب نمیده ؟؟؟

  • سلام. وقت بخیر. ایا اشیای فلزی دوروبر ماژول روی اطلاعات دریافتی ماژول تاثیرگذاره؟ یا مثلا اگر تو یه ربات استفاده کنیم موتور ربات تاثیر میذاره در کارکرد ماژول؟؟

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

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

        • با سلام مجدد
          برای این منظور استفاده از قطب نما انتخاب مناسبی نمیباشد. پیشنهاد میشود از ماژول‌های حرکتی و ژایرو به همراه سنسور IR و یا SRF استفاده کنید. سپس پارامترهای دریافتی را برای کالیبره کردن ربات در مسیر مورد نظرتان، تغییر بدهید.

          • ممنونم از راهنماییتون
            میتونید به این منظور مدل چندتا سنسور مورد اطمینان رو معرفی کنید؟

              • ممنون از پاسخگوییتون
                میتونم خواهش کنم بگید سنسورهای تکلمیلی مولا چه سنسوری؟
                یکم بیشتر راهنمایی کنید ممنون میشم

                • سلامت باشید. بستگی به پروژه مورد استفاده شما، گستره زیادی از سنسورها را میتوانید انتخاب کنید. از جمله اینکه پردازش تصویر، سنسور فراصوت برای تشخیص مانع و… میتوانید استفاده کنید. همگی اینها به سناریو تعریف شده مرتبط میباشند.