Tabla de contenido:
- Suministros
- Paso 1: programe la cámara ESP32
- Paso 2: construye el robot
- Paso 3: ¡HEY! ¡Espera un segundo! ¿Por qué necesito un Arduino Nano?
- Paso 4: Conecte el joystick USB (opcional)
- Paso 5: ¡VAMOS A MONTAR
- Paso 6: Detalles de cómo modificar el código HTML / Javascript para el servidor web
Video: Robot de cámara ESP32 - FPV: 6 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:40
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
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
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:
Cámara CCTV con módulo de cámara para portátil antiguo NodeMCU + (con y sin usar Blynk): 5 pasos
Cámara CCTV con módulo de cámara para portátil antiguo NodeMCU + (con y sin Blynk): ¡Hola, chicos! En este instructivo, les mostraré cómo usé el módulo de cámara de una computadora portátil vieja y el nodeMCU para hacer algo similar a CCTV
La cámara web más sencilla como cámara de seguridad: detección de movimiento e imágenes enviadas por correo electrónico: 4 pasos
Cámara web más sencilla como cámara de seguridad: detección de movimiento e imágenes enviadas por correo electrónico: ya no es necesario descargar o configurar el software para obtener imágenes de detección de movimiento desde su cámara web a su correo electrónico; simplemente use su navegador. Utilice un navegador Firefox, Chrome, Edge u Opera actualizado en Windows, Mac o Android para capturar la imagen
Reutilice un módulo de cámara web HP WebCam 101 Aka 679257-330 como una cámara web USB genérica: 5 pasos
Reutilice un módulo de cámara web HP WebCam 101 Aka 679257-330 como una cámara web USB genérica: quiero darle vida a mi Panasonic CF-18 de 14 años con una cámara web nueva, pero Panasonic ya no es compatible con esa maravillosa máquina, así que tengo que usa la materia gris para algo más fácil que b & b (cervezas y hamburguesas) .Esta es la primera parte
CÁMARA DE UNICORNIO - Cámara Raspberry Pi Zero W NoIR de 8 MP: 7 pasos (con imágenes)
CÁMARA DE UNICORNIO - Raspberry Pi Zero W NoIR 8MP Cámara Build: Pi Zero W NoIR 8MP Camera BuildThis Instructable fue creado para ayudar a cualquiera que quiera una cámara infrarroja o una cámara portátil realmente genial o una cámara portátil Raspberry Pi o simplemente quiera divertirse, jejeje . Este es el más asequible y configurab
Hacer una cámara espía con una cámara web: 6 pasos
Hacer una cámara espía con una webcam: Hola mi nombre es Sebastian y este es mi primer Instructable, mi ingles es malo por lo que un traductor usará para que quede lo mejor posible, entonces si mod o admin pueden corregirlo desde ya gracias ¡Muchas gracias! Bien por este proyecto, nosotros