Sadržaj:

Robot kamere ESP32 - FPV: 6 koraka
Robot kamere ESP32 - FPV: 6 koraka

Video: Robot kamere ESP32 - FPV: 6 koraka

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

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

Izgradimo robota za gledanje prve osobe koji vozite putem ugrađenog web sučelja!

Ovaj projekt koristi Geekcreit ESP32 modul s kamerom OV2640. Temelji se na modulu AIThinker.

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

Robot radi na sljedeći način.

ESP32 emitira mrežni URL vašoj mreži koji predstavlja video stream uživo s nekim potvrdnim okvirima za upravljanje nekim funkcijama kamere. Također prima pritiske tipki poslane na web stranicu s tipkovnice koje su naredbe za usmjeravanje robota. Možda ćete htjeti izraditi USB štitnik upravljačke palice kako biste mogli upravljati robotom pomoću upravljačke palice, a ne tipkati naredbe s tipkovnice.

Kada ESP32 primi pritisak na tipku, prosljeđuje te bajtove Arduino Nano -u koji zatim pokreće motore kako bi robot krenuo.

Ovaj je projekt umjereno-velikih poteškoća. Molim vas, odvojite vrijeme.

Započnimo!

Pribor

  • ESP -32 Modul kamere s 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 tipkovnice koju pruža Leonardo)
  • Generički modul joystick
  • L293D Quad H-bridge čip
  • DC-DC Buck Coverter s 5V izlazom za napajanje ESP32
  • FTDI serijski adapter za programiranje ESP32
  • Generičko robotsko podvozje s dva pogonska motora - svaka će šasija 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 kameru ESP32

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 poslužiteljem i bavi se postavljanjem značajki kamere s web stranice i primanjem pritisaka tipki s web stranice.

camera_index.h sadrži HTML/JavaScript kôd za web aplikaciju kao nizove bajtova. Izmjena web aplikacije znatno je izvan opsega ovog projekta. Kasnije ću uključiti vezu za izmjenu 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 Alati/Ploče/Upravitelj ploča. Potražite esp32 i instalirajte biblioteku esp32.

Otvorite projekt u svom Arduino IDE -u.

Stavite mrežni ID vašeg usmjerivača i svoju lozinku u retke označene na gornjoj slici. Spremite projekt.

Idite na izbornik Alati i napravite odabir kako je prikazano na gornjoj slici.

Ploča: ESP32 Wrover

Brzina prijenosa: 115200

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

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

Pritisnite gumb "Upload".

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

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

Odspojite IO0 s tla. Odspojite 3.3V vod između FTDI adaptera i ESP32.

ESP32 kamera zahtijeva 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 poslužitelja.

Idite u svoj preglednik i unesite URL. Kada se web mjesto učita, kliknite gumb 'Pokreni streaming' i video stream 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

Napravite robota
Napravite robota

Potrebna vam je šasija robota s dva kotača. Svatko ć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. Uočite 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 spojene su 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, pinovi INPUT postavljeni su 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 najveću brzinu.

U obrnutom smjeru, 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 prenesite skicu ArduinoMotorControl na Arduino Nano.

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

Vjerojatno mislite: "Hej! Na kameri ESP32 dostupna su najmanje 4 IO pina. 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 bljeskalica

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

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

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

Stoga je najjednostavnije učiniti samo koristiti Nano za upravljanje motorima putem PWM -a i slati naredbe s ESP32 serijskom komunikacijom preko jedne žice (ESP32 U0T na Arduino Rx0) i GND. Jako jednostavno.

Korak 4: Povežite USB joystick (izborno)

Robota možete upravljati slanjem pritisaka tipki na web stranicu na sljedeći način:

8 - Naprijed

9 - Naprijed desno

7 - Naprijed lijevo

4 - Zakrenite ulijevo

5 - Stanite

1 - Obrnuto lijevo

2 - Obrnuto

3 - Obrnuto desno.

Skica USB upravljačke palice prevodi ulaze upravljačke palice u pritiske tipki i šalje ih na web sučelje koje ih prosljeđuje Arduinu za upravljanje robotom.

Spojite 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 prenesite je na Leonardo.

Ako ga želite testirati, samo otvorite uređivač teksta na računalu, kliknite mišem u prozoru i počnite pomicati navigacijsku tipku. U prozoru bi se trebale prikazati vrijednosti od 1 do 9

5. korak: VOŽIMO SE

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

Zatim spojite baterije na sljedeći način.

1. Uključite kameru ESP32. Za pokretanje web poslužitelja potrebno je nekoliko sekundi.

2. Uključite Arduino Nano.

3. Uključite motore.

Pokrenite svoj preglednik i idite na URL za ESP32.

Pritisnite gumb Pokreni streaming.

Kliknite mišem negdje na zaslonu preglednika tako da je zaslon sada u fokusu.

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

Otkrio sam da zadana veličina okvira radi u redu za emitiranje videozapisa uživo prilično responzivno putem WiFi -a. No, 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, tvrdo lemljenu i sigurno montiranu na šasiju.

Tri prednja prekidača su sljedeća:

Lijevo - baterija za napajanje motora

U sredini - Arduino baterija

Desno - baterija kamere ESP32

Mogao bih upotrijebiti 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 točki

Smatram da je nezgodno demonstrirati ovog robota izvan svoje kuće jer mi školska mreža ne dopušta da povežem robotski web poslužitelj s njim. Kao rješenje, istraživao sam korištenje značajke pristupne točke web poslužitelja ESP32. Potrebno je malo rada, ali zahtijevaju prilično minimalne izmjene na glavnoj skici robota kako bi ESP32 emitirao vlastitu IP adresu. Nije toliko moćan kao namjensko brzi wifi čvorište (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 pokrenete robota, pokušajte ga sami pretvoriti u pristupnu točku!

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

To nije potrebno, ali imao sam neke zahtjeve.

Dostavio sam ovom Google dokumentu pojedinosti o tome kako koristiti CyberChef za pretvaranje naprijed -natrag između HTML/Javascripta i prikaza polja bajtova u datoteci camera_index.h.

Preporučeni: