Construire un Iron Man animé avec Arduino : capteurs, sons et relais
Matériel
- 1 × Arduino UNO
- 1 × Capteur ultrasons HC-SR04
- 1 × Module MP3 DFPlayer Mini + carte SD (fichiers 001.mp3…018.mp3)
- 1 × Relais 4 canaux (tête, torse, bras gauche, bras droit)
- Résistances, fils, pistolet à colle, fer à souder
Principe de fonctionnement
- Le HC-SR04 surveille la distance (seuil ~1,5 m).
- Si présence détectée : tirage aléatoire d'un fichier audio (1–18) via DFPlayer.
- Activation séquentielle des relais (clignotement yeux, mouvement bras) synchronisé sur l'audio.
- Attente que la personne s'éloigne avant nouveau cycle.
Câblage principal
- HC-SR04 : Trig → D3, Echo → D4, VCC → D2, GND → D5 (alimentés par l'Arduino).
- DFPlayer : RX → D6, TX → D7 (SoftwareSerial 9600 bauds).
- Relais : D10 (bras droit), D11 (bras gauche), D12 (torse), D13 (tête) — actifs à l'état BAS.
Code commenté (extrait principal)
#include
#include
#include
SoftwareSerial mp3Serial(6, 7); // RX, TX
DFRobotDFPlayerMini dfplayer;
Ultrasonic ultra(3, 4);
#define RELAY_HEAD 13
#define RELAY_CHEST 12
#define RELAY_LEFT 11
#define RELAY_RIGHT 10
int randTrack;
int state = 3; // 3 = attente, 2 = animation en cours
void setup() {
mp3Serial.begin(9600);
Serial.begin(115200);
if (!dfplayer.begin(mp3Serial)) { while(1); }
dfplayer.volume(30);
dfplayer.EQ(0);
pinMode(RELAY_HEAD, OUTPUT); digitalWrite(RELAY_HEAD, HIGH);
pinMode(RELAY_CHEST, OUTPUT); digitalWrite(RELAY_CHEST, HIGH);
pinMode(RELAY_LEFT, OUTPUT); digitalWrite(RELAY_LEFT, HIGH);
pinMode(RELAY_RIGHT, OUTPUT); digitalWrite(RELAY_RIGHT, HIGH);
pinMode(2, OUTPUT); digitalWrite(2, HIGH); // VCC HC-SR04
pinMode(5, OUTPUT); digitalWrite(5, LOW); // GND HC-SR04
}
void loop() {
int dist = ultra.Ranging(CM);
Serial.println(dist);
if (dist <= 150 && state == 3) {
randTrack = random(1, 19);
playTrack(randTrack);
delay(3000);
// Animation relais pendant présence
while (ultra.Ranging(CM) <= 150) {
digitalWrite(RELAY_LEFT, HIGH); delay(1200);
state = 2;
}
} else {
digitalWrite(RELAY_RIGHT, LOW);
state = 3;
}
}
void playTrack(int track) {
digitalWrite(RELAY_RIGHT, HIGH); delay(300);
digitalWrite(RELAY_RIGHT, LOW); delay(300);
digitalWrite(RELAY_RIGHT, HIGH); delay(300);
digitalWrite(RELAY_RIGHT, LOW); delay(300);
dfplayer.play(track);
}
Sources audio
Fichiers MP3 extraits des films Iron Man, renommés 001.mp3 à 018.mp3. Disponibles sur GitHub.
Améliorations possibles
- Ajouter un détecteur de fin de lecture (pin BUSY du DFPlayer) au lieu de
delay(). - Utiliser des servos pour mouvements fluides (bras, tête) au lieu de relais tout-ou-rien.
- Intégrer une LED « arc réacteur » pulsante (PWM).
Processus de fabrication
- Dé numérique Arduino sur écran LCD 16x2 – Générateur aléatoire à bouton poussoir
- Find Me : Localisateur d'objets intelligent avec Arduino et Bluetooth
- Construire un bras robotique 3D fonctionnel piloté par Arduino – Guide pas à pas
- Contrôleur d'humidificateur DIY avec Arduino et relais – Installation haute tension sécurisée
- Portique de contrôle de température sans contact pour dépistage rapide et précis
- PiBot : Robot pianiste Arduino pour performance musicale de précision
- Jeu Pong sur Matrice NeoPixel avec Arduino Nano
- Station météo IoT temps réel – Arduino, ESP8266, DHT11 & ThingSpeak
- Volant Joystick Arduino Personnalisé pour Jeux Vidéo