خبر و ترفند روز

خبر و ترفند های روز را اینجا بخوانید!

راه خود را با ماژول قطب نما GY-271 و آردوینو پیدا کنید

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

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

سنسور مغناطیس سنج قطب نما GY-271 امکان سنجش جهت گیری را برای کاربردهای مختلف فراهم می کند. در اینجا ما فرآیند رابط سنسور GY-271 با میکروکنترلر آردوینو، نحوه کالیبره کردن آن و بررسی مشکلاتی که ممکن است در حین انجام این کار با آن مواجه شوید را بررسی خواهیم کرد.

ماژول قطب نما GY-271 چیست؟

ماژول HMC5883L در زمینه سفید

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

ماژول قطب نما GY-271 چگونه کار می کند؟

ماژول قطب نما GY-271 HCM5883L حاوی یک سنسور مغناطیس سنج 3 محوره است که بر اساس فناوری مغناطیسی مقاومت ناهمسانگرد (AMR) ساخته شده است. این سنسور قدرت و جهت میدان مغناطیسی زمین را با تشخیص تغییرات مقاومت عناصر AMR داخلی آن اندازه گیری می کند.

هنگامی که سنسور در معرض میدان مغناطیسی قرار می گیرد، مقاومت عناصر AMR تغییر می کند و ولتاژی متناسب با قدرت و جهت میدان مغناطیسی ایجاد می کند. سپس پردازشگر سیگنال دیجیتال سنسور این ولتاژ را به سیگنال دیجیتال تبدیل می کند که می تواند توسط یک میکروکنترلر خوانده شود. با اندازه گیری ولتاژ در هر سه محور، سنسور می تواند خوانش های بسیار دقیقی از قدرت و جهت میدان مغناطیسی در سه بعدی ارائه دهد.

اتصال GY-271 به آردوینو Uno

نمودار پینوت HMC5883L

اتصال این ماژول به آردوینو بسیار ساده است. ما همچنین سایر ماژول‌های آردوینو با کاربری آسان را پوشش داده‌ایم که می‌توانند به مقیاس پروژه شما در آینده کمک کنند. ماژول GY-271 در مجموع دارای پنج پایه است که شامل VCC، GND و سه پین ​​سیگنال (SDA، SCL و DRDY) می شود.

مطلب مرتبط:   بهترین زبان برای میکروکنترلرها چیست: MicroPython، CircuitPython، Arduino، یا C؟

شما به اجزای زیر نیاز خواهید داشت:

  • ماژول قطب نما GY-271 HMC5883L
  • آردوینو یونو (یا مدل دیگر)
  • سیم های جامپر (نر به نر و نر به ماده)
  • تخته نان (اختیاری)

ابتدا پایه های VCC و GND ماژول GY-271 را به ترتیب به پایه های 5 ولت و GND آردوینو Uno وصل کنید.

ماژول قطب نما با برد آردوینو Uno رابط دارد

سپس، پایه های SDA و SCL ماژول را به ترتیب به پایه های آنالوگ A4 و A5 آردوینو Uno متصل کنید.

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

قبل از شروع کار با ماژول قطب نما GY-271 و آردوینو، باید کتابخانه های لازم برای برقراری ارتباط با سنسور را نصب کنید.

اولین کتابخانه ای که باید در طرح خود قرار دهید کتابخانه Wire است که برای ارتباط I2C بین آردوینو و سنسور استفاده می شود. کتابخانه Wire به همراه Arduino IDE از قبل نصب شده است، بنابراین نیازی به دانلود جداگانه آن ندارید. برای نصب نسخه دوم، کتابخانه HMC5883L، باید این مراحل را دنبال کنید:

Arduino IDE را باز کنید و به Sketch > Include Library > Manage Libraries بروید.

اسکرین شات پیمایش مدیر کتابخانه

در مدیریت کتابخانه، HMC5883L را در نوار جستجو جستجو کنید.

جستجوی کتابخانه HMC5883 در مدیر کتابخانه آردوینو IDE

کتابخانه HMC5883L را به طور خاص از Adafruit انتخاب کنید. پس از نصب کتابخانه، می توانید با رفتن به Sketch > Include Library > HMC5883L، آن را در طرح آردوینو خود قرار دهید.

درک کد

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

در ابتدای کد، باید کتابخانه های لازمی را که به تازگی دانلود کرده اید وارد کنید.

#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_HMC5883_U.h>

فراموش نکنید که یک شناسه منحصر به فرد به سنسور اختصاص دهید. برای انجام این کار از این خط استفاده کنید:

Adafruit_HMC5883_Unified mag = Adafruit_HMC5883_Unified(12345);

در کد راه اندازی، مانیتور سریال را شروع کنید و بررسی کنید که آیا سنسور پاسخ می دهد یا خیر. برای به‌روزرسانی وضعیت سنسور می‌توانید پیام‌هایی را روی مانیتور چاپ کنید:

void setup(void)
{
  Serial.begin(9600);
  Serial.println("HMC5883 Magnetometer Test"); Serial.println("");
 
  /* Initialise the sensor */
  if(!mag.begin())
  {
    Serial.println("Ooops, no HMC5883 detected ... Check your wiring!");
    while(1);
  }
}

در حلقه، ابتدا یک رویداد حسگر جدید دریافت کنید:

sensors_event_t event;
mag.getEvent(&event);

سپس خوانش سنسور را به نمایشگر سریال نمایش دهید. فراموش نکنید که نرخ باود را روی 9600 تنظیم کنید.

Serial.print("X: "); Serial.print(event.magnetic.x); Serial.print(" ");
Serial.print("Y: "); Serial.print(event.magnetic.y); Serial.print(" ");
Serial.print("Z: "); Serial.print(event.magnetic.z); Serial.print(" ");Serial.println("uT");

ماژول را طوری نگه دارید که Z به سمت بالا باشد و عنوان را با X و Y اندازه بگیرید. با انجام این کار، می توانید زمانی که مغناطیس سنج تراز است، عنوان را محاسبه کنید. این خط کد به این کمک می کند:

float heading = atan2(event.magnetic.y, event.magnetic.x);

هنگامی که عنوان خود را پیدا کردید، سپس باید زاویه انحراف خود را اضافه کنید، که خطای میدان مغناطیسی در مکان شما است.

 float declinationAngle = 0.663;
 heading += declinationAngle;

می توانید به راحتی زاویه انحراف منطقه محلی خود را در وب سایت Magnetic Declination پیدا کنید. اگر به دلایلی نمی توانید زاویه انحراف خود را پیدا کنید، دو خط از کد خود را نظر دهید.

مطلب مرتبط:   چگونه یک لپ‌تاپ مدولار می‌تواند بهترین راه برای ساختن خودتان باشد

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

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

Serial.print("Heading (degrees): ");
Serial.println(headingDegrees);
delay(500);

از اینجا می توانید کد را مطابق با نیازهای پروژه خود سفارشی کنید و ویژگی های اضافی مانند ثبت داده ها را اضافه کنید.

اگر ترجیح می دهید از کتابخانه Adafruit استفاده کنید، توصیه می کنیم منبع آن را از مخزن Adafruit’s GitHub تهیه کنید.

خواندن و تفسیر داده های قطب نما

مقادیر قطب نما در مانیتور سریال Arduino IDE

داده های حسگر نمایش داده شده در نمایشگر سریال مقادیر بردار میدان مغناطیسی اندازه گیری شده توسط مغناطیس سنج را در میکروتسلا (μT) به ترتیب برای محورهای X، Y و Z نشان می دهد. از این مقادیر می توان برای تعیین جهت و بزرگی میدان مغناطیسی استفاده کرد.

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

کالیبراسیون سنسور

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

مطلب مرتبط:   چگونه سرور Raspberry Pi Minecraft خود را برای چند نفره آنلاین در دسترس قرار دهید

ابتدا با کلیک بر روی Code > Download ZIP، فایل فشرده را از مخزن دانلود کنید.

دانلود پوشه GitHub Zip

سپس، Arduino IDE را باز کنید و روی Sketch > Include Library > Add Library کلیک کنید.

فایل فشرده را به منوی ناوبری مدیر کتابخانه آردوینو اضافه کنید

فایل فشرده Arduino-HMC5883 را که به تازگی دانلود کرده اید انتخاب کنید، سپس Arduino IDE کتابخانه را به طور خودکار برای شما نصب می کند.

انتخاب کتابخانه Adafruit در مدیر کتابخانه Arduino IDE

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

مشکلاتی که ممکن است با آن مواجه شوید

خطاهای متعددی وجود دارد که ممکن است هنگام اتصال ماژول قطب نما با آردوینو با آنها مواجه شود. در اینجا چند نمونه و راه حل آنها آورده شده است:

خطاهای کامپایل: در صورتی که کتابخانه های لازم گنجانده نشده باشند یا خطاهای نحوی در کد وجود داشته باشد، ممکن است رخ دهند. برای رفع این مشکل، مطمئن شوید که کتابخانه های صحیح را نصب کرده اید و کد خود را برای هر گونه خطای نحوی بررسی کنید. همانطور که بارها دیده ایم، ممکن است به طور تصادفی چندین کتابخانه HCM5883L را نصب کرده باشید.

Compilation error: 'Adafruit_HMC5883_Unified' does not name a type

خطاهای ارتباطی: اگر نمی توانید با ماژول قطب نما ارتباط برقرار کنید، مطمئن شوید که آن را به پین ​​های صحیح آردوینو وصل کرده اید و سیم کشی شما درست است. همچنین ممکن است لازم باشد آدرس I2C ماژول را در کد خود تنظیم کنید، اگر با آدرس پیش‌فرض – که 0x1E است – متفاوت باشد.

Error using hmc5883l/testDevice (line 246) Error communicating with the HMC5883L sensor. The value read from ID_A, ID_B and ID_C registers do not match expected values.

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

پروژه های خود را با ماژول قطب نما GY-271 برگردانید

امکان استفاده از ماژول قطب نما GY-271 HCM5883L دری را به روی ساخت پروژه های DIY پیچیده تر با استفاده از آردوینو مانند مریخ نوردهای هدایت شونده با GPS و هواپیماهای بدون سرنشین DIY باز می کند. امکانات بی پایان هستند، به خصوص زمانی که سنسورهای دیگری را اضافه کنید.