Innehållsförteckning:

ESP32 kamerarobot - FPV: 6 steg
ESP32 kamerarobot - FPV: 6 steg

Video: ESP32 kamerarobot - FPV: 6 steg

Video: ESP32 kamerarobot - FPV: 6 steg
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 är en billig och kraftfull PLC. Det inkluderar till och med ansiktsigenkänning!

Låt oss bygga en First Person Viewpoint-robot som du kör genom ett inbyggt webbgränssnitt!

Detta projekt använder Geekcreit ESP32 -modulen med OV2640 -kamera. Det är baserat på AIThinker -modulen.

Det finns många olika ESP32 -kamerakloner där ute. En del fungerar, andra inte. Jag föreslår att du använder samma modul som jag gjorde så att du har en bra möjlighet att bli framgångsrik.

Roboten fungerar enligt följande.

ESP32 sänder en webbadress till ditt nätverk som visar livevideoströmmen med några kryssrutor för att hantera vissa funktioner i kameran. Det tar också emot knapptryckningar som skickas till webbsidan från tangentbordet som är riktade kommandon för roboten. Du kanske vill bygga USB -joystickskyddet så att du kan köra roboten med joysticken istället för att skriva tangentbordskommandon.

När ESP32 tar emot knapptryckningar vidarebefordrar den dessa byte till Arduino Nano som sedan driver motorerna för att få roboten att röra sig.

Detta projekt är av måttligt hög svårighet. Ta den tid du behöver.

Låt oss börja!

Tillbehör

  • ESP -32 kameramodul med OV2640 kamera - jag skulle rekommendera Geekcreit -produkten
  • Extern snap-on-antenn för ESP-32 för att maximera signalstyrkan
  • Arduino Nano
  • Arduino Leonardo för joystick -modulen (vi behöver USB -tangentbordsemulering från Leonardo)
  • Generisk joystick -modul
  • L293D Quad H-bridge chip
  • DC-DC Buck Coverter med 5V utgång för att driva ESP32
  • FTDI Serial Adapter för programmering av ESP32
  • Ett generiskt robotchassi med två växelmotorer - vilket chassi som helst fungerar. 3 till 6V motorer rekommenderas
  • 2 x 7,4V 1300mAh LiPo -batterier (eller liknande) för att driva ESP32 och motorerna
  • 1 x 9V batteri för att driva Arduino Nano

Steg 1: Programmera ESP32 -kameran

Programmera ESP32 -kameran
Programmera ESP32 -kameran
Programmera ESP32 -kameran
Programmera ESP32 -kameran

Anslut din ESP32 -kamera till en FTDI -adapter med en brödbräda enligt följande:

FTDI ESP32

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

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

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

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

Anslut dessutom stift IO0 ("eye-oh-zero") till GND. Du måste göra detta för att sätta ESP32 i programmeringsläge.

Packa upp esp32CameraWebRobotforInstructable.zip -filen.

Det finns 4 filer i det här projektet:

esp32CameraWebRobotforInstructable.ino är Arduino -skissen.

ap_httpd.cpp är koden som hanterar webbservern och hanterar inställning av kamerafunktionerna från webbsidan och mottagning av knapptryckningar från webbsidan.

camera_index.h innehåller HTML/JavaScript -koden för webbprogrammet som byte -matriser. Att modifiera webbapplikationen ligger långt utanför projektets omfattning. Jag kommer att inkludera en länk för hur du ändrar HTML/JavaScript senare.

camera_pins.h är rubrikfilen som avser stiftkonfigurationen för ESP32 -kameran.

För att sätta ESP32 i programmeringsläge måste du ansluta IO0 ("eye-oh-zero") till Ground.

Starta din Arduino IDE och gå till Tools/Boards/Boards Manager. Sök efter esp32 och installera esp32 -biblioteket.

Öppna projektet i din Arduino IDE.

Sätt DIN routers nätverks -ID och DITT lösenord i raderna som markeras i bilden ovan. Spara projektet.

Gå till Verktyg -menyn och gör de val som visas på bilden ovan.

Bräda: ESP32 Wrover

Uppladdningshastighet: 115200

Partitionsschema: "Enorm APP (3MB ingen OTA)"

och välj porten som din FTDI -adapter är ansluten till.

Klicka på knappen "Ladda upp".

Ibland börjar ESP32 inte ladda upp. Så var redo att trycka på RESET-knappen på baksidan av ESP32 när du börjar se … --- … tecknen som visas i konsolen under uppladdningen. Det börjar sedan ladda upp.

När du ser "tryck på RST" på konsolen är överföringen klar.

KOPPLA IO0 från marken. Koppla bort 3.3V -ledningen mellan FTDI -adaptern och ESP32.

ESP32 -kameran kräver mycket ström för att fungera bra. Anslut en 5V 2A nätadapter till 5V- och GND -stiften på ESP32.

Öppna Serial Monitor, ställ in överföringshastigheten till 115200 och titta sedan på när ESP32 startar om. Så småningom ser du webbadressen till servern.

Gå till din webbläsare och ange webbadressen. När webbplatsen laddas klickar du på knappen "Starta streaming" och livevideoströmmen ska börja. Om du klickar på kryssrutan 'Floodlight' ska den inbyggda blixtlampan lysa. Se upp! DET ÄR LJUS!

Steg 2: Bygg roboten

Bygg roboten
Bygg roboten

Du behöver ett tvåhjuligt robotchassi. Vilken som helst kommer att göra. Montera chassit enligt tillverkarens instruktioner.

Dra sedan upp roboten enligt diagrammet. Lämna batterianslutningarna för tillfället.

L293D används för att styra motorerna. Lägg märke till att halvan på hacket är MOT ESP32.

Normalt behövs 6 stift på Arduino för att styra två motorer.

Denna robot kräver bara 4 stift och fungerar fortfarande fullt ut.

Stiften 1 och 9 är anslutna till Arduino 5V -källan så att de är permanent HIGH. Att koppla in roboten på det här sättet innebär att vi behöver två färre stift på Arduino för att styra motorerna.

I riktningar framåt är INPUT -stiften inställda på LÅG och motorns pulsvågsmoduleringsstiften är inställda på värden mellan 0 och 255 med 0 som betyder OFF och 255 som betyder maximal hastighet.

I omvänd riktning är INPUT -stiften inställda på HIGH och PWM -värdena är omvända. 0 betyder maximal hastighet och 255 betyder av.

Packa upp och ladda upp ArduinoMotorControl -skissen till Arduino Nano.

Steg 3: HEJ! Vänta en sekund! Varför behöver jag en Arduino Nano?

Du tänker förmodligen, "Hej! Det finns minst 4 IO -stift tillgängliga på ESP32 -kameran. Varför kan jag inte använda dem för att styra motorerna?"

Det är sant, det finns stift på ESP32 enligt följande:

IO0 - behövs för att sätta ESP32 i programmeringsläge

IO2 - tillgängligt

IO4 - blixtlampan

IO12, IO13, IO14, IO15, IO16 - ytterligare GPIO -stift.

Om du bara laddar en grundskiss på ESP32 för att styra stiften med PWM -kommandon, fungerar de.

MEN när du aktiverar CAMERA -biblioteken i dina skisser är dessa pins inte längre tillgängliga.

Så det enklaste är att bara använda en Nano för att styra motorerna via PWM och skicka kommandona från ESP32 med seriell kommunikation över en tråd (ESP32 U0T till Arduino Rx0) och GND. Väldigt enkelt.

Steg 4: Anslut USB -joysticken (tillval)

Du kan köra roboten genom att skicka knapptryckningar till webbsidan enligt följande:

8 - Framåt

9 - Framåt höger

7 - Framåt vänster

4 - Vrid vänster

5 - Stopp

1 - Bakåt vänster

2 - Omvänd

3 - Bakåt höger.

USB -joystick -skissen översätter joystick -ingångar till knapptryckningar och skickar dem till webbgränssnittet som vidarebefordrar dem till Arduino för att driva roboten.

Anslut joysticken till Arduino LEONARDO enligt följande:

Leonardo joystick

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

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

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

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

Öppna usbJoyStick -skissen, välj Arduino Leonardo som tavlan och ladda upp den till Leonardo.

Om du vill testa det, öppna bara en textredigerare på din dator, klicka på musen i fönstret och börja flytta joysticken. Du bör se värdena från 1 till 9 som visas i fönstret

Steg 5: LETS RID

Ta lite tid och gå igenom dina ledningar för att se till att allt är korrekt.

Anslut sedan dina batterier enligt följande.

1. Sätt på ESP32 -kameran. Det tar några sekunder att starta webbservern.

2. Sätt på Arduino Nano.

3. Sätt på motorerna.

Starta din webbläsare och gå till URL: en för ESP32.

Klicka på knappen Starta strömning.

Klicka med musen någonstans i webbläsarens skärm så att skärmen nu är i fokus.

Börja köra din robot med joysticken (eller tangentbordet).

Jag har funnit att standardramstorleken fungerar okej för att sända livevideon ganska responsivt över WiFi. Men när du ökar bildstorleken blir strömmen mer hackig eftersom du försöker sända större bilder.

Detta är ett utmanande projekt som ger dig möjlighet att börja arbeta med livevideostreaming och köra en robot över WiFi. Jag hoppas att du tyckte att det var kul!

NU GÅ OCH GÖR NÅGOT UNDERBART!

Uppdatering från januari 2020 - De sista bilderna visar den slutliga versionen av roboten, hårdlödd och säkert monterad på chassit.

De tre frontmonterade omkopplarna är följande:

Vänster - Motorbatteri

Center - Arduino -batteri

Höger - ESP32 kamerabatteri

Jag kan använda ett stort batteri med några buck-boost-transformatorer (jag använder ett för ESP32-det är längst ner till höger på framsidan), men för enkelhetens skull behåller jag bara de 3 batterierna.

Robot nu på Access Point

Jag tycker att det är krångligt att demonstrera denna robot utanför mitt hem eftersom mitt skolans företagsnätverk inte tillåter mig att ansluta robotens webbserver till den. Som en lösning undersökte jag hur jag använde funktionen Access Point på ESP32 -webbservern. Det tar lite arbete, men kräver ganska minimala ändringar av huvudrobotskissen för att ESP32 ska sända sin egen IP -adress. Det är inte lika kraftfullt som ett dedikerat höghastighets wifi -nav (hänger ibland om du rör dig för snabbt), men det fungerar ganska bra och nu kan jag demonstrera roboten var jag vill utan att behöva ansluta den till ett nätverk! När du väl har fått roboten att fungera kan du försöka konvertera den till åtkomstpunkt själv!

Steg 6: Information om hur du ändrar HTML/Javascript -koden för webbservern

Detta är inte nödvändigt, men jag har fått några förfrågningar.

Jag har gett detta Google -dokument information om hur du använder CyberChef för att konvertera fram och tillbaka mellan HTML/Javascript och byte -array -representationer i filen camera_index.h.

Rekommenderad: