Innholdsfortegnelse:

ESP32 kamerarobot - FPV: 6 trinn
ESP32 kamerarobot - FPV: 6 trinn

Video: ESP32 kamerarobot - FPV: 6 trinn

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

ESP32 -kameramodulen er en billig og kraftig PLS. Det inkluderer til og med ansiktsgjenkjenning!

La oss bygge en First Person Viewpoint-robot som du kjører gjennom et innebygd webgrensesnitt!

Dette prosjektet bruker Geekcreit ESP32 -modulen med OV2640 -kamera. Den er basert på AIThinker -modulen.

Det er mange forskjellige ESP32 kamerakloner der ute. Noen jobber, andre ikke. Jeg vil foreslå at du bruker den samme modulen som jeg gjorde, slik at du har en god mulighet til å lykkes.

Roboten fungerer som følger.

ESP32 sender en nettadresse til nettverket ditt som viser live videostrømmen med noen avmerkingsbokser for å betjene noen av funksjonene til kameraet. Den mottar også tastetrykk som sendes til nettsiden fra tastaturet som er retningskommandoer for roboten. Det kan være lurt å bygge USB -joystick -skjoldet slik at du kan kjøre roboten med joysticken i stedet for å skrive tastaturkommandoer.

Når ESP32 mottar tastetrykk, videresender den byte til Arduino Nano som deretter driver motorene for å få roboten til å bevege seg.

Dette prosjektet er av middels til høy vanskelighet. Vennligst ta den tiden du trenger.

La oss komme i gang!

Rekvisita

  • ESP -32 kameramodul med OV2640 kamera - Jeg vil anbefale Geekcreit -produktet
  • Ekstern snap-on-antenne for ESP-32 for å maksimere signalstyrken
  • Arduino Nano
  • Arduino Leonardo for joystick -modulen (vi trenger USB -tastaturemulering levert av Leonardo)
  • Generisk joystick -modul
  • L293D Quad H-brobrikke
  • DC-DC Buck Coverter med 5V utgang for å drive ESP32
  • FTDI Serial Adapter for programmering av ESP32
  • Et generisk robotchassis med to girmotorer - ethvert chassis vil fungere. 3 til 6V motorer anbefales
  • 2 x 7,4V 1300mAh LiPo -batterier (eller lignende) for å drive ESP32 og motorene
  • 1 x 9V batteri for å drive Arduino Nano

Trinn 1: Programmer ESP32 -kameraet

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

Koble ESP32 -kameraet til FTDI -adapteren på følgende måte med et brødbrett:

FTDI ESP32

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

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

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

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

I tillegg kobler du pin IO0 ("eye-oh-zero") til GND. Du må gjøre dette for å sette ESP32 i programmeringsmodus.

Pakk ut filen esp32CameraWebRobotforInstructable.zip.

Det er 4 filer i dette prosjektet:

esp32CameraWebRobotforInstructable.ino er Arduino -skissen.

ap_httpd.cpp er koden som administrerer webserveren og omhandler innstilling av kamerafunksjonene fra websiden og mottak av tastetrykk fra websiden.

camera_index.h inneholder HTML/JavaScript -koden for webprogrammet som byte -matriser. Å endre webapplikasjonen er langt utenfor omfanget av dette prosjektet. Jeg vil inkludere en lenke for hvordan du endrer HTML/JavaScript senere.

camera_pins.h er overskriftsfilen som gjelder pin -konfigurasjonen til ESP32 -kameraet.

For å sette ESP32 i programmeringsmodus, må du koble IO0 ("eye-oh-zero") til Ground.

Start Arduino IDE og gå til Tools/Boards/Boards Manager. Søk etter esp32 og installer esp32 -biblioteket.

Åpne prosjektet i din Arduino IDE.

Sett din ruters nettverks -ID og passordet ditt i linjene som er markert i bildet ovenfor. Lagre prosjektet.

Gå til Verktøy -menyen og velg som vist på bildet ovenfor.

Brett: ESP32 Wrover

Last opp hastighet: 115200

Partisjonsskjema: "Stor APP (3MB ingen OTA)"

og velg porten som FTDI -adapteren er koblet til.

Klikk på "Last opp" -knappen.

Noen ganger begynner ikke ESP32 å laste opp. Så vær klar til å trykke på RESET-knappen på baksiden av ESP32 når du begynner å se… ---… tegnene vises i konsollen under opplasting. Den vil deretter begynne å laste opp.

Når du ser "trykk på RST" på konsollen, er opplastingen fullført.

KOBLING IO0 fra bakken. Koble fra 3.3V -ledningen mellom FTDI -adapteren og ESP32.

ESP32 -kameraet krever mye strøm for å fungere godt. Koble en 5V 2A strømadapter til 5V- og GND -pinnene på ESP32.

Åpne Serial Monitor, sett overføringshastigheten til 115200, og se deretter på når ESP32 starter på nytt. Til slutt ser du URL -adressen til serveren.

Gå til nettleseren din og skriv inn nettadressen. Når nettstedet lastes inn, klikker du på "Start Streaming" -knappen og live videostrømmen skal begynne. Hvis du klikker på avmerkingsboksen 'Floodlight', bør den innebygde blitslampen lyse. Pass på! DET ER LYS!

Trinn 2: Bygg roboten

Bygg roboten
Bygg roboten

Du trenger et tohjuls robotchassis. Enhver vil gjøre. Monter chassiset i henhold til produsentens instruksjoner.

Deretter kabler du opp roboten i henhold til diagrammet. La batterikoblingen stå for øyeblikket.

L293D brukes til å kontrollere motorene. Legg merke til at halvhakk på brikken er MOT ESP32.

Vanligvis trengs det 6 pinner på Arduino for å kontrollere to motorer.

Denne roboten krever bare 4 pinner og fungerer fortsatt fullt ut.

Pins 1 og 9 er koblet til 5V -kilden til Arduino, så de er permanent HIGH. Kabling av roboten på denne måten betyr at vi trenger to færre pinner på Arduino for å kontrollere motorene.

I retning fremover er INPUT -pinnene satt til LOW og motorens pulsbølgemoduleringspinner er satt til verdier mellom 0 og 255 med 0 som betyr OFF og 255 som betyr maksimal hastighet.

I omvendt retning er INPUT -pinnene satt til HIGH og PWM -verdiene er reversert. 0 betyr maksimal hastighet og 255 betyr av.

Pakk ut og last opp ArduinoMotorControl -skissen til Arduino Nano.

Trinn 3: HEY! Vent et sekund! Hvorfor trenger jeg en Arduino Nano?

Du tenker sikkert: "Hei! Det er minst 4 IO -pinner tilgjengelig på ESP32 -kameraet. Hvorfor kan jeg ikke bruke dem til å styre motorene?"

Vel, det er sant, det er pinner på ESP32 som følger:

IO0 - nødvendig for å sette ESP32 i programmeringsmodus

IO2 - tilgjengelig

IO4 - Flash LED

IO12, IO13, IO14, IO15, IO16 - ekstra GPIO -pinner.

Hvis du bare laster en grunnskisse på ESP32 for å kontrollere pinnene med PWM -kommandoer, fungerer de.

MEN når du aktiverer CAMERA -bibliotekene i skissene dine, er disse pinnene ikke lenger tilgjengelige.

Så det enkleste er å bare bruke en Nano til å kontrollere motorene via PWM og sende kommandoene fra ESP32 ved seriell kommunikasjon over en ledning (ESP32 U0T til Arduino Rx0) og GND. Veldig enkelt.

Trinn 4: Koble opp USB -joysticken (valgfritt)

Du kan kjøre roboten ved å sende tastetrykk til websiden som følger:

8 - Fremover

9 - Fremover Høyre

7 - Fremover venstre

4 - Roter til venstre

5 - Stopp

1 - Revers Venstre

2 - Omvendt

3 - Bakover til høyre.

USB -joystick -skissen oversetter joystickinngangene til tastetrykk og sender dem til webgrensesnittet som videresender dem til Arduino for å kjøre roboten.

Koble joysticken til Arduino LEONARDO på følgende måte:

Leonardo joystick

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

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

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

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

Åpne usbJoyStick -skissen, velg Arduino Leonardo som tavle og last den opp til Leonardo.

Hvis du vil teste det, åpner du bare et tekstredigeringsprogram på datamaskinen, klikker på musen i vinduet og begynner å flytte joysticken. Du bør se verdiene fra 1 til 9 som vises i vinduet

Trinn 5: La oss ri

Ta deg tid og gå over ledningene for å kontrollere at alt er riktig.

Deretter kobler du batteriene som følger.

1. Slå på ESP32 -kameraet. Det trenger noen sekunder å starte webserveren.

2. Slå på Arduino Nano.

3. Slå på motorene.

Start nettleseren og gå til URL -adressen til ESP32.

Klikk på Start streaming.

Klikk musen et sted i nettleserskjermen slik at skjermen nå er i fokus.

Begynn å kjøre roboten med joysticken (eller tastaturet).

Jeg har funnet ut at standardrammestørrelsen fungerer greit for å kringkaste livevideoen ganske responsivt over WiFi. Men etter hvert som du øker rammestørrelsen, blir strømmen mer hakkete fordi du prøver å kringkaste større bilder.

Dette er et utfordrende prosjekt som gir deg muligheten til å begynne å jobbe med live videostrømming og kjøre en robot over WiFi. Jeg håper du synes det var gøy!

GÅ NÅ OG GJØR NOE UNDERLIGT!

Januar 2020 -oppdatering - De siste bildene viser den endelige versjonen av roboten, hardloddet og sikkert montert på kabinettet.

De tre frontmonterte bryterne er som følger:

Venstre - Motorbatteri

Senter - Arduino -batteri

Høyre - ESP32 kamerabatteri

Jeg kan bruke ett stort batteri med noen buk-boost-transformatorer (jeg bruker en til ESP32-den er nederst til høyre på bildet foran), men for enkelhets skyld beholder jeg bare de 3 batteriene.

Robot nå på Access Point

Jeg synes det er tungvint å demonstrere denne roboten utenfor hjemmet mitt fordi skolens virksomhetsnettverk ikke tillater meg å koble robotens webserver til den. Som en løsning forsket jeg på bruk av Access Point -funksjonen på ESP32 -webserveren. Det krever litt arbeid, men krever ganske minimale endringer i hovedrobotteskissen for å få ESP32 til å sende sin egen IP -adresse. Det er ikke så kraftig som et dedikert høyhastighets wifi -hub (noen ganger henger hvis du beveger deg for fort), men det fungerer ganske bra, og nå kan jeg demonstrere roboten hvor jeg vil uten å måtte koble den til et nettverk! Når du får roboten til å fungere, kan du prøve å konvertere den til Access Point selv!

Trinn 6: Detaljer om hvordan du endrer HTML/Javascript -koden for webserveren

Dette er ikke nødvendig, men jeg har hatt noen forespørsler.

Jeg har gitt denne Google -dokumentet informasjon om hvordan du bruker CyberChef til å konvertere frem og tilbake mellom HTML/Javascript og byte -array -representasjonene i camera_index.h -filen.

Anbefalt: