Taula de continguts:

Robot de càmera ESP32 - FPV: 6 passos
Robot de càmera ESP32 - FPV: 6 passos

Vídeo: Robot de càmera ESP32 - FPV: 6 passos

Vídeo: Robot de càmera ESP32 - FPV: 6 passos
Vídeo: ESP32-Cam Complete Guide 2024, De novembre
Anonim
Image
Image
Robot de càmera ESP32 - FPV
Robot de càmera ESP32 - FPV
Robot de càmera ESP32 - FPV
Robot de càmera ESP32 - FPV

El mòdul de la càmera ESP32 és un PLC econòmic i potent. Fins i tot inclou reconeixement facial.

Construïm un robot Viewpoint en primera persona que conduïu a través d’una interfície web integrada.

Aquest projecte utilitza el mòdul Geekcreit ESP32 amb càmera OV2640. Es basa en el mòdul AIThinker.

Hi ha molts clons de càmera ESP32 diferents. Alguns funcionen, d'altres no. Us suggeriria que feu servir el mateix mòdul que he fet perquè tingueu una bona oportunitat per tenir èxit.

El robot funciona de la següent manera.

L'ESP32 emet un URL web a la vostra xarxa que presenta el flux de vídeo en directe amb algunes caselles de selecció per operar algunes funcions de la càmera. També rep premudes de tecles enviades a la pàgina web des del teclat que són ordres direccionals per al robot. És possible que vulgueu construir el blindatge del joystick USB per poder conduir el robot amb el joystick en lloc d’escriure les ordres del teclat.

Quan l’ESP32 rep la tecla premuda, reenvia aquests bytes a l’Arduino Nano, que acciona els motors per fer moure el robot.

Aquest projecte té una dificultat moderada-alta. Si us plau, preneu-vos el vostre temps.

Comencem!

Subministraments

  • Mòdul de càmera ESP-32 amb càmera OV2640: recomanaria el producte Geekcreit
  • Antena de connexió externa per a l'ESP-32 per maximitzar la intensitat del senyal
  • Arduino Nano
  • Arduino Leonardo per al mòdul Joystick (necessitem una emulació de teclat USB proporcionada per Leonardo)
  • Mòdul Joystick genèric
  • Xip L293D Quad H-bridge
  • Cobertor Buck DC-DC amb sortida de 5V per alimentar l’ESP32
  • Adaptador sèrie FTDI per a la programació de l’ESP32
  • Un xassís de robot genèric amb dos motors d’engranatges: qualsevol xassís funcionarà. Es recomanen motors de 3 a 6V
  • 2 bateries LiPo de 7.4V 1300mAh (o similars) per alimentar l’ESP32 i els motors
  • 1 x bateria de 9V per alimentar l’Arduino Nano

Pas 1: programa la càmera ESP32

Programa la càmera ESP32
Programa la càmera ESP32
Programa la càmera ESP32
Programa la càmera ESP32

Mitjançant una placa de configuració, connecteu la càmera ESP32 a l'adaptador FTDI de la manera següent:

FTDI ESP32

3,3V ----------- 3,3V

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

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

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

A més, connecteu el pin IO0 ("eye-oh-zero") a GND. Cal fer això per posar l’ESP32 en mode de programació.

Descomprimiu el fitxer esp32CameraWebRobotforInstructable.zip.

Hi ha 4 fitxers en aquest projecte:

esp32CameraWebRobotforInstructable.ino és l'esbós d'Arduino.

ap_httpd.cpp és el codi que gestiona el servidor web i tracta de configurar les funcions de la càmera des de la pàgina web i rebre premudes de tecles des de la pàgina web.

camera_index.h conté el codi HTML / JavaScript de l’aplicació web com a matrius de bytes. La modificació de l'aplicació web està molt més enllà de l'abast d'aquest projecte. Inclouré un enllaç per saber com modificar l’HTML / JavaScript més endavant.

camera_pins.h és el fitxer de capçalera pertanyent a la configuració de pins de la càmera ESP32.

Per posar l'ESP32 al mode de programació, heu de connectar IO0 ("eye-oh-zero") a terra.

Inicieu el vostre Arduino IDE i aneu a Tools / Boards / Boards Manager. Cerqueu esp32 i instal·leu la biblioteca esp32.

Obriu el projecte al vostre IDE Arduino.

Introduïu l'identificador de xarxa del vostre enrutador i la vostra contrasenya a les línies ressaltades a la imatge superior. Deseu el projecte.

Aneu al menú Eines i feu les seleccions tal com es mostra a la imatge superior.

Tauler: ESP32 Wrover

Velocitat de càrrega: 115200

Esquema de particions: "Aplicació enorme (3 MB sense OTA)"

i trieu el port al qual està connectat l'adaptador FTDI.

Feu clic al botó "Puja".

Ara, de vegades, l’ESP32 no comença a carregar-se. Per tant, estigueu a punt per prémer el botó RESET a la part posterior de l’ESP32 quan comenceu a veure els caràcters … --- … que apareixen a la consola durant la càrrega. A continuació, es començarà a carregar.

Quan veieu "premeu RST" a la consola, la càrrega s'ha completat.

DESConnecteu IO0 de terra. Desconnecteu la línia de 3,3 V entre l'adaptador FTDI i l'ESP32.

La càmera ESP32 requereix molta corrent per funcionar bé. Connecteu un adaptador de corrent de 5V 2A als pins 5V i GND de l’ESP32.

Obriu el monitor de sèrie, establiu la velocitat de transmissió en 115200 i, a continuació, observeu com es reinicia l’ESP32. Finalment, veureu l’URL del servidor.

Aneu al navegador i introduïu l'URL. Quan es carregui el lloc web, feu clic al botó "Inicia la transmissió" i començarà la transmissió de vídeo en directe. Si feu clic a la casella de selecció "Floodlight", s'hauria d'encendre el LED del flaix integrat. Ves amb compte! ÉS BRILLANT!

Pas 2: Creeu el robot

Construeix el robot
Construeix el robot

Necessiteu un xassís de robot de dues rodes. Qualsevol ho farà. Munteu el xassís segons les instruccions del fabricant.

A continuació, connecteu el robot segons el diagrama. Deixeu les connexions de la bateria per ara.

El L293D s’utilitza per controlar els motors. Fixeu-vos que la mitja osca del xip és CAP A l’ESP32.

Normalment, es necessiten 6 pins a l'Arduino per controlar dos motors.

Aquest robot només requereix 4 pins i encara funciona completament.

Els pins 1 i 9 estan connectats a la font de 5V de l’Arduino, de manera que són permanentment ALTS. El cablejat del robot d’aquesta manera significa que necessitem dos pins menys a l’Arduino per controlar els motors.

En les direccions cap endavant, els pins INPUT s’estableixen a BAIX i els pins de modulació d’ona de pols del motor s’estableixen a valors entre 0 i 255 amb 0 que significa OFF i 255 que significa velocitat màxima.

En direccions inverses, els pins INPUT es defineixen a HIGH i els valors PWM s’inverteixen. 0 significa velocitat màxima i 255 apagat.

Descomprimiu i pengeu l'esbós d'ArduinoMotorControl a l'Arduino Nano.

Pas 3: HEY! Espera un segon! Per què necessito un Arduino Nano?

Probablement esteu pensant: "Ei! Hi ha almenys 4 pins d'E / S disponibles a la càmera ESP32. Per què no els puc utilitzar per controlar els motors?"

Bé, és cert, hi ha pins a l’ESP32 de la següent manera:

IO0: necessari per posar l'ESP32 en mode de programació

IO2: disponible

IO4: el LED de Flash

IO12, IO13, IO14, IO15, IO16: pins GPIO addicionals.

Si només carregueu un esbós bàsic a l’ESP32 per controlar els pins amb ordres PWM, funcionaran.

Tanmateix, un cop activeu les biblioteques CAMERA als vostres esbossos, aquests pins ja no estan disponibles.

Per tant, el més fàcil de fer és fer servir un Nano per controlar els motors mitjançant PWM i enviar les ordres des de l’ESP32 mitjançant comunicacions serials a través d’un cable (ESP32 U0T a Arduino Rx0) i GND. Molt simple.

Pas 4: connecteu el joystick USB (opcional)

Podeu conduir el robot enviant pulsacions de tecles a la pàgina web de la manera següent:

8 - Endavant

9 - Endavant dret

7 - Endavant esquerra

4 - Gireu cap a l'esquerra

5 - Parar

1 - Invertir a l'esquerra

2 - Revers

3 - Invertir a la dreta.

L'esbós del joystick USB tradueix les entrades del joystick en premudes de tecles i les envia a la interfície web que les reenvia a l'Arduino per conduir el robot.

Connecteu el joystick a l'Arduino LEONARDO de la següent manera:

Leonardo Joystick

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

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

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

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

Obriu l'esbós usbJoyStick, seleccioneu Arduino Leonardo com a tauler i pengeu-lo al Leonardo.

Si voleu provar-lo, només cal que obriu un editor de text a l'ordinador, feu clic amb el ratolí a la finestra i comenceu a moure el joystick. Hauríeu de veure els valors de l'1 al 9 a la finestra

Pas 5: VAM MONTAR

Preneu-vos una mica de temps i reviseu el cablejat per assegurar-vos que tot és correcte.

A continuació, connecteu les bateries de la següent manera.

1. Engegueu la càmera ESP32. Calen uns segons per iniciar el servidor web.

2. Enceneu l'Arduino Nano.

3. Enceneu els motors.

Inicieu el navegador i aneu a l'URL de l'ESP32.

Feu clic al botó Inicia la transmissió.

Feu clic amb el ratolí en algun lloc de la pantalla del navegador perquè la pantalla sigui el focus principal.

Comenceu a conduir el robot amb el joystick (o el teclat).

He comprovat que la mida de fotograma predeterminada funciona bé per emetre el vídeo en directe de manera bastant responsable per WiFi. Tanmateix, a mesura que augmenteu la mida del marc, la transmissió es tornarà més molesta perquè intenteu emetre imatges més grans.

Aquest és un projecte desafiant que us ofereix l’oportunitat de començar a treballar amb la transmissió de vídeo en directe i a conduir un robot per WiFi. Espero que us hagi agradat!

ARA VES I FES QUE ALGUNA MERAVELLA!

Actualització de gener de 2020: les darreres fotos mostren la versió final del robot, soldada amb força i muntada de manera segura al xassís.

Els tres commutadors frontals són els següents:

Esquerra: bateria d’alimentació del motor

Centre: bateria Arduino

Dreta: bateria de la càmera ESP32

Podria fer servir una gran bateria amb alguns transformadors de buck-boost (n’utilitzo una per a l’ESP32, que es troba a la part inferior dreta de la foto de la vista frontal), però per simplificar, només conservo les 3 bateries.

El robot ja és al punt d’accés

Em sembla molest demostrar aquest robot fora de casa, perquè la meva xarxa empresarial escolar no em permet connectar-hi el servidor web del robot. Com a solució, vaig investigar sobre l’ús de la funció de punt d’accés del servidor web ESP32. Es necessita una mica de treball, però requereix canvis força mínims a l’esbós principal del robot per fer que l’ESP32 emeti la seva pròpia adreça IP. No és tan potent com un concentrador wifi d'alta velocitat dedicat (de vegades es bloqueja si es mou massa ràpid), però funciona bastant bé i ara puc demostrar el robot a qualsevol lloc que vulgui sense haver de connectar-lo a una xarxa. Una vegada que el robot funcioni, proveu de convertir-lo a Access Point.

Pas 6: detalls de com es modifica el codi HTML / Javascript per al servidor web

Això no és necessari, però he rebut algunes sol·licituds.

He proporcionat aquest document de Google amb detalls sobre com utilitzar CyberChef per convertir d'anada i tornada entre HTML / Javascript i les representacions de matriu de bytes al fitxer camera_index.h.

Recomanat: