Tabla de contenido:
- Suministros
- Paso 1: Coche robot móvil
- Paso 2: Coche robot móvil - Diagrama de circuito
- Paso 3: Coche robot móvil - Montaje (motores)
- Paso 4: Coche robot móvil - Montaje (sensor de distancia)
- Paso 5: Coche robot móvil - Montaje (ESP32 CAM)
- Paso 6: Carro robot móvil - Montaje (dispensador de chips)
- Paso 7: Coche robot móvil - Montaje (¡Cookies!)
- Paso 8: Coche robot móvil - Código Arduino
- Paso 9: Coche robot móvil - Código ESP32
- Paso 10: Dispensador de virutas
- Paso 11: Joystick
- Paso 12: Joystick - Diagrama de circuito
- Paso 13: Joystick - Emulador de teclado
- Paso 14: Comunicación de red
- Paso 15: Poniéndolo todo junto
Video: Robot de presencia virtual: 15 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:40
Este robot móvil interactúa con su entorno físico, al representar la "presencia virtual" de la persona que lo controla de forma remota. Cualquier persona, en cualquier parte del mundo, puede acceder a él para dispensar golosinas y jugar contigo.
El trabajo aquí es desarrollado por dos personas (una en Alemania y otra en los EE. UU.) Como un intento de ir más allá de los medios tradicionales de comunicación basada en Internet mediante la creación de una interfaz física para la interacción remota. A medida que COVID-19 continúa afectando al mundo y todos son responsables de limitar nuestra exposición física a las personas, intentamos recuperar la conexión tangible que es parte de la interacción física.
Está basado en ESP32-Camera-Robot-FPV-Teacher-Entry Instructable y modificado para incluir sensor de distancia, dispensador de golosinas y capacidad de "control desde cualquier parte del mundo", siempre que tenga una conexión a Internet algo estable.
Suministros
El proyecto consta de 4 partes principales: un coche robot móvil, un dispensador de chips, un joystick y la configuración de la comunicación de red.
Coche robot móvil
- Tablero de circuitos
- Kit de robot de chasis y motor de tracción en 2 ruedas (incluye ruedas, motores de CC, placa de montaje y tornillos)
- Arduino Mega 2560 (si construye sin el sensor de distancia o el Dispensador de chips, uno tendrá suficientes pines)
- (3) Baterías de 9V (tenga algunas más alrededor ya que las agotará al depurarlas)
- Módulo de fuente de alimentación LM2596 Regulador DC / DC Buck 3A (o similar)
- Módulo Wifi ESP32-CAM
- Convertidor serial FT232RL FTDI USB a TTL (para programar el ESP32-CAM)
- Sensor de distancia ultrasónico HC-SR04
- Controlador de motor L298N
- (3) LEDS (cualquier color)
- (3) Resistencias de 220 ohmios
Dispensador de virutas
- (2) Servos SG90
- Cartón / Cartón
Palanca de mando
- Arduino Uno
- Módulo de joystick
- Mini protoboard, (1) LED, (1) Resistencia de 220 ohmios (opcional)
Otro
Un montón de cables de puente de placa de pruebas Cartón extra / Cartón Cinta Tijeras Regla / Cinta métrica Destornillador Philips pequeño Destornillador plano pequeño
Paciencia =)
Paso 1: Coche robot móvil
El chasis del Robot Car sirve como una plataforma móvil, con un Arduino MEGA como el microcontrolador principal que impulsa los motores, lee los valores de los sensores y acciona los servos. La mayoría de las acciones se realizan haciendo que Arduino MEGA reciba comandos a través de la comunicación en serie, enviados desde el ESP32-CAM. Si bien ESP32 proporciona transmisión en vivo de la cámara para controlar el robot, su otra función es administrar una conexión inalámbrica entre el robot y el servidor, lo que permite a los usuarios controlarlo desde cualquier parte del mundo. El ESP32 recibe comandos de la página web mediante la pulsación de teclas y los envía al Arduino MEGA como valores de caracteres. Según el valor recibido, el automóvil avanzará, retrocederá, etc. Debido a que el control remoto a través de Internet depende de muchos factores externos, incluida la alta latencia, la mala calidad de la transmisión e incluso las desconexiones, se incorpora un sensor de distancia para evitar que el robot se bloquee en objetos. * Debido a los requisitos de energía altos y fluctuantes del chip ESP32, se recomienda un regulador de suministro de energía para usar con energía de batería (ver diagrama de cableado).
Paso 2: Coche robot móvil - Diagrama de circuito
Lo guiaremos en el montaje de este paso a paso.
Paso 3: Coche robot móvil - Montaje (motores)
Después de ensamblar el chasis 2WD, comenzamos conectando los motores y la batería al Arduino MEGA a través del controlador L298N.
Paso 4: Coche robot móvil - Montaje (sensor de distancia)
Como hay bastantes componentes para conectar, agreguemos una placa de pruebas, para que podamos conectar la energía y la tierra compartida más fácilmente. Después de reorganizar los cables, conecte el sensor de distancia y fíjelo en la parte frontal del robot.
Paso 5: Coche robot móvil - Montaje (ESP32 CAM)
A continuación, conecte el módulo ESP32-CAM y fíjelo junto al sensor de distancia cerca de la parte frontal del robot. Recuerde que este componente que consume mucha energía requiere su propia batería y un regulador de CC.
Paso 6: Carro robot móvil - Montaje (dispensador de chips)
Ahora, agreguemos el dispensador de chips (más sobre esto en la sección "Dispensador de chips"). Conecte los dos servos de acuerdo con el diagrama de Fritzing y fije el dispensador en la cola del robot.
Paso 7: Coche robot móvil - Montaje (¡Cookies!)
¡Finalmente, agregamos golosinas al dispensador!
Paso 8: Coche robot móvil - Código Arduino
RobotCar_Code es el código que necesitará cargar en Arduino Mega.
Así es como funciona: el Arduino escucha los bytes que se envían desde el ESP32 a través de la comunicación en serie en la banda 115200. Según el byte recibido, el automóvil se moverá hacia adelante, hacia atrás, hacia la izquierda, hacia la derecha, etc. enviando un voltaje ALTO o BAJO a los motores para controlar la dirección, así como una variable PWM entre 0-255 para controlar la velocidad. Para evitar colisiones, este código también lee los valores provenientes del sensor de distancia y si la distancia es menor que un umbral especificado, el robot no avanzará. Por último, si el Arduino recibe un comando para dispensar una golosina, activará los servos en el Dispensador de chips.
Paso 9: Coche robot móvil - Código ESP32
El ESP32 permite la comunicación entre el servidor y Arduino a través de Wifi. Está programado por separado del Arduino y tiene su propio código:
- ESP32_Code.ino es el código para que ESP32 envíe información al Arduino
- app_httpd.cpp es el código necesario para el servidor web ESP32 predeterminado y configura la función para escuchar las pulsaciones de teclas. Bueno para depurar y probar en wifi local. No se utiliza para comunicaciones fuera de la red local.
- camera_index.h es el código html de la aplicación web predeterminada
- camera_pins.h define los pines según el modelo ESP32
El código ESP32 usa la biblioteca Wifi, así como el complemento ESP32, que se puede instalar en el IDE de Arduino siguiendo estos pasos:
- En el IDE de Arduino, vaya a Archivo> Preferencias
- Luego, en la pestaña Configuración en la URL del Administrador de tableros adicionales, ingrese el siguiente "https://dl.espressif.com/dl/package_esp32_index.json"
- Ahora abra el Administrador de tableros y vaya a Herramientas> Tablero> Administrador de tableros y busque el ESP32 escribiendo "ESP32"
- Debería ver "esp32 de Espressif Systems". Haga clic en Instalar.
- Ahora debería instalarse el complemento ESP32. Para comprobarlo, vuelva al IDE de Arduino y vaya a Herramientas> Placa y seleccione el "Módulo Wrover ESP32".
- Vaya nuevamente a Herramientas> Velocidad de carga y configúrelo en "115200".
- Por último, vaya a Herramientas> Esquema de partición y configúrelo en "Aplicación enorme (3 MB sin OTA / 1 MB SPIFFS)
- Una vez que haya completado esto, le recomiendo seguir este tutorial de RandomNerdTutorials que explica en detalle cómo finalizar la configuración del ESP32 y cargar el código con el programador FTDI.
Paso 10: Dispensador de virutas
El dispensador de chips es una adición económica al robot móvil que le permite afectar el entorno local e interactuar con personas / animales dejando un sabroso manjar. Consiste en una caja exterior de cartón con 2 servos montados en el interior, así como un cartucho de cartón interior que contiene elementos (como caramelos o golosinas para perros) para dispensar. Un servo actúa como una puerta mientras que el otro empuja el elemento hacia afuera.
*Todas las dimensiones están en milímetros
Paso 11: Joystick
Si bien puede ser divertido controlar un robot con el teclado, es aún más divertido e intuitivo usar un joystick, donde el robot reacciona directamente en función de la dirección que empuja. Dado que este robot se acciona mediante pulsaciones de teclas grabadas en la página web, necesitábamos nuestro joystick para emular un teclado. De esta manera, los usuarios sin un joystick aún pueden controlar el robot directamente desde un teclado, pero otros pueden usar el joystick.
Para esto, solo teníamos un Arduino Uno que no tiene la capacidad de usar la biblioteca, por lo que lo programamos directamente usando un protocolo USB conocido como Actualización de firmware de dispositivo (DFU) que permite que el arduino se actualice con un firmware de teclado HID USB genérico.. En otras palabras, cuando el arduino se conecta al usb ya no se reconoce como un arduino sino como un teclado.
Paso 12: Joystick - Diagrama de circuito
Así es como conectamos el joystick.
Paso 13: Joystick - Emulador de teclado
Para que su Arduino Uno emule un teclado, debe programar directamente el chip Atmega16u2 en el Arduino a través de una Actualización manual del firmware del dispositivo (DFU). Los siguientes pasos describirán el proceso para una máquina con Windows y, con suerte, lo ayudarán a evitar algunos de los problemas con los que nos encontramos.
El primer paso es escribir manualmente el controlador USB de Atmel en el Arduino para que se reconozca como un USB y no como un Arduino, lo que permite que se actualice con el programador FLIP.
- Descargue el programador FLIP de Atmel desde aquí
- Conecte su Arduino Uno
- Vaya al Administrador de dispositivos y busque el Arduino. Estará bajo COM o Dispositivo desconocido. Conéctelo y desconéctelo para asegurarse de que sea el dispositivo correcto.
- Una vez que haya encontrado el Arduino Uno en el Administrador de dispositivos, haga clic con el botón derecho y seleccione propiedades> Controlador> Actualizar controlador> Buscar software de controlador en mi computadora> Permítame elegir de una lista de controladores disponibles en mi computadora> Utilizar disco> Buscar el archivo "atmel_usb_dfu.inf" y selecciónelo. Debe estar en la carpeta donde se instaló el programador FLIP de Atmel. En mi computadora está aquí: C: / Archivos de programa (x86) Atmel / Flip 3.4.7 / usb / atmel_usb_dfu.inf
- Instale el controlador
- ¡Ahora regrese al Administrador de dispositivos, debería ver un "Dispositivos USB Atmel" con el Arduino Uno ahora etiquetado como ATmega16u2!
Ahora que la computadora reconoce el Arduino Uno como un dispositivo USB, podemos usar el programador FLIP para actualizarlo con 3 archivos separados y convertirlo en un teclado.
Si desenchufó su Arduino Uno después de la primera parte, vuelva a enchufarlo.
- Abrir FLIP
- Reinicie el Arduino Uno conectando brevemente la energía a tierra.
- Haga clic en Selección de dispositivo (icono como un microchip) y seleccione ATmega16U2
- Haga clic en Seleccionar un medio de comunicación (icono como un cable USB) y seleccione USB. Si completó la primera parte correctamente, los otros botones en gris deberían poder utilizarse.
- Vaya a Archivo> Cargar archivo hexadecimal> y cargue el archivo Arduino-usbserial-uno.hex
- En la ventana FLIP debería ver tres secciones: Flujo de operaciones, Información del búfer FLASH y ATmega16U2. En el Flujo de operaciones, marque las casillas para Borrar, Programar y Verificar, luego haga clic en Ejecutar.
- Una vez que se complete este proceso, haga clic en Iniciar aplicación en la sección ATmega16U2.
- Conecte el ciclo del arduino desenchufándolo de la computadora y volviéndolo a enchufar.
- Reinicie el Arduino Uno conectando brevemente la energía a tierra.
- Abra el IDE de Arduino y cargue el archivo JoyStickControl_Code.ino en la placa.
- Conecte el ciclo del arduino desenchufándolo de la computadora y volviéndolo a enchufar.
- Reinicie el arduino conectando brevemente la energía a tierra.
- Vuelva a FLIP, asegúrese de que la Selección de dispositivo diga Atmega16U2
- Haga clic en Seleccionar un medio de comunicación y seleccione USB.
- Vaya a Archivo> Cargar archivo hexadecimal> y cargue el archivo Arduino-keyboard-0.3.hex
- En la ventana FLIP debería ver tres secciones: Flujo de operaciones, Información del búfer FLASH y ATmega16U2. En el Flujo de operaciones, marque las casillas para Borrar, Programar y Verificar, luego haga clic en Ejecutar.
- Una vez que se complete este proceso, haga clic en Iniciar aplicación en la sección ATmega16U2.
- Conecte el ciclo del arduino desenchufándolo de la computadora y volviéndolo a enchufar.
- Ahora, cuando vaya al Administrador de dispositivos, debería haber un nuevo Dispositivo de teclado HID en Teclados.
- Abra un bloc de notas o cualquier editor de texto y comience a mover el joystick. ¡Debería ver los números que se escriben!
Si desea cambiar el código en el boceto de Arduino, por ejemplo, escribiendo nuevos comandos en el joystick, deberá actualizarlo con los 3 archivos cada vez.
Algunos enlaces útiles: Arduino DFUAtLibUsbDfu.dll no encontrado
Este emulador de teclado se basa en este tutorial de Michael el 24 de junio de 2012.
Paso 14: Comunicación de red
Para recibir transmisión de video y enviar comandos al robot desde cualquier parte del mundo, necesitamos una forma de obtener datos desde y hacia la ESP32-CAM. Esto se hace en dos partes, un controlador de conexión en su red local y un servidor público. Descarga los tres archivos para lograrlo:
- Handlers.py: transmite información de ESP32-CAM y el servidor público (probado en Python 3.8)
- Flask_app.py: define cómo responde su aplicación a las solicitudes entrantes.
- Robot_stream.html: procesa video en su navegador y escucha los comandos a través del teclado / joystick (probado en Chrome)
Controlador de conexión Puede codificar esto directamente en app_httpd.cpp, pero para una depuración más sencilla usamos un script de Python que se ejecuta en una PC conectada a la misma red. Abra handlers.py y actualice la dirección IP y el nombre de usuario a los suyos, y estará listo para comenzar. La transmisión comenzará cuando ejecute este archivo.
Servidor público Para acceder a todo en Internet, puede iniciar un servidor con una PaaS de su elección. En pythonanywhere (PA), la configuración toma menos de 5 minutos:
- Regístrese para obtener una cuenta e inicie sesión
- Vaya a la pestaña "Web" y presione "Agregar una nueva aplicación web", elija Flask y Python 3.6
- Copie flask_app.py en el directorio / mysite
- Copie robot_stream.html en el directorio / mysite / templates
- Haga clic en "Recargar"
Y … ¡ya está todo listo!
Descargo de responsabilidad: este flujo de trabajo de redes es rápido y simple, pero está muy lejos de ser ideal. RTMP o sockets serían más apropiados para la transmisión, pero no son compatibles con PA y requieren algo de experiencia con la configuración de redes y servidores. También se recomienda que agregue algún mecanismo de seguridad para controlar el acceso.
Paso 15: Poniéndolo todo junto
Ahora, encienda su robot, ejecute handlers.py en una computadora (conectada a la misma red que el robot) y podrá controlar el robot desde un navegador basado en la URL que configuró desde cualquier lugar que desee. (por ejemplo,
Recomendado:
Detector de presencia de cama Zigbee: 8 pasos
Detector de presencia de cama Zigbee: desde hace algún tiempo estaba buscando una forma de detectar cuándo estamos en la cama. Esto por usar esta información en Homeassistant. Con esta información podría hacer automatizaciones para apagar las luces por la noche o por ejemplo activar un sistema de alarma en mi casa
Vídeo Tutoriales De Tecnologías Creativas 05: ¿Hacemos Un Detector De Presencia? ¡Por Supuesto !: 4 Pasos
Vídeo Tutoriales De Tecnologías Creativas 05: ¿Hacemos Un Detector De Presencia? ¡Por Supuesto !: En este tutorial vamos a aprender como hacer un detector de presencia con un sensor de ultrasonidos sobre una placa Arduino Uno y utilizando Tinkercad Circuits (utilizando una cuenta gratuita)
Sensor de presencia: 12 pasos
Sensor de presencia: los wearables suelen ser dispositivos habilitados para BLE. Es común que publiquen periódicamente algunos datos a lo largo de su dirección MAC. Usamos un ESP para escanear estos datos y activar un evento a través de Internet cuando encuentra una dirección MAC específica. Este particular
Simulador de presencia en el hogar y dispositivo de control de seguridad: 6 pasos (con imágenes)
Simulador de presencia en el hogar y dispositivo de control de seguridad: Este proyecto nos permite simular presencia y detectar movimientos en nuestro hogar.Podemos configurar una red de dispositivos instalados en diferentes estancias de nuestro hogar todos ellos controlados por un dispositivo principal.Este proyecto combina estos funciones en una sola d
Sensor de presencia de cama con SONOFF: 8 pasos (con imágenes)
Sensor de presencia en cama con SONOFF: ¡Bienvenido a este tutorial! Requisitos previos Este procedimiento requiere que tenga algunos conocimientos de sonoff y tasmota. Si nunca destellaste un sonoff con tasmota, primero debes aprender a hacerlo y luego solo tú podrás construirlo. Si no sabes sonof