Joy Robot: Robot Inteligente con Arduino y ESP8266
Componentes y Suministros
| Componente | Cantidad |
|---|---|
| Arduino UNO | 1 |
| Espressif ESP8266 ESP-01 | 1 |
| Servomotor SG90 | 6 |
| Motor DC con reductor y ruedas de goma | 2 |
| Controlador Puente H L298N | 1 |
| Controlador PWM/Servo 16 Canales PCA9685 (I2C) | 1 |
| Pantalla LED 8x8 MAX7219 | 4 |
| Controlador Dual Puente H L298 (SparkFun) | 1 |
| Batería 18650 | 2 |
| Portabaterías 18650 | 2 |
| Shield Proto para Arduino | 1 |
| Diodo 1N4001 | 1 |
| Resistencia 10k ohm | 3 |
Herramientas Necesarias
- Impresora 3D
Aplicaciones y Servicios Online
- Autodesk Fusion 360 (diseño 3D)
- Arduino IDE
- Android SDK
Sobre el Proyecto
Primer premio en el Instructables Wheel Contest, segundo premio en el Arduino Contest y finalista en el Design for Kids Challenge. ¡Gracias a todos los que votaron!
Los robots están en todas partes: industria, exploración submarina y espacial. Pero mis favoritos son los de entretenimiento. En este proyecto se diseñó un robot DIY para llevar diversión a hospitales infantiles, enfocado en compartir conocimiento y promover innovación tecnológica para ONGs que realizan trabajo benéfico.
Este tutorial muestra cómo diseñar un robot humanoide de telepresencia, controlado por Wi-Fi, usando un Arduino Uno conectado a un módulo ESP8266. Usa servomotores para cabeza y brazos, motores DC para movimiento, y una cara hecha de matrices LED. Se controla desde un navegador web mediante una interfaz HTML. Un smartphone Android transmite video y audio al operador.
El tutorial cubre impresión 3D y ensamblaje de la estructura, esquemas electrónicos y código Arduino detallado para que cualquiera pueda replicarlo.
Tutoriales Relacionados
- Robot FPV controlado por Wi-Fi
- Control de array de matrices LED
- Servomotores controlados por navegador Wi-Fi
Equipo
- Thiago Farauche
- Diego Augustus
- Yhan Christian
- Helam Moreira
- Paulo de Azevedo Jr.
- Guilherme Pupo
- Ricardo Caspirro
- ASEBS
Más Información
Paso 1: Un Poco de Historia
El proyecto "Robô da Alegria" (Robot de la Alegría) nació en 2016 en la región de Baixada Santista (Brasil), con el objetivo de desarrollar tecnología y atraer a la comunidad al movimiento maker. Inspirado en proyectos voluntarios de ONGs en hospitales infantiles, busca desarrollar un robot con hardware y software abierto que lleve diversión a niños hospitalizados.
La semilla se plantó a finales de 2015, tras una charla de la Asociación de Startups de Baixada Santista (ASEBS). Se idealizó un proyecto sin premio económico, pero que involucrara a la gente de forma altruista para ayudar a otros.
El robot ha pasado por diversas transformaciones: de una sola cabeza con ojos y cejas mecánicas a su forma humanoide actual. Se probaron distintos materiales y electrónica: prototipo acrílico, MDF cortado láser, y finalmente cuerpo impreso en 3D. De una interfaz simple con 2 servos por Bluetooth, a 6 servomotores y 2 motores DC controlados por interfaz web Wi-Fi.
La estructura se imprime completamente en 3D con Fusion 360. Para permitir réplicas en makerspaces donde el tiempo de impresora es limitado, el diseño se dividió en piezas de menos de 3 horas de impresión cada una. Las piezas se pegan o atornillan.
La cara, con arrays LED, da al robot capacidad de expresar emociones. Brazos y cuello con servomotores dan movilidad para interacción. En el centro de control, un Arduino Uno gestiona todos los periféricos, incluido el ESP8266 para comandos por Wi-Fi desde cualquier dispositivo en la red.
El robot lleva un smartphone en el pecho para transmisión de audio/video entre operador y niños. La pantalla también sirve para juegos e interacción.
Paso 2: Herramientas y Materiales
Herramientas
- Impresora 3D - Todo el cuerpo se imprime en 3D. Se necesitan muchas horas de impresión.
- Filamento PLA - Blanco y negro para el cuerpo.
- Destornillador - La mayoría de piezas se unen con tornillos.
- Superglue - Algunas piezas se pegan.
- Alicates y cortadores
- Soldador e hilo
Electrónica
- Arduino Uno - Controlador principal. Envía señales a motores y comunica con módulo WiFi.
- ESP8266-01 - "Módem WiFi". Recibe señales de la interfaz para el Arduino.
- Servomotores SG90 (x6) - 4 para brazos, 2 para cabeza.
- Motores DC con reductor y ruedas (x2) - Movimiento a corta distancia.
- L298N doble puente H (x1) - Convierte salidas digitales del Arduino en potencia para motores.
- Controlador 16 canales servo (PCA9685) - Controla varios servos con solo 2 salidas del Arduino.
- Pantalla MAX7219 8x8 (x4) - Cara del robot.
- Cable Micro USB - Para subir código.
- Cables jumper hembra-hembra y macho-hembra
- Smartphone - Motorola Moto E 4.3" (otros tamaños similares valen).
- Batería 18650 (x2) - Alimentan Arduino y periféricos.
- Portabaterías 18650 (x2)
- Diodos 1N4001 (x2)
- Resistencias 10k ohm (x3)
- Interruptor on/off 20mm (x1)
- ProtoShield - Facilita el cableado.
Mecánica
- Ruedas locas (x2)
- Tornillos M2x6mm (~70)
- Tornillos M2x10mm (~20)
- Tuercas M2x1.5mm (x10)
- Tornillos M3x40mm (x4)
- Tuercas M3x1.5mm (x4)
Los enlaces son sugerencias. Busca en tu tienda local u online favorita.
Paso 3: Impresión 3D
El modelo tiene 36 piezas distintas. La mayoría se imprime sin soportes, con 10% de relleno.
- Cabeza superior (der/izq)
- Cabeza inferior (der/izq)
- Tapas laterales cabeza (der/izq)
- Placa trasera cara
- Placa frontal cara
- Eje cuello 1, 2, 3
- Centro cuello
- Brazo (der/izq)
- Hombro (der/izq)
- Copa hombro (der/izq)
- Tapa hombro (der/izq)
- Eje brazo (der/izq)
- Busto (der/izq)
- Pecho (der/izq/frontal)
- Ruedas (der/izq)
- Base
- Soporte teléfono
- Espalda (der/izq)
- Pomos (der/izq)
- Cierres (der/izq)
Archivos STL en:
Problemas conocidos (prototipo experimental):
- Interferencia entre cableado de servos y hombro
- Rozamiento entre cabeza y busto
- Rozamiento entre ruedas y estructura
- Algunos agujeros de tornillos muy justos, requieren taladrado
Si no tienes impresora 3D: pídele a un amigo, busca un makerspace cercano, o compra una (Anet A8 ~$165). Si hay interés, se podría ofrecer kit DIY en Tindie.
Paso 4: Visión General de Circuitos
El robot usa Arduino Uno como núcleo. Interfaza con ESP8266-01 para control remoto por Wi-Fi.
- Controlador 16 canales servo (I2C) → 6 servomotores (2 cuello, 4 brazos)
- Array de 4 matrices LED 8x8 (MAX7219) controladas por Arduino
- 4 salidas digitales → 2 motores DC vía puente H
Alimentación: dos power banks USB (uno para motores, otro para Arduino). Intenté una sola fuente pero el ESP8266 perdía conexión por picos al arrancar/parar motores DC.
El smartphone en el pecho transmite audio/video a la interfaz de control en PC. También puede enviar comandos al ESP8266 controlando el cuerpo.
Nota: Los componentes no son óptimos (NodeMCU o Raspberry Pi serían mejores), pero Arduino Uno era lo más accesible y barato cuando empezamos.
Paso 5: Ensamblaje de la Cara
Cuatro matrices LED 8x8. Estructura en dos partes (placa trasera y frontal) en PLA negro, ~2.5h impresión, 10% relleno, sin soportes.
Por espacio, los conectores de las matrices se desoldan y resoldan al otro lado del PCB con pines hacia el centro.
Se atornillan a la placa trasera (16 tornillos M2x6mm). Conexión según esquemático: primera matriz con jumper macho-hembra a pines Arduino; salidas encadenadas con jumpers hembra-hembra. Se coloca la placa frontal (4 tornillos M2) y se recogen cables.
Paso 6: Montaje de la Cabeza
Cabeza en 8 piezas (PLA blanco, 0.2mm, 10% relleno, sin soportes): tapa superior/inferior (der/izq), tapas laterales (der/izq), eje cuello 1 y 2. ~18h impresión (diámetro 130mm).
Partes superior/inferior se pegan con superglue. Tapas laterales se atornillan a los lados (desmontable quitando tornillos). Antes de cerrar: instalar módulo cara (paso anterior) y busto (siguiente paso).
Servo #5 en eje cuello 1, servo #6 en eje cuello 2. Eje cuello 2 conecta a centro cuello (paso 7). Módulo cara se instala dentro de la cabeza.
Paso 7: Busto y Hombros
~12h impresión. 5 piezas: busto (der/izq), hombros (der/izq), centro cuello, eje cuello 3.
Busto se pega con superglue. Hombros se atornillan (M2x10mm) y servos #2 y #4 se instalan en cada lado (cableado difícil). Centro cuello tiene hueco rectangular para eje cuello 3 (4 tornillos M2x6mm). Se fija a hombros con mismos tornillos y 4 tuercas M2x1.5mm.
Servo #6 conectado a eje cuello 3, instalado en centro cuello con 4 tornillos M2x6mm.
Paso 8: Brazos
~5h por brazo. 4 piezas: copa hombro, tapa hombro, eje brazo, brazo.
Eje centralizado en brazo (3 tornillos M2x6mm) con cuerno de servo en otro extremo. Servo #1/#3 en copa hombro, cuerno instalado. Hueco para cuerno de servo #2/#4 (ya en hombros). Hueco para cables. Tapa cierra con 2 tornillos M2x6mm.
Paso 9: Pecho
Une busto con base (ruedas). 2 piezas (der/izq), ~4h impresión. Hombros encajan en parte superior (agujero para tornillo de alineación, recomendado pegar). Base tiene 6 agujeros para ruedas. Etiqueté servos con pegatinas para facilitar cableado.
Paso 10: Ruedas
3 piezas impresas: ruedas (izq/der) y frontal. ~10h impresión.
- Soldar cables a conectores motores DC (para puente H)
- Fijar motores con 2 tornillos M3x40mm y tuercas cada uno
- Pegar panel frontal (une estructura)
- Panel frontal tiene 6 agujeros superiores para unir a pecho (6 tornillos M2x6mm)
Paso 11: Soporte Teléfono
1 pieza, ~1h. Diseñado para Motorola Moto E 4.3". Otros tamaños similares valen. Se coloca el teléfono, se presiona con soporte y 4 tornillos M2x6mm. Importante: conectar cable USB al teléfono antes de apretar tornillos (espacio muy limitado, tuve que recortar conector USB).
Paso 12: Base
1 pieza, ~4h. Agujeros para ruedas locas, placas de circuito, etc.
- Instalar controlador 16 servos (4 tornillos M2x6mm)
- Instalar puente H L298N (4 tornillos M2x6mm)
- Instalar Arduino Uno (4 tornillos M2x6mm)
- Instalar ProtoShield encima
- Cablear circuitos (paso 14)
- Instalar ruedas locas (2 tornillos cada una, cables atrapados entre base y tornillos)
- Unir base a sección ruedas
Paso 13: Tapa Trasera y Baterías
Diseñada para abrir fácilmente y acceder a circuitos, recargar baterías, encender/apagar smartphone. 6 piezas: espalda (izq/der), pomos (x2), cierres (izq/der). ~5.5h impresión. Partes izq/der se pegan (esperar secado total).
Pack de energía: 2 baterías 18650 + portabaterías. Soldar cable entre polo - de bat1 y + de bat2. Polo - del pack a GND Arduino. Interruptor on/off entre polo + y Vin Arduino. Interruptor atornillado a pieza impresa (M2x6mm + tuerca M2x1.5mm). Portabaterías atornillado (4 tornillos M2x6mm).
Cilindros de cierres lijados para mejor ajuste. Pasan por agujeros de tapa; pomos se conectan y pegan al otro lado. Tapa encaja en robot; pomos giran para bloquear.
Paso 14: Cableado de Circuitos
Arduino
- D2 → L298N IN4
- D3 → L298N IN3
- D6 → L298N IN2
- D7 → L298N IN1
- D9 → MAX7219 DIN
- D10 → MAX7219 CS
- D11 → MAX7219 CLK
- D4 → ESP8266 RXD
- D5 → ESP8266 TXD
- A4 → SDA
- A5 → SCL
- Vin → Batería V+ (antes diodos)
- GND → Batería V-
ESP8266-01
- RXD → Arduino D4
- TXD → Arduino D5
- GND → Arduino GND
- VCC → Arduino 3V3
- CH_PD → Arduino 3V3
L298N Puente H
- IN1 → Arduino D7
- IN2 → Arduino D6
- IN3 → Arduino D3
- IN4 → Arduino D2
- +12V → Batería V+ (tras diodos)
- GND → Arduino GND
- OUT1 → Motor 1
- OUT2 → Motor 2
MAX7219 (primera matriz)
- DIN → Arduino D9
- CS → Arduino D10
- CLK → Arduino D11
- VCC → Arduino 5V
- GND → Arduino GND
MAX7219 (resto matrices)
- DIN → DOUT matriz anterior
- CS → CS matriz anterior
- CLK → CLK matriz anterior
- VCC → VCC matriz anterior
- GND → GND matriz anterior
Controlador 16 servos (PCA9685)
- SCL → Arduino A5
- SDA → Arduino A4
- VCC → Arduino 5V
- GND → Arduino GND
- V+ → Batería V+ (tras diodos)
- GND → Arduino GND
Para servos SG90 (3-6V o 4-7.2V según fuentes), puse 2 diodos en serie tras baterías: 2×3.7V - 2×0.7V = 6.0V para servos y motores DC. No es lo más eficiente pero funciona.
Paso 15: Código Arduino
Instalar Arduino IDE. Librerías necesarias:
- LedControl.h - Control matrices LED
- Adafruit_PWMServoDriver.h - Control servomotores
Código en 9 partes:
- RobodaAlegria.ino - Sketch principal, importa librerías, variables globales
- _05_Def_Olhos.ino - Matrices para cada ojo (8x8). 9 expresiones: neutral, abierto, cerrado arriba/abajo, enfadado, aburrido, triste, enamorado, muerto. Distinto der/izq.
- _06_Def_Boca.ino - Matrices boca (16x8). 9 opciones: feliz, triste, muy feliz/triste, neutral, lengua fuera, abierto, muy abierto, asqueado.
- _10_Bracos.ino - Movimientos predefinidos brazos/cuello: mov1() a mov9()
- _12_Rosto.ino - Funciones para actualizar cara combinando ojos y boca
- _13_Motores_DC.ino - Funciones motores DC
- _20_Comunicacao.ino - Envío datos a ESP8266
- _80_Setup.ino - Inicio: cara/posición inicial, conexión Wi-Fi (cambiar SSID/contraseña XXXXX/YYYYY y baudrate ESP8266)
- _90_Loop.ino - Loop principal: busca comandos ESP8266 y ejecuta funciones
Descargar código, configurar Wi-Fi, subir a Arduino.
Paso 16: Apps Android
Smartphone transmite video/audio a interfaz de control. Apps usadas:
- IP Webcam: Google Play
- Screen Mirror: Google Play
Juego Android para interactuar con robot (no estable, no disponible para descarga).
Paso 17: Interfaz de Control
Interfaz HTML para control del robot. Descargar interface.rar, extraer, abrir en Firefox. Dos bloques: izquierda (cámara y screen mirror), derecha (botones control).
- Campos de texto: IP ESP8266 ("Endereço IP Arduino:"), IP Webcam ("IP Webcam (IP):"), IP Screen Mirror ("Screen Mirror (IP):")
- Pestaña "Ações predefinidas": 9 movimientos cuerpo + 13 caras
- Pestaña "Ações personalizadas": ángulos 6 servos individualmente, 9 ojos, 8 bocas
- JavaScript envía comando a IP ESP8266 al pulsar botones
- Teclas flecha: adelante/atrás, girar izq/der
- Al iniciar: pide permiso micrófono. Si se permite, intensidad de sonido dispara animación de "habla" en cara. Botón configuración (esquina sup. der.) para sensibilidad micrófono y velocidad brazos/cuello
Paso 18: ¡A Disfrutar!
¡Enciende y diviértete! Si te gusta, comparte y vota en concursos Instructables. Enlace al proyecto
Código y Recursos
- Código Arduino (descarga únicamente)
- Interfaz HTML (descarga únicamente)
- Librería LedControl: GitHub
- Librería Adafruit PWM Servo Driver: GitHub
Piezas 3D
Esquemáticos
Disponibles en archivos del proyecto (PDF y Fritzing).
Proceso de manufactura
- Raspoulette: Sistema autónomo de puerta de gallinero alimentado por energía solar – Prototipo
- Robot DIY inspirado en Wall‑E con Raspberry Pi y caja de CD
- Robot Despertador Rodante: Sistema Inteligente y Móvil de Despertar con Raspberry Pi y Google Calendar
- Construye un Robot Creeper de Minecraft Motorizado con Arduino
- Arquímedes: El Búho Robot Sensor de Emociones con IA
- Construye un Robot de Visión Artificial Controlado por Voz en Windows 10 IoT Core
- Robot ROS: Navegación Controlada por Terminal en Raspberry Pi
- Simple Pi Robot: Construye un Rover Autónomo 2‑WD con Raspberry Pi
- Kit de Robot de Navegación Interior Inteligente para Proyectos Arduino
- Entendiendo los Motores Lineales: De Energía Eléctrica a Movimiento Lineal Preciso
- Comprender los Robots de Bebidas: Tecnología, Automatización y su Papel en la Industria de Bebidas