Talaan ng mga Nilalaman:

Robot ng Camera ng ESP32 - FPV: 6 na Hakbang
Robot ng Camera ng ESP32 - FPV: 6 na Hakbang

Video: Robot ng Camera ng ESP32 - FPV: 6 na Hakbang

Video: Robot ng Camera ng ESP32 - FPV: 6 na Hakbang
Video: Drone insects caught spying in Africa. Is it true?#shorts 2024, Nobyembre
Anonim
Image
Image
Robot ng Camera ng ESP32 - FPV
Robot ng Camera ng ESP32 - FPV
Robot ng Camera ng ESP32 - FPV
Robot ng Camera ng ESP32 - FPV

Ang module ng ESP32 Camera ay isang mura at makapangyarihang PLC. May kasama pa itong pagkilala sa mukha!

Bumuo tayo ng isang robot ng First Person Viewpoint na iyong hinihimok sa pamamagitan ng isang on-board na web interface!

Gumagamit ang proyektong ito ng Geekcreit ESP32 module na may OV2640 Camera. Batay ito sa module ng AIThinker.

Mayroong maraming iba't ibang mga clone ng ESP32 Camera doon. Ang ilan ay nagtatrabaho, ang ilan ay hindi. Iminumungkahi kong gamitin mo ang parehong module na ginawa ko upang magkaroon ka ng magandang pagkakataon upang maging matagumpay.

Gumagana ang robot tulad ng sumusunod.

Nag-broadcast ang ESP32 ng isang web URL sa iyong network na nagpapakita ng live na video stream na may ilang mga check-box para sa pagpapatakbo ng ilang mga pagpapaandar ng camera. Tumatanggap din ito ng mga pangunahing pagpindot na ipinadala sa web page mula sa keyboard na mga direksyong utos para sa robot. Maaari mong hilingin na buuin ang kalasag ng USB joystick upang maaari mong himukin ang robot gamit ang joystick kaysa sa pag-type ng mga utos sa keyboard.

Kapag nakatanggap ang ESP32 ng mga pangunahing pagpindot, ipinapasa nito ang mga byte sa Arduino Nano na pagkatapos ay hinihimok ang mga motor upang ilipat ang robot.

Ang proyektong ito ay may katamtamang mataas na kahirapan. Mangyaring maglaan ng iyong oras

Magsimula na tayo!

Mga gamit

  • Modul ng Camera ng ESP-32 na may OV2640 Camera - Inirerekumenda ko ang produktong Geekcreit
  • Panlabas na snap-on na antena para sa ESP-32 upang ma-maximize ang lakas ng signal
  • Arduino Nano
  • Arduino Leonardo para sa module ng Joystick (kailangan namin ng pagtulad sa USB keyboard na ibinigay ng Leonardo)
  • Generikong module ng Joystick
  • L293D Quad H-bridge chip
  • DC-DC Buck Coverter na may 5V output upang mapagana ang ESP32
  • FTDI Serial Adapter para sa pagprograma ng ESP32
  • Isang generic robot chassis na may dalawang nakatuon na motor - gagana ang anumang chassis. Inirerekumenda ang 3 hanggang 6V na mga motor
  • 2 x 7.4V 1300mAh LiPo na mga baterya (o katulad) upang mapagana ang ESP32 at ang mga motor
  • 1 x 9V na baterya upang mapagana ang Arduino Nano

Hakbang 1: I-program ang Camera na ESP32

I-program ang Camera na ESP32
I-program ang Camera na ESP32
I-program ang Camera na ESP32
I-program ang Camera na ESP32

Gamit ang isang breadboard, ikonekta ang iyong ESP32 Camera sa FTDI adapter tulad ng sumusunod:

FTDI ESP32

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

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

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

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

Bilang karagdagan, ikonekta ang pin IO0 ("eye-oh-zero") sa GND. Kailangan mong gawin ito upang ilagay ang ESP32 sa mode ng pagprograma.

I-unzip ang file na esp32CameraWebRobotforInstructable.zip.

Mayroong 4 na mga file sa proyektong ito:

esp32CameraWebRobotforInstructable.ino ay ang Arduino sketch.

Ang ap_httpd.cpp ay ang code na namamahala sa web server at nakikipag-usap sa pagtatakda ng mga tampok ng camera mula sa web page at pagtanggap ng mga pangunahing pagpindot mula sa web page.

naglalaman ang camera_index.h ng HTML / JavaScript code para sa web application bilang mga byte arrays. Ang pagbabago ng application ng web ay higit sa saklaw ng proyektong ito. Magsasama ako ng isang link para sa kung paano baguhin ang HTML / JavaScript sa paglaon.

Ang camera_pins.h ay ang header file na nauugnay sa pagsasaayos ng pin ng camera ng ESP32.

Upang mailagay ang ESP32 sa Programming Mode, dapat mong ikonekta ang IO0 ("eye-oh-zero") sa Ground.

Ilunsad ang iyong Arduino IDE at pumunta sa Tools / Boards / Boards Manager. Maghanap para sa esp32 at i-install ang esp32 library.

Buksan ang proyekto sa iyong Arduino IDE.

Ilagay ang network ID ng IYONG router at ang IYONG password sa mga linya na naka-highlight sa larawan sa itaas. I-save ang proyekto.

Pumunta sa menu ng Mga Tool at gawin ang mga napili tulad ng ipinakita sa larawan sa itaas.

Lupon: ESP32 Wrover

Bilis ng Pag-upload: 115200

Partition Scheme: "Napakalaking APP (3MB walang OTA)"

at piliin ang port kung saan nakakonekta ang iyong FTDI adapter.

I-click ang pindutang "Mag-upload".

Ngayon, kung minsan, hindi magsisimulang mag-upload ang ESP32. Kaya maging handa na pindutin ang pindutang I-reset ang sa likuran ng ESP32 kapag sinimulan mong makita ang… --- … mga character na lilitaw sa console habang ina-upload. Magsisimula na itong mag-upload.

Kapag nakita mong 'pindutin ang RST' sa console, kumpleto na ang pag-upload.

DISCONNECT IO0 mula sa Ground. Idiskonekta ang linya ng 3.3V sa pagitan ng FTDI adapter at ng ESP32.

Ang ESP32 Camera ay nangangailangan ng maraming kasalukuyang upang gumana nang maayos. Ikonekta ang isang 5V 2A power adapter sa mga 5V at GND na pin sa ESP32.

Buksan ang Serial Monitor, itakda ang rate ng baud sa 115200 at pagkatapos ay panoorin bilang mga reboot ng ESP32. Sa paglaon, makikita mo ang URL para sa server.

Pumunta sa iyong Browser at ilagay ang URL. Kapag naglo-load ang web site, i-click ang pindutang 'Start Streaming' at dapat magsimula ang live na stream ng video. Kung nag-click ka sa checkbox na 'Floodlight', dapat na ilaw ang on-board flash LED. Tingnan mo! ANG GANDA!

Hakbang 2: Buuin ang Robot

Buuin ang Robot
Buuin ang Robot

Kailangan mo ng isang two wheeled robot chassis. Kahit sino ang gagawa. Ipunin ang chassis alinsunod sa mga tagubilin ng gumawa.

Pagkatapos ay i-wire ang robot ayon sa diagram. Iwanan ang mga koneksyon ng baterya sa ngayon.

Ginagamit ang L293D upang makontrol ang mga motor. Pansinin na ang kalahating-bingaw sa maliit na tilad ay TOWARDS ang ESP32.

Karaniwan, 6 na pin ang kinakailangan sa Arduino upang makontrol ang dalawang motor.

Ang robot na ito ay nangangailangan lamang ng 4 na mga pin at gumagana pa rin nang buo.

Ang mga pine 1 at 9 ay konektado sa 5V na mapagkukunan ng Arduino kaya't sila ay permanenteng TAAS. Ang pag-kable ng robot sa ganitong paraan ay nangangahulugang kailangan namin ng dalawang mas kaunting mga pin sa Arduino upang makontrol ang mga motor.

Sa mga pasulong na direksyon, ang mga INPUT na pin ay nakatakda sa LOW at ang motor Pulse Wave Modulation pin ay nakatakda sa mga halaga sa pagitan ng 0 at 255 na may 0 na ibig sabihin OFF at 255 nangangahulugang maximum na bilis.

Sa mga pabalik na direksyon, ang mga INPUT pin ay nakatakda sa TAAS at ang mga halaga ng PWM ay nabaligtad. Ang ibig sabihin ng 0 ay ang maximum na bilis at ang 255 ay nangangahulugang off.

I-unzip at i-upload ang ArduinoMotorControl sketch sa Arduino Nano.

Hakbang 3: HOY! Maghintay lang ng saglit! Bakit Kailangan Ko ng isang Arduino Nano?

Marahil ay iniisip mo, "Hoy! Mayroong hindi bababa sa 4 na mga pin ng IO na magagamit sa camera ng ESP32. Bakit hindi ko magamit ang mga ito upang makontrol ang mga motor?"

Kaya, totoo, may mga pin sa ESP32 tulad ng sumusunod:

IO0 - kinakailangan para sa paglalagay ng ESP32 sa mode ng programa

IO2 - magagamit

IO4 - ang Flash LED

IO12, IO13, IO14, IO15, IO16 - karagdagang mga GPIO pin.

Kung naglo-load ka lamang ng isang pangunahing sketch sa ESP32 upang makontrol ang mga pin sa mga utos ng PWM, gumagana ang mga ito.

Gayunpaman, sa sandaling buhayin mo ang mga aklatan ng CAMERA sa iyong mga sketch, ang mga pin na ito ay hindi na magagamit.

Kaya ang pinakamadaling gawin ay gumamit lamang ng isang Nano upang makontrol ang mga motor sa pamamagitan ng PWM at ipadala ang mga utos mula sa ESP32 sa pamamagitan ng mga serial na komunikasyon sa isang wire (ESP32 U0T sa Arduino Rx0) at GND. Napakasimple.

Hakbang 4: Wire Up ang USB Joystick (Opsyonal)

Maaari mong himukin ang robot sa pamamagitan ng pagpapadala ng mga pangunahing pagpindot sa web page tulad ng sumusunod:

8 - Ipasa

9 - Ipasa ang Karapatan

7 - Ipasa ang Kaliwa

4 - Paikutin ang Kaliwa

5 - Itigil

1 - Baliktarin ang Kaliwa

2 - Baligtarin

3 - Baliktarin ang Kanan.

Isinalin ng sketch ng USB joystick ang mga input ng joystick sa mga pangunahing pagpindot at ipinapadala sila sa web interface na nagpapasa sa kanila sa Arduino upang himukin ang robot.

Ikonekta ang joystick sa Arduino LEONARDO tulad ng sumusunod:

Leonardo Joystick

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

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

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

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

Buksan ang usbJoyStick sketch, piliin ang Arduino Leonardo bilang board at i-upload ito sa Leonardo.

Kung nais mong subukan ito, buksan lamang ang isang text editor sa iyong computer, i-click ang mouse sa window at simulang ilipat ang joystick. Dapat mong makita ang mga halagang nagpapakita ng 1 hanggang 9 sa window

Hakbang 5: Sumakay TAYO

Maglaan ng ilang oras at tingnan ang iyong mga kable upang matiyak na tama ang lahat.

Susunod, ikonekta ang iyong mga baterya tulad ng sumusunod.

1. Patayin ang ESP32 Camera. Kailangan nito ng ilang segundo upang simulan ang web server.

2. Palakasin ang Arduino Nano.

3. Palakasin ang mga motor.

Ilunsad ang iyong browser at pumunta sa URL para sa ESP32.

I-click ang pindutang Start Streaming.

I-click ang iyong mouse sa isang lugar sa screen ng browser upang ang screen ang focus na ngayon.

Simulan ang pagmamaneho ng iyong robot gamit ang joystick (o keyboard).

Nalaman ko na ang default na laki ng frame ay gumagana nang maayos para sa pag-broadcast ng live na video nang medyo tumutugon sa paglipas ng WiFi. Gayunpaman habang pinapataas mo ang frame, magiging mas choppy ang stream dahil sinusubukan mong mag-broadcast ng mas malalaking mga imahe.

Ito ay isang hamon na proyekto na nagbibigay sa iyo ng pagkakataon na magsimulang magtrabaho kasama ang live na video streaming at magmaneho ng isang robot sa paglipas ng WiFi. Sana nasumpungan mo itong masaya!

NGAYON PUMUNTA AT GUMAGAWA NG MAHINDI!

Update sa Enero 2020 - Ipinapakita ng mga huling larawan ang pangwakas na bersyon ng robot, hard solder at ligtas na naka-mount sa chassis.

Ang tatlong mga switch na naka-mount sa harap ay ang mga sumusunod:

Kaliwa - Baterya ng kuryente ng motor

Center - Arduino na baterya

Kanan - Baterya ng Camera ng ESP32

Maaari akong gumamit ng isang malaking baterya na may ilang mga buck-boost transformer (Gumagamit ako ng isa para sa ESP32 - nasa kanang ibabang larawan ng front-view), ngunit alang-alang sa pagiging simple, pinapanatili ko lamang ang 3 mga baterya.

Ang Robot ngayon ay nasa Access Point na

Nahahanap ko itong masalimuot na ipakita ang robot na ito sa labas ng aking bahay dahil hindi ako pinapayagan ng network ng aking negosyo sa paaralan na ikonekta ang robot web server dito. Bilang isang solusyon, nagsaliksik ako sa paggamit ng tampok na Access Point ng ESP32 web server. Tumatagal ito ng ilang trabaho, ngunit nangangailangan ng medyo kaunting mga pagbabago sa pangunahing sketch ng robot upang maisagawa ang broadcast ng ESP32 na ito ay sariling IP address. Hindi ito kasing lakas ng isang dedikadong high speed wifi hub (kung minsan ay nabitin kung gumalaw ka ng masyadong mabilis), ngunit gumagana ito ng maayos at ngayon ay maipakikita ko ang robot kahit saan ko gusto nang hindi kinakailangang ikonekta ito sa isang network! Kapag napatakbo mo na ang robot, subukang i-convert ito sa Access Point sa iyong sarili!

Hakbang 6: Mga Detalye ng Paano baguhin ang HTML / Javascript Code para sa Webserver

Hindi ito kinakailangan, ngunit mayroon akong ilang mga kahilingan.

Ibinigay ko sa Google Doc na ito ang mga detalye sa kung paano gamitin ang CyberChef upang mag-convert pabalik-balik sa pagitan ng HTML / Javascript at ng mga byte array na representasyon sa file ng camera_index.h.

Inirerekumendang: