- المكونات مطلوبة
- مخطط الرسم البياني
- الاتصال التسلسلي باستخدام نافذة أوامر MATLAB
- الاتصال التسلسلي باستخدام MATLAB GUI
MATLAB هو برنامج متعدد الاستخدامات يمكن استخدامه في مجموعة متنوعة من التطبيقات. في البرامج التعليمية السابقة لـ MATLAB ، أوضحنا كيفية استخدام MATLAB للتحكم في محرك التيار المستمر والمحرك المؤازر والأجهزة المنزلية. هنا في هذا البرنامج التعليمي ، سوف نتعلم كيفية استخدام MATLAB للاتصال التسلسلي. بالنسبة للطرف المتلقي للاتصال التسلسلي ، نحن هنا نستخدم Arduino.
هناك طريقتان لإعداد الاتصال التسلسلي بين MATLAB و Arduino ، إحداهما تستخدم نافذة الأوامر والأخرى تستخدم MATLAB GUI. سيبقى كود Arduino لكلتا الطريقتين كما هو. إذا كنت جديدًا على MATLAB ، فمن المستحسن أن تبدأ مع برنامج وميض LED بسيط مع MATLAB وتعلم المصطلحات الأساسية المستخدمة في MATLAB.
المكونات مطلوبة
- الكمبيوتر المحمول المثبت MATLAB (الأفضلية: R2016a أو الإصدارات الأحدث)
- اردوينو UNO
- LED (أي لون)
- مقاوم (330 أوم)
مخطط الرسم البياني
سيظل مخطط الدائرة أعلاه كما هو لكل من طريقتين لإنشاء اتصال تسلسلي بين MATLAB و Arduino.
الاتصال التسلسلي باستخدام نافذة أوامر MATLAB
هذه هي الطريقة البسيطة لإعداد الاتصال التسلسلي بين Arduino و MATLAB. سنقوم هنا ببساطة بإرسال البيانات من MATLAB إلى Arduino بشكل تسلسلي باستخدام نافذة الأوامر ثم يقوم Arduino بقراءة البيانات التسلسلية الواردة. ثم يمكن استخدام هذه البيانات المرسلة تسلسليًا للتحكم في أي شيء متصل بـ Arduino. لقد قمنا هنا بتوصيل LED بـ Arduino ، والذي سيتم تشغيله وإيقاف تشغيله وفقًا للبيانات المستلمة تسلسليًا بواسطة Arduino.
أولاً ، قم بتحميل كود Arduino المحدد في Arduino UNO ثم ابدأ الترميز في نافذة محرر MATLAB. لفتح نص محرر جديد ، انقر فوق " نص جديد" كما هو موضح في الصورة أدناه:
ثم انسخ والصق كود MATLAB الكامل أدناه في نافذة المحرر للاتصال التسلسلي بين MATLAB و Arduino.
كود٪ MATLAB للاتصالات التسلسلية بين Arduino و MATLAB x = serial ('COM18'، 'BAUD'، 9600) ؛ fopen (x) ؛ اذهب = صحيح ؛ أثناء الانتقال إلى = إدخال ('اضغط 1 لتشغيل LED & 0 لإيقاف التشغيل:') ؛ fprintf (س ، أ) ؛ إذا (أ == 2) اذهب = خطأ ؛ نهاية النهاية
في الكود المقدم ، يتم استخدام الأمر أدناه لتحديد الاتصال التسلسلي في MATLAB. تأكد من أن رقم منفذ com هو رقم المنفذ الذي يتصل به Arduino ويجب تعيين معدل الباود نفسه في كل من أكواد Arduino و MATLAB.
x = مسلسل ('COM18'، 'BAUD'، 9600) ؛
لفتح المنفذ التسلسلي ، استخدم الأمر أدناه ،
fopen (x) ؛
يتم استخدام الأمر أدناه لإرسال البيانات من MATLAB إلى Arduino بشكل متسلسل ، حيث x هو للاتصال التسلسلي والقيمة التي أدخلها المستخدم.
fprintf (س ، أ) ؛
لقد استخدمنا الدالة while لإنشاء حلقة لا نهائية وكلما قام المستخدم بإدخال الرقم '2' تنقطع الحلقة.
أثناء الانتقال إلى = إدخال ('اضغط 1 لتشغيل LED & 0 لإيقاف التشغيل:') ؛ fprintf (س ، أ) ؛ إذا (أ == 2) اذهب = خطأ ؛ نهاية النهاية
بعد الانتهاء من تشفير البرنامج النصي لمحرر MATLAB ، انقر فوق " RUN " لتشغيل البرنامج كما هو موضح في الصورة أدناه ،
يستغرق MATLAB بضع ثوانٍ لمعالجة الكود وبدء الاتصال التسلسلي ، انتظر حتى تعرض MATLAB رسالة "مشغول" في الركن الأيسر السفلي من شاشة البرنامج ، كما هو موضح في الصورة أدناه.
الآن سترى نافذة الأوامر لإرسال مدخلات المستخدم ، لقد قمنا بتعيين الرسالة الافتراضية ،
"اضغط 1 لتشغيل مؤشر LED و 0 لإيقاف التشغيل:"
أرسل "1" لتشغيل مؤشر LED و "0" لإيقاف تشغيل مؤشر LED و "2" لكسر العملية. يمكنك تعيين أي رقم لأي مهمة ، كل ما عليك فعله هو تغيير كود Arduino وفقًا لذلك. يتم إعطاء كود Arduino الكامل في النهاية.
يمكنك التحقق من الفيديو أدناه لفهم العملية الكاملة لإرسال البيانات التسلسلية من MATLAB إلى Arduino باستخدام Command Window.
الاتصال التسلسلي باستخدام MATLAB GUI
لتوضيح الاتصال التسلسلي باستخدام MATLAB GUI ، سننشئ زرين رسوميين باستخدام MATLAB لتشغيل وإيقاف تشغيل LED المتصل بـ Arduino. سيتم إرسال البيانات تسلسليًا من MATLAB إلى Arduino عند النقر فوق هذه الأزرار لتشغيل وإيقاف تشغيل LED. سيحتوي Arduino على رمز تلقي البيانات التسلسلية من MATLAB والتحكم في مؤشر LED وفقًا للبيانات التسلسلية المستلمة. سيظل كود Arduino كما هو في السابق ، والفرق الوحيد هو أننا كنا نرسل سابقًا البيانات التسلسلية '1' و '0' من خلال نافذة أوامر MATLAB ، والآن سيتم إرسال نفس البيانات عند الضغط على زرين رسوميين.
لبدء تشغيل واجهة المستخدم الرسومية ، اكتب الأمر أدناه في نافذة الأوامر
يرشد
ستفتح نافذة منبثقة ، ثم حدد واجهة مستخدم رسومية جديدة فارغة كما هو موضح في الصورة أدناه ،
اختر الآن زرين ضغط لتشغيل وإيقاف تشغيل LED ، كما هو موضح أدناه ،
لتغيير حجم الأزرار أو تغيير شكلها ، ما عليك سوى النقر عليها وستتمكن من سحب زوايا الزر. من خلال النقر المزدوج على زر الضغط ، يمكنك تغيير لون وخيط وعلامة هذا الزر المعين. لقد قمنا بتخصيص زرين كما هو موضح في الصورة أدناه.
يمكنك تخصيص الأزرار حسب اختيارك. الآن عند حفظ هذا ، سيتم إنشاء رمز في نافذة محرر MATLAB. قم بتحرير هذا الرمز وفقًا للمهمة التي تريد أن يؤديها Arduino باستخدام MATLAB GUI. أدناه قمنا بتحرير كود MATLAB. يمكنك معرفة المزيد حول نافذة الأوامر ، ونافذة المحرر ، وما إلى ذلك في دليل بدء استخدام MATLAB.
تم تقديم كود MATLAB الكامل لإنشاء اتصال تسلسلي بين MATLAB و Arduino في نهاية هذا المشروع. علاوة على ذلك ، نقوم بتضمين ملف GUI (.fig) وملف الكود (.m) هنا للتنزيل (انقر بزر الماوس الأيمن على الرابط ثم حدد "حفظ الرابط باسم…") ، والذي يمكنك من خلاله تخصيص الأزرار وفقًا لمتطلباتك. فيما يلي بعض التعديلات التي قمنا بها للتحكم في LED المتصل بـ Arduino.
انسخ والصق الكود أدناه في السطر رقم. 74 لإعداد المنفذ التسلسلي ومعدل الباود.
امسح الكل؛ x العالمية ؛ x = مسلسل ('COM18'، 'BAUD'، 9600) ؛ ٪ تأكد من أن معدل الباود ومنفذ COM هو نفسه٪ كما هو الحال في Arduino IDE fopen (x) ؛
حيث يتم استخدام fopen (x) لفتح المنفذ التسلسلي للاتصال التسلسلي.
عندما تقوم بالتمرير لأسفل ، سترى أن هناك وظيفتين تم إنشاؤهما لكل من الأزرار في واجهة المستخدم الرسومية. اكتب الآن الكود في كلتا الوظيفتين وفقًا للمهمة التي تريد تنفيذها عند النقر.
في وظيفة زر LED-ON ، انسخ والصق الرمز أدناه قبل نهاية الوظيفة مباشرة لتشغيل مؤشر LED. كما ترى في الكود أدناه ، يتم استخدام fprintf (x ، 1) لإرسال البيانات التسلسلية من MATLAB إلى مسلسل Arduino. نحن هنا نرسل '1' إلى مسلسل Arduino وإذا قمت بالتحقق من كود Arduino ، ستجد أن Arduino سوف يضيء مؤشر LED بجعل دبوسه 13 مرتفعًا ، عندما يتلقى الرقم '1' على المنفذ التسلسلي الخاص به.
x العالمية ؛ fprintf (x ، 1) ؛
في وظيفة زر LED-OFF ، انسخ والصق الرمز أدناه قبل نهاية الوظيفة مباشرةً لإيقاف تشغيل LED. كما ترى في الكود أدناه ، يتم استخدام fprintf (x ، 0) لإرسال البيانات التسلسلية من MATLAB إلى مسلسل Arduino. في هذا الجزء ، نرسل '0' إلى مسلسل Arduino وإذا قمت بالتحقق من كود Arduino ، فستجد أن Arduino سيقوم بإيقاف تشغيل مؤشر LED بجعل رقمه 13 منخفضًا ، عندما يتلقى '0' على المنفذ التسلسلي الخاص به.
x العالمية ؛ fprintf (س ، 0) ؛
بعد الانتهاء من ترميز MATLAB GUI وإعداد الأجهزة وفقًا لمخطط الدائرة ، ما عليك سوى النقر على زر التشغيل لتشغيل الكود المحرر في ملف.m.
قد يستغرق MATLAB بضع ثوانٍ للرد ، لا تنقر على أي زر واجهة مستخدم رسومية حتى يظهر MATLAB مؤشر BUSY ، والذي يمكنك رؤيته في الزاوية السفلية اليسرى من الشاشة كما هو موضح أدناه ،
عندما يكون كل شيء جاهزًا ، انقر فوق الزر LED-ON و LED-OFF لتشغيل وإيقاف تشغيل LED. عند اضغط LED-ON زر ، 13 تشرين دبوس من اردوينو يذهب عالية والصمام توصيل هذه PIN يبدأ متوهجة، وعند الضغط على زر LED-OFF ، 13 تشرين دبوس من اردوينو يذهب LOW مما يجعل الصمام لإيقاف.
يمكنك التحقق من الفيديو أدناه لفهم العملية الكاملة لإرسال البيانات التسلسلية من MATLAB إلى Arduino باستخدام MATLAB GUI.