Sadržaj:

ESP32 Robot za kameru - FPV: 6 koraka
ESP32 Robot za kameru - FPV: 6 koraka

Video: ESP32 Robot za kameru - FPV: 6 koraka

Video: ESP32 Robot za kameru - FPV: 6 koraka
Video: ESP32-CAM - Быстрый старт 2024, Novembar
Anonim
Image
Image
ESP32 Robot za kameru - FPV
ESP32 Robot za kameru - FPV
ESP32 Robot za kameru - FPV
ESP32 Robot za kameru - FPV

Modul kamere ESP32 je jeftin i moćan PLC. Uključuje čak i prepoznavanje lica!

Izgradimo robota za gledanje prve osobe koji vozite kroz ugrađeno web sučelje!

Ovaj projekt koristi Geekcreit ESP32 modul s kamerom OV2640. Zasnovan je na modulu AIThinker.

Postoji mnogo različitih klonova ESP32 kamere. Neki rade, neki ne. Predlažem da koristite isti modul koji sam ja imao kako biste imali dobru priliku da budete uspješni.

Robot radi na sljedeći način.

ESP32 emitira web-adresu vašoj mreži koja predstavlja video prijenos uživo s nekim potvrdnim okvirima za upravljanje nekim funkcijama kamere. Takođe prima tastere koji se sa tastature šalju na veb stranicu, a koji su komande za smer robota. Možda ćete poželjeti da napravite USB štit džojstika tako da možete upravljati robotom pomoću upravljačke palice, a ne tipkati komande sa tastature.

Kada ESP32 primi pritisak na tipku, prosljeđuje te bajtove Arduino Nano -u koji zatim pokreće motore da pokrene robota.

Ovaj projekat je umjereno-velikih poteškoća. Molim vas, sačekajte.

Hajde da počnemo!

Supplies

  • ESP -32 Modul kamere sa kamerom OV2640 - preporučio bih Geekcreit proizvod
  • Vanjska zaskočna antena za ESP-32 za povećanje snage signala
  • Arduino Nano
  • Arduino Leonardo za Joystick modul (potrebna nam je emulacija USB tastature koju pruža Leonardo)
  • Opšti modul džojstika
  • L293D Quad H-bridge čip
  • DC-DC Buck Coverter sa 5V izlazom za napajanje ESP32
  • FTDI serijski adapter za programiranje ESP32
  • Generičko robotsko podvozje s dva motora sa pogonom - svaka šasija će raditi. Preporučuju se motori od 3 do 6V
  • 2 x 7.4V 1300mAh LiPo baterije (ili slične) za napajanje ESP32 i motora
  • 1 x 9V baterija za napajanje Arduino Nano

Korak 1: Programirajte ESP32 kameru

Programirajte kameru ESP32
Programirajte kameru ESP32
Programirajte kameru ESP32
Programirajte kameru ESP32

Pomoću matične ploče povežite svoju ESP32 kameru s FTDI adapterom na sljedeći način:

FTDI ESP32

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

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

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

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

Dodatno, spojite pin IO0 ("eye-oh-zero") na GND. Morate to učiniti da biste ESP32 prebacili u način programiranja.

Raspakirajte datoteku esp32CameraWebRobotforInstructable.zip.

U ovom projektu postoje 4 datoteke:

esp32CameraWebRobotforInstructable.ino je Arduino skica.

ap_httpd.cpp je kôd koji upravlja web serverom i bavi se postavljanjem funkcija kamere sa web stranice i primanjem pritiska na tastere sa web stranice.

camera_index.h sadrži HTML/JavaScript kod za web aplikaciju kao nizove bajtova. Izmjena web aplikacije je izvan okvira ovog projekta. Kasnije ću uključiti vezu kako izmijeniti HTML/JavaScript.

camera_pins.h je datoteka zaglavlja koja se odnosi na pin konfiguraciju ESP32 kamere.

Da biste ESP32 prebacili u način programiranja, morate spojiti IO0 ("eye-oh-zero") na uzemljenje.

Pokrenite svoj Arduino IDE i idite na Tools/Boards/Boards Manager. Potražite esp32 i instalirajte esp32 biblioteku.

Otvorite projekt u svom Arduino IDE -u.

Unesite mrežni ID vašeg rutera i svoju lozinku u redove označene na gornjoj slici. Sačuvajte projekat.

Idite na meni Alati i izvršite odabir kao što je prikazano na gornjoj slici.

Ploča: ESP32 Wrover

Brzina otpremanja: 115200

Shema particije: "Ogromna aplikacija (3 MB bez OTA)"

i odaberite port na koji je priključen vaš FTDI adapter.

Kliknite na dugme "Upload".

Sada, ponekad, ESP32 neće početi učitavati. Zato budite spremni pritisnuti tipku RESET na stražnjoj strani ESP32 kada počnete vidjeti… ---… znakove koji se pojavljuju u konzoli tijekom učitavanja. Tada će početi učitavanje.

Kada vidite "pritisnite RST" na konzoli, prijenos je dovršen.

Odspojite IO0 sa zemlje. Odspojite 3.3V liniju između FTDI adaptera i ESP32.

ESP32 kameri je potrebno puno struje da bi dobro radila. Spojite 5V 2A adapter za napajanje na 5V i GND pinove na ESP32.

Otvorite serijski monitor, postavite brzinu prijenosa na 115200, a zatim gledajte kako se ESP32 ponovno pokreće. Na kraju ćete vidjeti URL servera.

Idite u svoj preglednik i unesite URL. Kada se web stranica učita, kliknite gumb 'Pokreni streaming' i video prijenos uživo trebao bi započeti. Ako kliknete na potvrdni okvir 'Floodlight', LED dioda bljeskalice bi trebala zasvijetliti. Pazi! SVJETLO JE!

Korak 2: Izgradite robota

Napravi robota
Napravi robota

Potrebna vam je šasija robota sa dva točka. Bilo ko će učiniti. Sastavite šasiju prema uputama proizvođača.

Zatim povežite robota prema dijagramu. Ostavite zasad priključke baterije.

L293D se koristi za upravljanje motorima. Primijetite da je polurez na čipu PREMA ESP32.

Obično je potrebno 6 pinova na Arduinu za upravljanje s dva motora.

Ovaj robot zahtijeva samo 4 igle i još uvijek radi u potpunosti.

Igle 1 i 9 su spojene na 5V izvor Arduina tako da su trajno VISOKE. Ožičenje robota na ovaj način znači da su nam potrebne dvije iglice manje na Arduinu za upravljanje motorima.

U smjerovima prema naprijed, INPUT pinovi su postavljeni na LOW, a pinovi za modulaciju impulsnog vala motora na vrijednosti između 0 i 255 s 0 što znači OFF i 255 što znači maksimalnu brzinu.

U obrnutim smjerovima, pinovi INPUT postavljeni su na HIGH, a vrijednosti PWM su obrnute. 0 znači najveću brzinu, a 255 znači isključeno.

Raspakirajte i postavite ArduinoMotorControl skicu na Arduino Nano.

Korak 3: HEJ! Čekaj malo! Zašto mi treba Arduino Nano?

Vjerojatno mislite: "Hej! Na kameri ESP32 dostupne su najmanje 4 IO pinova. Zašto ih ne mogu koristiti za upravljanje motorima?"

Pa, istina je, na ESP32 postoje pinovi na sljedeći način:

IO0 - potreban za stavljanje ESP32 u programski način rada

IO2 - dostupan

IO4 - LED blic

IO12, IO13, IO14, IO15, IO16 - dodatni GPIO pinovi.

Ako samo učitate osnovnu skicu na ESP32 kako biste kontrolirali pinove pomoću PWM naredbi, one će uspjeti.

Međutim, nakon što aktivirate CAMERA biblioteke u skicama, ove iglice više nisu dostupne.

Najjednostavnije je učiniti pomoću Nano -a za upravljanje motorima putem PWM -a i slanje naredbi s ESP32 serijskom komunikacijom preko jedne žice (ESP32 U0T na Arduino Rx0) i GND. Veoma jednostavno.

Korak 4: Povežite USB joystick (opcionalno)

Robota možete upravljati slanjem pritiska na tipke na web stranicu na sljedeći način:

8 - Naprijed

9 - Naprijed desno

7 - Naprijed lijevo

4 - Rotirajte ulijevo

5 - Stop

1 - Obrnuto lijevo

2 - Obrnuto

3 - Obrnuto desno.

Skica USB džojstika prevodi unose džojstika u pritiske na tastere i šalje ih na veb interfejs koji ih prosljeđuje Arduinu da upravlja robotom.

Priključite joystick na Arduino LEONARDO na sljedeći način:

Leonardo Joystick

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

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

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

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

Otvorite skicu usbJoyStick, odaberite Arduino Leonardo kao ploču i postavite je na Leonardo.

Ako ga želite testirati, samo otvorite uređivač teksta na računaru, kliknite mišem u prozoru i počnite pomicati navigacijsku tipku. Trebali biste vidjeti vrijednosti od 1 do 9 koje se prikazuju u prozoru

Korak 5: VOŽIMO SE

Odvojite malo vremena i provjerite ožičenje kako biste bili sigurni da je sve u redu.

Zatim spojite baterije na sljedeći način.

1. Uključite ESP32 kameru. Potrebno je nekoliko sekundi za pokretanje web servera.

2. Uključite Arduino Nano.

3. Uključite motore.

Pokrenite svoj preglednik i idite na URL za ESP32.

Kliknite gumb Pokreni streaming.

Kliknite mišem negdje na ekranu preglednika tako da zaslon sada bude u fokusu.

Počnite voziti svog robota pomoću upravljačke palice (ili tastature).

Otkrio sam da zadana veličina okvira radi u redu za emitiranje videozapisa uživo prilično responzivno putem WiFi -a. Međutim, kako povećavate veličinu okvira, stream će postajati uzburkaniji jer pokušavate emitirati veće slike.

Ovo je izazovan projekt koji vam daje priliku da počnete raditi sa video streamingom uživo i upravljati robotom putem WiFi -a. Nadam se da vam je bilo zabavno!

ODMAH IDITE I UČINITE NEŠTO DIVNO!

Ažuriranje za siječanj 2020. - Posljednje fotografije prikazuju konačnu verziju robota, čvrsto lemljenu i sigurno montiranu na šasiju.

Tri prednja prekidača su sljedeća:

Lijevo - baterija za napajanje motora

Centar - Arduino baterija

Desno - baterija kamere ESP32

Mogao bih koristiti jednu veliku bateriju s nekim transformatorima za povećanje snage (koristim jednu za ESP32-nalazi se u donjem desnom kutu fotografije sprijeda), ali radi jednostavnosti čuvam samo 3 baterije.

Robot sada na pristupnoj tački

Smatram da je nezgodno demonstrirati ovog robota izvan svoje kuće jer mi školska poslovna mreža ne dozvoljava da povežem robotski web server s njim. Kao rješenje, proveo sam istraživanje o upotrebi značajke pristupne tačke ESP32 web servera. Potrebno je malo rada, ali zahtijevaju prilično minimalne izmjene na glavnoj skici robota kako bi ESP32 emitirao vlastitu IP adresu. Nije tako moćan kao namjensko brzi WiFi centar (ponekad visi ako se krećete prebrzo), ali radi prilično dobro i sada mogu demonstrirati robota gdje god želim, a da ga ne moram povezati s mrežom! Nakon što robot počne raditi, pokušajte ga sami pretvoriti u pristupnu točku!

Korak 6: Detalji o tome kako izmijeniti HTML/Javascript kôd za web poslužitelj

To nije potrebno, ali imao sam neke zahtjeve.

Ovom sam Google dokumentu dao detalje o tome kako koristiti CyberChef za pretvaranje između HTML/Javascript -a i prikaza niza bajtova u datoteci camera_index.h.

Preporučuje se: