Innehållsförteckning:
- Tillbehör
- Steg 1: Programmera ESP32 -kameran
- Steg 2: Bygg roboten
- Steg 3: HEJ! Vänta en sekund! Varför behöver jag en Arduino Nano?
- Steg 4: Anslut USB -joysticken (tillval)
- Steg 5: LETS RID
- Steg 6: Information om hur du ändrar HTML/Javascript -koden för webbservern
Video: ESP32 kamerarobot - FPV: 6 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:38
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
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
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:
Arduino Car Reverse Parking Alert System - Steg för steg: 4 steg
Arduino Car Reverse Parking Alert System | Steg för steg: I det här projektet kommer jag att utforma en enkel Arduino Car Reverse Parking Sensor Circuit med Arduino UNO och HC-SR04 Ultrasonic Sensor. Detta Arduino -baserade bilomvändningsvarningssystem kan användas för autonom navigering, robotavstånd och andra
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): 8 steg
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): ultraljudsgivare L298N Dc kvinnlig adapter strömförsörjning med en manlig DC-pin Arduino UNOBreadboardHur det fungerar: Först laddar du upp kod till Arduino Uno (det är en mikrokontroller utrustad med digital och analoga portar för att konvertera kod (C ++)
ESP32 Bluetooth -handledning - Så här använder du inbyggd Bluetooth av ESP32: 5 steg
ESP32 Bluetooth -handledning | Hur man använder inbyggd Bluetooth av ESP32: Hej killar Eftersom ESP32 -kortet levereras med WiFi & Bluetooth båda men för våra mestadels projekt använder vi vanligtvis bara Wifi, vi använder inte Bluetooth. Så i denna instruktioner visar jag hur enkelt det är att använda Bluetooth av ESP32 & För dina grundläggande projekt
Komma igång med ESP32 CAM - Strömmande video med ESP CAM över wifi - ESP32 säkerhetskameraprojekt: 8 steg
Komma igång med ESP32 CAM | Strömmande video med ESP CAM över wifi | ESP32 säkerhetskameraprojekt: Idag lär vi oss hur man använder det här nya ESP32 CAM -kortet och hur vi kan koda det och använda det som en säkerhetskamera och få en strömmande video över wifi
Komma igång med ESP32 - Installera ESP32 -kort i Arduino IDE - ESP32 blinkningskod: 3 steg
Komma igång med ESP32 | Installera ESP32 -kort i Arduino IDE | ESP32 Blink -kod: I denna instruktion kommer vi att se hur man börjar arbeta med esp32 och hur man installerar esp32 -kort i Arduino IDE och vi kommer att programmera esp 32 för att köra blinkkod med hjälp av arduino ide