Indholdsfortegnelse:

ESP32 kamerarobot - FPV: 6 trin
ESP32 kamerarobot - FPV: 6 trin

Video: ESP32 kamerarobot - FPV: 6 trin

Video: ESP32 kamerarobot - FPV: 6 trin
Video: Advanced Mecanum Wheels Robot using Arduino & ESP32 CAM || 4WD Omnidirectional Movement 2024, Juli
Anonim
Image
Image
ESP32 kamerarobot - FPV
ESP32 kamerarobot - FPV
ESP32 kamerarobot - FPV
ESP32 kamerarobot - FPV

ESP32 kameramodulet er en billig og kraftfuld PLC. Det inkluderer endda ansigtsgenkendelse!

Lad os bygge en First Person Viewpoint-robot, som du kører gennem en indbygget webgrænseflade!

Dette projekt bruger Geekcreit ESP32 modulet med OV2640 kamera. Det er baseret på AIThinker -modulet.

Der er mange forskellige ESP32 kamerakloner derude. Nogle virker, nogle gør ikke. Jeg vil foreslå, at du bruger det samme modul, som jeg gjorde, så du har en god mulighed for at få succes.

Robotten fungerer som følger.

ESP32 sender en web-URL til dit netværk, der viser live-videostrømmen med nogle afkrydsningsfelter til betjening af nogle funktioner i kameraet. Det modtager også tastetryk sendt til websiden fra tastaturet, der er retningskommandoer for robotten. Du vil måske bygge USB -joystick -skærmen, så du kan køre robotten med joysticket frem for at skrive tastaturkommandoer.

Når ESP32 modtager tastetryk, videresender den disse bytes til Arduino Nano, som derefter driver motorerne for at få robotten til at bevæge sig.

Dette projekt er af moderat til høj vanskelighed. Tag dig god tid.

Lad os komme igang!

Forbrugsvarer

  • ESP -32 kameramodul med OV2640 kamera - jeg vil anbefale Geekcreit -produktet
  • Ekstern snap-on antenne til ESP-32 for at maksimere signalstyrken
  • Arduino Nano
  • Arduino Leonardo til Joystick -modulet (vi har brug for USB -tastaturemulering leveret af Leonardo)
  • Generisk joystick -modul
  • L293D Quad H-brochip
  • DC-DC Buck Coverter med 5V output til at drive ESP32
  • FTDI Serial Adapter til programmering af ESP32
  • Et generisk robotchassis med to gearmotorer - ethvert chassis fungerer. 3 til 6V motorer anbefales
  • 2 x 7,4V 1300mAh LiPo -batterier (eller lignende) til at drive ESP32 og motorerne
  • 1 x 9V batteri til strøm til Arduino Nano

Trin 1: Programmer ESP32 -kameraet

Programmer ESP32 -kameraet
Programmer ESP32 -kameraet
Programmer ESP32 -kameraet
Programmer ESP32 -kameraet

Brug et brødbræt til at slutte dit ESP32 -kamera til FTDI -adapteren som følger:

FTDI ESP32

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

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

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

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

Tilslut desuden pin IO0 ("eye-oh-zero") til GND. Du skal gøre dette for at sætte ESP32 i programmeringstilstand.

Pak pakken esp32CameraWebRobotforInstructable.zip ud.

Der er 4 filer i dette projekt:

esp32CameraWebRobotforInstructable.ino er Arduino -skitsen.

ap_httpd.cpp er den kode, der administrerer webserveren og beskæftiger sig med indstilling af kamerafunktionerne fra websiden og modtagelse af tastetryk fra websiden.

camera_index.h indeholder HTML/JavaScript -koden til webapplikationen som byte -arrays. Ændring af webapplikationen er langt uden for omfanget af dette projekt. Jeg vil inkludere et link til, hvordan du senere ændrer HTML/JavaScript.

camera_pins.h er header -filen vedrørende pin -konfigurationen af ESP32 -kameraet.

For at sætte ESP32 i programmeringstilstand skal du slutte IO0 ("eye-oh-zero") til Ground.

Start din Arduino IDE og gå til Tools/Boards/Boards Manager. Søg efter esp32, og installer esp32 -biblioteket.

Åbn projektet i din Arduino IDE.

Sæt DIN routers netværks -ID og DIN adgangskode i linjerne fremhævet i billedet ovenfor. Gem projektet.

Gå til menuen Værktøjer, og vælg som vist på billedet ovenfor.

Bord: ESP32 Wrover

Uploadhastighed: 115200

Partitionsordning: "Kæmpe APP (3MB ingen OTA)"

og vælg den port, som din FTDI -adapter er tilsluttet.

Klik på knappen "Upload".

Nu, nogle gange, begynder ESP32 ikke at uploade. Så vær klar til at trykke på RESET-knappen på bagsiden af ESP32, når du begynder at se… ---… tegnene vises i konsollen under upload. Det vil derefter begynde at uploade.

Når du ser 'tryk på RST' på konsollen, er overførslen fuldført.

AFSLUT IO0 fra jorden. Afbryd 3.3V -ledningen mellem FTDI -adapteren og ESP32.

ESP32 -kameraet kræver meget strøm for at fungere godt. Tilslut en 5V 2A strømadapter til 5V- og GND -benene på ESP32.

Åbn den serielle skærm, indstil baudhastigheden til 115200, og se derefter, når ESP32 genstarter. Til sidst ser du webadressen til serveren.

Gå til din browser, og indtast webadressen. Når webstedet indlæses, skal du klikke på knappen 'Start streaming', og livevideostrømmen skal begynde. Hvis du klikker på afkrydsningsfeltet 'Floodlight', skal den indbyggede flash-LED lyse. Pas på! DET ER LYS!

Trin 2: Byg robotten

Byg robotten
Byg robotten

Du skal bruge et tohjulet robotchassis. Enhver vil gøre. Saml chassiset i henhold til producentens anvisninger.

Tilslut derefter robotten i henhold til diagrammet. Lad batteriforbindelserne stå nu.

L293D bruges til at styre motorerne. Bemærk, at den halve hak på chippen er mod ESP32.

Typisk er det nødvendigt med 6 ben på Arduino for at styre to motorer.

Denne robot kræver kun 4 ben og fungerer stadig fuldt ud.

Stifter 1 og 9 er forbundet til 5V -kilden til Arduino, så de er permanent HØJ. Kabelføring af robotten på denne måde betyder, at vi har brug for to færre stifter på Arduino for at styre motorerne.

I retning fremad er INPUT -benene indstillet til LAVT, og motorens pulsbølgemoduleringsstifter er indstillet til værdier mellem 0 og 255 med 0, der betyder OFF og 255, der betyder maksimal hastighed.

I omvendt retning sættes INPUT -benene til HIGH, og PWM -værdierne vendes om. 0 betyder maksimal hastighed og 255 betyder slukket.

Pak ud og upload ArduinoMotorControl -skitsen til Arduino Nano.

Trin 3: HEJ! Vent lige lidt! Hvorfor har jeg brug for en Arduino Nano?

Du tænker sikkert, "Hey! Der er mindst 4 IO -pins til rådighed på ESP32 -kameraet. Hvorfor kan jeg ikke bruge dem til at styre motorerne?"

Det er rigtigt, der er stifter på ESP32 som følger:

IO0 - nødvendig for at sætte ESP32 i programmeringstilstand

IO2 - tilgængelig

IO4 - Flash LED

IO12, IO13, IO14, IO15, IO16 - yderligere GPIO -ben.

Hvis du bare indlæser en grundlæggende skitse på ESP32 for at styre stifterne med PWM -kommandoer, virker de.

MEN når du aktiverer CAMERA -bibliotekerne i dine skitser, er disse pins ikke længere tilgængelige.

Så den letteste ting at gøre er bare at bruge en Nano til at styre motorerne via PWM og sende kommandoerne fra ESP32 ved seriel kommunikation over en ledning (ESP32 U0T til Arduino Rx0) og GND. Meget simpelt.

Trin 4: Tilslut USB -joysticket (valgfrit)

Du kan køre robotten ved at sende tastetryk til websiden som følger:

8 - Fremad

9 - Fremad til højre

7 - Fremad Venstre

4 - Drej til venstre

5 - Stop

1 - Tilbage til venstre

2 - Omvendt

3 - Tilbage til højre.

USB -joystick -skitsen oversætter joystick -input til tastetryk og sender dem til webgrænsefladen, der videresender dem til Arduino for at køre robotten.

Tilslut joysticket til Arduino LEONARDO som følger:

Leonardo joystick

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

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

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

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

Åbn usbJoyStick -skitsen, vælg Arduino Leonardo som tavlen og upload den til Leonardo.

Hvis du vil teste det, skal du bare åbne et tekstredigeringsprogram på din computer, klikke med musen i vinduet og begynde at flytte joysticket. Du bør se værdierne fra 1 til 9, der vises i vinduet

Trin 5: Lad os ride

Brug lidt tid og gå over dine ledninger for at sikre, at alt er korrekt.

Tilslut derefter dine batterier som følger.

1. Tænd for ESP32 -kameraet. Det tager et par sekunder at starte webserveren.

2. Tænd for Arduino Nano.

3. Tænd motorerne.

Start din browser, og gå til URL'en til ESP32.

Klik på knappen Start streaming.

Klik med musen et sted i browserskærmen, så skærmen nu er i fokus.

Start med at køre din robot med joysticket (eller tastaturet).

Jeg har fundet ud af, at standardrammestørrelsen fungerer i orden til udsendelse af livevideoen temmelig lydhør over WiFi. Men når du øger rammestørrelsen, bliver strømmen mere urolig, fordi du forsøger at udsende større billeder.

Dette er et udfordrende projekt, der giver dig mulighed for at begynde at arbejde med live video streaming og køre en robot over WiFi. Jeg håber, at du fandt det sjovt!

GÅ NU OG GØR NOGET FORFÆRDIGT!

Januar 2020 -opdatering - De sidste fotos viser den sidste version af robotten, hårdloddet og sikkert monteret på chassiset.

De tre frontmonterede kontakter er som følger:

Venstre - Motorens batteri

Center - Arduino batteri

Højre - ESP32 kamerabatteri

Jeg kunne bruge et stort batteri med nogle buck-boost-transformere (jeg bruger et til ESP32-det er nederst til højre på billedet set forfra), men for enkelhedens skyld beholder jeg bare de 3 batterier.

Robot nu på Access Point

Jeg finder det besværligt at demonstrere denne robot uden for mit hjem, fordi mit skolevirksomheds netværk ikke tillader mig at forbinde robotwebserveren til den. Som en løsning undersøgte jeg om brug af Access Point -funktionen på ESP32 -webserveren. Det kræver noget arbejde, men det kræver temmelig minimale ændringer af hovedrobotskitsen for at få ESP32 til at udsende sin egen IP -adresse. Det er ikke så kraftfuldt som en dedikeret højhastigheds wifi -hub (hænger nogle gange, hvis du bevæger dig for hurtigt), men det fungerer ganske godt, og nu kan jeg demonstrere robotten hvor som helst, jeg vil uden at skulle tilslutte den til et netværk! Når du får robotten til at fungere, kan du prøve at konvertere den til Access Point selv!

Trin 6: Oplysninger om, hvordan du ændrer HTML/Javascript -koden til webserveren

Dette er ikke nødvendigt, men jeg har haft nogle anmodninger.

Jeg har givet denne Google Doc detaljer om, hvordan man bruger CyberChef til at konvertere frem og tilbage mellem HTML/Javascript og byte -array -repræsentationer i filen camera_index.h.

Anbefalede: