وبهذه المناسبة سنتحدث عن أحد المستشعرات الأكثر استخدامًا في مشاريع الأردوينو المتعلقة بالملاحة والتوجيه: GY-271. تتضمن هذه الوحدة جهاز استشعار HMC5883L، وهو مقياس مغناطيسي ثلاثي المحاور قادر على اكتشاف المجالات المغناطيسية، وبالتالي يمنحنا التوجه فيما يتعلق بالشمال المغناطيسي.
إذا كنت تفكر في دمجه في مشروع مع Arduino، فخلال هذا المقال سنشرح كافة تفاصيله: من خصائصه، وكيفية توصيله وبرمجته، إلى أمثلة الاستخدام ونصائح للحصول على أفضل دقة. لذا تابع القراءة واكتشف كيفية إنشاء بوصلة رقمية باستخدام Arduino!
ما هو حساس GY-271؟
المستشعر GY-271 إنها وحدة تدمج مقياس المغناطيسية HMC5883L. وهذه الشريحة قادرة على قياس المجال المغناطيسي في المحاور الثلاثة (X، Y، Z)، ومن خلال هذه البيانات يمكن معرفة الاتجاه بالنسبة للمجال المغناطيسي للأرض. يتمتع هذا المستشعر بدقة عالية ويستخدم على نطاق واسع في المشاريع الهندسية. الملاحة الروبوتية أو المركبات ذاتية القيادة.
يتم الاتصال بين هذه الوحدة و Arduino من خلال حافلة 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);
}
يعتبر هذا الكود مثاليا للحصول على مكونات المجال المغناطيسي في المحاور الثلاثة. بمجرد حصولك على هذه القيم، يمكنك حساب اتجاه المستشعر بالنسبة للشمال المغناطيسي باستخدام الوظيفة أتان2، مما سيسمح لنا بتحويل المحورين 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 يتمتع بدقة كبيرة في ظل ظروف خاضعة للرقابة، إلا أن قياسه يمكن أن يتأثر تدخلمثل وجود معادن أو مجالات كهرومغناطيسية قريبة. ويمكن تصحيح ذلك باستخدام التقنيات معايرة مقترنًا بمقاييس التسارع أو الجيروسكوبات (IMU)، وهو أمر نموذجي في أنظمة الملاحة الأكثر تقدمًا.
على سبيل المثال، يتيح الجمع بين هذا المستشعر ومقاييس التسارع إنشاء أجهزة أكثر دقة ومقاومة للضوضاء المغناطيسية، مما يفتح مجموعة من الإمكانيات للاستخدام في المشاريع مع Arduino ووحدات التحكم الدقيقة الأخرى...