- MPU6050 مستشعر الجيروسكوب ومقياس التسارع
- جهاز الاستشعار المرن
- الاستعداد للطباعة ثلاثية الأبعاد لـ Robotic ARM:
- المكونات المطلوبة:
- مخطط الرسم البياني:
- تركيب MPU6050 & Flex Sensor على القفازات
- برمجة Arduino Nano للذراع الآلي
- عمل الذراع الآلية باستخدام خاصية Arduino
تعتبر الأذرع الروبوتية واحدة من الإبداعات الهندسية الرائعة ومن الرائع دائمًا مشاهدة هذه الأشياء وهي تميل وتدور لإنجاز الأشياء المعقدة تمامًا مثل الذراع البشرية. يمكن العثور على هذه الأذرع الروبوتية بشكل شائع في الصناعات في خط التجميع التي تؤدي أعمالًا ميكانيكية مكثفة مثل اللحام والحفر والطلاء وما إلى ذلك ، كما يتم تطوير أذرع روبوتية متقدمة حديثًا بدقة عالية لإجراء عمليات جراحية معقدة. في السابق ، قمنا بطباعة ذراع آلية ثلاثية الأبعاد وقمنا ببناء ذراع روبوتية ذاتية التحديد ووضعها باستخدام متحكم ARM7. سنستخدم مرة أخرى نفس الذراع الروبوتية المطبوعة ثلاثية الأبعاد لإنشاء ARM آلي يتم التحكم فيه بإيماءات اليد باستخدام Arduino Nano و MPU6050 Gyroscope والمستشعر المرن.
يتم التحكم في موضع الذراع الروبوتية المطبوع ثلاثي الأبعاد من خلال قفاز يدوي متصل بجيروسكوب MPU6050 وجهاز استشعار مرن. يستخدم مستشعر Flex للتحكم في مؤازرة القابض للذراع الروبوتي ويستخدم MPU6050 لحركة الروبوت في المحور X و Y. إذا لم يكن لديك طابعة ، فيمكنك أيضًا بناء ذراعك باستخدام ورق كرتون بسيط كما صممنا لمشروع Arduino Robotic Arm الخاص بنا. للإلهام ، يمكنك أيضًا الرجوع إلى الذراع الروبوتية للتسجيل والتشغيل التي أنشأناها مسبقًا باستخدام Arduino.
قبل الخوض في التفاصيل ، أولاً ، دعنا نتعرف على مستشعر MPU6050 ومستشعر المرن.
MPU6050 مستشعر الجيروسكوب ومقياس التسارع
يعتمد MPU6050 على تقنية الأنظمة الميكانيكية الدقيقة (MEMS). يحتوي هذا المستشعر على مقياس تسارع ثلاثي المحاور وجيروسكوب ثلاثي المحاور ومستشعر درجة حرارة مدمج. يمكن استخدامه لقياس المعلمات مثل التسارع ، والسرعة ، والتوجيه ، والإزاحة ، وما إلى ذلك. لقد قمنا سابقًا بتوصيل MPU6050 مع Arduino و Raspberry pi ، كما قمنا ببناء بعض المشاريع باستخدامه مثل - روبوت الموازنة الذاتية ، ومنقلة Arduino الرقمية ، ومقياس ميل Arduino.
الميزات في مستشعر MPU6050:
- الاتصال: بروتوكول I2C مع عنوان I2C القابل للتكوين
- امدادات الطاقة المدخلات: 3-5V
- يوفر ADC المدمج 16 بت دقة عالية
- يوفر DMP المدمج قوة حسابية عالية
- يمكن استخدامه للتفاعل مع أجهزة I2C الأخرى مثل مقياس المغناطيسية
- جهاز استشعار درجة الحرارة المدمج
تفاصيل Pin-Out لـ MPU6050:
دبوس | إستعمال |
Vcc | يوفر الطاقة للوحدة ، يمكن أن تكون + 3 فولت إلى +5 فولت. عادة ما يتم استخدام + 5V |
أرض | متصل بأرض النظام |
الساعة التسلسلية (SCL) | يستخدم لتوفير نبض الساعة لاتصالات I2C |
البيانات التسلسلية (SDA) | تستخدم لنقل البيانات من خلال اتصالات I2C |
البيانات التسلسلية المساعدة (XDA) | يمكن استخدامه لواجهة وحدات I2C الأخرى مع MPU6050 |
الساعة التسلسلية المساعدة (XCL) | يمكن استخدامه لواجهة وحدات I2C الأخرى مع MPU6050 |
AD0 | إذا تم استخدام أكثر من MPU6050 وحدة MCU واحدة ، فيمكن استخدام هذا الدبوس لتغيير العنوان |
مقاطعة (INT) | دبوس المقاطعة للإشارة إلى أن البيانات متاحة لقراءة MCU |
جهاز الاستشعار المرن
ليست أجهزة الاستشعار المرنة سوى مقاومة متغيرة. تتغير مقاومة المستشعر المرن عندما يكون المستشعر عازمًا. وهي متوفرة عادة بمقاسين 2.2 بوصة و 4.5 بوصة.
لماذا نستخدم حساسات مرنة في مشروعنا؟
في هذا الذراع الروبوتية التي يتم التحكم فيها بواسطة الإيماءة ، يتم استخدام مستشعر مرن للتحكم في إمساك الذراع الآلية. عندما يكون المستشعر المرن الموجود على قفاز اليد مثنيًا ، يدور محرك المؤازرة المتصل بالمقبض ويفتح القابض.
يمكن أن تكون مستشعرات Flex مفيدة في العديد من التطبيقات وقد قمنا ببناء عدد قليل من المشاريع باستخدام مستشعر Flex مثل وحدة التحكم في الألعاب ومولد النغمات وما إلى ذلك
الاستعداد للطباعة ثلاثية الأبعاد لـ Robotic ARM:
تم إنشاء الذراع الروبوتية المطبوعة ثلاثية الأبعاد المستخدمة في هذا البرنامج التعليمي باتباع التصميم المقدم من EEZYbotARM والمتوفر في Thingiverse. الإجراء الكامل لصنع الذراع الروبوتية المطبوعة ثلاثية الأبعاد وتفاصيل التجميع مع الفيديو موجودة في رابط Thingiverse ، والذي تمت مشاركته أعلاه.
أعلاه صورة ذراعي الروبوتية المطبوعة ثلاثية الأبعاد بعد التجميع مع 4 محركات مؤازرة.
المكونات المطلوبة:
- اردوينو نانو
- جهاز الاستشعار المرن
- 10 كيلو المقاوم
- MPU6050
- قفازات اليد
- توصيل الأسلاك
- اللوح
مخطط الرسم البياني:
يظهر الصورة التالية الاتصالات الدائرة ل اردوينو بادرة مقرها تسيطر الذراع الروبوتية.
توصيل الدائرة بين MPU6050 و Arduino Nano:
MPU6050 |
اردوينو نانو |
VCC |
+ 5 فولت |
GND |
GND |
SDA |
A4 |
SCL |
A5 |
اتصال الدائرة بين المحركات المؤازرة واردوينو نانو:
اردوينو نانو |
أجهزة السيارات |
محول الطاقة |
د 2 |
سيرفو 1 برتقالي (PWM Pin) |
- |
د 3 |
سيرفو 2 برتقال (PWM دبوس) |
- |
د 4 |
سيرفو 3 برتقال (PWM دبوس) |
- |
د 5 |
سيرفو 4 برتقال (PWM دبوس) |
- |
GND |
أجهزة 1،2،3،4 براون (GND Pin) |
GND |
- |
أجهزة 1،2،3،4 أحمر (+ 5V دبوس) |
+ 5 فولت |
A استشعار المرن يحتوي على اثنين من المسامير. لا تحتوي على محطات مستقطبة. لذا فإن الدبوس الأول P1 متصل بـ Arduino Nano's Analog Pin A0 بمقاوم سحب 10 كيلو والدبوس الثاني P2 مؤرض على Arduino.
تركيب MPU6050 & Flex Sensor على القفازات
لقد قمنا بتركيب MPU6050 و Flex Sensor على قفاز يدوي. هنا يتم استخدام اتصال سلكي لتوصيل Glove والذراع الآلي ولكن يمكن جعله لاسلكيًا باستخدام اتصال RF أو اتصال Bluetooth.
بعد كل اتصال ، يبدو الإعداد النهائي للذراع الآلي الذي يتم التحكم فيه عن طريق الإيماءات مثل الصورة أدناه:
برمجة Arduino Nano للذراع الآلي
كالعادة ، يتم تقديم رمز كامل مع مقطع فيديو عملي في نهاية هذا البرنامج التعليمي. هنا يتم شرح بضعة أسطر مهمة من التعليمات البرمجية.
1. أولاً ، قم بتضمين ملفات المكتبة الضرورية. تُستخدم مكتبة Wire.h لاتصالات I2C بين Arduino Nano و MPU6050 و servo.h للتحكم في محرك سيرفو.
#تضمن
2. بعد ذلك ، يتم الإعلان عن كائنات فئة المؤازرة. نظرًا لأننا نستخدم أربعة محركات مؤازرة ، يتم إنشاء أربعة كائنات مثل servo_1 و servo_2 و servo_3 و servo_4.
أجهزة مؤازرة_1 ؛ أجهزة مؤازرة_2 ؛ أجهزة مؤازرة_3 ؛ أجهزة مؤازرة_4 ؛
3. بعد ذلك ، يتم التصريح عن عنوان I2C الخاص بـ MPU6050 والمتغيرات التي سيتم استخدامها.
const int MPU_addr = 0x68 ؛ // MPU6050 I2C العنوان int16_t axis_X، axis_Y، axis_Z؛ int minVal = 265 ؛ int maxVal = 402 ؛ مزدوج x ؛ ص مزدوج ض مزدوج.
4. بعد ذلك في إعداد الفراغ ، تم تعيين معدل الباود 9600 للاتصال التسلسلي.
Serial.begin (9600) ؛
وتم إنشاء اتصال I2C بين Arduino Nano و MPU6050:
Wire.begin () ؛ // تهيئة I2C Communication Wire.beginTransmission (MPU_addr) ؛ // بدء الاتصال بـ MPU6050 Wire.write (0x6B) ؛ // يكتب لتسجيل 6B Wire.write (0) ؛ // يكتب 0 في 6B سجل لإعادة تعيين Wire.endTransmission (صحيح) ؛ // ينتهي انتقال I2C
أيضًا ، يتم تحديد أربعة دبابيس PWM لتوصيلات محرك سيرفو.
servo_1.attach (2) ؛ // Forward / Reverse_Motor servo_2.attach (3) ؛ // Up / Down_Motor servo_3.attach (4) ؛ // Gripper_Motor servo_4.attach (5) ؛ // يسار / يمين_موتور
5. بعد ذلك ، في وظيفة الحلقة الفارغة ، قم مرة أخرى بإنشاء اتصال I2C بين MPU6050 و Arduino Nano ثم ابدأ في قراءة بيانات X ، Y ، Z-Axis من سجل MPU6050 وتخزينها في المتغيرات المقابلة.
Wire.beginTransmission (MPU_addr) ؛ Wire.write (0x3B) ؛ // ابدأ بـ regsiter 0x3B Wire.endTransmission (خطأ) ؛ Wire.request From (MPU_addr، 14، true) ؛ // قراءة 14 تسجيلات axis_X = Wire.read () << 8-Wire.read ()؛ axis_Y = Wire.read () << 8-Wire.read () ؛ axis_Z = Wire.read () << 8-Wire.read () ؛
بعد ذلك ، قم بتعيين الحد الأدنى والحد الأقصى لقيمة بيانات المحور من مستشعر MPU6050 في النطاق من -90 إلى 90.
int xAng = map (axis_X، minVal، maxVal، -90،90) ؛ int yAng = map (axis_Y، minVal، maxVal، -90،90) ؛ int zAng = map (axis_Z، minVal، maxVal، -90،90) ؛
ثم استخدم الصيغة التالية لحساب قيم x و y و z بدلالة 0 إلى 360.
س = RAD_TO_DEG * (atan2 (-yAng، -zAng) + PI) ؛ y = RAD_TO_DEG * (atan2 (-xAng، -zAng) + PI) ؛ ض = RAD_TO_DEG * (atan2 (-yAng ، -xAng) + PI) ؛
ثم اقرأ بيانات الإخراج التناظرية لجهاز الاستشعار المرن عند دبوس A0 الخاص بـ Arduino Nano ووفقًا للقيمة الرقمية للمستشعر المرن ، قم بتعيين زاوية المؤازرة للقابض. لذلك إذا كانت بيانات المستشعر المرن أكبر من 750 ، فإن زاوية محرك سيرفو للقابض تكون 0 درجة وإذا كانت أقل من 750 تكون 180 درجة.
القابض int int flex_sensorip = analogRead (A0) ؛ إذا (flex_sensorip> 750) { القابض = 0 ؛ } آخر { القابض = 180 ؛ } servo_3.write (القابض) ؛
ثم يتم تعيين حركة MPU6050 على المحور X من 0 إلى 60 من حيث 0 إلى 90 درجة للحركة الأمامية / العكسية للمحرك المؤازر للذراع الآلي.
إذا (x> = 0 && x <= 60) { int mov1 = map (x، 0،60،0،90) ؛ Serial.print ("الحركة في F / R =") ؛ Serial.print (mov1) ؛ Serial.println ((char) 176) ؛ servo_1.write (mov1) ؛ }
و حركة MPU6050 على المحور X 250-360 تم تعيينه من حيث 0-90 درجة لذراع UP / DOWN الحركة الروبوتية محرك سيرفو ل.
وإلا إذا (x> = 300 && x <= 360) { int mov2 = map (x، 360،250،0،90)؛ Serial.print ("الحركة لأعلى / لأسفل =") ؛ Serial.print (mov2) ؛ Serial.println ((char) 176) ؛ servo_2.write (mov2) ؛ }
يتم تعيين حركة MPU6050 على المحور Y من 0 إلى 60 من حيث 90 إلى 180 درجة للحركة اليسرى للذراع الآلي بمحرك مؤازر.
إذا (y> = 0 && y <= 60) { int mov3 = map (y، 0،60،90،180) ؛ Serial.print ("الحركة في اليسار =") ؛ Serial.print (mov3) ؛ Serial.println ((char) 176) ؛ servo_4.write (mov3) ؛ }
يتم تعيين حركة MPU6050 في المحور Y من 300 إلى 360 من 0 إلى 90 درجة للحركة اليمنى للذراع الآلي للمحرك المؤازر.
وإلا إذا (y> = 300 && y <= 360) { int mov3 = map (y، 360،300،90،0)؛ Serial.print ("الحركة في اليمين =") ؛ Serial.print (mov3) ؛ Serial.println ((char) 176) ؛ servo_4.write (mov3) ؛ }
عمل الذراع الآلية باستخدام خاصية Arduino
أخيرًا ، قم بتحميل الكود إلى Arduino Nano وارتد قفاز اليد المثبت مع MPU6050 & Flex Sensor.
1. الآن حرك اليد لأسفل لتحريك الذراع الآلية للأمام والتحرك لأعلى لتحريك الذراع الآلية لأعلى.
2. ثم قم بإمالة اليد لليسار أو لليمين لتدوير الذراع الآلية إلى اليسار أو اليمين.
3. قم بثني الكبل المرن المرفق بإصبع قفاز اليد لفتح الماسك ثم حرره لإغلاقه.
يتم عرض العمل الكامل في الفيديو أدناه.