سنتحدث هذه المرة عن أحد أكثر أجهزة الاستشعار استخدامًا في مشاريع أردوينو المتعلقة بالملاحة والتوجيه: وحدة GY-271 . تتضمن هذه الوحدة مستشعر HMC5883L ، وهو مقياس مغناطيسي ثلاثي المحاور قادر على اكتشاف المجالات المغناطيسية، وبالتالي تحديد الاتجاه بالنسبة للشمال المغناطيسي.
إذا كنت تفكر في دمجه في مشروع مع Arduino، فخلال هذا المقال سنشرح كافة تفاصيله: من خصائصه، وكيفية توصيله وبرمجته، إلى أمثلة الاستخدام ونصائح للحصول على أفضل دقة. لذا تابع القراءة واكتشف كيفية إنشاء بوصلة رقمية باستخدام Arduino!
ما هو حساس GY-271؟
مستشعر GY-271 عبارة عن وحدة مدمجة مع مقياس المغناطيسية HMC5883L . تستطيع هذه الشريحة قياس المجال المغناطيسي على ثلاثة محاور (X وY وZ)، ومن خلال هذه البيانات، يُمكن تحديد الاتجاه بالنسبة للمجال المغناطيسي للأرض. يتميز هذا المستشعر بدقة عالية ويُستخدم على نطاق واسع في مشاريع الملاحة للروبوتات أو المركبات ذاتية القيادة.
يتم التواصل بين هذه الوحدة ولوحة أردوينو عبر ناقل I2C ، مما يُسهّل عملية جمع البيانات بشكل كبير. يتميز جهاز HMC5883L بنطاق قياس يتراوح من ±0.88 غاوس إلى ±8.1 غاوس، وذلك حسب الإعدادات، مما يجعله مناسبًا لمجموعة واسعة من التطبيقات.
التوصيلات والتجميع مع الاردوينو
يعد توصيل GY-271 بجهاز Arduino الخاص بك أمرًا بسيطًا للغاية، فأنت تحتاج فقط إلى بعض الكابلات واتبع المخطط الأساسي:
- قم بتوصيل الدبوس GND للوحدة مع دبوس GND الخاص بـ Arduino
- الدبوس VCC يجب توصيل GY-271 بـ 5V من Arduino
- قم بتوصيل الدبوس SDA من GY-271 مع دبوس A4 من Arduino (أو SCL في بعض الموديلات مثل Mega)
- الدبوس SCL يجب أن تذهب إلى دبوس A5 من Arduino (أو SDA في بعض الحالات)
بمجرد توصيل جميع المكونات، ستكون الوحدة جاهزة للاستخدام. إذا كان هدفك هو الحصول على بيانات المجال المغناطيسي وإنشاء بوصلة رقمية، فأنت تمتلك بالفعل الأساسيات. مع ذلك، تذكر أن البيئة التي تضع فيها المستشعر يجب أن تكون خالية من التداخل المغناطيسي ، حيث يمكن للمعادن أو الأجهزة الإلكترونية القريبة أن تؤثر على القياسات.
أمثلة على التعليمات البرمجية مع اردوينو
وفيما يلي نعرض لكم مثالاً أساسياً لكيفية قراءة قيم X وY وZ للمجال المغناطيسي باستخدام المكتبة المناسبة. ستعمل هذه المكتبة على تسهيل اتصالات I2C وقراءات أجهزة الاستشعار:
#include <Wire.h>
#include <HMC5883L.h>
HMC5883L compass;
int16_t mx, my, mz;
void setup() {
Serial.begin(9600);
Wire.begin();
compass.initialize();
}
void loop() {
compass.getHeading(&mx, &my, &mz);
Serial.print("X: ");
Serial.print(mx);
Serial.print(" Y: ");
Serial.print(my);
Serial.print(" Z: ");
Serial.println(mz);
delay(500);
}
يُعدّ هذا الكود مثاليًا للحصول على مركبات المجال المغناطيسي على المحاور الثلاثة. بمجرد الحصول على هذه القيم، يمكنك حساب اتجاه المستشعر بالنسبة للشمال المغناطيسي باستخدام دالة `atan2` ، والتي ستتيح لك تحويل المحورين X وY إلى زاوية.
حساب الزاوية بالنسبة للشمال
الآن بعد أن حصلت على قراءات المجال المغناطيسي، فإن الخطوة التالية هي حساب الاتجاه بالنسبة للشمال المغناطيسي. للقيام بذلك، يمكنك استخدام الصيغة التالية:
float angulo = atan2(my, mx) * (180 / PI);
ستمنحك هذه العملية الحسابية زاوية بالدرجات تمثل اتجاه الشمال المغناطيسي. مع ذلك، يجب مراعاة الانحراف المغناطيسي ، وهو الفرق بين الشمال المغناطيسي والشمال الحقيقي. قد تختلف هذه القيمة باختلاف موقعك الجغرافي، ومن المهم تصحيحها للحصول على بوصلة أكثر دقة.
الإعدادات الإضافية وأوضاع التشغيل
يوفر جهاز GY-271 عدة إعدادات تسمح لك بتعديل تشغيله وفقًا لاحتياجاتك. على سبيل المثال، يمكنك الاختيار بين وضعين للتشغيل :
- الوضع المستمر: يقوم مقياس المغناطيسية بإجراء القياسات بشكل مستمر وتحديث السجلات المقابلة (X، Y، Z).
- وضع قياس واحد: لا يأخذ المستشعر القراءة إلا عندما يطلبها Arduino، وهو ما قد يكون مفيدًا إذا كنت تريد توفير الطاقة.
بالإضافة إلى ذلك، يمكنك ضبط حساسية المستشعر عن طريق تعديل نطاق القياس . تتراوح النطاقات المتاحة من ±0.88 غا إلى ±8.1 غا، مما يسمح لك بتكييف المستشعر مع بيئات وظروف عمل مختلفة.
تذكر أنه لتغيير نطاق القياس، يجب عليك استخدام وظيفة setGain الخاصة بالمكتبة، والتي تسمح لك بتعيين كسب المستشعر بناءً على النطاق المغناطيسي الذي تريد قياسه.
تطبيقات GY-271
يتمتع مستشعر GY-271 بالعديد من التطبيقات في مجال الروبوتات والملاحة. كونه جهازًا رخيصًا نسبيًا وسهل التنفيذ، يتم استخدامه في مشاريع مثل:
- مركبات ذاتية الحكم: يسمح للروبوتات بمعرفة الاتجاه الذي يواجهونه.
- كوادكوبتر: يساعد في الحفاظ على اتجاه الطائرة بدون طيار بالنسبة للشمال أثناء الطيران.
- أنظمة الملاحة: يمكن لأي مركبة تحتاج إلى معرفة موقعها واتجاهها الاستفادة من هذه الوحدة.
من أبرز التفاصيل المثيرة للاهتمام أنه على الرغم من دقة جهاز GY-271 العالية في ظل ظروف مضبوطة، إلا أن قياساته قد تتأثر بالتشويش ، مثل وجود معادن قريبة أو مجالات كهرومغناطيسية. ويمكن تصحيح ذلك باستخدام تقنيات المعايرة المقترنة بمقاييس التسارع أو الجيروسكوبات (وحدة القياس بالقصور الذاتي)، وهو أمر شائع في أنظمة الملاحة الأكثر تطوراً.
على سبيل المثال، يتيح الجمع بين هذا المستشعر ومقاييس التسارع إنشاء أجهزة أكثر دقة ومقاومة للضوضاء المغناطيسية، مما يفتح مجموعة من الإمكانيات للاستخدام في المشاريع مع Arduino ووحدات التحكم الدقيقة الأخرى...