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

روبوت الكاميرا ESP32 - FPV: 6 خطوات
روبوت الكاميرا ESP32 - FPV: 6 خطوات

فيديو: روبوت الكاميرا ESP32 - FPV: 6 خطوات

فيديو: روبوت الكاميرا ESP32 - FPV: 6 خطوات
فيديو: ESP32 CAM كاميرا بـ 8 دولار لمشاريع إنترنت الأشياء 2024, شهر نوفمبر
Anonim
Image
Image
روبوت كاميرا ESP32 - FPV
روبوت كاميرا ESP32 - FPV
روبوت كاميرا ESP32 - FPV
روبوت كاميرا ESP32 - FPV

وحدة الكاميرا ESP32 عبارة عن وحدة PLC قوية وغير مكلفة. حتى أنه يتضمن التعرف على الوجه!

لنقم ببناء روبوت First Person Viewpoint يمكنك قيادته عبر واجهة ويب داخلية!

يستخدم هذا المشروع وحدة Geekcreit ESP32 مع كاميرا OV2640. يعتمد على وحدة AIThinker.

هناك العديد من نسخ كاميرا ESP32 المختلفة. بعض الأعمال ، والبعض الآخر لا. أقترح عليك استخدام نفس الوحدة التي قمت بها حتى يكون لديك فرصة جيدة لتكون ناجحًا.

الروبوت يعمل على النحو التالي.

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

عندما يتلقى ESP32 ضغطات على المفاتيح ، فإنه يعيد توجيه تلك البايتات إلى Arduino Nano الذي يقود المحركات بعد ذلك لجعل الروبوت يتحرك.

هذا المشروع متوسط الصعوبة. من فضلك خذ وقتك.

هيا بنا نبدأ!

اللوازم

  • وحدة الكاميرا ESP-32 مع كاميرا OV2640 - أوصي بمنتج Geekcreit
  • هوائي خارجي إضافي لـ ESP-32 لزيادة قوة الإشارة
  • اردوينو نانو
  • Arduino Leonardo لوحدة جويستيك (نحتاج إلى محاكاة لوحة مفاتيح USB التي يوفرها ليوناردو)
  • وحدة عصا التحكم العامة
  • رقاقة جسر H رباعية L293D
  • غطاء DC-DC باك مع خرج 5 فولت لتشغيل ESP32
  • محول تسلسلي FTDI لبرمجة ESP32
  • هيكل روبوت عام مزود بمحركين موجهين - سيعمل أي هيكل. يوصى باستخدام محركات من 3 إلى 6 فولت
  • بطاريتان LiPo بقوة 7.4 فولت 1300 مللي أمبير في الساعة (أو ما شابه ذلك) لتشغيل ESP32 والمحركات
  • بطارية 1 × 9 فولت لتشغيل اردوينو نانو

الخطوة 1: برمجة كاميرا ESP32

قم ببرمجة كاميرا ESP32
قم ببرمجة كاميرا ESP32
قم ببرمجة كاميرا ESP32
قم ببرمجة كاميرا ESP32

باستخدام لوحة توصيل الدوائر ، قم بتوصيل كاميرا ESP32 بمحول FTDI على النحو التالي:

FTDI ESP32

3.3 فولت ----------- 3.3 فولت

GND ----------- GND

TX ----------- U0R

Rx ----------- U0T

بالإضافة إلى ذلك ، قم بتوصيل دبوس IO0 ("العين يا صفر") بـ GND. تحتاج إلى القيام بذلك لوضع ESP32 في وضع البرمجة.

قم بفك ضغط ملف esp32CameraWebRobotforInstructable.zip.

يوجد 4 ملفات في هذا المشروع:

esp32CameraWebRobotforInstructable.ino هو رسم Arduino.

ap_httpd.cpp هو الكود الذي يدير خادم الويب ويتعامل مع تعيين ميزات الكاميرا من صفحة الويب وتلقي ضغطات المفاتيح من صفحة الويب.

يحتوي camera_index.h على كود HTML / JavaScript لتطبيق الويب كمصفوفات بايت. يعد تعديل تطبيق الويب خارج نطاق هذا المشروع. سأقوم بتضمين رابط لكيفية تعديل HTML / JavaScript لاحقًا.

camera_pins.h هو ملف الرأس المتعلق بتكوين الدبوس الخاص بكاميرا ESP32.

لوضع ESP32 في وضع البرمجة ، يجب عليك توصيل IO0 ("العين-أوه-صفر") بالأرض.

قم بتشغيل Arduino IDE الخاص بك وانتقل إلى Tools / Boards / Boards Manager. ابحث عن esp32 وقم بتثبيت مكتبة esp32.

افتح المشروع في Arduino IDE الخاص بك.

ضع معرف شبكة جهاز التوجيه الخاص بك وكلمة المرور الخاصة بك في الخطوط المميزة في الصورة أعلاه. احفظ المشروع.

اذهب إلى قائمة الأدوات وقم بإجراء التحديدات كما هو موضح في الصورة أعلاه.

اللوحة: ESP32 Wrover

سرعة الرفع: 115200

مخطط التقسيم: "Huge APP (3MB no OTA)"

واختر المنفذ الذي يتصل به محول FTDI.

انقر فوق الزر "تحميل".

الآن ، في بعض الأحيان ، لا يبدأ تحميل ESP32. لذا كن مستعدًا للضغط على زر RESET في الجزء الخلفي من ESP32 عندما تبدأ في رؤية… ---… الحروف تظهر في وحدة التحكم أثناء التحميل. سيبدأ بعد ذلك في التحميل.

عندما ترى "اضغط على RST" على وحدة التحكم ، يكون التحميل قد اكتمل.

افصل IO0 من الأرض. افصل الخط 3.3 فولت بين محول FTDI و ESP32.

تتطلب كاميرا ESP32 الكثير من التيار لتعمل بشكل جيد. قم بتوصيل محول طاقة 5V 2A بدبابيس 5V و GND على ESP32.

افتح Serial Monitor ، واضبط معدل البث بالباود على 115200 ثم شاهد أثناء إعادة تشغيل ESP32. في النهاية ، سترى عنوان URL للخادم.

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

الخطوة الثانية: بناء الروبوت

قم ببناء الروبوت
قم ببناء الروبوت

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

ثم قم بتوصيل الروبوت وفقًا للرسم التخطيطي واترك توصيلات البطارية في الوقت الحالي.

يستخدم L293D للتحكم في المحركات. لاحظ أن نصف الشق على الشريحة هو نحو ESP32.

عادة ، هناك حاجة إلى 6 دبابيس على Arduino للتحكم في محركين.

يتطلب هذا الروبوت 4 دبابيس فقط ولا يزال يعمل بشكل كامل.

يتم توصيل الدبابيس 1 و 9 بمصدر Arduino 5V بحيث تكون عالية بشكل دائم. يعني توصيل الروبوت بهذه الطريقة أننا نحتاج إلى دبابيسين أقل على Arduino للتحكم في المحركات.

في الاتجاهات الأمامية ، يتم تعيين دبابيس INPUT على LOW ويتم تعيين دبابيس Pulse Wave Modulation على قيم تتراوح بين 0 و 255 مع 0 تعني إيقاف التشغيل و 255 تعني السرعة القصوى.

في الاتجاهات العكسية ، يتم تعيين دبابيس INPUT على HIGH وعكس قيم PWM. 0 يعني السرعة القصوى و 255 يعني إيقاف.

قم بفك ضغط وتحميل رسم ArduinoMotorControl على Arduino Nano.

الخطوة 3: مهلا! انتظر لحظة! لماذا أحتاج إلى Arduino Nano؟

ربما تفكر ، "مرحبًا! هناك ما لا يقل عن 4 دبابيس IO متوفرة في كاميرا ESP32. لماذا لا يمكنني استخدامها للتحكم في المحركات؟"

حسنًا ، هذا صحيح ، هناك دبابيس على ESP32 على النحو التالي:

IO0 - مطلوب لوضع ESP32 في وضع البرمجة

IO2 - متوفر

IO4 - فلاش LED

IO12 ، IO13 ، IO14 ، IO15 ، IO16 - دبابيس GPIO إضافية.

إذا قمت فقط بتحميل رسم أساسي على ESP32 للتحكم في المسامير بأوامر PWM ، فإنها تعمل.

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

لذا فإن أسهل ما يمكنك فعله هو استخدام Nano للتحكم في المحركات عبر PWM وإرسال الأوامر من ESP32 عن طريق الاتصالات التسلسلية عبر سلك واحد (ESP32 U0T إلى Arduino Rx0) و GND. بسيط جدا.

الخطوة 4: قم بربط عصا تحكم USB (اختياري)

يمكنك قيادة الروبوت بإرسال ضغطات مفتاح إلى صفحة الويب على النحو التالي:

8 - إلى الأمام

9 - يمين إلى الأمام

7 - اليسار إلى الأمام

4 - استدارة لليسار

5 - توقف

1 - عكس اليسار

2 - عكسي

3 - عكس اليمين.

يقوم رسم عصا التحكم USB بترجمة مدخلات عصا التحكم إلى ضغطات المفاتيح وإرسالها إلى واجهة الويب التي تعيد توجيهها إلى Arduino لقيادة الروبوت.

قم بتوصيل عصا التحكم بـ Arduino LEONARDO على النحو التالي:

ليوناردو جويستيك

5 فولت ---------- VCC

GND ---------- GND

A0 ---------- VRx

A1 ---------- VRy

افتح رسم usbJoyStick ، وحدد Arduino Leonardo كلوحة وقم بتحميله على Leonardo.

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

الخطوة 5: دعنا نركب

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

بعد ذلك ، قم بتوصيل البطاريات الخاصة بك على النحو التالي.

1. قم بتشغيل كاميرا ESP32. يحتاج إلى بضع ثوان لبدء خادم الويب.

2. قم بتشغيل اردوينو نانو.

3. قم بتشغيل المحركات.

قم بتشغيل المستعرض الخاص بك وانتقل إلى URL الخاص بـ ESP32.

انقر فوق الزر بدء البث.

انقر بالماوس في مكان ما في شاشة المتصفح بحيث تكون الشاشة الآن هي التركيز.

ابدأ في قيادة الروبوت الخاص بك باستخدام عصا التحكم (أو لوحة المفاتيح).

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

هذا مشروع مليء بالتحديات يمنحك الفرصة لبدء العمل مع بث مباشر للفيديو وقيادة روبوت عبر شبكة WiFi. أتمنى أن تجدها ممتعة!

اذهب الآن واجعل شيئًا رائعًا!

تحديث يناير 2020 - تُظهر الصور الأخيرة الإصدار الأخير من الروبوت ، ملحومًا بشدة ومُثبت بإحكام على الهيكل.

المفاتيح الثلاثة الأمامية هي كما يلي:

يسار - بطارية طاقة المحرك

المركز - بطارية اردوينو

يمين - بطارية كاميرا ESP32

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

الروبوت الآن على نقطة الوصول

أجد أنه من المرهق إظهار هذا الروبوت خارج منزلي لأن شبكة مؤسسة مدرستي لا تسمح لي بتوصيل خادم الويب الخاص بالروبوت به. كحل ، أجريت بحثًا حول استخدام ميزة Access Point لخادم الويب ESP32. يتطلب الأمر بعض العمل ، ولكنه يتطلب تغييرات طفيفة إلى حد ما على مخطط الروبوت الرئيسي لجعل بث ESP32 هو عنوان IP الخاص به. إنها ليست قوية مثل محور wifi مخصص عالي السرعة (يتوقف أحيانًا إذا تحركت بسرعة كبيرة) ، لكنه يعمل جيدًا ويمكنني الآن إظهار الروبوت في أي مكان أريده دون الحاجة إلى توصيله بشبكة! بمجرد تشغيل الروبوت ، حاول تحويله إلى Access Point بنفسك!

الخطوة 6: تفاصيل كيفية تعديل كود HTML / Javascript لخادم الويب

هذا ليس ضروريًا ، لكن لدي بعض الطلبات.

لقد قمت بتزويد مستند Google هذا بتفاصيل حول كيفية استخدام CyberChef للتحويل بين HTML / Javascript وتمثيلات مصفوفة البايت في ملف camera_index.h.

موصى به: