Turinys:

ESP32 kameros robotas - FPV: 6 žingsniai
ESP32 kameros robotas - FPV: 6 žingsniai

Video: ESP32 kameros robotas - FPV: 6 žingsniai

Video: ESP32 kameros robotas - FPV: 6 žingsniai
Video: Crafting a Cutting-Edge Robotic Security Camera with ESP32 #esp32cam #securitycamera 2024, Lapkritis
Anonim
Image
Image
ESP32 kameros robotas - FPV
ESP32 kameros robotas - FPV
ESP32 kameros robotas - FPV
ESP32 kameros robotas - FPV

ESP32 kameros modulis yra nebrangus ir galingas PLC. Tai netgi apima veido atpažinimą!

Sukurkime „First Person Viewpoint“robotą, kurį vairuoji naudodamasis žiniatinklio sąsaja!

Šiame projekte naudojamas „Geekcreit ESP32“modulis su „OV2640“kamera. Jis pagrįstas „AIThinker“moduliu.

Yra daug įvairių ESP32 fotoaparatų klonų. Vieni dirba, kiti ne. Aš siūlau jums naudoti tą patį modulį, kurį aš padariau, kad turėtumėte gerą galimybę sėkmingai dirbti.

Robotas veikia taip.

ESP32 transliuoja žiniatinklio URL į jūsų tinklą, kuriame pateikiamas tiesioginis vaizdo srautas su kai kuriais žymės langeliais, skirtais kai kurioms fotoaparato funkcijoms valdyti. Jis taip pat gauna klavišų paspaudimus, siunčiamus į tinklalapį iš klaviatūros, kurie yra nukreipimo komandos robotui. Galbūt norėsite sukurti USB vairasvirtės skydą, kad galėtumėte vairuoti robotą vairasvirte, o ne vesti klaviatūros komandas.

Kai ESP32 gauna klavišų paspaudimus, jis perduoda tuos baitus „Arduino Nano“, kuris tada varo variklius, kad robotas judėtų.

Šis projektas yra vidutinio sunkumo. Prašome neskubėti.

Pradėkime!

Prekės

  • ESP -32 kameros modulis su OV2640 kamera - rekomenduočiau „Geekcreit“produktą
  • Išorinė užsegama antena ESP-32, siekiant padidinti signalo stiprumą
  • Arduino Nano
  • „Arduino Leonardo“, skirtas „Joystick“moduliui (mums reikia USB klaviatūros emuliacijos, kurią teikia „Leonardo“)
  • Bendras vairasvirtės modulis
  • L293D keturių H tiltų mikroschema
  • DC-DC „Buck Coverter“su 5 V išėjimu ESP32 maitinti
  • FTDI serijos adapteris ESP32 programavimui
  • Bendra robotų važiuoklė su dviem reduktoriais - bet kokia važiuoklė veiks. Rekomenduojami 3–6 V varikliai
  • 2 x 7.4V 1300mAh LiPo baterijos (ar panašios) ESP32 ir varikliams maitinti
  • 1 x 9 V baterija, skirta „Arduino Nano“maitinti

1 veiksmas: užprogramuokite ESP32 kamerą

Užprogramuokite fotoaparatą ESP32
Užprogramuokite fotoaparatą ESP32
Užprogramuokite fotoaparatą ESP32
Užprogramuokite fotoaparatą ESP32

Naudodami duonos lentą, prijunkite savo ESP32 kamerą prie FTDI adapterio taip:

FTDI ESP32

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

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

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

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

Be to, prijunkite kaištį IO0 („akis-nulis“) prie GND. Tai turite padaryti, kad įjungtumėte ESP32 į programavimo režimą.

Išpakuokite failą esp32CameraWebRobotforInstructable.zip.

Šiame projekte yra 4 failai:

esp32CameraWebRobotforInstructable.ino yra „Arduino“eskizas.

ap_httpd.cpp yra kodas, valdantis žiniatinklio serverį ir susijęs su fotoaparato funkcijų nustatymu iš tinklalapio ir klavišų paspaudimu iš tinklalapio.

„camera_index.h“yra žiniatinklio programos HTML/„JavaScript“kodas kaip baitų masyvai. Žiniatinklio programos modifikavimas gerokai viršija šio projekto taikymo sritį. Vėliau įdėsiu nuorodą, kaip pakeisti HTML/„JavaScript“.

camera_pins.h yra antraštės failas, susijęs su ESP32 kameros kaiščio konfigūracija.

Norėdami įjungti ESP32 į programavimo režimą, prie žemės turite prijungti IO0 („eye-oh-zero“).

Paleiskite „Arduino IDE“ir eikite į „Tools/Boards/Boards Manager“. Ieškokite esp32 ir įdiekite esp32 biblioteką.

Atidarykite projektą savo „Arduino IDE“.

Įveskite SAVO maršrutizatoriaus tinklo ID ir SAVO slaptažodį į eilutes, paryškintas aukščiau esančiame paveikslėlyje. Išsaugoti projektą.

Eikite į meniu Įrankiai ir pasirinkite, kaip parodyta aukščiau esančiame paveikslėlyje.

Lenta: ESP32 Wrover

Įkėlimo greitis: 115200

Skirstymo schema: „Didžiulė programa (3 MB be OTA)“

ir pasirinkite prievadą, prie kurio prijungtas jūsų FTDI adapteris.

Spustelėkite mygtuką „Įkelti“.

Dabar kartais ESP32 nepradės įkelti. Taigi būkite pasirengę paspausti mygtuką RESET, esantį ESP32 gale, kai pradėsite matyti… ---… simbolius konsolėje, rodomus įkėlimo metu. Tada jis pradės įkelti.

Kai konsolėje matote „paspauskite RST“, įkėlimas baigtas.

ATJUNGTI IO0 nuo žemės. Atjunkite 3.3V liniją tarp FTDI adapterio ir ESP32.

Kad ESP32 fotoaparatas gerai veiktų, jam reikia daug srovės. Prijunkite 5V 2A maitinimo adapterį prie ESP32 5V ir GND kaiščių.

Atidarykite serijinį monitorių, nustatykite duomenų perdavimo spartą į 115200 ir stebėkite, kaip ESP32 paleidžiamas iš naujo. Galų gale pamatysite serverio URL.

Eikite į savo naršyklę ir įveskite URL. Kai svetainė įkeliama, spustelėkite mygtuką „Pradėti srautą“ir tiesioginis vaizdo įrašo srautas turėtų prasidėti. Jei spustelėsite žymimąjį laukelį „Floodlight“, blykstės šviesos diodas turėtų užsidegti. Saugokis! TAI ŠVIESU!

2 žingsnis: Sukurkite robotą

Sukurkite robotą
Sukurkite robotą

Jums reikia dviejų ratų roboto važiuoklės. Bet kuris padarys. Surinkite važiuoklę pagal gamintojo instrukcijas.

Tada prijunkite robotą pagal schemą. Kol kas palikite akumuliatoriaus jungtis.

L293D naudojamas varikliams valdyti. Atkreipkite dėmesį, kad pusė lusto yra į ESP32.

Paprastai, norint valdyti du variklius, „Arduino“reikia 6 kaiščių.

Šiam robotui reikia tik 4 kaiščių ir jis vis dar veikia.

1 ir 9 kaiščiai yra prijungti prie „Arduino“5 V šaltinio, todėl jie yra nuolat AUKŠTI. Tokiu būdu prijungus robotą, mums reikia dviejų „Arduino“kaiščių, kad galėtume valdyti variklius.

Į priekį INPUT kaiščiai yra nustatyti į LOW, o variklio impulsų bangos moduliacijos kaiščiai - nuo 0 iki 255, o 0 reiškia OFF ir 255 reiškia maksimalų greitį.

Atvirkštinėmis kryptimis INPUT kaiščiai nustatomi į HIGH, o PWM reikšmės keičiamos. 0 reiškia maksimalų greitį, o 255 - išjungimą.

Išpakuokite ir įkelkite „ArduinoMotorControl“eskizą į „Arduino Nano“.

3 žingsnis: Sveiki! Palaukite sekundę! Kodėl man reikia „Arduino Nano“?

Jūs tikriausiai galvojate: "Ei! ESP32 fotoaparate yra bent 4 IO kaiščiai. Kodėl aš negaliu jų naudoti varikliams valdyti?"

Tiesa, ESP32 kaiščiai yra tokie:

IO0 - reikalingas ESP32 įjungimui į programavimo režimą

IO2 - yra

IO4 - blykstės šviesos diodas

IO12, IO13, IO14, IO15, IO16 - papildomi GPIO kaiščiai.

Jei tiesiog įkeliate pagrindinį eskizą į ESP32, kad galėtumėte valdyti kaiščius PWM komandomis, jie veikia.

Tačiau, kai eskizuose suaktyvinsite CAMERA bibliotekas, šių smeigtukų nebebus.

Taigi paprasčiausias dalykas yra tiesiog naudoti „Nano“valdyti variklius per PWM ir siųsti komandas iš ESP32 nuosekliu ryšiu per vieną laidą (ESP32 U0T į „Arduino Rx0“) ir GND. Labai paprasta.

4 veiksmas: prijunkite USB vairasvirtę (neprivaloma)

Galite vairuoti robotą siųsdami klavišus į tinklalapį taip:

8 - Pirmyn

9 - Pirmyn į dešinę

7 - į priekį kairėn

4 - pasukti į kairę

5 - Sustokite

1 - Atvirkštinė kairė

2 - Atvirkštinis

3 - Atvirkštinė Dešinė.

USB kreiptuko eskizas paverčia kreiptuko įvestis į klavišų paspaudimus ir siunčia juos į žiniatinklio sąsają, kuri juos persiunčia į „Arduino“, kad galėtų vairuoti robotą.

Prijunkite vairasvirtę prie „Arduino LEONARDO“taip:

Leonardo vairasvirtė

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

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

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

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

Atidarykite „usbJoyStick“eskizą, pasirinkite „Arduino Leonardo“kaip lentą ir įkelkite jį į „Leonardo“.

Jei norite tai išbandyti, tiesiog atidarykite teksto rengyklę savo kompiuteryje, spustelėkite pelę lange ir pradėkite judinti vairasvirtę. Lange turėtumėte matyti reikšmes nuo 1 iki 9

5 žingsnis: VAŽIUOKIME

Skirkite šiek tiek laiko ir peržiūrėkite laidus, kad įsitikintumėte, jog viskas teisinga.

Tada prijunkite baterijas taip.

1. Įjunkite ESP32 kamerą. Norint paleisti žiniatinklio serverį, reikia kelių sekundžių.

2. Įjunkite „Arduino Nano“.

3. Įjunkite variklius.

Paleiskite naršyklę ir eikite į ESP32 URL.

Spustelėkite mygtuką Pradėti srautą.

Spustelėkite pelę kažkur naršyklės ekrane, kad dabar ekranas būtų fokusuotas.

Pradėkite vairuoti robotą naudodami vairasvirtę (arba klaviatūrą).

Radau, kad numatytasis kadro dydis puikiai tinka transliuojant tiesioginį vaizdo įrašą gana greitai per „WiFi“. Tačiau, padidinus kadrų dydį, srautas taps neramesnis, nes bandysite transliuoti didesnius vaizdus.

Tai sudėtingas projektas, suteikiantis jums galimybę pradėti dirbti su tiesioginio vaizdo transliacija ir vairuoti robotą per „WiFi“. Tikiuosi, kad jums buvo smagu!

DABAR EIK IR PADARYK KAŽKĄ NUOSTABIĄ!

2020 m. Sausio mėn. Atnaujinimas - paskutinėse nuotraukose parodyta galutinė roboto versija, kietai lituota ir patikimai pritvirtinta prie važiuoklės.

Trys priekyje sumontuoti jungikliai yra šie:

Kairė - variklio maitinimo baterija

Centras - „Arduino“baterija

Dešinėje - ESP32 fotoaparato baterija

Galėčiau naudoti vieną didelę bateriją su kai kuriais „buck-boost“transformatoriais (vieną naudoju ESP32-apatinėje dešinėje nuotraukos iš priekio vaizdo), tačiau dėl paprastumo aš tik pasilieku 3 baterijas.

Robotas dabar prieigos taške

Manau, kad sunku demonstruoti šį robotą ne savo namuose, nes mano mokyklos įmonės tinklas neleidžia man prie jo prijungti roboto žiniatinklio serverio. Kaip sprendimą aš ištyriau, kaip naudotis ESP32 žiniatinklio serverio prieigos taško funkcija. Tai reikalauja šiek tiek darbo, tačiau norint, kad ESP32 transliuotų savo IP adresą, reikia atlikti gana minimalius pagrindinio roboto eskizo pakeitimus. Jis nėra toks galingas kaip specialus didelės spartos „Wi -Fi“koncentratorius (kartais pakimba, jei judate per greitai), tačiau veikia gana gerai ir dabar galiu pademonstruoti robotą bet kur, kur tik man nereikia, neprisijungus prie tinklo! Kai tik robotas pradės veikti, pabandykite pats jį konvertuoti į prieigos tašką!

6 veiksmas: išsami informacija apie tai, kaip pakeisti tinklalapio serverio HTML/„JavaScript“kodą

Tai nėra būtina, bet aš turėjau keletą prašymų.

Pateikiau šiam „Google“dokumentui išsamią informaciją, kaip naudoti „CyberChef“, norint konvertuoti pirmyn ir atgal tarp HTML/„JavaScript“ir baitų masyvo atvaizdų, esančių faile camera_index.h.

Rekomenduojamas: