Բովանդակություն:

ESP32 տեսախցիկի ռոբոտ - FPV ՝ 6 քայլ
ESP32 տեսախցիկի ռոբոտ - FPV ՝ 6 քայլ

Video: ESP32 տեսախցիկի ռոբոտ - FPV ՝ 6 քայլ

Video: ESP32 տեսախցիկի ռոբոտ - FPV ՝ 6 քայլ
Video: ESP32-CAM - Быстрый старт 2024, Հուլիսի
Anonim
Image
Image
ESP32 տեսախցիկի ռոբոտ - FPV
ESP32 տեսախցիկի ռոբոտ - FPV
ESP32 տեսախցիկի ռոբոտ - FPV
ESP32 տեսախցիկի ռոբոտ - FPV

ESP32 Camera մոդուլը էժան և հզոր PLC է: Այն ներառում է նույնիսկ դեմքի ճանաչում:

Եկեք կառուցենք Առաջին անձի տեսակետի ռոբոտ, որը դուք վարում եք ներկառուցված վեբ ինտերֆեյսով:

Այս նախագիծը օգտագործում է Geekcreit ESP32 մոդուլը OV2640 տեսախցիկով: Այն հիմնված է AIThinker մոդուլի վրա:

Կան բազմաթիվ տարբեր ESP32 տեսախցիկների կլոններ: Ոմանք աշխատում են, ոմանք ՝ ոչ: Ես կառաջարկեի օգտագործել նույն մոդուլը, ինչ ես արել եմ, որպեսզի հաջողակ լինելու լավ հնարավորություն ունենաք:

Ռոբոտը գործում է հետևյալ կերպ.

ESP32- ը ձեր ցանցին է փոխանցում վեբ հասցե, որը ներկայացնում է ուղիղ տեսահոսքը տեսախցիկի որոշ գործառույթներ գործարկելու որոշ վանդակներ: Այն նաև ստանում է ստեղնաշարից վեբ էջ ուղարկված հիմնական սեղմումներ, որոնք ռոբոտի համար ուղղորդված հրամաններ են: Հնարավոր է, որ ցանկանաք կառուցել USB վահանի վահանը, որպեսզի կարողանաք ռոբոտին քշել ջոյսթիկով, այլ ոչ թե մուտքագրել ստեղնաշարի հրամաններ:

Երբ ESP32- ը ստանում է ստեղնային սեղմումներ, այն փոխանցում է այդ բայթերը Arduino Nano- ին, որն այնուհետև շարժիչներին մղում է ռոբոտին շարժելու համար:

Այս նախագիծը միջինից բարձր դժվարության է: Խնդրում ենք ժամանակ տրամադրել:

Եկեք սկսենք!

Պարագաներ

  • ESP -32 Խցիկի մոդուլ OV2640 տեսախցիկով - ես խորհուրդ կտայի Geekcreit արտադրանքը
  • ESP-32- ի արտաքին սեղմիչային ալեհավաք ՝ ազդանշանի ուժգնությունը առավելագույնի հասցնելու համար
  • Արդուինո Նանո
  • Arduino Leonardo Joystick մոդուլի համար (մեզ անհրաժեշտ է Լեոնարդոյի կողմից տրամադրված USB ստեղնաշարի նմանակում)
  • Ընդհանուր Joystick մոդուլ
  • L293D Quad H- կամուրջ չիպ
  • ESP32- ը սնուցելու համար DC-DC Buck Coverter 5V ելքով
  • FTDI սերիական ադապտեր ESP32 ծրագրավորման համար
  • Երկու ընդհանուր շարժիչով ռոբոտի ընդհանուր շասսի. Ցանկացած շասսի կաշխատի: Առաջարկվում է 3 -ից 6 Վ շարժիչներ
  • 2 x 7.4V 1300mAh LiPo մարտկոց (կամ նման) ESP32- ի և շարժիչների սնուցման համար
  • 1 x 9V մարտկոց ՝ Arduino Nano- ին սնուցելու համար

Քայլ 1. Programրագրեք ESP32 տեսախցիկը

Programրագրեք ESP32 տեսախցիկը
Programրագրեք ESP32 տեսախցիկը
Programրագրեք ESP32 տեսախցիկը
Programրագրեք ESP32 տեսախցիկը

Օգտագործելով գրատախտակ ՝ ձեր ESP32 տեսախցիկը միացրեք FTDI ադապտերին հետևյալ կերպ.

FTDI ESP32

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

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- ը mingրագրավորման ռեժիմի մեջ դնելու համար պետք է IO0- ը («աչք-օ-զրո») միացնել գետնին:

Գործարկեք ձեր Arduino IDE- ն և գնացեք Գործիքներ/տախտակներ/տախտակների կառավարիչ: Որոնեք esp32 և տեղադրեք esp32 գրադարանը:

Բացեք նախագիծը ձեր Arduino IDE- ում:

Տեղադրեք ձեր երթուղիչի ցանցի ID- ն և ձեր գաղտնաբառը վերևում նկարում ընդգծված տողերի մեջ: Պահպանեք նախագիծը:

Գնացեք Գործիքներ ընտրացանկ և կատարեք ընտրությունները, ինչպես ցույց է տրված վերևում նկարում:

Տախտակ `ESP32 Wrover

Բեռնման արագություն ՝ 115200

Բաժանման սխեմա. «Հսկայական ծրագիր (3 ՄԲ առանց OTA)»

և ընտրեք այն նավահանգիստը, որին միացված է ձեր FTDI ադապտերը:

Կտտացրեք «Վերբեռնել» կոճակին:

Այժմ, երբեմն, ESP32- ը չի սկսում վերբեռնել: Այսպիսով, պատրաստ եղեք ESP32- ի հետևի մասում սեղմել RESET կոճակը, երբ սկսում եք տեսնել… ---… նիշերը կոնսոլում հայտնվում են բեռնման ընթացքում: Այնուհետև այն կսկսի բեռնել:

Երբ տեսնում եք «սեղմեք RST» վահանակի վրա, վերբեռնումն ավարտված է:

ԱՐISԱՆԵՔ IO0- ը գետնից: Անջատեք 3.3V գիծը FTDI ադապտերի և ESP32- ի միջև:

ESP32 տեսախցիկը լավ հոսանք աշխատելու համար շատ հոսանք է պահանջում: Միացրեք 5V 2A հոսանքի ադապտեր ESP32- ի 5V և GND կապումներին:

Բացեք Serial Monitor- ը, baud փոխարժեքը սահմանեք 115200, այնուհետև դիտեք ESP32- ի վերաբեռնումը: Ի վերջո, դուք կտեսնեք սերվերի URL- ը:

Գնացեք ձեր դիտարկիչ և մուտքագրեք URL- ը: Երբ վեբ կայքը բեռնում է, կտտացրեք «Սկսել հոսք» կոճակին, և պետք է սկսվի կենդանի տեսահոսքը: Եթե սեղմում եք «Floodlight» վանդակի վրա, ապա ներսում գտնվող ֆլեշ LED- ը պետք է լուսավորվի: Watchգուշացե՛ք: ԱՌԱ Է!

Քայլ 2: Կառուցեք ռոբոտը

Կառուցեք ռոբոտը
Կառուցեք ռոբոտը

Ձեզ անհրաժեշտ է երկանիվ ռոբոտի շասսի: Անկացած մեկը կանի: Հավաքեք շասսին ըստ արտադրողի հրահանգների:

Ապա լարեք ռոբոտին ըստ սխեմայի: Առայժմ թողեք մարտկոցի միացումները:

L293D- ն օգտագործվում է շարժիչները վերահսկելու համար: Ուշադրություն դարձրեք, որ չիպի վրա կիսով չափ տեղադրված է ESP32- ի դիմաց:

Սովորաբար, երկու շարժիչ կառավարելու համար Arduino- ին անհրաժեշտ է 6 կապում:

Այս ռոբոտը պահանջում է ընդամենը 4 կապում և դեռ լիովին աշխատում է:

1 -ին և 9 -րդ կապերը միացված են Arduino- ի 5V աղբյուրին, այնպես որ դրանք մշտապես ԲԱՐՁՐ են: Ռոբոտին այս կերպ միացնելը նշանակում է, որ մեզ անհրաժեշտ է Arduino- ի երկու ավելի քիչ կապում `շարժիչները կառավարելու համար:

Առջևի ուղղություններով INPUT- ի կապումներն են LOW- ը, իսկ շարժիչի Pulse Wave Modulation- ի պտույտները `0 -ից 255 -ի միջև, 0 -ը` OFF և 255 -ը `առավելագույն արագությունը:

Հակառակ ուղղություններով INPUT- ի կապումները դրված են HIGH- ի վրա, իսկ PWM- ի արժեքները հակադարձվում են: 0 նշանակում է առավելագույն արագություն, իսկ 255 -ը ՝ անջատված:

Անջատեք և վերբեռնեք ArduinoMotorControl էսքիզը Arduino Nano- ում:

Քայլ 3: HEY! Մի վայրկյան սպասի՛ր: Ինչու՞ է ինձ պետք Arduino Nano- ն:

Դուք հավանաբար մտածում եք.

Դե, ճիշտ է, ESP32- ի վրա կան կապեր հետևյալ կերպ.

IO0 - անհրաժեշտ է ESP32- ը ծրագրավորման ռեժիմի մեջ դնելու համար

IO2 - առկա է

IO4 - Flash 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- ին ՝ ռոբոտին քշելու համար:

Connectոյստիկը միացրեք Arduino LEONARDO- ին հետևյալ կերպ.

Լեոնարդո Jոյստիկ

5V ---------- VCC

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

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

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

Բացեք usbJoyStick էսքիզը, որպես տախտակ ընտրեք Arduino Leonardo- ն և տեղադրեք այն Leonardo- ում:

Եթե ցանկանում եք ստուգել այն, պարզապես համակարգչում բացեք տեքստային խմբագիր, պատուհանում սեղմեք մկնիկը և սկսեք տեղաշարժել ժոշտիկը: Պատուհանում պետք է տեսնեք 1 -ից 9 -ի արժեքները

Քայլ 5: ԱIDԵՆՔ:

Որոշ ժամանակ տրամադրեք և անցեք ձեր էլեկտրագծերը `համոզվելու համար, որ ամեն ինչ ճիշտ է:

Հաջորդը, միացրեք մարտկոցները հետևյալ կերպ.

1. Միացրեք ESP32 տեսախցիկը: Վեբ սերվերը գործարկելու համար անհրաժեշտ է մի քանի վայրկյան:

2. Միացրեք Arduino Nano- ն:

3. Միացրեք շարժիչները:

Գործարկեք ձեր դիտարկիչը և գնացեք ESP32- ի URL- ին:

Կտտացրեք «Սկսել հոսք» կոճակին:

Սեղմեք մկնիկի վրա դիտարկիչի էկրանին ինչ -որ տեղ, որպեսզի էկրանն այժմ լինի ուշադրության կենտրոնում:

Սկսեք ձեր ռոբոտին վարել ջոյսթիկով (կամ ստեղնաշարով):

Ես գտել եմ, որ շրջանակի կանխադրված չափը լավ է աշխատում ՝ ուղիղ տեսանյութը WiFi- ով բավականին արձագանքելու համար: Այնուամենայնիվ, երբ մեծացնում եք շրջանակների չափը, հոսքը կդառնա ավելի փոթորկուն, քանի որ փորձում եք ավելի մեծ պատկերներ հեռարձակել:

Սա դժվարին նախագիծ է, որը հնարավորություն է տալիս սկսել աշխատել ուղիղ տեսանյութերի հոսքով և WiFi- ով ռոբոտ վարել: Հուսով եմ, որ զվարճալի գտաք:

ՀԻՄԱ ԳՆԵԼ ԵՎ ԱՇԽԱՏԵԼ ինչ -որ հիանալի:

2020 թվականի հունվար ամսվա թարմացում - Վերջին լուսանկարները ցույց են տալիս ռոբոտի վերջնական տարբերակը ՝ ամուր ամրացված և ապահով ամրացված շասսիին:

Առջևում տեղադրված երեք անջատիչները հետևյալն են.

Ձախ - Շարժիչի հզորության մարտկոց

Կենտրոն - Arduino մարտկոց

Աջ - ESP32 տեսախցիկի մարտկոց

Ես կարող եմ օգտագործել մեկ մեծ մարտկոց `որոշ խթանող տրանսֆորմատորներով (ես օգտագործում եմ մեկը ESP32- ի համար-այն առջևի նկարի ներքևի աջ մասում է), բայց պարզության համար ես պարզապես պահում եմ 3 մարտկոցը:

Ռոբոտը այժմ Access Point- ում է:

Ինձ համար դժվար է ցուցադրել այս ռոբոտին իմ տնից դուրս, քանի որ իմ դպրոցական ձեռնարկությունների ցանցը թույլ չի տալիս ինձ միացնել ռոբոտների վեբ սերվերը դրան: Որպես լուծում, ես հետազոտություն եմ կատարել ESP32 վեբ սերվերի Access Point գործառույթի օգտագործման վերաբերյալ: Այն պահանջում է որոշակի աշխատանք, բայց պահանջում է բավականին նվազագույն փոփոխություններ հիմնական ռոբոտի ուրվագծում `ESP32- ի սեփական IP հասցեն հեռարձակելու համար: Այն այնքան հզոր չէ, որքան նվիրված է բարձր արագությամբ wifi հանգույցին (երբեմն կախված է, եթե շատ արագ եք շարժվում), բայց այն բավականին լավ է աշխատում, և այժմ ես կարող եմ ռոբոտին ցուցադրել ցանկացած վայրում, որտեղ ուզում եմ ՝ առանց ցանցին միացնելու: Երբ ռոբոտին աշխատեցնեք, փորձեք ինքներդ այն վերածել Access Point- ի:

Քայլ 6: Մանրամասներ, թե ինչպես փոփոխել HTML/Javascript ծածկագիրը վեբ սերվերի համար

Սա անհրաժեշտ չէ, բայց ես որոշ խնդրանքներ ունեի:

Այս Google Doc- ին ես տրամադրել եմ մանրամասներ, թե ինչպես օգտագործել CyberChef- ը HTML/Javascript- ի և camera_index.h ֆայլի մեջ HTML/Javascript- ի և բայտ զանգվածների ներկայացումների միջև փոխադարձ փոխակերպման համար:

Խորհուրդ ենք տալիս: