كيفية بناء روبوت - الدرس 7: قم ببناء روبوت اردوينو الخاضع للتحكم في Bluetooth: 14 خطوة

Ù...غربية Ù...ع عشيقها في السرير، شاهد بنفسك

Ù...غربية Ù...ع عشيقها في السرير، شاهد بنفسك

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

Anonim

نظرًا لأن روبوت Arduino قادر على أداء الوظائف الأساسية ، فإننا نقوم الآن بتحديثه باستخدام ميزة واحدة هي التحكم في romote عبر البلوتوث.

على غرار البرامج التعليمية الأخرى "How to Build a Robot" ، تستخدم هنا مجموعة من أدوات Arduino (Pirate: 4WD Arduino Mobile Robot Kit مع Bluetooth 4.0) كمثال. علاوة على ذلك ، نحتاج أيضًا إلى مساعدة GoBLE (A Generic BLE APP Controller) التي تتيح لك الاتصال والتحكم في الروبوتات أو المنصات المحمولة أو الطائرات بدون طيار أو أي شيء آخر مثل مركبة جوية غير مأهولة (uav) مع أجهزتك المحمولة عبر البلوتوث.

قائمة الدروس:

الدرس 1: مقدمة

الدرس 2: بناء روبوت اردوينو الأساسي

الدرس 3: بناء خط تتبع اردوينو روبوت

الدرس 4: قم ببناء روبوت اردوينو يمكنه تجنب العقبات

الدرس 5: بناء روبوت اردوينو مع تأثيرات الضوء والصوت

الدرس 6: بناء روبوت اردوينو يمكن أن يراقب البيئة

الدرس 7: قم ببناء روبوت اردوينو المتحكم فيه بتقنية Bluetooth

تجهيز

iPhone أو iPad × 1

تطبيق GOBLE × 1

اللوازم:

الخطوة 1:

ملاحظة: حاليًا ، يمكن استخدام GoBLE فقط على أجهزة iOS ويطلب منك تثبيت iOS 8.1 على الأقل.

لمستخدمي iOS: يرجى تنزيل GoBLE من متجر التطبيقات.

الخطوة 2:

تحميل رمز الاختبار

يرجى توصيل Romeo BLE بالكمبيوتر. يمكن العثور على رمز الاختبار "GoBLE_Test.ino" في حزمة البرامج. أنها تمكنك من التحقق من إخراج إشارة من أجهزتك. قم بتنزيله وتحقق منه. لا تنس تحميل مكتبة GoBLE قبل تنزيل رمز الاختبار.

الخطوه 3:

اختبار بلوتوث

الآن لنبدأ الاقتران Bluetooth. قم بتشغيل bluetooth mobile ثم افتح تطبيق GoBLE. ستبدو شاشتك هكذا!

الخطوة 4:

انقر فوق مفتاح بحث Bluetooth (يبدو وكأنه عدسة مكبرة حمراء). ثم ، اختر أحد أجهزة Bluetooth التي تتوافق مع اسم روميو بليه. انقر فوق UUID وسيبدأ الاقتران.

الخطوة 5:

بمجرد الاتصال ، سوف يتغير لون مفتاح بحث Bluetooth من الأحمر إلى الأخضر.

الخطوة 6:

في الوقت نفسه ، سيتم تشغيل LINK التي تقودها اللوحة ، مما يعني أن جهاز iPhone الخاص بك قد تم توصيله بـ Romeo BLE (لوحة التحكم في Arduino Robot مع Bluetooth 4.0).

الخطوة 7:

الآن دعنا نختبر ما إذا كان يمكن لوحدة التحكم استقبال إشارة بنجاح من جهاز iPhone الخاص بك. ارجع إلى واجهة Arduino IDE وانقر فوق Serial Monitor في الركن الأيمن العلوي.

الخطوة 8:

سوف يظهر مربع حوار كما هو موضح في الصورة أدناه. أولاً ، يجب تعيين معدل البث بالباود للمنفذ التسلسلي على 115200 كما هو موضح في الدائرة الحمراء أدناه.

الخطوة 9:

يمكنك الآن إخراج جهاز iPhone الخاص بك ، وانتقد عصا التحكم الافتراضية بشكل عشوائي أو انقر فوق الزر الموجود على الشاشة. إذا لم يكن هناك شيء آخر ، فستشاهد القيمة المقابلة على جهاز العرض التسلسلي. وسيتم تغيير قيمة ذراع التحكم على Serial Monitor عند تمرير عصا التحكم الافتراضية على الشاشة. ستجد أن القيمة تزداد عندما تنتقل عصا التحكم لأعلى أو تنخفض القيمة عند تمرير عصا التحكم لأسفل.

معرف الزر يعني أي زر تنقر عليه.

الخطوة 10:

تحميل رمز للتحكم عن بعد

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

تم توصيل جهاز iPhone الخاص بك بالفعل بلوحة Romeo BLE في آخر مرحلة اختبار. ومع ذلك ، لا يمكنك تحميل الرمز إلى لوحة Romeo BLE عندما تم إنشاء Bluetooth بين هاتفك واللوحة. وبالتالي ، يجب أن تتخلص من إقران Bluetooth أولاً. بالإضافة إلى ذلك ، يمكنك تحميل الرمز مرة أخرى إذا تم فصل اللوحة من الهاتف. هذا مهم جدا!

هناك طريقتان لمقاطعة الاتصال. إحدى الطرق هي أنه يمكنك ببساطة إيقاف تشغيل طاقة Remeo BLE ثم تشغيلها مرة أخرى. الطريقة الأخرى هي إيقاف تشغيل Bluetooth على هاتفك.

بعد قطع الاتصال ، يمكنك تحميل رمز المثال مرة أخرى. تتم تسمية الرمز باسم GoBLE_APP.ino في حزمة التعليمات البرمجية.

الخطوة 11:

بمجرد التحميل بنجاح ، يمكنك اتباع السهم الأحمر في الصورة أدناه وانتقد عصا التحكم للتحكم في الروبوت الخاص بك. أيضًا ، يمكنك النقر فوق الزر الأحمر لتشغيل أو إيقاف تشغيل مؤشر LED على اللوحة المتصل بـ PIN13.

الخطوة 12:

ملخص الرمز

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

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

# تضمين "Metro.h"

# تضمين "GoBLE.h"

int joystickX، جويستيك؛

int buttonState 6 ؛

يتم تعريف joystickX و joystickY و buttonState 6 ، ثلاثة متغيرات ، لمكتبة GoBLE. يتم استخدامها لتخزين قيمة الحالة للمحور X ، والمحور Y وتلك القيم من ستة أزرار.

توضح الخريطة أدناه تخطيط جميع الأزرار. ربما تعرف معاني + X و X و + Y و Y إذا كنت قد قمت بتحليل تغيير قيم الحالة.

X & Y هي اتجاهات حركة عصا التحكم. "+ ، -" تُظهر اتجاهات القيمة. "+" يعني أن قيمة الدولة في ازدياد. و "-" تعني أن قيمة الدولة آخذة في التناقص.

الخطوة 13:

يجب كتابة الإعداد الأولي في وظيفة الإعداد ().
Goble.begin ()؛

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

Serial.begin (115200)؛

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

نظرًا لأن معدل البث بالباود الخاص بتقنية Bluetooth خاص ، يلزمك تعيينه على 115200. تأكد من إعداد معدل البث بالباود ، وإلا فقد يتسبب ذلك في بعض المشكلات.

يرجى متابعة نظرة أسفل. السطر التالي هو وظيفة Goble.available ()

if (Goble.available ()) {افعل شيئًا ما ؛ }

وهذا يعني أن الإجراء التالي هو بمجرد استلام الرقم عبر Bluetooth.

ما كتب داخل الأقواس سيكون الإجراء التالي. أولاً ، نحن بحاجة إلى تحليل الشكل الذي تم استلامه. العبارة جهازي التالية هي قراءة القيمة على المحور X و Y.

joystickX = Goble.readJoystickX ()؛

عصا التحكم = Goble.readJoystickY () ؛

// Serial.print ("joystickX:")؛

// Serial.print (joystickX) ؛

// Serial.print ("joystickY:")؛

// Serial.println (joystickX) ؛

خمن ماذا تعني العبارات الأربعة Serial.print () أعلاه. يرتبط التسلسل. إنه من أجل المسلسل أن يقوم بطباعة البيانات المستلمة ، وهو مناسب لتصحيح الأخطاء البرمجية وتحسينها.

"//" تعني التعليق التوضيحي للمحتوى التالي. لن يتم تضمين هذه الجمل الأربع عند تجميع الشفرة. وهي لن يتم إرسال أية بيانات إلى المسلسل بمجرد استخدام التعليقات التوضيحية لهذه العبارات الأربعة.

يرجى الرجوع إلى الصفحة المرجعية لموقع Arudino (www.arduino.cc) لمزيد من المعلومات.

buttonState SWITCH_UP = Goble.readSwitchUp ()؛

buttonState SWITCH_DOWN = Goble.readSwitchDown ()؛

buttonState SWITCH_LEFT = Goble.readSwitchLeft ()؛

buttonState SWITCH_RIGHT = Goble.readSwitchRight ()؛

buttonState SWITCH_SELECT = Goble.readSwitchSelect ()؛

buttonState SWITCH_START = Goble.readSwitchStart ()؛

يتم استخدام جميع المحتويات أعلاه لتحميل المعلومات حول حالة الأزرار.

تخطيط الأزرار على النحو التالي.

SWITCH_UP - 1 SWITCH_RIGHT - 2

SWITCH_DOWN - 3

SWITCH_LEFT - 4

SWITCH_SELECT - 5

SWITCH_START - 6

الخطوة 14:

نحتاج إلى معالجة جميع البيانات المقروءة قبل البدء في استخدامها.

يجب تعيين القيمة المقروءة على عصا التحكم على السرعة الدورانية لعجلات الروبوت الخاص بنا. وبالتالي ، فإن سرعة دوران العجلات تتحول إلى ما بين -255 و 255.

int SpeedX = 2 * joystickX-256؛

int SpeedY = 2 * جويستيك-256 ؛

Serial.print ("السرعة:") ؛

Serial.print (SpeedX)؛

Serial.print ("")؛

Serial.println (السريع)؛

أيضا فإن المسلسل طباعة السرعة. إذا لم تكن ضرورية ، يمكنك إضافة "//" في البداية لإزالته.

الآن دعونا نتحكم في الروبوت ونجعله يتحرك.

إذا (حرك ذراع التحكم لأعلى أو (||) لأسفل) {روبوت يتحرك للأمام أو للخلف ؛ }

إذا (حرك ذراع التحكم إلى اليمين أو (||) إلى اليسار) {انتقل Robot إلى اليمين أو إلى اليسار}

إذا احتفظ (محور X لعصا التحكم في الوسط و (&&) محور Y لعصا التحكم في الوسط) {يتوقف Robot؛ }

رموز المراسلات هي كما يلي:

if (SpeedX> 200 || SpeedX <-200) {LeftWheelSpeed ​​= SpeedX؛ RightWheelSpeed ​​= SpeedX. Robot.Speed ​​(LeftWheelSpeed ​​، RightWheelSpeed) ؛ }

وإلا إذا (SpeedY> 200 || SpeedY <-200) {LeftWheelSpeed ​​= SpeedY-80؛ RightWheelSpeed ​​= SpeedY-80؛ Robot.Speed ​​(LeftWheelSpeed، RightWheelSpeed)؛}

else if (SpeedX == 0 && SpeedY == 0) {Robot.Speed ​​(0،0)؛ }

يتم استخدام الرمز الأخير للتحكم في مؤشر LED الموجود على اللوحة المتصلة بـ PIN13.

كثافة العمليات ledPin = 13 ؛

يجب أن يكون التعريف 13 محددًا في بداية الكود.

pinMode (ledPin، OUTPUT)؛

قم بإعداد وضع الإخراج لـ LED عن طريق كتابة وظيفة الإعداد (). يرجى الرجوع إلى التعليمات الخاصة بوظيفة pinMode () على موقع Arduino (www.arduino.cc).

تُظهر التعبيرات التالية حالة الأزرار. بمجرد الضغط على الزر رقم 1 ، سيكون الصمام قيد التشغيل. وهذا يعني أنه تم تعيين دبوس LED ليكون عالية.

if (buttonState 1 == PRESSED) {digitalWrite (ledPin، HIGH)؛ }

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

if (buttonState 1 == RELEASED) {digitalWrite (ledPin، LOW)؛ }

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