الخنفسـابـوت

الخنفسابوت

سنقوم في هذا المقال بشرح كيفية صنع الخنفسابوت عن طريق استعمال بطاقة أردوينو.

تقديم

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

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

الجزء 1: الأجزاء الرئيسية

جسم الروبوت والفكين

العربية

إنجليزية

فرنسية

الكمية

القيمة أو الصيغة

ألواح خشبية

Wooden planks

Planches de bois

2x3mm

شريحة من الألمنيوم

Sheet of aluminium

Feuille d'aluminium

مبدد حراري

Heatsink

Dissipateur de chaleur

احصل عليه من الخردة

طلاء (صباغة)

paint

سوداء

شرائح إسفنجية صلبة

EVA foam

أحمر وأسود

براغي وصمولات

Screws with nuts

55

3 mm

محركات السيرفو

Servos

14

12 للأرجل

2 للفكين

الرابط

المتحكم بالسيرفو

Servo controller

USC 16-channel

الرابط

لوحة أردوينو

Arduino board

UNO مثلا

الرابط

مقوم كهربائي

Voltage Regulator

Régulateur de tension

UBEC 8A/15A

الرابط

بطارية ليبو

LiPo battery

الرابط

العينين والمتحكم

العربية

إنجليزية

فرنسية

الكمية

القيمة أو الصيغة

صمامات ضوئية

LED

64

أسود

الرابط

90

أحمر

الرابط

أسلاك كهربائية

Wires

أحمر وأسود

متحكم

Microcontroller

2

Atmega8

الرابط

مقبس

Socket

douille

28 pin

الرابط

متذبذب بلوري

Crystal oscillator

Quartz

16 MHz

الرابط

مكثف سيراميكي

Ceramic capacitor

Condesateur ceramique

4

22pF

الرابط

مقوم كهربائي

Regulator

Régulateur

LM7805

الرابط

مقاومات

Resistors

Resistance

12

220 Ohm

الرابط

كابلات

Cables

الكثير

المتحكم عن بعد

العربية

إنجليزية

فرنسية

الكمية

القيمة أو الصيغة

مقبض البلايستايشن 2

PS2 Joysticks

Manche à balai PS2

2

الرابط

بلوك دبابيس

Screw terminal blocks

Borniers à vis

الرابط

مقاومات

Resistors

Resistance

10KOhm

الرابط

اللوحة المثقبة للتجريب

Bread board

(Y use one with 700 points)

الرابط

مقاومة متغيرة خطية

slide potentiometer

Potentiomètre linéaire

50Kohm

الرابط

بطاقة أردوينو نانو

Arduino nano

V3.0

الرابط

مقياس التسارع

Accelerometer

Accéléromètre

MMA7361 3 axis

الرابط

نموذج مرسل/مستقبل

Transceiver module

Emetteur-récepteur

NRF24L01 2,4 GHz

الرابط

البرامج

Arduino IDE

USC Software

AutoCad 2012

الأدوات

منشار

Saw

ورق مرحاض

Toilet paper

مبرد

Lime

مقص

Scissors

مثقاب كهربائي

Electric Drill

مسطرة

Rule

غراء (لصاق)

Glue (cyanoacrylate glue)

قلم رصاص

Pencil

مقبض تمساحي

Tweezers

مفك براغي

Screwdriver

الخطوة 2: تصميم الأجزاء وصنع النموذج

قمت بتصميم الأجزاء لتناسب محركات السيرفو من صنف SG90. صممت النماذج على الورق. استعملت صفيحة خشبية سمكها 3 ملم. رسمت عليها النماذج على حسب حجم محركات السيرفو. وعدد الأجزاء التي احتجتها هي كالتالي:

القطعة A: نحتاج لـ 48 وحدة القطعة B: نحتاج لـ 6 وحدة.

القطعة C: نحتاج لـ 12 وحدة القطعة D: نحتاج لـ 12 وحدة.

القطعة E: نحتاج لـ 12 وحدة القطعة F: نحتاج لـ 12 وحدة.

القطعة G: نحتاج لـ 12 وحدة القطعة H: نحتاج لـ 12 وحدة.

القطعة I: نحتاج لـ 6 وحدة القطعة J: نحتاج لـ 2 وحدة.

الخطوة 3: التقطيع

كل حسب استطاعته. بالنسبة لي فقد استخدمت منشارا، ومبردا ومثقابا كهربائيا ويدي.

قبل الشروع في التقطيع من الأفضل أن تنجز ثقوبا باستعمال مثقابا كهربائيا قطره 3 ملم.

بعد القطع من المستحسن لك أن تبرد حافات القطع بالمبرد حتى تصبح ملساء.

الخطوة 4: التلصيق

الأدوات التي استخدمتها هنا هي: لصاق شديد (غراء)، وورق المرحاض (للتنظيف)، ومقابض.

سنحتاج لأربع قطع من أجل صنع كل رجل سنوصلها بمحرك السيرفو. إذن، لكل رجل قم بلصق قطعة B بقطعة C. وآخر شيء يجب أن تفعله هو إلصاق قطعتين H ببعضهما البعض.

ملاحظة: إذا خشيت من عدم مطابقة الثقوب، فيمكنك تنفيذ اللصق أولا ومن بعد ذلك تنجز الثقوب.

الخطوة 5: التزويق والتجميل

الأدوات التي استخدمتها هنا هي: أغلفة سوداء وحمراء، ولصاق، ومقص، وقلم وصباغة.

إذا اردت أن تتقنها جدا فعليك أن تصبغ القطع أولا ثم تغلفها بالأغلقة كما ترى في الصور.

الخطوة 6: تركيب محركات السيرفو

الأدوات التي استخدمتها هنا هي: الكثير من البراغي، مفك براغي ومحركات السيرفو.

الخطوة 7: توصيل الأجزاء الإلكترونية

الأدوات التي استخدمتها هنا هي: لوحة أردوينو، المتحكم (كونترولور 16-قناة) بمحركات السيرفو، ومنظم UBEC 8A، وبطاريات LIPO.

التغذية الكهربائية

سيحتاج متحكم (كونترولور) السيرفو لمنبعين للطاقة: منبع تغذية محرك السيرفو ومنبع تغذية الشريحة.

  • القطب الموجب لمحرك السيرفو (+): القطب VS (على يسار الموصل 3 في الشكل أعلاه)

  • القطب الموجب لمحرك السيرفو (–): القطب GND (في وسط الموصل 3 في الشكل أعلاه)

تعتمد معايير التغذية الكهربائية لمحركات السيرفو على المواصقات التي تجدها مرافقة للمحركات ذاتها. مثلا، لمحرك السيرفو من صنف SG-90 تعذية كهربائية تتراوح بين 4 و 5 فولط. فلا تنسى أن تفحص الجهد الكهربائي الذي تحتاجه محركات السيرفو التي اخترتها لهذا المشروع.

  • القطب الموجب للشريحة (+): القطب VSS (على يمين الموصل 3 في الشكل أعلاه)

  • القطب الموجب للشريحة (–): القطب GND (في وسط الموصل 3 في الشكل أعلاه)

إذا كانت الشريحة ستوصل من خلال الدخل VSS، فيجب أن تكون التغذية الكهربائية تتراوح بين 6.5 و 12 فولط.

توصيل أردوينو، والمنظم USC ومحركات السيرفو

الأطراف التي تراها مؤطرة بالأحمر هي التي سيتم إيصال محركات السيرفو بها لتلقي الإشارة (احذر من مسألة الإتجاه عند التوصيل مع محركات السيرفو ).

لتوصيل الكونترولور USC، قم ببساطة بإيصال مربطه rx بالمربط tx لبطاقة أردوينو، وإيضا مربطه tx بالمربط rx لبطاقة أردوينو. بعدها صل مربطه GND ببطاقة أردوينو.

الخطوة 8: البرمجة

قم بتحميل الملفات التالية التي ستحتاجها لصنع هذا الروبوت:

rios_usc.exe

usc_driver.exe

usc_en.pdf

الأدوات التي استخدمتها هنا هي: برنامج أردوينو، وبرنامج USC، قم بتحميلهما من الملفات المذكورة.

قبل شروعك في البرمجة سيكون من الجميل معرفة القيم القصوى والقيم الدنيا لتحرك كل محرك من محركات السيرفو. لمعرفة هذا قم بتركيب الكونترولور USC داخل الروبوت. وحيث أننا سنبرمج المتحكم عن طريق الكابل USB، الذي سيصل الحاسوب بالروبوت، سنستطيع باستخدام البرنامج RIOS-USC التحكم بدوران المحركات واختبار نجاعة واتجاه دورانها.

بعد هذا الفحص الأولي، سننتقل لبرمجة بطاقة أردوينو من أجل التحكم بالمتحكم USC الذي بدوره سيتحكم بمحركات السيرفو. يعتبر الكونترولور USC جهازا تابعا، أي أن مهمته هو استقبال الأوامر وتنفيذها وفي المقابل فليس مهمته هي ”التفكير“.

مميزات بروتوكول الإتصال الذي استخدمناه هي كالتالي:

serial communication (TTL level),

baud rate 9600,

no check bit,

8 data bits,

1 stop bit

التحكم في محرك واحد

سنحتاج للأمر التالي:

#1P1500T100\r\n

بحيث ترمز:

  • المعلومة 1# لقناة التحكم بمحرك السيرفو.

  • المعلومة P1500 لمكان محرك السيرفو في المجال من 500 إلى 2500.

  • المعلومة T100 لمدة التنفيذ وتمثل السرعة في المجال من 100 إلى 9999.

التحكم في عدة محركات

سنحتاج للأمر التالي:

#1P600#2P900#8P2500T100\r\n

بحيث ترمز:

  • المعلومات 1# و2# و8# لقنوات التحكم لمحركات السيرفو.

  • المعلومات P600 و P900 و P2500 لأمكنة ثلاث محركات السيرفو في المجال من 500 إلى 2500.

  • المعلومة T100 لمدة التنفيذ وتمثل السرعة للمحركات الثلاث في المجال من 100 إلى 9999. بغض النظر عن عدد محركات السيرفو، نحتاج لمدة تنفيذ واحدة تتحرك فيها المحركات تآنيا.

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

الخطوة 9: تصميم وتصنيع العينين

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

تتكون شاشة العين من زمرة تتألف من 32 صماما ضوئيا أزرق محيطة بمصفوفة مكونة من 5 صفوف و9 أعمدة لصمامات ضوئية حمراء. هذا من أجل جعل المصفوفة تظهر عدة إشعارات ثابتة ومتحركة على الشاشة.

الخطوة 10: لوحة التحكم بالعينين

للتحكم بالعينين قمت بتصميمها على برنامج كما هو مذكور في المقال 1 ومن ثم طبعت التصميم على ورق لأنفذها بالطريقة المذكورة في المقال 3. المهم هذا يعتمد على الطريقة التي تختارها أنت:


المقال 1: اصنعها إليكترونيا – تحويل الدارات إلى بطاقات إليكترونية
المقال 2: اصنعها إليكترونيا – الشرائح الإليكترونية1
المقال 3: اصنعها إليكترونيا – الشرائح الإليكترونية2

الخطوة 11: الفكين

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

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

الخطوة 12: تصميم الصندوق

الصور شارحة نفسها بنفسها. قم بتصميم الصندوق وصنعه كما تراه في الصور.

الخطوة 13: النتيجة النهائية

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

الخطوة 14: مقبض التحكم

الأدوات التي استخدمتها هنا هي: المنشار، والمبرد، والمثقب.

قمت بتصميم هذه اللوحات على برنامج كما هو مذكور في المقال 1 ومن ثم طبعت التصميم على ورق لأنفذها بالطريقة المذكورة في المقال 3. المهم هذا مرة أخرى يعتمد على الطريقة التي تختارها أنت:


المقال 1: اصنعها إليكترونيا – تحويل الدارات إلى بطاقات إليكترونية
المقال 2: اصنعها إليكترونيا – الشرائح الإليكترونية1
المقال 3: اصنعها إليكترونيا – الشرائح الإليكترونية2

صممت هذه اللوحات لتناسب حجم مقبض التحكم الخاص بجهاز الألعاب PS2. والسبب الرئيسي وراء تصميمي لهذه اللوحات الصغيرة هو تسهيل التوصيل بين حدي المقاومة المتغيرة والزر الضغطي الموجودة في بطاقة أردوينو. تضم هذه اللوحة مقاومة 10KOhm وهو الشيء الذي يجعل التوصيل بين الزر وأردوينو يحتاج لكابل فقط.

بعد الإنتهاء من صنعها قم بتوصيل الدبابيس التابعة للوحة مقبض التحكم على الشكل التالي:

  • يوصل المربط GND بالمربط GND للوحة أردوينو.

  • يوصل المربط Vin بالمربط 5V للوحة أردوينو.

  • يوصل المربط x-axis للمقاومة المتغيرة بمربط تناظري (analog pin) للوحة أردوينو (مثلا A0).

  • يوصل المربط y-axis للمقاومة المتغيرة بمربط تناظري (analog pin) للوحة أردوينو (مثلا A1).

  • يوصل الزر بمربط رقمي (digital pin) للوحة أردوينو (مثلا D8).

الخطوة 15: كيف نستعمل النموذج 2.4GHz؟

قم بتحميل الملفات التالية التي ستحتاجها لصنع هذا الروبوت:

nRF24L01P_Product_Specification_1_0.pdf

RF24-master.zip

استعملت نموذجين للتواصل اللاسكي/المذياعي من صنف nRF24L01 2.4GHz لتحقيق التواصل بين لوحتي أردوينو. مجال هذين النموذجين يقدر من مسافة 50 قدم إلى 2000 قدم.

وللمعلومة فقط، يعتمد هذين النموذجين على شريحة تسمى +nRF24L01 التي تضم خاصية الإرسال والإستقبال بتردد 2.4GHz، ومحلل الترددات المذياعية، ودارة منطقية تحوي بروتوكولا مسرعا للتواصل عن طريق الواجهة SPI. وهذين النموذجين يحتويان على هوائيتين مركبيتن داخليا.

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

استعن بالصورتين والجدول جانبه من أجل توصيل نموذج الإرسال والإستقبال ببطاقة أردوينو.

يجب أن تعرف أنه يجب عليك إيصال المربط VCC للنموذج بمربط 3.3V وليس 5.0V.

فيما يلي البرنامج الخاص بالأرسال وآخر خاص بالإستقبال.

برنامج المرسل

/*

- WHAT IT DOES: Reads Analog values on A0, A1 and transmits

them over a nRF24L01 Radio Link to another transceiver.

1 - GND

2 - VCC 3.3V !!! NOT 5V

3 - CE to Arduino pin 9

4 - CSN to Arduino pin 10

5 - SCK to Arduino pin 13

6 - MOSI to Arduino pin 11

7 - MISO to Arduino pin 12

8 - UNUSED

- Analog Joystick:

GND to Arduino GND

VCC to Arduino +5V

X Pot to Arduino A0

Y Pot to Arduino A1

*/

/*-----( Import needed libraries )-----*/

#include <SPI.h>

#include <nRF24L01.h>

#include <RF24.h>

/*-----( Declare Constants and Pin Numbers )-----*/

#define CE_PIN 9

#define CSN_PIN 10

#define JOYSTICK_X A0

#define JOYSTICK_Y A1

// NOTE: the "LL" at the end of the constant is "LongLong" type

const uint64_t pipe = 0xE8E8F0F0E1LL; // Define the transmit pipe

/*-----( Declare objects )-----*/

RF24 radio(CE_PIN, CSN_PIN); // Create a Radio

/*-----( Declare Variables )-----*/

int joystick[2]; // 2 element array holding Joystick readings

void setup() /****** SETUP: RUNS ONCE ******/

{

Serial.begin(9600);

radio.begin();

radio.openWritingPipe(pipe);

}//--(end setup )---

void loop() /****** LOOP: RUNS CONSTANTLY ******/

{

joystick[0] = analogRead(JOYSTICK_X);

joystick[1] = analogRead(JOYSTICK_Y);

radio.write( joystick, sizeof(joystick) );

}//--(end main loop )--

برنامج المستقبل

/*

- WHAT IT DOES: Receives data from another transceiver with 2 Analog values from a Joystick

- Displays received values on Serial Monitor

1 - GND

2 - VCC 3.3V !!! NOT 5V

3 - CE to Arduino pin 9

4 - CSN to Arduino pin 10

5 - SCK to Arduino pin 13

6 - MOSI to Arduino pin 11

7 - MISO to Arduino pin 12

8 - UNUSED

*/

/*-----( Import needed libraries )-----*/

#include <SPI.h>

#include <nRF24L01.h>

#include <RF24.h>

/*-----( Declare Constants and Pin Numbers )-----*/

#define CE_PIN 9

#define CSN_PIN 10

// NOTE: the "LL" at the end of the constant is "LongLong" type

const uint64_t pipe = 0xE8E8F0F0E1LL; // Define the transmit pipe

/*-----( Declare objects )-----*/

RF24 radio(CE_PIN, CSN_PIN); // Create a Radio

/*-----( Declare Variables )-----*/

int joystick[2]; // 2 element array holding Joystick readings

void setup() /****** SETUP: RUNS ONCE ******/

{

Serial.begin(9600);

delay(1000);

Serial.println("Nrf24L01 Receiver Starting");

radio.begin();

radio.openReadingPipe(1,pipe);

radio.startListening();;

}//--(end setup )---

void loop() /****** LOOP: RUNS CONSTANTLY ******/

{

if ( radio.available() )

{ // Read the data payload until we've received everything

bool done = false;

while (!done)

{ // Fetch the data payload

done = radio.read( joystick, sizeof(joystick) );

Serial.print("X = ");

Serial.print(joystick[0]);

Serial.print(" Y = ");

Serial.println(joystick[1]);

}

}

else

{

Serial.println("No radio available");

}

}//--(end main loop )---

الخطوة 16: توصيل أداة التحكم والمقاومة المتغيرة الخطية

قمت أولا بتركيب جميع المركبات الإلكترونية، المكونة لمقبض التحكم، على لوحة التجريب المثقبة. قم ببساطة بتوصيل المرابط x وy وGND وVin لعصا كل مقبض للمرابط A0 و A1 و 5V وGND. والمقاومة المتغيرة الخطية بنفس الطريقة أيضا.

الخطوة 17: كيف تستعمل مقياس التسرع MMA7361؟

قم بتحميل الملفات التالية التي ستحتاجها لصنع هذا الروبوت:

AcceleroMMA7361_v0.8b.zip

refman.pdf

يحتاج مقياس التسارع لقليل من الطاقة الكهربائية ويحتوي على دخل للتبديل بين النطاقين 1.5g± و 6g±. صفات أخرى يتضمنها مقياس التسارع من بينها: نمط السبات، شرطية الإشارة، مصفاة عبور منخفضة أحادية القطب، تعويضات درجة الحرارة، اختبار ذاتي، وتحديد السقوط الحر.

مميزاته هي كالتالي:

  • التغذية الكهربائية: من 2.2V إلى 3.6V أو 5V.

  • نمطين للتبديل: 1.5g± و 6g±.

  • لوحة قابلة للتركيب على لوحة التجريب المثقبة.

  • استهلاك ضئيل للتيار الكهربائي: 400µA

  • نمط السبات: 3µA

  • استهلاك جهد كهربائي ضئيل أثناء العمل: بين 2.2V و 3.6V

  • حساسية عالية: 800mV/g عند 1.5g

  • استجابة سريعة: 0.5ms

  • اختبار ذاتي للحماية عند السقوط الحر.

  • شرطية الإشارة بمصفاة عبور منخفضة

  • تصميم قوي مضاد للصدمات.

باستعمال المكتبة البرمجية للحساس AcceleroMMA7361 سيكون من السهل استعماله وبرمجته. الدوال التي يمكنك استخدامها من هذه المكتبة هي كالتالي:

الدالة

المهمة

void begin()

للتهيئة بنمط اعتيادي.

void begin(int sleepPin, int selfTestPin, int zeroGPin, int gSelectPin, int xPin, int yPin, int zPin)

للتهيئة بنمط الخاص.

int getXRaw()

ترجع بقيمة خام صحيحة للمحور X للمنفذ التناظري لبطاقة أردوينو.

int getYRaw()

ترجع بقيمة خام صحيحة للمحور Y للمنفذ التناظري لبطاقة أردوينو.

int getZRaw()

ترجع بقيمة خام صحيحة للمحور Z للمنفذ التناظري لبطاقة أردوينو.

int getXVolt()

ترجع بقيمة صحيحة للجهد الكهربائي بـ mV من المحور X للمنفذ التناظري لبطاقة أردوينو.

int getYVolt()

ترجع بقيمة صحيحة للجهد الكهربائي بـ mV من المحور Y للمنفذ التناظري لبطاقة أردوينو.

int getZVolt()

ترجع بقيمة صحيحة للجهد الكهربائي بـ mV من المحور Z للمنفذ التناظري لبطاقة أردوينو.

int getXAccel()

ترجع بقيمة صحيحة للتسارع من المحور X للمنفذ التناظري لبطاقة أردوينو (1G = 100.00).

int getYAccel()

ترجع بقيمة صحيحة للتسارع من المحور Y للمنفذ التناظري لبطاقة أردوينو (1G = 100.00).

int getZAccel()

ترجع بقيمة صحيحة للتسارع من المحور Z للمنفذ التناظري لبطاقة أردوينو (1G = 100.00).

void getAccelXYZ(int _XAxis, int _YAxis, int _ZAxis)

ترجع بقيم صحيحة للتسارعات للمحاور كلها.

int getTotalVector()

ترجع بقيمة صحيحة لمقدار متجهة التسارع.

void setOffSets(int xOffSet, int yOffSet, int zOffSet)

void calibrate()

void setARefVoltage(double _refV)

void setAveraging(int avg)

تضع عدد القيم التي يجب أن يحسب متوسطها في الدالة getAccel، والإعتيادي فيها هو 10.

int getOrientation()

void setSensitivity(boolean sensi)

إذا كان sensi يساوي HIGH فإن نسبة الحساسية ستصبح تساوي Gه1.5 -/+

إذا كان sensi يساوي LOW فإن نسبة الحساسية ستصبح تساوي Gه6 -/+

void sleep()

تدفع الجهاز إلى نمط السبات (أي أن الجهاز سيصبح فاقدا للعمل)

void wake()

إذا كان الجهاز على نمط السبات فاستدعاء هذه الدالة يوقظه

للمكتبة ثلاث نماذج بسيطة:

  • الأول يقوم بمعرفة التسارع في كل محور.

  • الثاني يقوم بمعرفة الزاوية.

  • الثالث يقوم بمعرفة الجهد الكهربائي.

استعملت RawData للحصول على زاوية كل محور للمتحكم من أجل التحكم بالإنعطاف أو قل الميلان.

#include <AcceleroMMA7361.h>

AcceleroMMA7361 accelero;

int x;

int y;

int z;

void setup()

{

Serial.begin(9600);

accelero.begin(8, 7, 6, 5, A5, A6, A7);

accelero.setSensitivity(HIGH); //sets the sensitivity to +/-6G

accelero.calibrate();

}

void loop()

{

x = accelero.getXRaw();

y = accelero.getYRaw();

z = accelero.getZRaw();

Serial.print("\nx: ");

Serial.print(x);

Serial.print("\ty: ");

Serial.print(y);

Serial.print("\tz: ");

Serial.print(z);

delay(500); //(make it readable)

}

الخطوة 18: تجميع الكل

ما بقي من التركيب هو وضع مقياس التسارع (accelerometer) على لوحة التحكم وتوصيله لبطاقة أردوينو نانو كما شرحنا في الخطوة السابقة.

الخطوة 19: برمجة المتحكم عن بعد

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

values[0] = map(values[0], 23, 1000, 900, 1500); //Value from slider pot

values[1] = map(values[1], 23, 1000, 2100, 1540); //Value from slider pot

values[3] = map(values[3], 1, 1033, -295, 295); //Value from y-axis of right joystick

values[4] = map(values[4], 1, 1023, -295, 295); //Value from y-axis of left joystick

values[5] = map(values[5], 1, 1023, -360, 360); //Value from x-axis of left joystick

values[6] = map(values[6], 170, 500, -360, 360); //Value from x-axis of the accelerometer

values[7] = map(values[7], 170, 510, -360, 360); //Value from y-axis of the accelerometer

باستعمال أحد الأزرار على مقبضي التحكم أردت أن استعمل المثال المذكور في إحدى صفحات موقع أردوينو الذي يتمثل في عد عدد المرات التي يضغط فيها على الزر مما يؤدي إلى خلق نمط معين يستجيب له الخنفسابوت. http://arduino.cc/en/Tutorial/ButtonStateChange

/* State change detection (edge detection)

This example shows how to detect when a button

or button changes from off to on and on to off.

*/

// this constant won't change:

const int buttonPin = 2; // the pin that the pushbutton is attached to

const int ledPin = 13; // the pin that the LED is attached to

// Variables will change:

int buttonPushCounter = 0; // counter for the number of button presses

int buttonState = 0; // current state of the button

int lastButtonState = 0; // previous state of the button

void setup() {

pinMode(buttonPin, INPUT); // initialize the button pin as a input

pinMode(ledPin, OUTPUT); // initialize the LED as an output

Serial.begin(9600); // initialize serial communication

}

void loop() {

buttonState = digitalRead(buttonPin); // read the pushbutton input pin

if (buttonState != lastButtonState) { // compare the buttonState to its previous state

// if the state has changed, increment the counter

if (buttonState == HIGH) { // if the current state is HIGH then the button

// wend from off to on:

buttonPushCounter++;

Serial.println("on");

Serial.print("number of button pushes: ");

Serial.println(buttonPushCounter);

}

else { // if the current state is LOW then the button wend from on to off:

Serial.println("off");

}

}

// save the current state as the last state, for next time through the loop

lastButtonState = buttonState;

// turns on the LED every four button pushes by

// checking the modulo of the button push counter.

// the modulo function gives you the remainder of

// the division of two numbers:

if (buttonPushCounter % 4 == 0) { digitalWrite(ledPin, HIGH); }

else { digitalWrite(ledPin, LOW); }

}

أنشئت ثلاثة أنماط للتحكم بحركة الروبوت:

  • يخول النمط الأول مقبضي التحكم وكذا المقاومة المتغيرة الخطية لتحريك الخنفسابوت.

  • يخول النمط الثاني مقبضي التحكم والمقاومة المتغيرة ومقياس التسارع لتحريك الخنفسابوت.

  • يخول النمط الثالث الخنفسابوت قابلية المشي أماما وخلفا وغيرها عن طريق اللعب بمقبضي التحكم معا.

تأليف

تأليف: Deividmaxx

ترجمة بتصرف: محمد السهلي

المراجع

http://www.instructables.com/id/DIY-handmade-Hexapod-with-arduino-Hexdrake/?ALLSTEPS 

التعليقات   

 
سيف سعد
0 # سيف سعد 2016-09-05 05:59
اخي محمد ممكن اتكلم معك بخصوص الروبوت
www.facebook.com/Ibn.Alaqeed
هذا رابط الفيس الخاص بي ...
رد | رد مع اقتباس | اقتباس | تقرير إلى المدير
 

أضف تعليق


كود امني
تحديث


Go to top