Tabla de contenido:

Robot de cámara ESP32 - FPV: 6 pasos
Robot de cámara ESP32 - FPV: 6 pasos

Video: Robot de cámara ESP32 - FPV: 6 pasos

Video: Robot de cámara ESP32 - FPV: 6 pasos
Video: ESP32 Cam Wifi Camera Robot Car | Remote Control Android App ESP32-Cam Robot 2024, Noviembre
Anonim
Image
Image
Robot de cámara ESP32 - FPV
Robot de cámara ESP32 - FPV
Robot de cámara ESP32 - FPV
Robot de cámara ESP32 - FPV

El módulo de cámara ESP32 es un PLC potente y económico. ¡Incluso incluye reconocimiento facial!

¡Construyamos un robot de punto de vista en primera persona que maneja a través de una interfaz web integrada!

Este proyecto utiliza el módulo Geekcreit ESP32 con la cámara OV2640. Está basado en el módulo AIThinker.

Hay muchos clones diferentes de la cámara ESP32 por ahí. Algunos funcionan, otros no. Le sugiero que use el mismo módulo que yo para tener una buena oportunidad de tener éxito.

El robot funciona de la siguiente manera.

El ESP32 transmite una URL web a su red que presenta la transmisión de video en vivo con algunas casillas de verificación para operar algunas funciones de la cámara. También recibe pulsaciones de teclas enviadas a la página web desde el teclado que son comandos direccionales para el robot. Es posible que desee construir el protector del joystick USB para poder conducir el robot con el joystick en lugar de escribir comandos del teclado.

Cuando el ESP32 recibe pulsaciones de teclas, envía esos bytes al Arduino Nano, que luego impulsa los motores para hacer que el robot se mueva.

Este proyecto es de dificultad moderada-alta. Por favor toma tu tiempo.

¡Empecemos!

Suministros

  • Módulo de cámara ESP-32 con cámara OV2640: recomendaría el producto Geekcreit
  • Antena a presión externa para el ESP-32 para maximizar la intensidad de la señal
  • Arduino Nano
  • Arduino Leonardo para el módulo Joystick (necesitamos emulación de teclado USB proporcionada por Leonardo)
  • Módulo de joystick genérico
  • Chip de puente H cuádruple L293D
  • Coverter DC-DC Buck con salida de 5V para alimentar el ESP32
  • Adaptador serial FTDI para programar el ESP32
  • Un chasis de robot genérico con dos motorreductores: cualquier chasis funcionará. Se recomiendan motores de 3 a 6 V
  • 2 baterías LiPo de 7.4V 1300mAh (o similar) para alimentar el ESP32 y los motores
  • 1 x batería de 9V para alimentar el Arduino Nano

Paso 1: programe la cámara ESP32

Programar la cámara ESP32
Programar la cámara ESP32
Programar la cámara ESP32
Programar la cámara ESP32

Usando una placa de prueba, conecte su cámara ESP32 al adaptador FTDI de la siguiente manera:

FTDI ESP32

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

TIERRA ----------- TIERRA

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

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

Además, conecte el pin IO0 ("ojo-cero-cero") a GND. Debe hacer esto para poner el ESP32 en modo de programación.

Descomprima el archivo esp32CameraWebRobotforInstructable.zip.

Hay 4 archivos en este proyecto:

esp32CameraWebRobotforInstructable.ino es el boceto de Arduino.

ap_httpd.cpp es el código que administra el servidor web y se ocupa de configurar las funciones de la cámara desde la página web y recibir pulsaciones de teclas desde la página web.

camera_index.h contiene el código HTML / JavaScript para la aplicación web como matrices de bytes. La modificación de la aplicación web está mucho más allá del alcance de este proyecto. Incluiré un enlace sobre cómo modificar el HTML / JavaScript más adelante.

camera_pins.h es el archivo de encabezado correspondiente a la configuración de pines de la cámara ESP32.

Para poner el ESP32 en modo de programación, debe conectar IO0 ("ojo-oh-cero") a tierra.

Inicie su Arduino IDE y vaya a Tools / Boards / Boards Manager. Busque esp32 e instale la biblioteca esp32.

Abra el proyecto en su Arduino IDE.

Ponga la ID de red de SU enrutador y SU contraseña en las líneas resaltadas en la imagen de arriba. Guarde el proyecto.

Vaya al menú Herramientas y haga las selecciones como se muestra en la imagen de arriba.

Tablero: ESP32 Wrover

Velocidad de carga: 115200

Esquema de partición: "APP enorme (3 MB sin OTA)"

y elija el puerto al que está conectado su adaptador FTDI.

Haga clic en el botón "Subir".

Ahora, a veces, el ESP32 no comienza a cargarse. Así que esté listo para presionar el botón RESET en la parte posterior del ESP32 cuando comience a ver los… ---… caracteres aparecer en la consola durante la carga. Entonces comenzará a cargarse.

Cuando vea 'presione RST' en la consola, la carga está completa.

DESCONECTE IO0 del suelo. Desconecte la línea de 3.3V entre el adaptador FTDI y el ESP32.

La cámara ESP32 requiere mucha corriente para funcionar bien. Conecte un adaptador de corriente de 5V 2A a los pines 5V y GND en el ESP32.

Abra el Monitor en serie, establezca la velocidad en baudios en 115200 y luego observe cómo se reinicia el ESP32. Finalmente, verá la URL del servidor.

Vaya a su navegador e ingrese la URL. Cuando se cargue el sitio web, haga clic en el botón 'Iniciar transmisión' y la transmisión de video en vivo debería comenzar. Si hace clic en la casilla de verificación 'Floodlight', el LED de flash integrado debería encenderse. ¡Cuidado! ¡ES LUMINOSO!

Paso 2: construye el robot

Construye el Robot
Construye el Robot

Necesita un chasis de robot de dos ruedas. Cualquiera servirá. Ensamble el chasis según las instrucciones del fabricante.

Luego, conecte el robot según el diagrama. Deje las conexiones de la batería por ahora.

El L293D se utiliza para controlar los motores. Observe que la media muesca en el chip está HACIA el ESP32.

Por lo general, se necesitan 6 pines en el Arduino para controlar dos motores.

Este robot solo requiere 4 pines y aún funciona completamente.

Los pines 1 y 9 están conectados a la fuente de 5 V del Arduino, por lo que están permanentemente ALTOS. Conectar el robot de esta manera significa que necesitamos dos pines menos en el Arduino para controlar los motores.

En las direcciones de avance, los pines de ENTRADA se establecen en BAJO y los pines de Modulación de Onda de Pulso del motor se establecen en valores entre 0 y 255, donde 0 significa APAGADO y 255 significa velocidad máxima.

En sentido inverso, los pines INPUT se establecen en HIGH y los valores de PWM se invierten. 0 significa velocidad máxima y 255 significa apagado.

Descomprima y cargue el boceto de ArduinoMotorControl en Arduino Nano.

Paso 3: ¡HEY! ¡Espera un segundo! ¿Por qué necesito un Arduino Nano?

Probablemente esté pensando, "¡Oye! Hay al menos 4 pines IO disponibles en la cámara ESP32. ¿Por qué no puedo usarlos para controlar los motores?"

Bueno, es cierto, hay pines en el ESP32 de la siguiente manera:

IO0: necesario para poner el ESP32 en modo de programación

IO2 - disponible

IO4 - el LED Flash

IO12, IO13, IO14, IO15, IO16: pines GPIO adicionales.

Si solo carga un boceto básico en el ESP32 para controlar los pines con comandos PWM, funcionan.

SIN EMBARGO, una vez que activa las bibliotecas CAMERA en sus bocetos, estos pines ya no están disponibles.

Entonces, lo más fácil de hacer es usar un Nano para controlar los motores a través de PWM y enviar los comandos desde el ESP32 mediante comunicaciones en serie a través de un cable (ESP32 U0T a Arduino Rx0) y GND. Muy simple.

Paso 4: Conecte el joystick USB (opcional)

Puede conducir el robot enviando pulsaciones de teclas a la página web de la siguiente manera:

8 - Adelante

9 - Adelante a la derecha

7 - Adelante a la izquierda

4 - Girar a la izquierda

5 - Detener

1 - Invertir a la izquierda

2 - Reversa

3 - Retroceso a la derecha.

El boceto del joystick USB traduce las entradas del joystick en pulsaciones de teclas y las envía a la interfaz web que las reenvía al Arduino para conducir el robot.

Conecte el joystick al Arduino LEONARDO de la siguiente manera:

Palanca de mando de Leonardo

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

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

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

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

Abra el boceto de usbJoyStick, seleccione Arduino Leonardo como placa y cárguelo en el Leonardo.

Si desea probarlo, simplemente abra un editor de texto en su computadora, haga clic con el mouse en la ventana y comience a mover el joystick. Debería ver los valores del 1 al 9 que se muestran en la ventana

Paso 5: ¡VAMOS A MONTAR

Tómese un tiempo y revise el cableado para asegurarse de que todo esté correcto.

A continuación, conecte sus baterías de la siguiente manera.

1. Encienda la cámara ESP32. Se necesitan unos segundos para iniciar el servidor web.

2. Encienda el Arduino Nano.

3. Encienda los motores.

Inicie su navegador y vaya a la URL del ESP32.

Haga clic en el botón Iniciar transmisión.

Haga clic con el mouse en algún lugar de la pantalla del navegador para que la pantalla sea ahora el foco.

Empiece a conducir su robot con el joystick (o el teclado).

Descubrí que el tamaño de fotograma predeterminado funciona bien para transmitir el video en vivo de manera bastante receptiva a través de WiFi. Sin embargo, a medida que aumente el tamaño de fotograma, la transmisión se volverá más entrecortada porque está tratando de transmitir imágenes más grandes.

Este es un proyecto desafiante que le brinda la oportunidad de comenzar a trabajar con transmisión de video en vivo y conducir un robot a través de WiFi. ¡Espero que les haya resultado divertido!

¡AHORA VAYA Y HAGA ALGO MARAVILLOSO!

Actualización de enero de 2020: las últimas fotos muestran la versión final del robot, soldado y montado de forma segura en el chasis.

Los tres interruptores montados en la parte frontal son los siguientes:

Izquierda: batería de potencia del motor

Centro - batería Arduino

Derecha: batería de la cámara ESP32

Podría usar una batería grande con algunos transformadores buck-boost (uso uno para el ESP32, está en la parte inferior derecha de la foto de la vista frontal), pero en aras de la simplicidad, solo me quedo con las 3 baterías.

¡Robot ahora en Access Point

Me resulta engorroso demostrar este robot fuera de mi casa porque la red empresarial de mi escuela no me permite conectarle el servidor web del robot. Como solución, investigué sobre el uso de la función de punto de acceso del servidor web ESP32. Se necesita algo de trabajo, pero requiere cambios bastante mínimos en el boceto del robot principal para que el ESP32 transmita su propia dirección IP. No es tan poderoso como un concentrador wifi de alta velocidad dedicado (a veces se cuelga si te mueves demasiado rápido), pero funciona bastante bien y ahora puedo demostrar el robot en cualquier lugar que quiera sin tener que conectarlo a una red. Una vez que el robot funcione, intente convertirlo usted mismo en un punto de acceso.

Paso 6: Detalles de cómo modificar el código HTML / Javascript para el servidor web

Esto no es necesario, pero he tenido algunas solicitudes.

Proporcioné este documento de Google con detalles sobre cómo usar CyberChef para convertir entre HTML / Javascript y las representaciones de matriz de bytes en el archivo camera_index.h.

Recomendado: