ثورة ثلاثية الأبعاد على Arduino

الصورة

حتى اللحظة الأخيرة ، كانت وحدات التحكم (وأردوينو على وجه الخصوص) تعمل إما بدون واجهة على الإطلاق ، أو مع واجهات بدائية ، نسبيًا ، باستخدام زر أو زرين. مع ظهور خادم Arduino Mega Server ، تغير الوضع بشكل كبير وأصبح من الممكن إنشاء أي واجهة لمشروعك على Arduino.

سنذهب اليوم إلى أبعد من ذلك ونتحدث عن كيفية إنشاء واجهة ثلاثية الأبعاد تفاعلية كاملة لمشروعك على Arduino. سنقوم بإجراء جميع التجارب على وحدة التحكم الدقيقة الجديدة Genuino 101 التي تم إنتاجها بشكل مشترك من قبل Intel و Arduino ويتم توفيرها بواسطة Intel لنقل نظام Arduino Mega Server إليه.

لماذا تحتاج 3D على اردوينو؟


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

تطبيقات ثلاثية الأبعاد


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

تصور البيانات


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

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

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

عوالم ثلاثية الأبعاد


الصورة

تحت العوالم ثلاثية الأبعاد هنا نعني نماذج ثلاثية الأبعاد تفاعلية متطورة تحتوي على مجموعات من العناصر (الأشياء) وقواعد تفاعل هذه الأشياء داخل النموذج ("فيزياء" هذا العالم).

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

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

التعلم عبر الإنترنت


تتيح لك هذه التقنية (بالاشتراك مع تقنيات Arduino Mega Server و OHAS ) إنشاء وحدات تحكم تحتوي على كل ما تحتاجه للتفاعل مع المستخدم (أمثلة ثلاثية الأبعاد تفاعلية ، وثائق ، أدلة ، كتيبات ، إلخ) وبناء أنظمة معقدة بنفس السهولة مكعبات ليغو قابلة للطي.

الصورة

يمكن استخدام هذا في التدريس وتصور العمليات المعقدة والألعاب والموسوعات التفاعلية والدورات التدريبية (الواردة في وحدة التحكم!) ، إلخ.

القضايا التكنولوجية


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

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

حل تقني


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

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

كل ما عليك القيام به لبدء استخدام 3D في مشروع Arduino الخاص بك هو توصيل مكتبة 3D المناسبة بالطريقة المعتادة

<script src="process.js"></script>

أو

<script src="three.js"></script>

بعد ذلك ، إما إدراج رمز المثال ثلاثي الأبعاد في الصفحة ، أو إدراج رابط الملف باستخدام المثال ثلاثي الأبعاد

<canvas id="sketch" data-processing-sources="cube.pde"></canvas>

وهذا ، في الواقع ، كل ما عليك القيام به للحصول على مثال ثلاثي الأبعاد على صفحة خادم Arduino Mega. كل شيء يتم تمامًا كما هو الحال في موقع الإنترنت العادي. وسيقوم خادم Arduino Mega Server بكل العمل الشاق لضمان توافر النظام.

تفاعلية


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

الصورة

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

يتم ضمان تشغيل واجهة Arduino Mega Server من خلال تبادل Ajax المستمر بين وحدة التحكم ومتصفح المستخدم. كنموذج ثلاثي الأبعاد ، نأخذ مكعبًا مفرطًا يتكون من ستة كائنات على كل من محاور الإحداثيات الثلاثة (ما مجموعه 216 كائنًا).

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

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

تفاعل النظام والنماذج ثلاثية الأبعاد


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

تم التصريح عن متغير في ملف scripts.js

var dash_marker1 = 0;

ثم يتم وضع العلامات في الأماكن الصحيحة من البرنامج التي تغير حالة المتغير. في هذه الحالة ، عندما "تدخل" و "تخرج" من وظيفة الشبكة.

dash_marker1 = parseFloat("1.0");

dash_marker1 = parseFloat("0.0");

في رسم تخطيطي للمعالجة ، يتم التصريح عن المتغيرات من أجل "اصطياد" القيم من JavaScript

float for_dash_marker1 = 0;

ولحظة "اللحاق"

try {
  for_dash_marker1 = float(dash_marker1);
} catch (exception) {
  for_dash_marker1 = float("0.0");
}

ثم يتم وصف الإجراءات باستخدام نموذج ثلاثي الأبعاد ، اعتمادًا على حالة المتغيرات

if (for_dash_marker1 < 1.0) {
...
}

يمكنك مشاهدة نتيجة هذا الرمز على الفيديو ، ويمكنك التعرف على مجموعة التوزيع بالكامل (وتشغيلها ، إذا كان لديك وحدة تحكم Genuino 101) في صفحة التنزيل لمشروع Arduino Mega Server.

فيديو


فيديو يظهر عمل رسومات ثلاثية الأبعاد على Arduino

الخلاصة


الآن أصبحت الرسومات ثلاثية الأبعاد أكثر سهولة من أي وقت مضى لمشاريعك على Arduino ، بل هناك آفاق أكثر إثارة في انتظارك : تم تصميم Arduino Mega Server إلى esp8266 ويمكنه القيام بكل ما هو موضح في هذه المقالة أثناء العمل لاسلكيًا عبر Wi-Fi وكونه وحدة حجم بعملة عشرة سنتات.

الصورة

وفي المستقبل القريب ، سيظهر توزيع AMC لـ esp8266 على موقع المشروع. أنت تنتظر تنزيلات الملفات وتومض وحدة التحكم على الهواء وخادم FTP والعديد من الميزات الأخرى التي يوفرها خادم Arduino Mega Server. وهذه ثورة أخرى في سوق إنترنت الأشياء.

Source: https://habr.com/ru/post/ar393019/


All Articles