جدول المحتويات:

التواصل بين مستشعر الجيروسكوب ثلاثي المحاور BMG160 مع Arduino Nano: 5 خطوات
التواصل بين مستشعر الجيروسكوب ثلاثي المحاور BMG160 مع Arduino Nano: 5 خطوات

فيديو: التواصل بين مستشعر الجيروسكوب ثلاثي المحاور BMG160 مع Arduino Nano: 5 خطوات

فيديو: التواصل بين مستشعر الجيروسكوب ثلاثي المحاور BMG160 مع Arduino Nano: 5 خطوات
فيديو: Project #19: Time - 9DoF IMU - Mk09 2024, ديسمبر
Anonim
Image
Image

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

في هذا البرنامج التعليمي ، سوف نوضح عمل BMG160 مع Arduino Nano.

الأجهزة التي ستحتاجها لهذا الغرض هي كما يلي:

1. BMG160

2. اردوينو نانو

3. كابل I2C

4. I2C Shield لاردوينو نانو

الخطوة 1: نظرة عامة على BMG160:

ماذا تحتاج..!!
ماذا تحتاج..!!

بادئ ذي بدء ، نود أن نطلعك على الميزات الأساسية لوحدة المستشعر وهي BMG160 وبروتوكول الاتصال الذي تعمل عليه.

BMG160 عبارة عن مستشعر جيروسكوب رقمي 16 بت ثلاثي المحاور يمكنه قياس المعدلات الزاوية. إنه قادر على حساب المعدلات الزاوية في ثلاثة أبعاد متعامدة للغرفة ، المحور x و y و z ، وتوفير إشارات الخرج المقابلة. يمكنه التواصل مع لوحة raspberry pi باستخدام بروتوكول الاتصال I2C. تم تصميم هذه الوحدة الخاصة لتلبية متطلبات تطبيقات المستهلك وكذلك الأغراض الصناعية.

بروتوكول الاتصال الذي يعمل عليه المستشعر هو I2C. I2C تعني الدائرة المتكاملة. إنه بروتوكول اتصال يتم فيه الاتصال من خلال خطوط SDA (البيانات التسلسلية) و SCL (الساعة التسلسلية). يسمح بتوصيل أجهزة متعددة في نفس الوقت. إنه أحد أبسط بروتوكولات الاتصال وأكثرها كفاءة.

الخطوة الثانية: ماذا تحتاج..

ماذا تحتاج..!!
ماذا تحتاج..!!
ماذا تحتاج..!!
ماذا تحتاج..!!
ماذا تحتاج..!!
ماذا تحتاج..!!

تشمل المواد التي نحتاجها لتحقيق هدفنا مكونات الأجهزة التالية:

1. BMG160

2. اردوينو نانو

3. كابل I2C

4. I2C Shield لاردوينو نانو

الخطوة 3: ربط الأجهزة:

ربط الأجهزة
ربط الأجهزة
ربط الأجهزة
ربط الأجهزة

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

سيعمل BMG160 على I2C. فيما يلي مثال على مخطط الأسلاك ، يوضح كيفية توصيل كل واجهة من أجهزة الاستشعار.

خارج الصندوق ، تم تكوين اللوحة لواجهة I2C ، لذلك نوصي باستخدام هذا التوصيل إذا كنت غير مدرك.

كل ما تحتاجه هو أربعة أسلاك! مطلوب أربعة اتصالات فقط دبابيس Vcc و Gnd و SCL و SDA ويتم توصيلها بمساعدة كابل I2C.

هذه الوصلات موضحة في الصور أعلاه.

الخطوة 4: كود اردوينو 3-Axis Gyroscope Measurement:

كود اردوينو 3-Axis Gyroscope Measurement
كود اردوينو 3-Axis Gyroscope Measurement
كود اردوينو 3-Axis Gyroscope Measurement
كود اردوينو 3-Axis Gyroscope Measurement

لنبدأ بكود اردوينو الآن.

أثناء استخدام وحدة الاستشعار مع اردوينو ، نقوم بتضمين مكتبة Wire.h. تحتوي مكتبة "Wire" على الوظائف التي تسهل اتصال i2c بين المستشعر ولوحة اردوينو.

يتم تقديم كود اردوينو بالكامل أدناه لراحة المستخدم:

# include // عنوان BMG160 I2C هو 0x68 (104)

#define العنوان 0x68

الإعداد باطل()

{

// تهيئة اتصال I2C باعتباره MASTER

Wire.begin () ؛

// تهيئة الاتصال التسلسلي ، اضبط معدل الباود = 9600

Serial.begin (9600) ؛

// بدء نقل I2C

Wire.beginTransmission (العنوان) ؛

// حدد سجل النطاق

Wire.write (0x0F) ؛

// تكوين نطاق النطاق الكامل 2000 dps

Wire.write (0x80) ؛

// إيقاف ناقل الحركة I2C

Wire.endTransmission () ؛

// بدء نقل I2C

Wire.beginTransmission (العنوان) ؛

// حدد سجل النطاق الترددي

Wire.write (0x10) ؛

// ضبط النطاق الترددي = 200 هرتز

Wire.write (0x04) ؛

// إيقاف ناقل الحركة I2C

Wire.endTransmission () ؛

تأخير (300) ؛

}

حلقة فارغة()

{

بيانات int غير الموقعة [6] ؛

// بدء نقل I2C

Wire.beginTransmission (العنوان) ؛

// حدد سجل بيانات مقياس الجيرومتر

Wire.write (0x02) ؛

// إيقاف ناقل الحركة I2C

Wire.endTransmission () ؛

// طلب 6 بايت من البيانات

Wire.request From (Addr، 6) ؛

// قراءة 6 بايت من البيانات

// xGyro lsb و xGyro msb و yGyro lsb و yGyro msb و zGyro lsb و zGyro msb

إذا (Wire.available () == 6)

{

البيانات [0] = Wire.read () ،

البيانات [1] = Wire.read () ،

البيانات [2] = Wire.read () ؛

البيانات [3] = Wire.read () ؛

البيانات [4] = Wire.read () ؛

البيانات [5] = Wire.read () ؛

}

تأخير (300) ؛

// تحويل البيانات

int xGyro = ((data [1] * 256) + data [0]) ؛

int yGyro = ((data [3] * 256) + data [2]) ؛

int zGyro = ((data [5] * 256) + data [4]) ؛

// إخراج البيانات إلى الشاشة التسلسلية

Serial.print ("المحور السيني للدوران:") ؛

Serial.println (xGyro) ؛ Serial.print ("المحور الصادي للدوران:") ؛

Serial.println (yGyro) ؛ Serial.print ("Z- محور الدوران:") ؛

Serial.println (zGyro) ؛

تأخير (500) ؛

}

الخطوة 5: التطبيقات:

التطبيقات
التطبيقات

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

موصى به: