فهرست مطالب:

ربات دوربین ESP32 - FPV: 6 مرحله
ربات دوربین ESP32 - FPV: 6 مرحله

تصویری: ربات دوربین ESP32 - FPV: 6 مرحله

تصویری: ربات دوربین ESP32 - FPV: 6 مرحله
تصویری: With a Lidar strapped to its back, PuppyPi Pro can avoid any obstacle 👣🤖https://bit.ly/383HAeV 2024, نوامبر
Anonim
Image
Image
ربات دوربین ESP32 - FPV
ربات دوربین ESP32 - FPV
ربات دوربین ESP32 - FPV
ربات دوربین ESP32 - FPV

ماژول دوربین ESP32 یک PLC ارزان و قدرتمند است. حتی شامل تشخیص چهره نیز می شود!

بیایید یک ربات دیدگاه اول شخص بسازیم که از طریق یک رابط وب روی صفحه رانندگی می کنید!

این پروژه از ماژول Geekcreit ESP32 با دوربین OV2640 استفاده می کند. این بر اساس ماژول AIThinker است.

تعداد زیادی کلون مختلف دوربین ESP32 وجود دارد. برخی کار می کنند ، برخی دیگر کار نمی کنند. من پیشنهاد می کنم از ماژولی که من انجام دادم استفاده کنید تا فرصت خوبی برای موفقیت داشته باشید.

روبات به شرح زیر عمل می کند.

ESP32 یک آدرس اینترنتی وب را به شبکه شما پخش می کند که جریان مستقیم ویدیو را با برخی از چک باکس ها برای عملکرد برخی از عملکردهای دوربین ارائه می دهد. همچنین فشارهای کلیدی ارسال شده به صفحه وب را از صفحه کلید دریافت می کند که دستورات جهت دار برای ربات هستند. ممکن است بخواهید سپر جوی استیک USB را بسازید تا بتوانید ربات را به جای تایپ کردن دستورات صفحه کلید با جوی استیک رانندگی کنید.

هنگامی که ESP32 فشارهای کلیدی را دریافت می کند ، این بایت ها را به Arduino Nano هدایت می کند و سپس موتورها را برای حرکت روبات حرکت می دهد.

این پروژه دارای سختی متوسط تا زیاد است. لطفا از وقت خودت استفاده کن.

بیایید شروع کنیم!

تدارکات

  • ماژول دوربین ESP -32 با دوربین OV2640 - من محصول Geekcreit را توصیه می کنم
  • آنتن خارجی ضربه محکم و ناگهانی برای ESP-32 برای افزایش حداکثر قدرت سیگنال
  • آردوینو نانو
  • آردوینو لئوناردو برای ماژول جوی استیک (ما به شبیه سازی صفحه کلید USB ارائه شده توسط لئوناردو نیاز داریم)
  • ماژول جوی استیک عمومی
  • تراشه L293D Quad H-bridge
  • DC-DC Buck Coverter با خروجی 5 ولت برای تغذیه ESP32
  • آداپتور سریال FTDI برای برنامه نویسی ESP32
  • یک شاسی رباتیک معمولی با دو موتور دنده - هر شاسی کار می کند. موتورهای 3 تا 6 ولت توصیه می شود
  • 2 عدد باتری 7.4 ولت 1300mAh LiPo (یا مشابه) برای تغذیه ESP32 و موتورها
  • 1 عدد باتری 9 ولت برای تغذیه آردوینو نانو

مرحله 1: دوربین ESP32 را برنامه ریزی کنید

دوربین ESP32 را برنامه ریزی کنید
دوربین ESP32 را برنامه ریزی کنید
دوربین ESP32 را برنامه ریزی کنید
دوربین ESP32 را برنامه ریزی کنید

با استفاده از تخته نورد ، دوربین ESP32 خود را به آداپتور FTDI به صورت زیر وصل کنید:

FTDI ESP32

3.3V ----------- 3.3V

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

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

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

علاوه بر این ، پین IO0 ("eye-oh-zero") را به GND وصل کنید. برای قرار دادن ESP32 در حالت برنامه نویسی باید این کار را انجام دهید.

فایل esp32CameraWebRobotforInstructable.zip را از حالت فشرده خارج کنید.

در این پروژه 4 فایل وجود دارد:

esp32CameraWebRobotforInstructable.ino طرح آردوینو است.

ap_httpd.cpp کدی است که سرور وب را مدیریت می کند و با تنظیم ویژگی های دوربین از صفحه وب و دریافت فشارهای کلیدی از صفحه وب سروکار دارد.

camera_index.h شامل کد HTML/JavaScript برای برنامه وب به عنوان آرایه های بایت است. اصلاح برنامه وب بسیار خارج از محدوده این پروژه است. پیوندی را برای نحوه اصلاح HTML/JavaScript بعداً اضافه خواهم کرد.

camera_pins.h فایل هدر مربوط به تنظیمات پین دوربین ESP32 است.

برای قرار دادن ESP32 در حالت برنامه نویسی ، باید IO0 ("eye-oh-zero") را به Ground متصل کنید.

Arduino IDE خود را راه اندازی کرده و به Tools/Boards/Boards Manager بروید. esp32 را جستجو کرده و کتابخانه esp32 را نصب کنید.

پروژه را در Arduino IDE خود باز کنید.

شناسه شبکه روتر و رمز عبور خود را در خطوط مشخص شده در تصویر بالا قرار دهید. پروژه را ذخیره کنید

به منوی Tools رفته و انتخابهایی را که در تصویر بالا نشان داده شده است انجام دهید.

برد: ESP32 Wrover

سرعت بارگذاری: 115200

طرح پارتیشن بندی: "برنامه بزرگ (3 مگابایت بدون OTA)"

و پورتی را انتخاب کنید که آداپتور FTDI شما به آن متصل است.

روی دکمه "بارگذاری" کلیک کنید.

اکنون ، گاهی اوقات ، بارگیری ESP32 شروع نمی شود. بنابراین آماده فشار دکمه RESET در پشت ESP32 باشید هنگامی که شروع به مشاهده کاراکترهای… --- … در هنگام بارگذاری در کنسول می کنید. سپس بارگذاری شروع می شود.

وقتی "RST" را روی کنسول می بینید ، بارگذاری کامل می شود.

IO0 را از زمین جدا کنید. خط 3.3V بین آداپتور FTDI و ESP32 را جدا کنید.

دوربین ESP32 برای کارکرد خوب به جریان زیادی نیاز دارد. یک آداپتور برق 5V 2A به پین های 5V و GND در ESP32 وصل کنید.

Serial Monitor را باز کنید ، نرخ baud را روی 115200 تنظیم کنید و سپس راه اندازی مجدد ESP32 را مشاهده کنید. در نهایت ، URL سرور را مشاهده خواهید کرد.

به مرورگر خود بروید و آدرس اینترنتی را وارد کنید. هنگامی که وب سایت بارگیری می شود ، روی دکمه "شروع جریان" کلیک کنید و جریان مستقیم ویدئو آغاز شود. اگر روی کادر تأیید "Floodlight" کلیک کنید ، LED فلش روی صفحه باید روشن شود. مواظب باش! روشن است!

مرحله 2: ساخت ربات

ساخت ربات
ساخت ربات

شما به یک شاسی ربات دو چرخ نیاز دارید. هر کسی انجام خواهد داد طبق دستورالعمل سازنده ، شاسی را مونتاژ کنید.

سپس روبات را مطابق نمودار سیم کشی کنید. اتصالات باتری را فعلا رها کنید.

L293D برای کنترل موتورها استفاده می شود. توجه داشته باشید که نیمه برش روی تراشه به سمت ESP32 است.

به طور معمول برای کنترل دو موتور به 6 پین در آردوینو نیاز است.

این ربات فقط به 4 پین نیاز دارد و هنوز به طور کامل کار می کند.

پین های 1 و 9 به منبع 5 ولت آردوینو متصل می شوند ، بنابراین به طور دائم بالا هستند. سیم کشی این ربات به این معنی است که برای کنترل موتورها به دو پین کمتر در آردوینو نیاز داریم.

در جهت های جلو ، پین های INPUT روی LOW و پین های مدولاسیون موج پالس موتور روی مقادیر بین 0 تا 255 با 0 به معنی خاموش و 255 به معنی حداکثر سرعت تنظیم شده است.

در جهت معکوس ، پین های INPUT روی HIGH تنظیم می شوند و مقادیر PWM معکوس می شوند. 0 به معنی حداکثر سرعت و 255 به معنی خاموش است.

فایل ArduinoMotorControl را از حالت فشرده خارج کرده و در Arduino Nano بارگذاری کنید.

مرحله 3: سلام! یک لحظه صبر کن! چرا به آردوینو نانو نیاز دارم؟

احتمالاً به این فکر می کنید ، "سلام! حداقل 4 پین IO در دوربین ESP32 وجود دارد. چرا نمی توانم از آنها برای کنترل موتورها استفاده کنم؟"

خوب ، درست است ، پین هایی در ESP32 به شرح زیر وجود دارد:

IO0 - برای قرار دادن ESP32 در حالت برنامه نویسی مورد نیاز است

IO2 - موجود است

IO4 - LED فلش

IO12 ، IO13 ، IO14 ، IO15 ، IO16 - پین های GPIO اضافی.

اگر فقط یک طرح اولیه را روی ESP32 بارگذاری کنید تا پین ها را با دستورات PWM کنترل کنید ، آنها کار می کنند.

با این حال ، هنگامی که کتابخانه های CAMERA را در طرح های خود فعال می کنید ، این پین ها دیگر در دسترس نیستند.

بنابراین ساده ترین کار این است که فقط از یک نانو برای کنترل موتورها از طریق PWM استفاده کنید و دستورات را از ESP32 با ارتباطات سریال روی یک سیم (ESP32 U0T به Arduino Rx0) و GND ارسال کنید. بسیار ساده.

مرحله 4: سیم کشی USB جوی استیک (اختیاری)

شما می توانید ربات را با ارسال فشارهای کلیدی به صفحه وب به شرح زیر هدایت کنید:

8 - جلو

9 - جلو راست

7 - جلو چپ

4 - چرخش به چپ

5 - توقف کنید

1 - معکوس به چپ

2- معکوس

3 - معکوس راست.

طرح جوی استیک USB ورودی های جوی استیک را به پرس های کلیدی تبدیل می کند و آنها را به رابط وب ارسال می کند و آنها را به آردوینو هدایت می کند تا ربات را هدایت کند.

جوی استیک را به صورت زیر به Arduino LEONARDO وصل کنید:

لئوناردو جوی استیک

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

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

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

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

طرح usbJoyStick را باز کنید ، Arduino Leonardo را به عنوان صفحه انتخاب کنید و آن را در Leonardo بارگذاری کنید.

اگر می خواهید آن را آزمایش کنید ، فقط یک ویرایشگر متن را در رایانه خود باز کنید ، روی ماوس در پنجره کلیک کرده و حرکت جوی استیک را شروع کنید. شما باید مقادیر 1 تا 9 را در پنجره نشان دهید

مرحله 5: بیایید سوار شویم

کمی وقت بگذارید و سیم کشی خود را بررسی کنید تا مطمئن شوید همه چیز درست است.

در مرحله بعد ، باتری های خود را به صورت زیر وصل کنید.

1. دوربین ESP32 را روشن کنید. برای راه اندازی وب سرور به چند ثانیه زمان نیاز است.

2. آردوینو نانو را روشن کنید.

3. موتورها را روشن کنید.

مرورگر خود را راه اندازی کرده و به آدرس ESP32 بروید.

روی دکمه Start Streaming کلیک کنید.

ماوس خود را در جایی از صفحه مرورگر کلیک کنید تا صفحه در حال حاضر در کانون توجه قرار گیرد.

رانندگی ربات خود را با جوی استیک (یا صفحه کلید) شروع کنید.

من دریافتم که اندازه فریم پیش فرض برای پخش مستقیم ویدئوی زنده از طریق WiFi مناسب است. با این حال ، با افزایش اندازه فریم ، جریان پخش می شود زیرا شما سعی در پخش تصاویر بزرگتر دارید.

این یک پروژه چالش برانگیز است که به شما این فرصت را می دهد تا کار با پخش مستقیم ویدئو و رانندگی ربات را از طریق WiFi آغاز کنید. امیدوارم برای شما جالب بوده باشد!

اکنون بروید و چیزی شگفت انگیز بسازید!

به روز رسانی ژانویه 2020 - آخرین عکس ها نسخه نهایی روبات را نشان می دهد که به سختی لحیم شده و ایمن روی شاسی نصب شده است.

سه کلید تعبیه شده در جلو به شرح زیر است:

چپ - باتری قدرت موتور

مرکز - باتری آردوینو

راست - باتری دوربین ESP32

من می توانم از یک باتری بزرگ با ترانسفورماتورهای تقویت کننده باک استفاده کنم (من از آن برای ESP32 استفاده می کنم-در پایین سمت راست عکس نمای جلویی قرار دارد) ، اما به خاطر سادگی ، من فقط 3 باتری را نگه می دارم.

ربات اکنون در Access Point

به نظر من نشان دادن این ربات در خارج از خانه ام دشوار است زیرا شبکه سازمانی مدرسه من به من اجازه نمی دهد سرور وب روبات را به آن متصل کنم. به عنوان یک راه حل ، من در مورد استفاده از ویژگی نقطه دسترسی سرور ESP32 وب تحقیق کردم. کار کمی طول می کشد ، اما برای ایجاد ESP32 آدرس IP خود ، ESP32 نیاز به تغییرات نسبتاً کمی در طرح اصلی ربات دارد. این به اندازه یک هاب وای فای با سرعت بالا اختصاصی نیست (گاهی اوقات اگر خیلی سریع حرکت کنید قطع می شود) ، اما کاملاً خوب کار می کند و اکنون می توانم ربات را در هر مکانی که می خواهم بدون نیاز به اتصال به شبکه نشان دهم! پس از کارکردن ربات ، خودتان آن را به Access Point تبدیل کنید!

مرحله 6: جزئیات نحوه اصلاح کد HTML/Javascript برای وب سرور

این ضروری نیست ، اما من درخواست هایی داشتم.

من در این Google Doc اطلاعاتی در مورد نحوه استفاده از CyberChef برای تبدیل رفت و برگشت بین HTML/Javascript و نمایش آرایه بایت در فایل camera_index.h ارائه کرده ام.

توصیه شده: