Sadržaj:
- Supplies
- Korak 1: Programirajte ESP32 kameru
- Korak 2: Izgradite robota
- Korak 3: HEJ! Čekaj malo! Zašto mi treba Arduino Nano?
- Korak 4: Povežite USB joystick (opcionalno)
- Korak 5: VOŽIMO SE
- Korak 6: Detalji o tome kako izmijeniti HTML/Javascript kôd za web poslužitelj
Video: ESP32 Robot za kameru - FPV: 6 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:05
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
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
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:
LED LIGHT DIY za web kameru (C920): 10 koraka (sa slikama)
LED LIGHT DIY za web kameru (C920): Osvjetljenje je neophodno za web kameru. Ovaj mali LED prsten pomaže vašoj kameri za lice da vas odnese vrlo dobro. Možete snimati video bez ikakvog svjetla osim ove LED diode. Koristio sam 3d štampač i WS2812b LED modul (kompatibilan sa Neopixelom)
Bluetooth prekidač za pedale za kameru pametnog telefona: 13 koraka (sa slikama)
Bluetooth prekidač za pedale za kameru na pametnom telefonu: Ovih dana se bavim izradom instrukcija, video zapisa na YouTubeu i postova na blogovima. Da bi objava na blogu bila produktivna, bitno je snimiti što je moguće više slika što detaljnije. To nije tako lako učiniti jer ljudsko biće ima samo dvije ruke. Ja trebam
Nao Robot Kopiranje kretanja kroz Xbox Kinect kameru: 4 koraka
Nao Robot Kopiranje kretanja kroz Xbox Kinect kameru: Kao projekat na času računarskih nauka u srednjoj školi (Porter Gaud), ja (Legare Walpole) i još jedan učenik (Martin Lautenschlager) smo krenuli u pokušaj da nao humanoidnog robota Nao imitiramo naša kretanja kroz kinetička kamera za Xbox. Mesecima bez profesionalaca
Kako koristiti kameru kao web kameru: 4 koraka
Kako koristiti kameru kao web kameru: Ako ste poput mene, imate mnogo prijatelja koji su se odselili od kuće, a žive hiljadama kilometara dalje, ili imate prijatelje s kojima ste išli na fakultet i svi oni žive različita mesta. Ja lično mrzim telefone i upute
Monopod sa štapom za treking za malu kameru/kameru: 4 koraka
Monopod sa štapom za treking za male fotoaparate/videokamere: Volim snimati mnogo fotografija dok planinarim, ali moj stativ je malo pretežak za bilo koje ozbiljnije pješačenje i mom stativu u stilu gorila treba previše vremena da dođe na pravo mjesto i nije baš stabilan (trebao sam kupiti ljepši). Ovaj jednostavan c