وحدة التحكم EV3 LEGO Mindstorms Education EV3 - مراجعة المصمم

29.06.2020

توضح المقالة تجربة استخدام مُنشئ Lego Mindstorms EV3 لإنشاء نموذج أولي للروبوت مع برنامجه اللاحق والتحكم اليدوي باستخدام Robot Control Meta Language (RCML).

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

1. في البداية، تم إنشاء نموذج أولي للروبوت من مُنشئ Lego Mindstorms EV3، والذي سيتم استخدامه للبرمجة والقيادة اليدوية.

وصف النموذج الأولي للروبوت

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



2. الخطوة التالية هي إعداد RCML للعمل مع منشئ Lego Mindstorms EV3.

يجب عليك تنزيل الأرشيفات التي تحتوي على ملفات قابلة للتنفيذ وملفات المكتبة وملفات .

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

محتويات الدليل بعد تفريغ الأرشيف فيه



بعد ذلك، تحتاج إلى إنشاء ملف التكوين config.ini، والذي يجب أن يكون موجودًا في نفس الدليل. لتحقيق القدرة على التحكم في وحدة التحكم EV3 باستخدام لوحة المفاتيح ولوحة الألعاب، يجب عليك توصيل وحدات lego_ev3 ولوحة المفاتيح ولوحة الألعاب.

قائمة ملف التكوين config.ini لـ RCML

الوحدة = وحدة lego_ev3 = وحدة لوحة المفاتيح = لوحة الألعاب


بعد ذلك، تحتاج إلى إقران وحدة التحكم والمحول EV3.

تعليمات لإقران وحدة التحكم EV3 ومحول Bluetooth

تحتوي التعليمات على مثال لإقران وحدة التحكم Lego Ev3 وجهاز كمبيوتر يعمل بنظام التشغيل Windows 7.

1. أنت بحاجة للذهاب إلى قسم الإعدادات في وحدة تحكم Ev3، ثم إلى عنصر القائمة "Bluetooth".

2. تأكد من ضبط معلمات التكوين بشكل صحيح. يجب تحديد مربعات الاختيار بجوار عناصر "الرؤية" و"البلوتوث".

3. عليك الذهاب إلى "لوحة التحكم"، ثم "الأجهزة والطابعات"، ثم "أجهزة البلوتوث".

4. يجب عليك النقر فوق الزر "إضافة جهاز". سيتم فتح نافذة لتحديد أجهزة Bluetooth المتاحة.

5. حدد جهاز "EV3" وانقر فوق الزر "التالي".

6. تعرض وحدة التحكم EV3 مربع الحوار "اتصال؟" تحتاج إلى تحديد خيار خانة الاختيار وتأكيد اختيارك بالضغط على المفتاح الأوسط.

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

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

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

11. انقر نقرًا مزدوجًا للانتقال إلى خصائص الاتصال "EV3".

14. يجب استخدام فهرس منفذ COM المحدد في الخصائص في ملف التكوين config.ini الخاص بوحدة lego_ev3. يوضح المثال خصائص اتصال Bluetooth لوحدة التحكم Lego EV3 باستخدام منفذ تسلسلي قياسي COM14.


يعود التكوين الإضافي للوحدة إلى حقيقة أنه من الضروري أن تكتب في ملف التكوين الخاص بوحدة lego_ev3 عنوان منفذ COM الذي يتم من خلاله الاتصال مع روبوت Lego.

قائمة ملف التكوين config.ini لوحدة lego_ev3

الاتصال = COM14 اتصال ديناميكي = 0


أنت الآن بحاجة إلى تكوين وحدة لوحة المفاتيح. توجد الوحدة في دليل control_modules، ثم لوحة المفاتيح. يجب عليك إنشاء ملف تكوين config.ini بجوار ملف Keyboard_module.dll. قبل إنشاء ملف التكوين، تحتاج إلى تحديد الإجراءات التي يجب تنفيذها عند الضغط على المفاتيح.

تتيح لك وحدة لوحة المفاتيح استخدام المفاتيح التي تحتوي على رمز رقمي محدد. يمكنك عرض جدول رموز المفاتيح الافتراضية.

على سبيل المثال، سأستخدم ضغطات المفاتيح التالية:

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

قواعد وصف محاور وحدة لوحة المفاتيح

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

Axis_name = Keyboard_button_value_in_HEX_format
2. من الضروري تحديد القيمة القصوى والدنيا التي يمكن رسمها على طول هذا المحور. للقيام بذلك، تحتاج إلى إضافة قسم في ملف التكوين على سطر جديد config.ini، وهو نفس اسم المحور، وقم بتعيين الخصائص Upper_valueو قيمة أقلوالتي تتوافق مع الحد الأقصى والحد الأدنى للمحور على التوالي. بشكل عام يبدو هذا القسم كما يلي:

[اسم_المحور] القيمة_العلوية = الحد الأقصى_لقيمة_المحور_القيمة_السفلى = الحد الأدنى_لقيمة_المحور
3. بعد ذلك، تحتاج إلى تحديد القيمة التي سيكون لها المحور إذا قمت بالضغط على الزر الموجود على لوحة المفاتيح والذي كان متصلاً به مسبقًا. يتم تحديد القيم من خلال إنشاء قسم يتكون اسمه من اسم المحور وقيمة زر لوحة المفاتيح فيه عرافةتنسيق مفصول بشرطة سفلية. لتعيين الحالة الافتراضية (غير المضغوطة) والحالة المضغوطة، استخدم الخصائص قيمة غير مضغوطةو قيمة الضغطعلى التوالي، والتي يتم نقل القيم. يبدو العرض العام للقسم في هذه الحالة كما يلي:

[قيمة اسم_لوحة المفاتيح_المفتاح] قيمة_الضغط = قيمة_المحور عندما يتم الضغط على مفتاح_القيمة غير المضغوطة = قيمة_المحور_عند_ضغط_المفتاح
يتم نسخ النص المفسد من وثائق RCML لسهولة المشاهدة.


لتنفيذ التحكم في النموذج الأولي للروبوت، تم إنشاء ملف تكوين لوحدة لوحة المفاتيح، والذي يتضمن محاور التنقل والتدوير. يتم استخدام محور الذهاب لضبط اتجاه حركة الروبوت. عند الضغط على مفتاح "السهم لأعلى"، سيحصل المحور على قيمة 100؛ وعندما تضغط على مفتاح "السهم لأسفل"، سيحصل المحور على قيمة -50. يتم استخدام محور التدوير لضبط زاوية توجيه العجلات الأمامية. عند الضغط على مفتاح السهم الأيسر، ستكون قيمة المحور -5، وعندما تضغط على مفتاح السهم الأيمن، ستكون قيمة المحور 5.

قائمة ملف التكوين config.ini لوحدة لوحة المفاتيح

;القسم المطلوب ;axis_name = key_code (بتنسيق HEX) ;يستقبل محور go القيم من السهم لأعلى go = 0x26 ;يستقبل محور go القيم من go_down_arrow = 0x28 ;يستقبل محور التدوير القيم من السهم الأيسر لتدوير = 0x25 ;محور التدوير يتلقى القيم من اليمين_السهم تدوير = 0x27 ;وصف محور الذهاب، يجب أن يحتوي دائمًا على كلا المفتاحين ;الحد الأعلى لقيم محور الذهاب upper_value = -100 ;الحد الأدنى لقيم محور الذهاب Lower_value = 100 ;وصف محور التدوير، يجب أن يحتوي دائمًا على كلا المفتاحين؛الحد الأعلى لقيم محور التدوير upper_value = - 100 ;الحد الأدنى لقيم المحور تدوير Lower_value = 100 ;وصف سلوك محور الانتقال لمفتاح *up_arrow* (0x26) ) ;عند الضغط على المفتاح *up_arrow*، اضبط قيمة المحور على 50 pressed_value = 100 ;عند تحرير المفتاح *up_arrow*، اضبط قيمة المحور على 0 unpressed_value = 0 ;وصف سلوك محور الانتقال للسهم السفلي * * مفتاح (0x28) ;عند الضغط على مفتاح *down_arrow*، اضبط قيمة المحور على -50 pressed_value = -50 ;عند تحرير مفتاح *down_arrow*، اضبط قيمة المحور على 0 unpressed_value = 0 ;سلوك الوصف لمحور التدوير لمفتاح *left_arrow* (0x25) ;عند الضغط على مفتاح *left_arrow*، اضبط قيمة المحور على -5 pressed_value = -5 ;عند تحرير مفتاح *left_arrow*، اضبط قيمة المحور على 0 unpressed_value = 0 ;وصف سلوك محور التدوير للمفتاح *right_arrow* (0x27) ;عند الضغط على مفتاح *right_arrow*، اضبط قيمة المحور على 5 pressed_value = 5 ;عند تحرير مفتاح *right_arrow*، اضبط قيمة المحور على 0 unpressed_value = 0


بعد ذلك، لتنفيذ التحكم باستخدام لوحة الألعاب، تحتاج إلى تكوين وحدة لوحة الألعاب. يتضمن تكوين الوحدة إنشاء ملف تكوين config.ini بجوار gamepad_module.dll، الموجود في دليل control_modules، ثم gamepad.

ملف تكوين الوحدة العامة للتفاعل مع لوحة الألعاب

;قسم مطلوب يصف المحاور المستخدمة ;محور إنهاء وضع التحكم اليدوي خروج = 9 ; 11 محورًا ثنائيًا يتوافق مع أزرار لوحة الألعاب B1 = 1 B2 = 2 B3 = 3 B4 = 4 L1 = 7 L2 = 5 R1 = 8 R2 = 6 start = 10 T1 = 11 T2 = 12؛ 4 محاور للعصا؛ حركة العصا اليمنى لأعلى/لأسفل RTUD = 13؛ حركة العصا اليسرى لأعلى/لأسفل LTLR = 15؛ محوران للتقاطع؛ حركة الأسهم المتقاطعة لأعلى/لأسفل UD = 17؛ حركة الأسهم المتقاطعة لليسار/لليمين LR = 18؛ وصف سلوك المحور B1؛ عند الضغط على الزر B1، اضبط قيمة المحور على قيمة_علوية واحدة = 1;عند تحرير الزر B1، اضبط قيمة المحور على 0 Lower_value = 0 Upper_value = 1 Lower_value = 0 Upper_value = 1 Lower_value = 0 Upper_value = 1 Lower_value = 0 Upper_value = 1 Lower_value = 0 Upper_value = 1 Lower_value = 0 Upper_value = 1 قيمة أقل = 0 قيمة عليا = 1 قيمة أقل = 0 قيمة عليا = 1 قيمة أقل = 0 قيمة عليا = 1 قيمة أقل = 0 قيمة عليا = 1 قيمة أقل = 0 ;وصف سلوك محور العصا الأيمن الذي يتحرك لأعلى/لأسفل ;قيمة المحور عند الانتقال إلى الحد الأقصى القيمة العليا للموضع العلوي المحتمل = 0؛ قيمة المحور عند الانتقال إلى الحد الأقصى الممكن للموضع السفلي Lower_value = 65535 Upper_value = 0 Lower_value = 65535 Upper_value = 0 Lower_value = 65535 Upper_value = 0 Lower_value = 65535 ;وصف سلوك محور D-pad لأعلى حركة / للأسفل؛ قيمة المحور عند الضغط على السهم لأعلى: Upper_value = 1؛ قيمة المحور عند الضغط على السهم لأسفل: Lower_value = -1 Upper_value = 1 Lower_value = -1


يتم عرض معلومات إضافية حول تفاصيل إعداد وحدة لوحة الألعاب في الدليل المرجعي لـ RCML.

3. الخطوة التالية هي كتابة برنامج في RCML.

في جذر الدليل الذي تم إنشاؤه، تحتاج إلى إنشاء ملف برنامج. يمكن أن يكون اسم ملف البرنامج وامتداده أي شيء، ولكن يجب عليك تجنب الأحرف الروسية في الاسم. اسم الملف المستخدم في المثال هو hello.rcml.

بالنسبة لوحدة lego_ev3، يحتوي رمز حجز الروبوت على النموذج التالي:

@tr = robot_lego_ev3;

تصف صفحة اتصال الوحدة النمطية lego_ev3 معظم الوظائف التي تدعمها وحدة التحكم. وكمثال اختباري، تم إنشاء برنامج لإدخال الروبوت تلقائيًا في الانزلاق.

خوارزمية البرنامج هي كما يلي:

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

قائمة البرامج الخاصة بروبوت Lego بلغة RCML

الوظيفة الرئيسية () ( @tr = robot_lego_ev3؛ //احجز الروبوت @tr->setTrackVehicle("B"،"C"،0,0); // ضبط تزامن المحرك @tr->motorMoveTo("D",100 , 0,0); system.sleep(500); @tr->trackVehicleForward(-100); ); @tr->motorMoveTo("D",50,50,0);


لتجميع البرنامج، يجب عليك استخدام سطر أوامر النافذة. أولاً، يجب عليك الانتقال إلى الدليل الذي تم إنشاؤه بالملفات القابلة للتنفيذ rcml_compiler.exe وrcml_intepreter.exe. بعد ذلك تحتاج إلى إدخال الأوامر التالية.

أمر لتجميع ملف hello.rcml:

Rcml_compiler.exe hello.rcml hello.rcml.pc
نتيجة للتجميع، سيظهر ملف جديد hello.rcml.pc في الدليل الذي تم إنشاؤه.

لقطة شاشة لسطر الأوامر بعد التجميع الناجح



أنت الآن بحاجة إلى التأكد من تشغيل وحدة التحكم EV3 وإقرانها بمحول Bluetooth. يجب أن تكون لوحة الألعاب متصلة بالكمبيوتر. بعد ذلك، تحتاج إلى تنفيذ الأمر لتنفيذ ملف البرنامج:

Rcml_intepreter.exe hello.rcml

ظهور سطر الأوامر أثناء تنفيذ البرنامج



يوجد فيديو يوضح برنامج حركة الروبوت في أسفل المقال.

4. الخطوة التالية هي التحكم في الروبوت يدويًا باستخدام لوحة المفاتيح.

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

  • زاوية توجيه العجلات الأمامية
  • اتجاه دوران العجلات الخلفية

قائمة برنامج التفاعل بين لوحة المفاتيح وروبوت Lego المعتمد على وحدة التحكم EV3

الوظيفة الرئيسية () ( @tr = robot_lego_ev3؛ //احجز الروبوت @tr->setTrackVehicle("B"،"C"،0,0); // ضبط تزامن المحرك system.hand_control(@tr,"keyboard", " مستقيم"،" اذهب"، "speedMotorD"، "تدوير")؛


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

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

قائمة برنامج التفاعل بين لوحة الألعاب وروبوت Lego

الوظيفة الرئيسية () ( @tr = robot_lego_ev3؛ //احجز الروبوت @tr->setTrackVehicle("B"،"C"،0,0); // ضبط تزامن المحرك system.hand_control(@tr,"gamepad", "مستقيم"،"RTUD"،"speedMotorD"،"RTLR")؛


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

توضح هذه المقالة بإيجاز بعض إمكانيات RCML. يمكن العثور على الوصف الأكثر تفصيلاً في الدليل المرجعي.

إن فكرة استبدال الحاسوب الصغير في المصمم بـ Beaglebone أو بآخر ليست جديدة. ولكن مع إصدار EV3، أصبح من الممكن ليس فقط الحصول على نظير 100%، ولكن أيضًا زيادة أداء Legorobot الخاص بك.

فيديو تقديمي للمشروع:

يدعم E VB نظام Lego Mindstorms Ev3 بشكل كامل على مستوى الأجهزة والبرامج، وهو متوافق بنسبة 100% مع جميع مستشعرات ومحركات Lego. تعمل الكتلة بنفس طريقة كتلة Lego Mindstorms EV3:

بيجلبون بلاك- كمبيوتر Linux أحادي اللوحة.إنه منافس لـ Raspberry Pi. يحتوي على معالج قوي AM335x 720MHz ARM® معالج كبير عدد المدخلات/المخرجات، ويمكن توسيع القدرات مع لوحات إضافية.

يحتوي Lego Mindstorms EV3 على معالج ARM9 (TI Sitara AM180x) بسرعة 300 ميجا هرتز، لذا انتقل إلى معالج BeagleBone Black ARM Cortex-A8 (TI Sitara AM335x) بسرعة 1 جيجا هرتز يزيد الإنتاجيةبالإضافة إلى أنه أصبح من الممكن توصيل بطاقات توسعة إضافية!

الشيء الأكثر أهمية هو أن Lego Mindstorms EV3 يحتوي على وصف مفتوح لجميع البرامج والأجهزة!

على سبيل المثال، تم تجميع وعرض روبوت حل مكعب روبيك الشهير. فقط بدلاً من EV3 قاموا بتثبيت EVB المطور. ندعوكم لمشاهدة الفيديو:

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

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

الآن يبدأ كل شيء بمراجعة برنامج كتلة EV3 (البرامج الثابتة EV3).

ومن ميزات الوحدة الجديدة أن تشغيلها وإيقافها يستغرق وقتًا طويلاً. من حيث الوقت، فإن العملية قابلة للمقارنة بتشغيل الهاتف الخليوي أو جهاز التوجيه المنزلي، أي. 20-30 ثانية. بعد التشغيل تظهر القائمة التالية:


كما ترون، بالمقارنة مع كتلة NXT، فقد تغير الكثير: لقد تحسنت جودة الخطوط، وتم رسم العناصر الرسومية بشكل أكبر، وتحسنت واجهة النافذة. بادئ ذي بدء، يرجع ذلك إلى حقيقة أن حجم الشاشة قد زاد الآن - فقد أصبح 178 × 128 بكسل، بدلا من 100 × 64، مثل كتلة NXT. يشير وجود واجهة ذات نوافذ مع أزرار وأشرطة تمرير متأصلة إلى أن الأجهزة مثل لوحة اللمس الخارجية ستصبح الآن أكثر منطقية.


من النافذة الأولى، من الممكن استدعاء البرامج المحملة على الكتلة، بالإضافة إلى البرامج التي تم إنشاؤها مباشرة على الكتلة. أولئك. من أجل تشغيل البرنامج، تحتاج الآن إلى إجراء نقرات أقل من تلك التي تقوم بها على كتلة NXT.

يتم التنقل عبر البرامج المحملة، وكذلك إلى الشاشات الثانية والشاشات اللاحقة (عناصر القائمة)، باستخدام أزرار التحكم، والتي يوجد منها الآن 4.


الشاشة الثانية - تسمح لك بالتنقل عبر كائنات نظام الملفات الموجودة على الكتلة. يدعم نظام الملفات الآن التسلسل الهرمي التقليدي: الملفات والدلائل.


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


يوجد في الإصدار الحالي من برنامج الكتلة أربعة تطبيقات من هذا القبيل:

  • عرض أجهزة الاستشعار
  • التحكم في المحركات
  • جهاز التحكم
  • البرمجة على الكتلة
الشاشة الرابعة هي التكوين. بالإضافة إلى الإعدادات الأساسية: مستوى الصوت، ومؤقت عدم النشاط، وتشغيل Bluetooth وWiFi، فإنه يسمح لك بمعرفة معلومات حول برنامج الوحدة:



يتم تحديد عنصر/تطبيق قائمة معين باستخدام الزر الأوسط على لوحة المفاتيح. وللخروج من أي عنصر قائمة أو تطبيق، تحتاج إلى الضغط على زر "الخروج"، الموجود الآن بشكل منفصل عن الأزرار الرئيسية - على الجانب الأيسر أسفل الشاشة.

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

على عكس الوضع المماثل في كتلة NXT، يمكنك الآن رؤية معلومات حول جميع الأجهزة الثمانية المتصلة بالكتلة في وقت واحد. علاوة على ذلك، تتيح لك الوظيفة المعلنة للكشف التلقائي عن أجهزة الاستشعار عدم الإشارة يدويًا إلى المستشعر المتصل به.

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

استشعار تعمل باللمس:


استشعار الدوران:


مستشعر اللون في وضع قياس الضوء المنعكس:


مستشعر المسافة بالموجات فوق الصوتية:

هنا، بالمناسبة، يمكنك أن ترى أن المستشعر يدعي الآن أنه يمكنه قياس المسافات بدقة ملليمترات، والحد الأدنى للمسافة المقاسة الآن هو 3 سم.

المعلومات من التشفير المحرك الأيسر.


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


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


بالطبع، التطبيق الأكثر إثارة للاهتمام هو برمجة الكتل. لقد تمت إعادة تصميمه بشكل كبير: يمكن أن يحتوي البرنامج الآن على ما يصل إلى 16 عنصرًا (كتل) برنامجية، ويمكن حفظ البرامج التي تم إنشاؤها وبالطبع إعادة فتحها للتعديل.


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


في نافذة اختيار الكتلة التي تظهر، تتوفر 17 كتلة (6 كتل إجراءات و11 كتلة انتظار) بالإضافة إلى إجراء حذف الكتلة الحالية.



يتم تحديد ترتيب الاختيار وتسلسل الكتل بواسطة المبرمج. هذا لا يعني أنه بعد كل كتلة إجراء يجب أن تكون هناك كتلة انتظار، كما كان الحال سابقًا مع كتلة NXT.

تبدو الكتلة المحددة في البرنامج كما يلي:


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


عن طريق تحريك "المؤشر" إلى اليسار أو اليمين، يمكنك إدراج كتلة أخرى:


على سبيل المثال، كتلة انتظار الحدث على مستشعر المسافة:


وتغيير سلوكه (سيحدث الحدث إذا أصبحت المسافة أكثر من 60 سم):


يمكن إدراج الكتل بين الكتل الموجودة أو حتى في بداية البرنامج.


فيما يلي المزيد من الأمثلة على كتل الانتظار:

كتلة وقت الانتظار (يمكنك تحديد مدة الانتظار بالضبط):


أو كتلة لانتظار حدث ما من مستشعر جيروسكوبي (يمكنك ضبط زاوية دوران المستشعر).


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

إذا كان يجب تنفيذ البرنامج عدة مرات، فيمكن تغيير عدد تكرارات حلقة التحكم:


يتم تشغيل البرنامج عن طريق اختيار الكتلة الأولى:


عند بدء تشغيل البرنامج سيظهر على الشاشة ما يلي:


يمكن حفظ البرنامج، ويمكنك تحديد اسم ملف للبحث لاحقا:



يتم تحديد الحروف باستخدام لوحة المفاتيح (مرحبا، لوحة اللمس!)

إذا حاولت إغلاق برنامج غير محفوظ، فسيتم عرض الرسالة التالية غير الواضحة تمامًا وسيصدر صوتًا مزعجًا:


يمكنك لاحقًا فتح البرنامج الذي تم إنشاؤه وإجراء تغييرات عليه.


وبطبيعة الحال، يتم فتح البرامج التي تم إنشاؤها على الكتلة فقط.

في الختام، أود أن أوضح كيف يبدو إيقاف تشغيل الكتلة:


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

ولكن قبل أن ندخل في البرمجة، دعونا نلقي نظرة على بعض الحالات التي قد يكون فيها ذلك مفيدًا:

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

واجهة برمجة تطبيقات LEGO MINDSTORMS EV3 لـ .NET

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

لكن تنفيذ هذا البروتوكول يدويًا أمر ممل. لذلك، يمكنك استخدام غلاف .NET الجاهز، الذي كتبه براين بيك بعناية. الكود المصدري لهذه المكتبة مستضاف على Github، ويمكن العثور على الحزمة الجاهزة للاستخدام على Nuget.

التوصيل بوحدة تحكم EV3

يتم استخدام فئة Brick للتواصل مع وحدة التحكم EV3. عند إنشاء هذا الكائن، تحتاج إلى تمرير تطبيق واجهة ICommunication إلى المُنشئ - وهو كائن يصف كيفية الاتصال بوحدة التحكم EV3. تتوفر تطبيقات UsbCommunication وBluetoothCommunication وNetworkCommunication (اتصال WiFi).

طريقة الاتصال الأكثر شيوعًا هي عبر البلوتوث. دعونا نلقي نظرة فاحصة على طريقة الاتصال هذه.

قبل أن نتمكن من الاتصال بوحدة التحكم برمجيًا عبر البلوتوث، يجب أن تكون وحدة التحكم متصلة بالكمبيوتر باستخدام إعدادات نظام التشغيل.

بعد توصيل وحدة التحكم، انتقل إلى إعدادات Bluetooth وحدد علامة التبويب منافذ COM. نجد وحدة التحكم لدينا، ونحن بحاجة منفتحميناء. سوف نقوم بتحديده عند إنشاء كائن BluetoothCommunication.

سيبدو رمز الاتصال بوحدة التحكم كما يلي:

اتصال المهام العامة غير المتزامنة (ICommunication communication) ( var communication = new BluetoothCommunication("COM9"); var brick = _brick = new Brick(communication); انتظار _brick.ConnectAsync(); )

اختياريًا، يمكنك تحديد مهلة الاتصال بوحدة التحكم:

في انتظار _brick.ConnectAsync(TimeSpan.FromSeconds(5));

يتم الاتصال بالوحدة عبر USB أو WiFi بنفس الطريقة، باستثناء استخدام كائنات UsbCommunication وNetworkCommunication.

تتم جميع الإجراءات الإضافية التي يتم تنفيذها على وحدة التحكم من خلال كائن Brick.

دعونا ندور المحركات

لتنفيذ الأوامر على وحدة التحكم EV3، نصل إلى خاصية DirectCommand الخاصة بكائن Brick. أولا، دعونا نحاول تشغيل المحركات.

لنفترض أن المحرك الخاص بنا متصل بالمنفذ A لوحدة التحكم، فإن تشغيل هذا المحرك بقدرة 50% سيبدو كما يلي:

في انتظار _brick.DirectCommand.TurnMotorAtPowerAsync(OutputPort.A, 50);

هناك طرق أخرى للتحكم في المحرك. على سبيل المثال، يمكنك تدوير محرك إلى زاوية محددة باستخدام طريقتي StepMotorAtPowerAsync() وStepMotorAtSpeedAsync(). هناك عدة طرق متاحة، وهي عبارة عن اختلافات في أوضاع تشغيل المحركات - حسب الوقت والسرعة والطاقة وما إلى ذلك.

يتم تنفيذ التوقف القسري باستخدام طريقة StopMotorAsync ():

في انتظار _brick.DirectCommand.StopMotorAsync(OutputPort.A, true);

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

قراءة القيم من أجهزة الاستشعار

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

يمكن الوصول إلى منافذ قراءة القيم من خلال خاصية المنافذ الخاصة بكائن Brick. المنافذ عبارة عن مجموعة من المنافذ المتوفرة على وحدة التحكم. لذلك، للعمل مع منفذ معين، تحتاج إلى تحديده. InputPort.One... InputPort.Four هي منافذ الاستشعار، وInputPort.A... InputPort.D هي أجهزة تشفير المحرك.

var port1 = _brick.Ports;

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

Brick.Ports.SetMode(ColorMode.Reflective);

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

Float si = _brick.Ports.SIValue; int Raw = _brick.Ports.RawValue; بايت بالمائة = _brick.Ports.PercentValue؛

تقوم الخاصية SIValue بإرجاع البيانات التي تمت معالجتها. كل هذا يتوقف على المستشعر المستخدم وفي أي وضع. على سبيل المثال، عند قياس الضوء المنعكس سنحصل على قيم من 0 إلى 100 حسب شدة الضوء المنعكس (أسود/أبيض).

تقوم الخاصية RawValue بإرجاع القيمة الأولية التي تم الحصول عليها من ADC. في بعض الأحيان يكون استخدامه أكثر ملاءمة للمعالجة والاستخدام اللاحقين. بالمناسبة، في بيئة تطوير EV3، من الممكن أيضًا الحصول على قيم "أولية" - ولهذا تحتاج إلى استخدام الكتلة من اللوحة الزرقاء.

إذا كان المستشعر الذي تستخدمه يتوقع تلقي القيم بالنسب المئوية، فيمكنك أيضًا استخدام خاصية PercentValue.

تنفيذ الأوامر على دفعات

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

في انتظار _brick.DirectCommand.TurnMotorAtPowerAsync(OutputPort.A, 50); انتظر _brick.DirectCommand.TurnMotorAtPowerAsync(OutputPort.B, -50);

في هذا المثال نرسل أمر لتدوير المحرك A بسرعة 50، بعد إرسال هذا الأمر بنجاح نكرر نفس الأمر مع المحرك المتصل بالمنفذ B. المشكلة هي أن إرسال الأوامر لا يحدث بشكل فوري، لذلك المحركات قد يبدأ في الدوران في أوقات مختلفة - أثناء إرسال الأمر للمنفذ B، المحرك A بالفعلسيبدأ الغزل.

إذا كان من المهم بالنسبة لنا أن نجعل المحركات تدور في نفس الوقت، فيمكننا إرسال الأوامر إلى وحدة التحكم في "حزمة". في هذه الحالة، يجب عليك استخدام الخاصية BatchCommand بدلاً من DirectCommand:

Brick.BatchCommand.TurnMotorAtPower(OutputPort.A, 50); _brick.BatchCommand.TurnMotorAtPower(OutputPort.B, -50); انتظر _brick.BatchCommand.SendCommandAsync();

الآن يتم إعداد أمرين في وقت واحد، وبعد ذلك يتم إرسالهما إلى وحدة التحكم في حزمة واحدة. ستبدأ وحدة التحكم، بعد تلقي هذه الأوامر، في تدوير المحركات في وقت واحد.

ماذا يمكنك أن تفعل أيضا

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

  • CleanUIAsync() وDrawTextAsync() وDrawLineAsync() وما إلى ذلك - معالجة الشاشة المدمجة لوحدة التحكم EV3
  • PlayToneAsync() وPlaySoundAsync() - استخدم مكبر الصوت المدمج لتشغيل الأصوات
  • WriteFileAsync() وCopyFileAsync() وDeleteFileAsync() (من SystemCommand) - العمل مع الملفات

خاتمة

إن استخدام .NET للتحكم في روبوتات Mindstorms EV3 يوضح جيدًا كيف يمكن للتقنيات من "عوالم مختلفة" أن تعمل معًا. نتيجة للبحث في واجهة برمجة تطبيقات EV3 لـ .NET، تم إنشاء تطبيق صغير يسمح لك بالتحكم في روبوت EV3 من جهاز كمبيوتر. لسوء الحظ، توجد تطبيقات مماثلة لـ NXT، لكن EV3 تجاوزتها. وفي الوقت نفسه، فهي مفيدة في مسابقات الروبوتات التي يتم التحكم فيها، مثل كرة القدم الروبوتية.

يمكن تحميل التطبيق وتثبيته من هذا الرابط:

وصف العرض التقديمي من خلال الشرائح الفردية:

1 شريحة

وصف الشريحة:

2 شريحة

وصف الشريحة:

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

3 شريحة

وصف الشريحة:

الواجهة: تحتوي قائمة EV3 على قائمة تتكون من 4 أجزاء: البرامج الحديثة، التنقل في الملفات، تطبيقات وحدة البناء، إعدادات وحدة البناء

4 شريحة

وصف الشريحة:

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

5 شريحة

وصف الشريحة:

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

6 شريحة

وصف الشريحة:

تحتوي تطبيقات EV3 Control Box على 4 تطبيقات مثبتة مسبقًا: أ. عرض المنفذ. ب. التحكم في المحركات. ب. التحكم بالأشعة تحت الحمراء. د. بيئة برمجة الوحدة النمطية.

الشريحة 7

وصف الشريحة:

A. Port View في النافذة الأولى لتطبيق Port View، يمكنك معرفة المنافذ التي تحتوي على أجهزة استشعار أو محركات متصلة بها بسرعة. استخدم أزرار التحكم في وحدة البناء EV3 للانتقال إلى أحد المنافذ المشغولة وسترى القراءات الحالية من المستشعر أو المحرك. قم بتثبيت العديد من أجهزة الاستشعار والمحركات وتجربة إعدادات مختلفة. لعرض أو تغيير الإعدادات الحالية للمحركات وأجهزة الاستشعار المثبتة، اضغط على الزر الأوسط. للعودة إلى نافذة التطبيق الرئيسية للوحدة، انقر فوق الزر "رجوع".

8 شريحة

وصف الشريحة:

ب. التحكم في المحرك التحكم في الحركة الأمامية أو العكسية لأي محرك متصل بأحد منافذ الإخراج الأربعة. هناك وضعان مختلفان. في أحد الأوضاع، ستتمكن من التحكم في المحركات المتصلة بالمنفذ A (باستخدام الزرين العلوي والسفلي) وبالمنفذ D (باستخدام الزرين الأيسر والأيمن). في الوضع الآخر، يمكنك التحكم في المحركات المتصلة بالمنفذ B (باستخدام الزرين العلوي والسفلي) والمنفذ C (باستخدام الزرين الأيسر والأيمن). يتم التبديل بين هذين الوضعين باستخدام الزر المركزي. للعودة إلى نافذة التطبيق الرئيسية للوحدة، انقر فوق الزر "رجوع".

الشريحة 9

وصف الشريحة:

التحكم بالأشعة تحت الحمراء يمكنك التحكم في الحركة الأمامية أو العكسية لأي محرك متصل بأحد منافذ الإخراج الأربعة باستخدام إشارة الأشعة تحت الحمراء عن بعد كجهاز تحكم عن بعد ومستشعر الأشعة تحت الحمراء كجهاز استقبال (يجب توصيل مستشعر الأشعة تحت الحمراء بالمنفذ 4 في وحدة البناء EV3) . هناك وضعان مختلفان. في أحد الأوضاع، ستستخدم القناتين 1 و2 على منارة الأشعة تحت الحمراء البعيدة. في القناة 1، ستتمكن من التحكم في المحركات المتصلة بالمنفذ B (باستخدام الزرين 1 و2 على منارة الأشعة تحت الحمراء البعيدة) والمنفذ C (باستخدام الزرين 3 و4 على منارة الأشعة تحت الحمراء البعيدة). ستتمكن في القناة 2 من التحكم في المحركات المتصلة بالمنفذ A (باستخدام الزرين 1 و2) وبالمنفذ D (باستخدام الزرين 3 و4). وفي وضع آخر، يمكنك التحكم في المحركات بنفس الطريقة، باستخدام القناتين 3 و4 على منارة الأشعة تحت الحمراء البعيدة بدلاً من ذلك. يتم التبديل بين هذين الوضعين باستخدام الزر المركزي. للعودة إلى نافذة التطبيق الرئيسية للوحدة، انقر فوق الزر "رجوع".

10 شريحة

وصف الشريحة:

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

11 شريحة

وصف الشريحة:

إعدادات وحدة البناء EV3 تتيح لك هذه النافذة عرض وضبط الإعدادات العامة المتنوعة في وحدة البناء EV3.

12 شريحة

وصف الشريحة:

ضبط مستوى الصوت يمكنك زيادة مستوى الصوت أو خفضه في علامة التبويب "الإعدادات" في EV3.

الشريحة 13