Construye un Iron Man animado con Arduino: componentes, sensores y guía paso a paso
Componentes y materiales
- 1 × Arduino UNO
- 1 × Módulo ultrasónico HC-SR04
- 1 × Módulo MP3 DFPlayer Mini
- 1 × Relé de 4 canales
- 1 × Resistencia 330 Ω
- 1 × Cable jack 3.5 mm (para altavoz)
- Cables jumper y pegamento caliente
Herramientas
- Pistola de pegamento caliente
- Soldador y estaño
- Limpiador de punta
Aplicaciones y servicios
- Arduino IDE
- Librería
DFRobotDFPlayerMini
Sobre el proyecto
El objetivo es dar vida a una figura de Iron Man. Un sensor ultrasónico detecta cuando alguien se acerca (≈1,3 m) y el Arduino reproduce aleatoriamente una frase de Tony Stark almacenada en una tarjeta microSD del DFPlayer Mini. Simultáneamente, el relé activa LEDs o motores en cabeza, pecho y brazos para simular movimiento.
Materiales de audio
Los archivos de audio (frases de películas) se renombran como 001.mp3, 002.mp3, … y se copian a la tarjeta SD. Repositorio de ejemplo: GitHub.
Circuito
- HC-SR04: VCC → 5V, GND → GND, Trig → pin 3, Echo → pin 4.
- DFPlayer Mini: RX → pin 6 (via divisor 1k/2k), TX → pin 7, VCC → 3.3V, GND → GND. Altavoz en pines SPK.
- Relé 4 canales: IN1→13 (cabeza), IN2→12 (pecho), IN3→11 (brazo izq), IN4→10 (brazo der). Alimentación del relé desde 5V/GND del Arduino.
Circuito de lámpara (opcional)
Un LED de alta potencia en el pecho controlado por uno de los canales del relé, con su propia resistencia limitadora.
Código
#include
#include
#include
SoftwareSerial mySoftwareSerial(6, 7); // RX, TX hacia DFPlayer
DFRobotDFPlayerMini myDFPlayer;
Ultrasonic ultra(3, 4); // Trig, Echo
#define CABEZA 13
#define PECHO 12
#define IZQUIERDA 11
#define DERECHO 10
#define VCC_ULTRA 2
#define GND_ULTRA 5
String buf;
int pausa = 0, equalizacion = 0, maxSongs = 0;
int x = 3;
int distancia;
void setup() {
mySoftwareSerial.begin(9600);
Serial.begin(115200);
if (!myDFPlayer.begin(mySoftwareSerial)) {
Serial.println(F("Error DFPlayer: comprueba conexiones y tarjeta SD"));
while (true);
}
myDFPlayer.setTimeOut(500);
myDFPlayer.volume(30);
myDFPlayer.EQ(0);
maxSongs = myDFPlayer.readFileCounts(DFPLAYER_DEVICE_SD);
Serial.print("Archivos en SD: "); Serial.println(maxSongs);
pinMode(CABEZA, OUTPUT);
pinMode(PECHO, OUTPUT);
pinMode(IZQUIERDA, OUTPUT);
pinMode(DERECHO, OUTPUT);
pinMode(VCC_ULTRA, OUTPUT);
pinMode(GND_ULTRA, OUTPUT);
digitalWrite(GND_ULTRA, LOW);
digitalWrite(VCC_ULTRA, HIGH);
digitalWrite(CABEZA, HIGH);
digitalWrite(PECHO, HIGH);
digitalWrite(IZQUIERDA, HIGH);
distancia = ultra.Ranging(CM);
}
void loop() {
distancia = ultra.Ranging(CM);
Serial.println(String(distancia) + " cm");
if (distancia <= 150 && x == 3) {
buf = String(random(1, 19)); // elige pista aleatoria 1-18
play();
delay(3000);
while (ultra.Ranging(CM) <= 150) {
digitalWrite(IZQUIERDA, HIGH);
x = 2;
delay(1200);
}
} else {
digitalWrite(DERECHO, LOW);
x = 3;
}
}
void play() {
digitalWrite(DERECHO, HIGH); delay(300);
digitalWrite(DERECHO, LOW); delay(300);
digitalWrite(DERECHO, HIGH); delay(300);
digitalWrite(DERECHO, LOW); delay(300);
// Reproduce pista
int track = buf.toInt();
if (track >= 1 && track <= maxSongs) {
Serial.print("Reproduciendo: "); Serial.println(track);
myDFPlayer.play(track);
}
}
Esquemas
Proceso de manufactura
- Proyecto Dados Digitales Arduino: Construye tu Propio Generador de Números Aleatorios con LCD
- Find Me: Localizador Inteligente de Objetos con Arduino y Bluetooth
- Construye un Brazo Robótico Impreso en 3D Controlado por Arduino – Guía Paso a Paso
- Controlador de Humidificador DIY con Arduino y Relé: Configuración Segura de Alto Voltaje
- Puerta de control de temperatura sin contacto para detección rápida y precisa
- PiBot: Robot Pianista con Arduino para Interpretación Musical de Precisión
- Pong Neón en Matriz NeoPixel con Arduino Nano
- Monitorización Meteorológica en Tiempo Real con Arduino y ThingSpeak IoT
- Construye un volante joystick personalizado con Arduino para gaming
- Construye un Receptor FM Potente con Arduino y Módulo TEA5767
- Arduino 101: Construye un Podómetro con Sensor DHT11 y Pantalla LCD