Introduction: Hacked Disney R2D2: Bluetooth Control, More Sounds (ESP32, DFPlayer)

I'm writing this instructable in Spanish because it's much easier for me. I'll translate it later if somebody is interested.

Este proyecto surgió a partir de un robot R2D2 que regalaron a mi hijo. Es un robot de Disney con funcionalidades muy limitadas y pensamos que sería divertido modificarlo para que pudiera hacer más cosas.

El objetivo del proyecto era añadir estas funciones al robot

  • Control por Bluetooth
  • Poder programar varios movimientos
  • Más sonidos

Para ello se ha usado

  • Un robot R2D2 de Disney
  • Una tarjeta ESP32
  • Un módulo de sonido DFPlayer
  • Un driver de motor de 4 canales L9910
  • Un powerbank para alimentarlo

Step 1: Abriendo El Robot

El robot tiene un tapa para el compartimento de las pilas con dos tornillos.

El cuerpo esta formado por espalda y pecho. Tienen 6 tornillos.

Al quitar la espalda se puede sacar la cabeza y los dos brazos.

El pie va encajado en la parte inferior del pecho.

Hay una placa de control con 4 tornillos. Dos llevan un separador blanco.

El interruptor está encajado en la placa.

La cabeza se separa del cuello con 4 tornillos accesibles por debajo. Hay que ir girando la cabeza para dejarlos al descubierto progresivamente.

Los brazos no están sujetos con tornillos.

Step 2: Cabeza Y Cuello

La cabeza tiene en su interior un led bicolor y un microfono.

No he usado el micro en este proyecto. He dejado los cables cortados.

El led es un led bicolor. En mi caso

  • Rojo: Vcc
  • Blanco: GND de led azul
  • Verde: GND de led rojo

El cuello llevan el motor para girar la cabeza. También tiene tres microinterruptores para detectar fin de recorrido: derecha, centro e izquierda.

Step 3: Brazos, Cuerpo

El pecho tiene un pulsador y un altavoz de 8ohm y 0.5w.

La espalda lleva el compartimento de las pilas.

Los brazos llevan cada uno un motor. Estaban controlados con un driver TC118S de la placa

El pie lleva un interruptor que detecta si el robot ha encontrado algún obstáculo.

En la parte baja de la espalda está el interruptor de encendido y selección de modo de funcionamiento.

Step 4: Circuito

El circuito lo separé en tres partes: dos placas para ESP32 y DFPlayer y L9110 sin placa

  • Placa del ESP32
    • Esta placa se sujeta en la espalda.
    • Interruptores de pie, cabeza con pull-down.
    • Un condensador de 2,2 uF para que no tengamos que pulsar EN al cargar el código des de el IDE de Arduino
    • Los leds, con resistencias en serie
    • El DFPlayer con una resistencia de 470k entre TX2 y GND
    • Alimentado por USB con un powerbank mientras no añada las baterías. Hay un agujero en el compartimento de las pilas para sacar el cable.
  • DFPlayer,
    • En una placa sujeta en el pecho para que la tarjeta sea accesible por uno de los orificios que tiene el R2D2.
    • Conectado al altavoz
    • Se alimenta del pin 3.3 del ESP32
    • Como me daba problemas de ruido añadí condensadores en la alimentación y también conecté los dos pines de GND
    • Los sonidos se cargan con una tarjeta SD en el módulo
  • L9110
    • El L9110 está atornillado directamente en la parte interior del compartimento de las pilas
    • Se alimenta desde el pin VIN del ESP32
    • Conectado a ESP32 y a los tres motores

Adjunto un esquema del circuito.

Step 5: Programas

Los programas utilizados son

  • El sketch para el ESP32
  • Un programa en python que utilizaba para probar los comandos desde el ordenador

El sketch del ESP32 consta de un bucle que escucha por monitor serie o por bluetooth comandos y los ejecuta.

Los comandos permitidos se encuentran al inicio del código. Hay dos tipos de instrucciones: las que requieren un parámetro y las que no. Las que requieren un parámetro tienen un código mayor que 200.

La librería para el DFPlayer utilizada es la DFRobotDFPlayerMini.h

Para probar los comandos desde el móvil utilicé la app Serial Bluetooth Terminal y un programa en python.

Después preparé una app con app inventor.

Si alguien tiene interés ampliaré detalles del funcionamiento.

Step 6: Primeras Pruebas

Y aquí tenemos las primeras pruebas.