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

Transformer une tête humaine en tête de robot : Projet DIY piloté par Arduino

Composants et fournitures

Composant Quantité
Arduino UNO 1
Servomoteur 3
Appareil Android 1
Carte d'alimentation régulée (12V, 5V, 3.3V) 1

Outils nécessaires

Applications et services en ligne

À propos du projet

L'idée : faire quelque chose de nouveau sans se ruiner. J'aime la robotique, mais le coût des servos et autres pièces me freinait. J'ai maintenant 4 servomoteurs pour seulement 13 $. J'ai déjà une carte LinkIt ONE et un Arduino.

Projet : une tête de robot qui bouge comme une vraie tête sur les 3 axes, à moindre coût. J'ai étudié divers capteurs et méthodes, et trouvé une solution avec ce que j'avais sous la main. Beaucoup d'apprentissages. Je marque en gras ce que j'ai appris.

Utiliser le capteur d'inclinaison du smartphone pour contrôler la tête

Étape 1 : Matériel requis

Transformer une tête humaine en tête de robot : Projet DIY piloté par Arduino
Transformer une tête humaine en tête de robot : Projet DIY piloté par Arduino
Transformer une tête humaine en tête de robot : Projet DIY piloté par Arduino
Transformer une tête humaine en tête de robot : Projet DIY piloté par Arduino
Transformer une tête humaine en tête de robot : Projet DIY piloté par Arduino
Transformer une tête humaine en tête de robot : Projet DIY piloté par Arduino
Transformer une tête humaine en tête de robot : Projet DIY piloté par Arduino

Matériel utilisé :

  1. Arduino Uno
  2. Carte LinkIt ONE
  3. 3 servomoteurs
  4. Application Android gratuite SensoDuino (télécharger ici)
  5. Carte d'alimentation régulée (12V, 5V, 3.3V)
  6. CI simple face (plain PCB)
  7. Connecteurs mâles PCB
  8. Chute de profilé aluminium (pièce d'alimentation)
  9. Pistolet à colle chaude
  10. Adaptateurs 12V et 5V
  11. Divers éléments de décoration

Pourquoi LinkIt ONE et Arduino Uno ?

Si vous avez LinkIt ONE et servos 3V, pas besoin d'Arduino Uno car mes servos 5V ne fonctionnent pas bien sur LinkIt ONE.

Si vous avez Arduino Uno + module Bluetooth, pas besoin de LinkIt ONE.

Je n'avais pas de shield Bluetooth, donc j'ai utilisé LinkIt ONE + Arduino Uno.

Étape 2 : Shield servos maison

Transformer une tête humaine en tête de robot : Projet DIY piloté par Arduino
Transformer une tête humaine en tête de robot : Projet DIY piloté par Arduino
Transformer une tête humaine en tête de robot : Projet DIY piloté par Arduino
  1. Fabriquer un shield servomoteurs pour Arduino. (Attention : même avec servos 3V, LinkIt ONE n'a que 2 broches PWM)
  2. Réalisé un PCB type shield pour servos.
  3. Permet de contrôler 6 servos depuis les broches Arduino (3, 5, 6, 9, 10, 11).
  4. Servos 3 fils utilisés, alimentation via carte régulée 5V externe.
  5. Important : alimenter l'Arduino via adaptateur secteur. L'USB du PC cause des vibrations → surchauffe et destruction du servo (j'en ai grillé un).

Étape 3 : Connexion LinkIt ONE

Transformer une tête humaine en tête de robot : Projet DIY piloté par Arduino
  1. LinkIt ONE doit communiquer avec Arduino pour commander les servos.
  2. Relier Tx LinkIt ONE → Rx Arduino + masses communes.
  3. Toute donnée reçue est transmise à l'Arduino.
  4. Note : avec shield Bluetooth Arduino, une seule carte suffit.

Étape 4 : Positionnement des servos

Transformer une tête humaine en tête de robot : Projet DIY piloté par Arduino
Transformer une tête humaine en tête de robot : Projet DIY piloté par Arduino
  1. Régler tous les servos à 90°. Téléverser le programme Servoposition.ino.
  2. Alimenter servos et Arduino via carte régulée (broches 5V et 12V).
  3. Connecter connecteurs femelles servos sur broches mâles du PCB (broches numériques 3, 5, 6).
  4. Brancher adaptateur 12V sur carte régulée.
  5. Mettre sous tension → tous les moteurs tournent à 90°.
  6. Débrancher les servos pour les assembler sans déranger le rotor.

Code position servos : Servoposition.ino

Étape 5 : Planification mécanique

Transformer une tête humaine en tête de robot : Projet DIY piloté par Arduino
Transformer une tête humaine en tête de robot : Projet DIY piloté par Arduino
Transformer une tête humaine en tête de robot : Projet DIY piloté par Arduino
  1. Tête rotate sur 3 axes X, Y, Z.
  2. Rotations :
  1. Utiliser du ruban double-face pour positionner les servos.
  2. Découper pièce aluminium en L pour fixer servo supérieur au second.
  3. Connecter les bras de servo selon le plan ou photos.
  4. Tous les centres servos doivent être alignés à 90°.
  5. Fixer servos et pièce L au ruban double-face, vérifier que mouvements ne se gênent pas.

Étape 6 : Construction définitive

Transformer une tête humaine en tête de robot : Projet DIY piloté par Arduino
Transformer une tête humaine en tête de robot : Projet DIY piloté par Arduino
Transformer une tête humaine en tête de robot : Projet DIY piloté par Arduino
Transformer une tête humaine en tête de robot : Projet DIY piloté par Arduino
Transformer une tête humaine en tête de robot : Projet DIY piloté par Arduino
  1. Fixation définitive : retirer ruban double-face un par un, coller à la colle chaude.
  2. Attention à ne pas abîmer les servos.
  3. Rebrancher connecteurs servos sur Arduino, mettre sous tension.
  4. Vérifier que tout est droit comme sur la dernière image.

Étape 7 : Détails application Android

Transformer une tête humaine en tête de robot : Projet DIY piloté par Arduino
Transformer une tête humaine en tête de robot : Projet DIY piloté par Arduino
Transformer une tête humaine en tête de robot : Projet DIY piloté par Arduino
Transformer une tête humaine en tête de robot : Projet DIY piloté par Arduino
Transformer une tête humaine en tête de robot : Projet DIY piloté par Arduino
Transformer une tête humaine en tête de robot : Projet DIY piloté par Arduino
  1. Ouvrir SensoDuino sur téléphone. Affiche toutes les lectures capteurs et les envoie via Bluetooth.
  2. Tous les capteurs disponibles listés ; on sélectionne ceux présents sur le téléphone.
  3. Menu → « Connect Bluetooth ».
  4. Liste des périphériques Bluetooth disponibles.
  5. Sélectionner Bluetooth LinkIt ONE.
  6. Pour notre projet : capteur Orientation. Cocher 1re case (activer) et 2e case (envoyer via Bluetooth).
  7. Réglage performance par capteur via menu « Performance ». Changer intervalle de lecture.

Étape 8 : Programmation

Deux codes : un pour LinkIt ONE, un pour Arduino.

LinkIt ONE : Via Bluetooth, récupère données mobile et les envoie à Arduino par port série.

Arduino : À la réception sur port série, concatène les caractères en chaîne. Utilise indexOf et substring pour découper un ensemble complet de résultats. Dans cet ensemble, réutilise indexOf/substring pour extraire chaque position. Puis map Arduino pour commander le servo 0-180°. Si shield Bluetooth, adapter le code.

Fonctionnement du programme

  1. Capteur Orientation → tête robot tourne comme la nôtre.
  2. a) Yaw : rotation 0-360° selon position magnétique. On utilise 90-270° où 180° = 90° servo. Il faut faire face à 180° (capteur) en portant la casquette.
  3. b) Pitch : avant haut/bas. Lecture capteur -180 à +180. On utilise -90 à +90.
  4. c) Roll : secousse latérale. Lecture 0-90-0--90-0. On utilise -90 à 90.

Code LinkIt ONE : Linkitonehead.ino

Code Arduino : Arduinohead.ino

Étape 9 : Empilement des cartes

Transformer une tête humaine en tête de robot : Projet DIY piloté par Arduino
Transformer une tête humaine en tête de robot : Projet DIY piloté par Arduino
Transformer une tête humaine en tête de robot : Projet DIY piloté par Arduino
  1. Connecter les deux shields sur le dessus des microcontrôleurs.
  2. Coller le tout avec ruban double-face, l'un sur l'autre.
  3. Attention à ne court-circuiter aucune borne.

Étape 10 : Test à main levée

Mettre sous tension, tenir le téléphone en main. S'asseoir face à 180° en Yaw, utiliser le mobile pour piloter les 3 servos.

Étape 11 : Fixer un visage

Transformer une tête humaine en tête de robot : Projet DIY piloté par Arduino
Transformer une tête humaine en tête de robot : Projet DIY piloté par Arduino
  1. Période de Noël : beaucoup de poupées Père Noël en magasin.
  2. Acheter une poupée et fixer sa tête sur le bras du servo supérieur avec ruban double-face.

Étape 12 : Préparer une casquette de contrôle

Transformer une tête humaine en tête de robot : Projet DIY piloté par Arduino
Transformer une tête humaine en tête de robot : Projet DIY piloté par Arduino
Transformer une tête humaine en tête de robot : Projet DIY piloté par Arduino
Transformer une tête humaine en tête de robot : Projet DIY piloté par Arduino
Transformer une tête humaine en tête de robot : Projet DIY piloté par Arduino
Transformer une tête humaine en tête de robot : Projet DIY piloté par Arduino
  1. Prendre une casquette normale.
  2. Coller ruban double-face sur le devant comme sur les photos.
  3. Coller le téléphone portable dessus.

Étape 13 : Vidéo de test

Test performance faible = taux de rafraîchissement capteur toutes les 250 ms.

Étape 14 : Vidéo finale

Action à taux de lecture 1 mesure / 100 ms

Code

Servoposition.ino (Arduino)

#include <Servo.h>
Servo leftright; Servo updown; Servo shake;
void setup() {
  Serial.begin(9600);
  leftright.attach(3); updown.attach(5); shake.attach(6);
  leftright.write(90); updown.write(90); shake.write(90);
}
void loop() { }

Linkitonehead.ino (Arduino / LinkIt ONE)

#include <LBT.h>
#include <LBTServer.h>
int readval;
String inputString = "", outputString = "";
int firstpoint=0, secondpoint=0;

void setup() {
  if(!LBTServer.begin((uint8_t*)"Sivam_LIO")) return;
  Serial1.begin(9600);
}

void loop() {
  uint8_t buf[64]; int bytesRead;
  if(LBTServer.connected()) {
    while(true) {
      bytesRead = LBTServer.readBytes(buf, 32);
      if(!bytesRead) break;
      inputString = "";
      for(int j=0;j<32;j++) {
        char inChar = char(buf[j]);
        inputString += inChar;
      }
      Serial1.println(inputString);
    }
    delay(100);
  } else {
    LBTServer.accept(5);
  }
}

Arduinohead.ino (Arduino)

#include <Servo.h>
Servo leftright; Servo updown; Servo shake;
String inputString = "";
boolean stringComplete = false;
String teststr2, sensorid, sensorrecid, sensorval1, sensorval2, sensorval3;
int S1, S2, S3, startchr=0, endchr=0, rot1, rot2, rot3;

void setup() {
  Serial.begin(9600);
  leftright.attach(3); updown.attach(5); shake.attach(6);
}

void loop() { }

void serialEvent() {
  while (Serial.available()) {
    char inChar = (char)Serial.read();
    if (inChar != '\n') inputString += inChar;
  }
  startchr = inputString.indexOf('>');
  if (startchr >= 0) {
    endchr = inputString.indexOf('>', startchr+1);
    if (endchr > 0) {
      teststr2 = inputString.substring(startchr, endchr);
      inputString = inputString.substring(endchr);
      startchr = teststr2.indexOf(',');
      sensorid = teststr2.substring(1, startchr);
      endchr = teststr2.indexOf(',', startchr+1);
      sensorrecid = teststr2.substring(startchr+1, endchr);
      startchr = endchr;
      endchr = teststr2.indexOf(',', startchr+1);
      sensorval1 = teststr2.substring(startchr+1, endchr);
      startchr = endchr;
      endchr = teststr2.indexOf(',', startchr+1);
      sensorval2 = teststr2.substring(startchr+1, endchr);
      startchr = endchr;
      sensorval3 = teststr2.substring(startchr+1);
      S1 = sensorval1.toInt(); S2 = sensorval2.toInt(); S3 = sensorval3.toInt();
      rot1 = map(S1, 90, 270, 180, 0);
      if (rot1 < 0) rot1 = 0; else if (rot1 > 180) rot1 = 180;
      rot2 = map(S2, -90, 90, 0, 180);
      if (rot2 < 0) rot2 = 0; else if (rot2 > 180) rot2 = 180;
      rot3 = map(S3, 90, -90, 0, 180);
      if (rot3 < 0) rot3 = 0; else if (rot3 > 180) rot3 = 180;
      if (rot1 != 0 && rot1 != 180) leftright.write(rot1);
      if (rot1 != 0 && rot1 != 180) updown.write(rot2);
      if (rot1 != 0 && rot1 != 180) shake.write(rot3);
      delay(15);
    }
  }
}

Processus de fabrication

  1. Robot DIY inspiré de Wall‑E : Raspberry Pi dans une boîte de CD recyclée
  2. Robot réveil roulant : Système mobile intelligent piloté par Raspberry Pi et Google Calendar
  3. RasPiRobot Board V2 : Transformez votre Raspberry Pi en contrôleur robot puissant
  4. Construire un robot Creeper motorisé Minecraft avec Arduino
  5. Archimède : Le hibou robotique IA à détection d'émotions
  6. Construire un robot vision par ordinateur piloté par la parole sur Windows 10 IoT Core
  7. Robot ROS : Navigation pilotée par terminal sur Raspberry Pi
  8. Intégration Microsoft Kinect avec Raspberry Pi pour détection humaine temps réel sur robot Sonbi
  9. Simple Pi Robot – Construire un rover autonome 2 roues motrices avec Raspberry Pi