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

روبوت الحضور الافتراضي: 15 خطوة
روبوت الحضور الافتراضي: 15 خطوة

فيديو: روبوت الحضور الافتراضي: 15 خطوة

فيديو: روبوت الحضور الافتراضي: 15 خطوة
فيديو: مهارات برمجة الروبوت الأفتراضي ( جميع المراحل ) 2024, شهر نوفمبر
Anonim
Image
Image
سيارة روبوت متحركة
سيارة روبوت متحركة

يتفاعل هذا الروبوت المتحرك مع محيطه المادي ، من خلال تمثيل "الوجود الافتراضي" للشخص الذي يتحكم فيه عن بُعد. يمكن لأي شخص الوصول إليه ، في أي مكان في العالم ، للاستغناء عن المكافآت واللعب معك.

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

يعتمد على ESP32-Camera-Robot-FPV-Teacher-Entry Instructable وتم تعديله ليشمل مستشعر المسافة وموزع المعالجة وقدرة "التحكم من أي مكان في العالم" ، بشرط أن يكون لديك اتصال إنترنت مستقر إلى حد ما.

اللوازم

يتكون المشروع من 4 أجزاء رئيسية - سيارة روبوت متنقلة ، وموزع رقاقة ، وعصا تحكم ، وإعداد اتصالات الشبكة.

سيارة روبوت متنقلة

  • اللوح
  • محرك دفع ثنائي ومجموعة روبوت الهيكل (تشمل العجلات ومحركات التيار المستمر ولوحة التركيب والبراغي)
  • Arduino Mega 2560 (إذا قمت بالبناء بدون مستشعر المسافة أو موزع الرقائق ، فسيكون لدى Uno دبابيس كافية)
  • (3) بطاريات 9 فولت (لديك عدد قليل آخر حيث ستستنزف تصحيح الأخطاء)
  • LM2596 منظم التيار الكهربائي DC / DC 3A (أو ما شابه)
  • وحدة واي فاي ESP32-CAM
  • FT232RL FTDI USB to TTL Serial Converter (لبرمجة ESP32-CAM)
  • HC-SR04 جهاز استشعار المسافة بالموجات فوق الصوتية
  • سائق محرك L298N
  • (3) المصابيح (أي لون)
  • (3) 220 أوم مقاومات

موزع الرقائق

  • (2) خدمات SG90
  • كرتون / ورق مقوى

جويستيك

  • اردوينو اونو
  • وحدة جويستيك
  • لوحة توصيل صغيرة ، (1) LED ، (1) 220 أوم المقاوم (اختياري)

آخر

الكثير من أسلاك توصيل الألواح الخشبية

الصبر =)

الخطوة 1: سيارة روبوت متنقلة

يعمل هيكل Robot Car كمنصة متنقلة ، مع Arduino MEGA باعتباره وحدة التحكم الدقيقة الرئيسية التي تقود المحركات ، وقراءة قيم المستشعرات وتشغيل الماكينات. يتم تنفيذ معظم الإجراءات من خلال تلقي Arduino MEGA للأوامر عبر اتصال تسلسلي ، يتم إرسالها من ESP32-CAM. بينما يوفر ESP32 بثًا مباشرًا للكاميرا للتحكم في الروبوت ، فإن وظيفته الأخرى هي إدارة اتصال لاسلكي بين الروبوت والخادم ، وبالتالي السماح للمستخدمين بالتحكم فيه من أي مكان في العالم. يتلقى ESP32 الأوامر من صفحة الويب عن طريق الضغط على مفتاح ويرسلها إلى Arduino MEGA كقيم char. بناءً على القيمة التي يتم تلقيها ، ستذهب السيارة للأمام والخلف وما إلى ذلك. نظرًا لأن التحكم عن بُعد عبر الإنترنت يعتمد على الكثير من العوامل الخارجية بما في ذلك زمن الوصول المرتفع وجودة البث الرديئة وحتى حالات الفصل ، تم دمج مستشعر المسافة لمنع الروبوت من الانهيار * نظرًا لمتطلبات الطاقة العالية والمتقلبة لشريحة ESP32 ، يوصى باستخدام منظم مصدر الطاقة مع طاقة البطارية (انظر مخطط الأسلاك).

الخطوة 2: سيارة روبوت متحركة - مخطط الدائرة

سيارة روبوت متحركة - مخطط الدائرة
سيارة روبوت متحركة - مخطط الدائرة

سنرشدك خلال تجميع هذه الخطوة خطوة.

الخطوة الثالثة: سيارة روبوت متحركة ـ تجميع (محركات)

سيارة روبوت متحركة ـ تجميع (محركات)
سيارة روبوت متحركة ـ تجميع (محركات)

بعد تجميع هيكل 2WD ، نبدأ بتوصيل المحركات والبطارية بـ Arduino MEGA من خلال برنامج التشغيل L298N.

الخطوة 4: سيارة روبوت متنقلة - التجميع (مستشعر المسافة)

سيارة روبوت متحركة ـ تجميع (مستشعر المسافة)
سيارة روبوت متحركة ـ تجميع (مستشعر المسافة)

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

الخطوة 5: سيارة روبوت متنقلة - التجميع (ESP32 CAM)

سيارة روبوت متنقلة - تجميع (ESP32 CAM)
سيارة روبوت متنقلة - تجميع (ESP32 CAM)

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

الخطوة 6: سيارة روبوت متحركة - تجميع (موزع رقاقة)

سيارة روبوت متنقلة - تجميع (موزع رقاقة)
سيارة روبوت متنقلة - تجميع (موزع رقاقة)

الآن ، دعنا نضيف موزع الرقائق (المزيد عن هذا في قسم "موزع الرقائق"). قم بربط المؤازرتين وفقًا لمخطط فريتزينج ، وقم بإصلاح الموزع في ذيل الروبوت.

الخطوة 7: سيارة روبوت متنقلة - التجميع (ملفات تعريف الارتباط!)

سيارة روبوت متنقلة - تجميع (ملفات تعريف الارتباط!)
سيارة روبوت متنقلة - تجميع (ملفات تعريف الارتباط!)

أخيرًا ، نضيف المكافآت إلى الموزع!

الخطوة 8: Mobile Robot Car - Arduino Code

RobotCar_Code هو الكود الذي ستحتاج إلى تحميله على Arduino Mega.

إليك كيفية عملها: يستمع Arduino إلى البايتات التي يتم إرسالها من ESP32 عبر الاتصال التسلسلي على النطاق 115200. بناءً على البايت المستلم ، ستتحرك السيارة للأمام والخلف واليسار واليمين وما إلى ذلك عن طريق إرسال إما جهد عالي أو منخفض إلى المحركات للتحكم في الاتجاه ، بالإضافة إلى متغير PWM بين 0-255 للتحكم في السرعة. لتجنب الاصطدامات ، يقرأ هذا الرمز أيضًا القيم الواردة من مستشعر المسافة وإذا كانت المسافة أقل من عتبة محددة ، فلن يتحرك الروبوت للأمام. أخيرًا ، إذا تلقى Arduino أمرًا لتوزيع مكافأة ، فسيقوم بتنشيط الماكينات في موزع الرقائق.

الخطوة 9: سيارة روبوت متنقلة - كود ESP32

يسمح ESP32 بالاتصال بين الخادم و Arduino عبر Wifi. تمت برمجته بشكل منفصل عن Arduino ، وله كود خاص به:

  • ESP32_Code.ino هو رمز ESP32 لإرسال المعلومات إلى Arduino
  • app_httpd.cpp هو الكود المطلوب لخادم الويب ESP32 الافتراضي وضبط الوظيفة للاستماع إلى ضغطات المفاتيح. جيد لتصحيح الأخطاء والاختبار على شبكة wifi المحلية. لا يتم استخدامه للاتصال خارج الشبكة المحلية.
  • camera_index.h هي كود html لتطبيق الويب الافتراضي
  • يحدد camera_pins.h المسامير وفقًا لطراز ESP32

يستخدم رمز ESP32 مكتبة Wifi بالإضافة إلى الوظيفة الإضافية ESP32 ، والتي يمكن تثبيتها في Arduino IDE باتباع الخطوات التالية:

  1. في Arduino IDE ، انتقل إلى ملف> تفضيلات
  2. ثم في علامة التبويب "الإعدادات" ضمن عنوان URL لمدير اللوحات الإضافية ، أدخل ما يلي "https://dl.espressif.com/dl/package_esp32_index.json"
  3. افتح الآن Boards Manager وانتقل إلى Tools> Board> Boards Manager وابحث عن ESP32 بكتابة "ESP32"
  4. يجب أن تشاهد "esp32 by Espressif Systems". انقر فوق تثبيت.
  5. الآن يجب تثبيت الوظيفة الإضافية ESP32. للتحقق ، ارجع إلى Arduino IDE وانتقل إلى Tools> Board وحدد "ESP32 Wrover Module".
  6. اذهب مرة أخرى إلى Tools> Upload Speed واضبطها على "115200".
  7. أخيرًا ، انتقل إلى Tools> Partition Scheme وقم بتعيينه على "Huge APP (3 ميجابايت بدون OTA / 1 ميجابايت SPIFFS)
  8. بمجرد الانتهاء من ذلك ، أوصي باتباع هذا البرنامج التعليمي بواسطة RandomNerdTutorials الذي يشرح بالتفصيل كيفية إنهاء إعداد ESP32 وتحميل الكود باستخدام مبرمج FTDI

الخطوة 10: موزع الرقائق

موزع الرقائق
موزع الرقائق

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

*جميع أبعاد هي في ملليمتر

الخطوة 11: عصا التحكم

جويستيك
جويستيك

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

لهذا الغرض ، كان لدينا فقط Arduino Uno الذي لا يمتلك القدرة على استخدام المكتبة ، لذلك قمنا ببرمجته مباشرة باستخدام بروتوكول USB المعروف باسم تحديث البرامج الثابتة للجهاز (DFU) والذي يسمح بوميض اردوينو ببرنامج ثابت للوحة مفاتيح USB HID عام. بمعنى آخر ، عندما يتم توصيل اردوينو بمنفذ USB ، لم يعد يتم التعرف عليه باعتباره اردوينو ولكن كلوحة مفاتيح!

الخطوة 12: عصا التحكم - مخطط الدائرة

جويستيك - مخطط الدائرة
جويستيك - مخطط الدائرة

إليكم كيف قمنا بتوصيل عصا التحكم.

الخطوة 13: عصا التحكم - محاكي لوحة المفاتيح

لكي يقوم Arduino Uno بمحاكاة لوحة المفاتيح ، فأنت بحاجة إلى برمجة شريحة Atmega16u2 مباشرة على Arduino عبر تحديث البرنامج الثابت للجهاز اليدوي (DFU). ستصف الخطوات التالية العملية الخاصة بجهاز Windows ، ونأمل أن تساعدك على تجنب بعض المشكلات التي واجهناها.

الخطوة الأولى هي الكتابة يدويًا لبرنامج تشغيل Atmel USB إلى Arduino بحيث يتم التعرف عليه على أنه USB وليس Arduino مما يتيح وميضه باستخدام مبرمج FLIP.

  1. قم بتنزيل مبرمج Atmel's FLIP من هنا
  2. قم بتوصيل Arduino Uno الخاص بك
  3. انتقل إلى إدارة الأجهزة وابحث عن Arduino. سيكون ضمن COM أو جهاز غير معروف. قم بتوصيله وإخراجه للتأكد من أن هذا هو الجهاز الصحيح.
  4. بمجرد العثور على Arduino Uno في إدارة الأجهزة ، انقر بزر الماوس الأيمن فوقه وحدد الخصائص> برنامج التشغيل> تحديث برنامج التشغيل> تصفح جهاز الكمبيوتر للحصول على برنامج التشغيل> اسمح لي بالاختيار من قائمة برامج التشغيل المتوفرة على جهاز الكمبيوتر الخاص بي> قرص خاص> استعرض للوصول إلى ملف "atmel_usb_dfu.inf" وحدده. يجب أن يكون هذا في المجلد حيث تم تثبيت Atmel FLIP Programmer. على جهاز الكمبيوتر الخاص بي يوجد هنا: C: / Program Files (x86) Atmel / Flip 3.4.7 / usb / atmel_usb_dfu.inf
  5. قم بتثبيت برنامج التشغيل
  6. عد الآن إلى إدارة الأجهزة ، يجب أن ترى "Atmel USB Devices" مع Arduino Uno المسمى الآن باسم ATmega16u2!

الآن بعد أن تعرف الكمبيوتر على Arduino Uno كجهاز USB ، يمكننا استخدام FLIP Programmer لفلاشها بثلاثة ملفات منفصلة وتحويلها إلى لوحة مفاتيح.

إذا قمت بفصل Arduino Uno بعد الجزء الأول ، فقم بتوصيله مرة أخرى.

  1. افتح FLIP
  2. أعد ضبط Arduino Uno عن طريق توصيل الطاقة بالأرض لفترة وجيزة.
  3. انقر فوق تحديد الجهاز (رمز مثل شريحة ميكروية) وحدد ATmega16U2
  4. انقر فوق تحديد وسيط اتصال (رمز مثل سلك USB) وحدد USB. إذا أكملت الجزء الأول بشكل صحيح ، فستصبح الأزرار الرمادية الأخرى قابلة للاستخدام.
  5. اذهب إلى File> Load Hex File> وقم بتحميل الملف Arduino-usbserial-uno.hex
  6. في نافذة FLIP ، يجب أن تشاهد ثلاثة أقسام: تدفق العمليات ، معلومات المخزن المؤقت FLASH ، و ATmega16U2. في "تدفق العمليات" ، حدد المربعات "مسح" و "برمجة" و "تحقق" ، ثم انقر فوق تشغيل.
  7. بمجرد اكتمال هذه العملية ، انقر فوق بدء التطبيق في قسم ATmega16U2.
  8. قم بتوصيل دورة اردوينو عن طريق فصله عن الكمبيوتر وتوصيله مرة أخرى.
  9. أعد ضبط Arduino Uno عن طريق توصيل الطاقة بالأرض لفترة وجيزة.
  10. افتح Arduino IDE وقم بتحميل الملف JoyStickControl_Code.ino إلى اللوحة.
  11. قم بتوصيل دورة اردوينو عن طريق فصله عن الكمبيوتر وتوصيله مرة أخرى.
  12. أعد ضبط اردوينو عن طريق توصيل الطاقة بالأرض لفترة وجيزة.
  13. ارجع إلى FLIP ، وتأكد من أن اختيار الجهاز يشير إلى Atmega16U2
  14. انقر فوق تحديد وسيط اتصال وحدد USB.
  15. انتقل إلى ملف> تحميل ملف Hex> وقم بتحميل الملف Arduino-keyboard-0.3.hex
  16. في نافذة FLIP ، يجب أن ترى ثلاثة أقسام: تدفق العمليات ، ومعلومات المخزن المؤقت FLASH ، و ATmega16U2. في "تدفق العمليات" ، حدد المربعات "مسح" و "برمجة" و "تحقق" ، ثم انقر فوق تشغيل.
  17. بمجرد اكتمال هذه العملية ، انقر فوق بدء التطبيق في قسم ATmega16U2.
  18. قم بتوصيل دورة اردوينو عن طريق فصله عن الكمبيوتر وتوصيله مرة أخرى.
  19. الآن عندما تذهب إلى إدارة الأجهزة ، يجب أن يكون هناك جهاز لوحة مفاتيح HID جديد ضمن لوحات المفاتيح.
  20. افتح مفكرة أو أي محرر نصوص وابدأ في تحريك عصا التحكم. يجب أن ترى الأرقام تتم كتابتها!

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

بعض الروابط المفيدة: Arduino DFUAtLibUsbDfu.dll غير موجود

يعتمد محاكي لوحة المفاتيح هذا على هذا البرنامج التعليمي بواسطة Michael في 24 حزيران (يونيو) 2012.

الخطوة 14: اتصالات الشبكة

شبكة التواصل
شبكة التواصل

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

  • Handlers.py: تنقل المعلومات من ESP32-CAM والخادم العام (تم اختباره على Python 3.8)
  • Flask_app.py: يحدد كيفية استجابة تطبيقك للطلبات الواردة.
  • Robot_stream.html: يعرض الفيديو في متصفحك ويستمع إلى الأوامر من خلال لوحة المفاتيح / عصا التحكم (تم اختباره على Chrome)

معالج الاتصال: يمكنك كتابة هذا الرمز مباشرةً في app_httpd.cpp ، ولكن لتسهيل تصحيح الأخطاء ، نستخدم نصًا برمجيًا بلغة Python يعمل على جهاز كمبيوتر متصل بالشبكة نفسها. افتح handlers.py وقم بتحديث عنوان IP واسم المستخدم الخاصين بك ، وستكون جاهزًا للانطلاق. سيبدأ الدفق عند تشغيل هذا الملف.

خادم عام للوصول إلى كل شيء على الإنترنت ، يمكنك بدء تشغيل خادم مع PaaS من اختيارك. في pythonanywhere (PA) يستغرق الإعداد أقل من 5 دقائق:

  1. قم بالتسجيل للحصول على حساب وتسجيل الدخول
  2. انتقل إلى علامة التبويب "الويب" واضغط على "إضافة تطبيق ويب جديد" ، واختر Flask و Python 3.6
  3. انسخ flask_app.py إلى دليل mysite /
  4. انسخ ملف robot_stream.html إلى دليل / mysite / Templates
  5. انقر فوق "إعادة تحميل"

و … أنت جاهز تمامًا!

إخلاء المسؤولية: سير عمل الشبكات هذا سريع وبسيط ولكنه بعيد جدًا عن المثالية. ستكون RTMP أو المآخذ أكثر ملاءمة للبث ، لكنها غير مدعومة في PA وتتطلب بعض الخبرة في إعداد الشبكات والخادم. يوصى أيضًا بإضافة بعض آليات الأمان للتحكم في الوصول.

الخطوة 15: وضع كل شيء معًا

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

موصى به: