Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Construire Sauron : Robot semi-humanoïde – Guide complet Arduino Mega 2560

Composants et fournitures

Outils nécessaires

Applications et services en ligne

À propos du projet

Fan du Seigneur des Anneaux ? Vous connaissez Sauron ! Ce projet réalise un robot semi-humanoïde de taille humaine à son effigie.

Le robot possède deux bras à 3 degrés de liberté (DDL) et une tête à 3 DDL sur une base fixe. Il fonctionne en trois modes, sélectionnables via deux boutons poussoirs sur entrées numériques :

  1. Mode Veille : Démonstration automatique de mouvements pour attirer l'attention lors d'événements.
  2. Mode Manette : Contrôle manuel via le shield Gamepad de l'application 1Sheeld.
  3. Mode Imitation : Le robot reproduit les mouvements de l'utilisateur (comme le gamin dans Real Steel). On porte un gant avec smartphone fixé ; l'Arduino lit les capteurs (orientation, gyroscope) et pilote les bras.

Projet réalisé pour la New York Maker Faire afin d'inspirer les enfants à utiliser Arduino et 1Sheeld pour construire leurs personnages de films (ATOM dans Real Steel, Sauron dans LOTR). Tous les fichiers nécessaires (CAO, schémas, codes, DXF pour laser) sont fournis.

Étape 1 : Construction de la tête

Pour gagner du temps, j'ai utilisé la tête robotique open-source « Fritz » de xyzbot. Fichiers laser fournis, découpés en contreplaqué 3 mm dans un makerspace local. J'ai omis l'impression 3D des yeux, les lèvres et sourcils pour réduire coût et temps. Suivez la vidéo d'assemblage de Fritz en sautant : base, pièces 3D des yeux, sourcils, lèvres.

Étape 2 : Construction du corps

Corps portable, assemblage rapide pour voyages. Structure en tiges Artelon et contreplaqué 3 mm, joints à tenon-mortaise pour fixer torse, épaules, cou, dos. Vis 4×20 mm pour cadre bois/Artelon, vis 12×30 mm pour squelette/base, vis 4×10 mm pour servos/cadre. Squelette Artelon en 5 parties : tige de base (50 mm), squelette (25 mm), trois traverses (15 mm). Plans joints.

Étape 3 : Création de la base

Base en tôle 6 mm conçue sous Solidworks, fixée au bureau par 3 vis ou 2 serre-joints 4″. Allégée par découpes. Vis 12×30 mm pour fixer squelette Artelon. Fichier DXF fourni.

Étape 4 : Construction des bras

Défi principal : bras modulaires, démontables facilement pour transport. Conception polyvalente : avant-bras interchangeable (épée, crochet, poing, pince). Cadre en contreplaqué 3 mm, articulations d'épaule en pantilt aluminium, armes en balsa. Calcul de couple sous Solidworks (3 kg/cm requis, moteurs plus puissants utilisés). Articulations d'avant-bras découpées laser via Autodesk 123D Make (tranches). Fichier Solidworks joint pour modifications.

Étape 5 : Casque et armure Sauron (cosplay)

Réalisation du cosplay avec l'ami Kareem, basé sur tutoriels Instructables (Sauron Cosplay, Casque), adaptés aux dimensions du robot.

Étape 6 : Électronique du robot

  1. Arduino Mega + 1Sheeld pour piloter les servos des bras et tête.
  2. Alimentation 5 V / 5 A pour moteurs et Arduino.
  3. Petite plaque d'essai pour regrouper VCC/GND moteurs et alimentation.
  4. 1Sheeld : plateforme de prototypage rapide qui connecte les capteurs du smartphone (Bluetooth) à l'Arduino. Shields utilisés : Gamepad, Orientation, Music Player, Toggle Button, Terminal.

Étape 7 : Code Arduino

  1. Placez 1Sheeld sur l'Arduino, branchez sur PC.
  2. Installez l'application 1Sheeld sur Android (Play Store : 1sheeld.com/app).
  3. Téléchargez la bibliothèque 1Sheeld, placez-la dans libraries Arduino.
  4. Ouvrez le sketch Arduino (fichier joint).
  5. Basculez 1Sheeld en mode « Uploading » (interrupteur UART éloigné du logo) avant téléversement pour éviter conflits série.
  6. Téléversez, puis remettez l'interrupteur en mode « Operating » (vers le logo).
  7. Lancez l'application 1Sheeld, connectez via Bluetooth (code par défaut 1234).
  8. Sélectionnez les shields : Gamepad, Orientation, Music Player, Toggle Button, Terminal ; appuyez sur l'icône multi-shields.
  9. Au démarrage, mode Veille par défaut. Pour mode Gamepad : Toggle Button → broche 2 → ON. Pour retour Veille : OFF.
  10. Pour mode Imitation : Toggle Button → broche 3 → ON (broche 2 à LOW).

Étape 8 : Sauron à la Maker Faire New York

Photos de l'événement (non incluses).

Étape 9 : Travaux futurs

Code Arduino (Sauron)

#define CUSTOM_SETTINGS
#define INCLUDE_GAMEPAD_SHIELD
#define INCLUDE_MUSIC_PLAYER_SHIELD
#define INCLUDE_TERMINAL_SHIELD
#define INCLUDE_ORIENTATION_SENSOR_SHIELD
#include <OneSheeld.h>
#include <Servo.h>

Servo rightArm_Motor1, rightArm_Motor2, rightArm_Motor3;
Servo leftArm_Motor1, leftArm_Motor2, leftArm_Motor3;
Servo neckHorizontal, neckVertical, mouth;

const int modePin1 = 2;
const int modePin2 = 3;
volatile int modeState1 = LOW;
volatile int modeState2 = LOW;
volatile boolean gamepadMode_Enabled = false;
volatile boolean imitationMode_Enabled = false;
const int ledPin1 = A0;
const int ledPin2 = A1;

void setup() {
  OneSheeld.begin();
  pinMode(modePin1, INPUT);
  pinMode(modePin2, INPUT);
  pinMode(ledPin1, OUTPUT);
  pinMode(ledPin2, OUTPUT);
  digitalWrite(ledPin1, HIGH);
  digitalWrite(ledPin2, HIGH);
  attachInterrupt(digitalPinToInterrupt(modePin1), gampadMode_ChangeISR, CHANGE);
  attachInterrupt(digitalPinToInterrupt(modePin2), imitationMode_ChangeISR, CHANGE);
  rightArm_Motor1.attach(4); rightArm_Motor2.attach(5); rightArm_Motor3.attach(6);
  leftArm_Motor1.attach(7); leftArm_Motor2.attach(8); leftArm_Motor3.attach(9);
  neckHorizontal.attach(10); neckVertical.attach(11); mouth.attach(12);
  // Position initiale
  rightArm_Motor1.write(95); rightArm_Motor2.write(150); rightArm_Motor3.write(20);
  leftArm_Motor1.write(90); leftArm_Motor2.write(45); leftArm_Motor3.write(180);
  neckHorizontal.write(105); neckVertical.write(30); mouth.write(100);
}

void loop() {
  modeState1 = digitalRead(modePin1);
  modeState2 = digitalRead(modePin2);
  if (modeState1 == HIGH) { Terminal.println("GamePad Mode was selected"); gamePadMode(); }
  else if (modeState2 == HIGH) { Terminal.println("Imitation Mode was selected"); imitationMode(); }
  else { Terminal.println("Standby Mode was selected"); standbyMode(); }
}

void standbyMode() {
  Terminal.println("Standby mode activated");
  // Séquence de 9 positions avec mouvements synchronisés bouche/musique
  // Chaque position : positionne servos, joue son, bouge bouche 20 fois (150 ms), pause 3 s
  // Vérifie interruption mode Gamepad/Imitation entre chaque position
  // Position 1 : position initiale
  // Position 2 : tête 90→0→180→90
  // Position 3 : bras et tête à 45°
  // Position 4 : bras droit et tête à 135°
  // Position 5 : tête au centre
  // Position 6 : bras levés
  // Position 7 : bras écartés
  // Position 8 : frappe bras droit
  // Position 9 : frappe bras gauche
  // Retour position initiale avec 50 cycles bouche
  // (Code complet dans le sketch original)
}

void gamePadMode() {
  Terminal.println("Gamepad mode activated");
  if (GamePad.isUpPressed()) { /* bras haut */ }
  if (GamePad.isDownPressed()) { /* bras bas */ }
  if (GamePad.isRightPressed()) { /* bras droit */ }
  if (GamePad.isLeftPressed()) { /* bras gauche */ }
  if (GamePad.isRedPressed()) { /* combo 1 */ }
  if (GamePad.isOrangePressed()) { /* combo 2 */ }
  if (GamePad.isGreenPressed()) { /* combo 3 */ }
  if (GamePad.isBluePressed()) { /* combo 4 */ }
}

void imitationMode() {
  Terminal.println("Imitation mode activated");
  if (OrientationSensor.getY() > -90 && OrientationSensor.getY() <= 90) {
    leftArm_Motor1.write(map(OrientationSensor.getY(), -90, 90, 0, 180));
  }
  if (OrientationSensor.getZ() > -70 && abs(OrientationSensor.getZ()) <= 70) {
    leftArm_Motor2.write(map(OrientationSensor.getZ(), 0, 60, 100, 160));
    leftArm_Motor3.write(map(OrientationSensor.getZ(), 0, 60, 160, 100));
  }
}

void gampadMode_ChangeISR() {
  if (gamepadMode_Enabled && !imitationMode_Enabled) {
    gamepadMode_Enabled = false; imitationMode_Enabled = false;
  } else {
    gamepadMode_Enabled = true; imitationMode_Enabled = false;
  }
}

void imitationMode_ChangeISR() {
  if (imitationMode_Enabled && !gamepadMode_Enabled) {
    gamepadMode_Enabled = false; imitationMode_Enabled = false;
  } else {
    gamepadMode_Enabled = false; imitationMode_Enabled = true;
  }
}

Schéma de câblage

Schéma de connexion (image non incluse).

Processus de fabrication

  1. Améliorer la Constance avec les Robots de Pulvérisation Autonomes
  2. Comment les Robots de Peinture Réduisent les Retouches, Améliorent la Constance et Économisent les Coûts
  3. Réduire les Coûts de Retouche dans la Fabrication : Stratégies pour Efficacité et Qualité
  4. Vision robotique dans l'industrie : de la vision à l'auto-programmation
  5. Qu'est-ce qu'un robot auto-programmable et pourquoi cela compte
  6. Robots industriels : conception, fabrication et tendances futures
  7. Maximiser l'efficacité : une cellule de moulage multi-robot produit un gobelet shaker complet en un cycle
  8. Construire l'équipe idéale d'implémentation ERP : stratégies éprouvées pour le succès
  9. L'avenir de l'automatisation : les robots auto-reproducteurs redéfinissent l'Industrie 4.0