تفتح إضافة وحدة بوصلة إلى متحكم Arduino الخاص بك مجموعة من الاحتمالات للمشاريع. إليك كيفية توصيله واستخدامه.

في مشاريع DIY الحديثة ، من الشائع جدًا العثور على أجهزة استشعار متقدمة مثل مقاييس التسارع ومقاييس المغناطيسية التي يتم توصيلها بوحدات تحكم دقيقة. على الرغم من أنك ربما استخدمت هذه المستشعرات على هاتفك ، إلا أنه من الصعب تخيل كيفية عمل هذه الوحدات ، لكنها بسيطة بشكل مدهش.

يتيح مستشعر مقياس المغنطيسية للبوصلة GY-271 استشعار الاتجاه لمختلف التطبيقات. سنستكشف هنا عملية توصيل مستشعر GY-271 بوحدة تحكم دقيقة من Arduino ، وكيفية معايرته وإلقاء نظرة على المشكلات التي قد تواجهها أثناء القيام بذلك.

ما هي وحدة البوصلة GY-271؟

وحدة البوصلة GY-271 عبارة عن مقياس مغناطيسي حساس للغاية يمكنه قياس المجالات المغناطيسية في ثلاثة أبعاد. يتم استخدامه لاكتشاف المجال المغناطيسي للأرض وتحديد اتجاه أو اتجاه الأجهزة في تطبيقات مثل أنظمة الملاحة والروبوتات والطائرات بدون طيار. فكر في الأمر على أنه بوصلة رقمية دقيقة للغاية. تم تجهيز هذا المستشعر بتصميم مضغوط ومتين يسهل تركيبه واستخدامه في مجموعة واسعة من المشاريع.

instagram viewer

كيف تعمل وحدة البوصلة GY-271؟

تحتوي وحدة البوصلة GY-271 HCM5883L على مستشعر مغناطيسي ثلاثي المحاور ، والذي يعتمد على تقنية مقاومة المغنطيسية متباينة الخواص (AMR). يقيس المستشعر قوة واتجاه المجال المغناطيسي للأرض من خلال اكتشاف التغيرات في مقاومة عناصر AMR الداخلية.

عندما يتعرض المستشعر إلى مجال مغناطيسي ، تتغير مقاومة عناصر AMR ، مما يولد جهدًا يتناسب مع قوة المجال المغناطيسي واتجاهه. يقوم معالج الإشارات الرقمية للمستشعر بعد ذلك بتحويل هذا الجهد إلى إشارة رقمية يمكن قراءتها بواسطة متحكم دقيق. من خلال قياس الجهد في جميع المحاور الثلاثة ، يمكن أن يوفر المستشعر قراءات عالية الدقة لقوة المجال المغناطيسي واتجاهه في ثلاثة أبعاد.

توصيل GY-271 بـ Arduino Uno

يعد توصيل هذه الوحدة بـ Arduino أمرًا سهلاً للغاية. لقد قمنا أيضًا بتغطية أمور أخرى وحدات اردوينو سهلة الاستخدام يمكن أن تساعد في توسيع نطاق مشروعك في المستقبل. تحتوي الوحدة النمطية GY-271 على ما مجموعه خمسة دبابيس ، بما في ذلك VCC, GND، وثلاثة دبابيس إشارة (SDA, SCL، و DRDY).

سوف تحتاج إلى المكونات التالية:

  • وحدة البوصلة GY-271 HMC5883L
  • Arduino Uno (أو طراز آخر)
  • أسلاك العبور (ذكر لذكر ومن ذكر لأنثى)
  • اللوح (اختياري)

أولاً ، قم بتوصيل VCC و GND دبابيس من وحدة GY-271 إلى 5 فولت و GND دبابيس Arduino Uno ، على التوالي.

بعد ذلك ، قم بتوصيل SDA و SCL دبابيس من الوحدة إلى A4 و A5 دبابيس التناظرية من Arduino Uno ، على التوالي.

تركيب المكتبات اللازمة

قبل أن تبدأ العمل مع وحدة البوصلة GY-271 و Arduino ، تحتاج إلى تثبيت المكتبات الضرورية للتواصل مع المستشعر.

أول مكتبة تحتاج إلى تضمينها في الرسم التخطيطي الخاص بك هي مكتبة Wire ، والتي تُستخدم لاتصالات I2C بين Arduino والمستشعر. تأتي مكتبة Wire مثبتة مسبقًا مع Arduino IDE ، لذلك لا تحتاج إلى تنزيلها بشكل منفصل. لتثبيت الثاني ، فإن HMC5883L مكتبة ، سوف تحتاج إلى اتباع الخطوات التالية:

افتح Arduino IDE وانتقل إلى رسم > تضمين المكتبة > إدارة المكتبات.

في مدير المكتبة ، ابحث عن HMC5883L في شريط البحث.

حدد ملف HMC5883L مكتبة خاصة من Adafruit. بمجرد تثبيت المكتبة ، يمكنك تضمينها في رسم Arduino بالانتقال إلى رسم > تضمين المكتبة > HMC5883L.

فهم المدونة

تحتاج إلى كتابة برنامج يقوم بتهيئة المستشعر ، ويقرأ بياناته ، ويحسب قوة المجال المغناطيسي للأرض واتجاهه. يمكن تنزيل الكود الكامل من مسؤولنا مستودع جيثب.

في بداية الكود ، تحتاج إلى تضمين المكتبات الضرورية التي قمت بتنزيلها للتو.

#يشمل
#يشمل
#يشمل

لا تنس تعيين معرف فريد لجهاز الاستشعار. استخدم هذا الخط للقيام بذلك:

Adafruit_HMC5883_Unified mag = Adafruit_HMC5883_Unified (12345);

في كود الإعداد ، ابدأ الشاشة التسلسلية وتحقق مما إذا كان المستشعر يستجيب. يمكنك طباعة الرسائل على الشاشة لتحديث حالة المستشعر:

فارغيثبت(فارغ)
{
مسلسل.يبدأ(9600);
مسلسل.println("اختبار مقياس المغناطيسية HMC5883"); مسلسل.println("");

/ * تهيئة المستشعر * /
لو(! mag.يبدأ())
{
مسلسل.println("عفوًا ، لم يتم اكتشاف HMC5883... تحقق من الأسلاك الخاصة بك! ");
بينما(1);
}
}

في الحلقة ، أولاً ، احصل على حدث مستشعر جديد:

sensors_event_t حدث؛
mag.getEvent (& event) ؛

ثم اعرض قراءات المستشعر على الشاشة التسلسلية. لا تنس ضبط معدل البث بالباود على 9600​​​​.

مسلسل.مطبعة("X:"); مسلسل.مطبعة(event.magnetic.x) ؛ مسلسل.مطبعة(" ");
مسلسل.مطبعة("ص:"); مسلسل.مطبعة(event.magnetic.y) ؛ مسلسل.مطبعة(" ");
مسلسل.مطبعة("Z:"); مسلسل.مطبعة(event.magnetic.z) ؛ مسلسل.مطبعة(" ");مسلسل.println("uT");

امسك الوحدة بحيث ض يشير إلى "أعلى" وقياس العنوان باستخدام X و ص. من خلال القيام بذلك ، يمكنك بعد ذلك حساب العنوان عندما يكون مقياس المغناطيسية مستويًا. يساعد هذا السطر من التعليمات البرمجية في:

يطفو العنوان = atan2(event.magnetic.y، event.magnetic.x) ؛

بمجرد أن تحصل على ملف عنوان، يجب عليك بعد ذلك إضافة ملف زاوية الانحراف، وهو خطأ المجال المغناطيسي في موقعك.

يطفو زاوية الانحدار = 0.663;
 العنوان + = زاوية الانحدار ؛

يمكنك العثور بسهولة على زاوية الانحراف لمنطقتك المحلية على موقع ويب الانحراف المغناطيسي. إذا لم تتمكن من العثور على زاوية الانحراف لسبب ما ، فقم بالتعليق على السطرين من الكود الخاص بك.

قد يؤدي التعليق على سطري الكود إلى قراءات خاطئة من المستشعر. حاول بذل قصارى جهدك لمعايرة المستشعر قبل الاستخدام.

أخيرًا ، اطبع العنوان على الشاشة التسلسلية وأضف تأخيرًا للانتظار لمدة نصف ثانية قبل القراءة مرة أخرى.

مسلسل.مطبعة("العنوان (بالدرجات):");
مسلسل.println(العنوانالدرجات) ؛
تأخير(500);

من هنا ، يمكنك تخصيص الكود ليناسب احتياجات مشروعك وإضافة ميزات إضافية مثل تسجيل البيانات.

إذا كنت تفضل استخدام مكتبة Adafruit ، فإننا نوصي بالحصول عليها من مستودع جيثب في Adafruit.

قراءة وتفسير بيانات البوصلة

تُظهر بيانات المستشعر المعروضة في الشاشة التسلسلية قيم متجه المجال المغناطيسي التي تم قياسها بواسطة مقياس المغنطيسية بالميكروتسلا (μT) للمحاور X و Y و Z على التوالي. يمكن استخدام هذه القيم لتحديد اتجاه وحجم المجال المغناطيسي.

قيمة العنوان المعروضة بالدرجات مهمة أيضًا وتمثل اتجاه القطب الشمالي المغناطيسي بالنسبة إلى موضع المستشعر. يمكن استخدام هذه القراءة في المشاريع التي يلزم فيها تحديد اتجاه الجسم المتحرك ، مثل الروبوتات والملاحة وأنظمة تحديد الموقع الجغرافي.

معايرة المستشعر

إذا قمت بالفعل بتثبيت مكتبة مختلفة لوحدة HMC5883L ، فستحتاج إلى إلغاء تثبيتها أو حذفها. خلاف ذلك ، قد تحصل على أخطاء في التجميع أو ترى تحذيرات في الشاشة التسلسلية أثناء المعايرة. نوصي باستخدام مكتبة جارزبسكي متوفر على GitHub نظرًا لأنه يحتوي على موارد المعايرة الكاملة اللازمة لهذا القسم.

أولاً ، قم بتنزيل ملف zip من المستودع بالنقر فوق شفرة > تنزيل ZIP.

بعد ذلك ، افتح Arduino IDE وانقر فوق رسم > تضمين المكتبة > أضف مكتبة.

حدد ملف اردوينو- HMC5883 zip الذي قمت بتنزيله للتو ، وسيقوم Arduino IDE بعد ذلك بتثبيت المكتبة تلقائيًا نيابة عنك.

قم بتشغيل مخطط المعايرة المتاح في المستودع أثناء تحريك المستشعر على سطح مستو عند التحميل. القيم التي تم الحصول عليها من الشاشة التسلسلية هي قيم إزاحة المستشعر ، والتي يمكنك استخدامها لتصحيح قراءاتك أثناء استخدام البوصلة أثناء مشروعاتك.

المشاكل التي قد تواجهها

هناك العديد من الأخطاء التي قد يواجهها شخص ما عند توصيل وحدة البوصلة مع Arduino. فيما يلي بعض الأمثلة وطرقها البديلة:

أخطاء التجميع: يمكن أن يحدث هذا إذا لم يتم تضمين المكتبات الضرورية أو إذا كانت هناك أخطاء في بناء الجملة في التعليمات البرمجية. لإصلاح ذلك ، تأكد من تثبيت المكتبات الصحيحة وتحقق من التعليمات البرمجية الخاصة بك بحثًا عن أي أخطاء في بناء الجملة. كما رأينا عدة مرات ، ربما تكون قد ثبتت عدة مكتبات HCM5883L عن طريق الخطأ.

خطأ في التحويل: "Adafruit_HMC5883_Unified" يفعل لا اسم نوع

أخطاء الاتصال: إذا لم تتمكن من الاتصال بوحدة البوصلة ، فتأكد من توصيلها بالمسامير الصحيحة على Arduino وأن الأسلاك الخاصة بك صحيحة. قد تحتاج أيضًا إلى ضبط عنوان I2C للوحدة في التعليمات البرمجية الخاصة بك إذا كان مختلفًا عن العنوان الافتراضي — وهو 0x1E.

خطأ استخدام hmc5883l / جهاز الاختبار (خط246) خطأ في الاتصال بمستشعر HMC5883L. القيمة يقرأ من ID_A، ID_B و تسجيلات ID_C يفعللا تطابق القيم المتوقعة.

تدخل مغناطيسي: إذا كانت قراءات البوصلة غير مستقرة أو متقلبة ، فقد يكون ذلك بسبب التداخل المغناطيسي من الأجسام القريبة. انقل الوحدة بعيدًا عن أي مغناطيس أو مصادر أخرى للتداخل المغناطيسي للحصول على قراءات أكثر استقرارًا.

ارفع مستوى مشروعاتك باستخدام وحدة البوصلة GY-271

إن القدرة على استخدام وحدة البوصلة GY-271 HCM5883L تفتح الباب أمام بناء مشاريع DIY أكثر تعقيدًا باستخدام Arduino مثل المركبات الجوالة التي تعمل بنظام تحديد المواقع العالمي (GPS) والطائرات بدون طيار DIY. الاحتمالات لا حصر لها ، خاصة عند إضافة أجهزة استشعار أخرى.