MNM’s strandbeest

par Mathilde Guédon, Mathilde Pommier, Nicolas Sanson

Notre idée pour ce projet est de créer une version miniature des Strandbeests de Théo Jansen, sous forme d’automate motorisé que l’on peut commander.

Notre réalisation

Après avoir suivi l’ensemble des étapes décrites ci-dessous, vous obtiendrez la Strandbeest qui suit :

Matériaux & Composants

MatérielDimensionQuantité
Plaque de MDF 10x590x990mm
3
Bobine de PLA 1
Tiges en acier6x1000mm3
Visseriex
Roulementsx
ComposantSpécificationsQuantité
Moteurs 2
Carte Arduino Uno ou équivalentJoy-it R3DIP1
Carte Arduino Motor Shield1
Batterie Lipo11.1V, 4.8A, 3S1
Batterie externe5V minimum1
Module BluetoothFundiuno BlueTooth XBee HC-051
Application Arduino Joystick

Étape 1 – Modélisation

La première étape est de modéliser la Strandbeest, nous avons pour cela utilisé le logiciel en ligne Onshape (version gratuite).

Vous pouvez simplement reprendre les fichiers .stl du dépôt suivant : https://cad.onshape.com/documents/8e3fb0eda3bca88bd88345ee/w/ddbb9c4b84c909bbdc71544b/e/c688b9d46e98367f0fa2707d?renderMode=0&uiState=628608d0d068903dfae6f1f9.

Pour cela, nous utilisons les proportions qu’utilise Théo Jansen pour le fonctionnement des jambes de ses automates :

Une fois la modélisation effectuée pour chaque pièce plane, il faut ensuite créer les plans associés (toujours sur Onshape). Il faut ensuite exporter les plans et, dans le logiciel Inkscape, colorer tous les contours des pièces en rouge pour que la découpe laser les détecte. Tout texte ou dessin vectoriel en noir sera gravé et non découpé.

Pour les pièces non planes (pièces qui assurent l’opposition dans l’arbre à came), celles-ci sont imprimées car elles contiennent un emplacement à écrou afin de solidariser la pièce et l’axe métallique. De même pour les bagues de serrage. Également, afin de relier l’arbre à came et les moteurs, on imprime 2 pièces qui enserrent les 2 axes (toujours avec des emplacements pour les écrous).

Les rangements / fixations des moteurs, batterie et carte Arduino sont aussi à imprimer car ils ne sont bien sûr pas plans.

Étape 2 – Assemblage

Étape 3 – Motorisation / Circuits

Une fois les pattes et le plateau fixés et assemblés, il faut ensuite ajouter les 2 moteurs, l’Arduino couplée à son Motor Shield ainsi que les 2 alimentations et, enfin, le module bluetooth. Comme la photo ci-dessus le montre, l’Arduino est alimentée par la batterie externe et, les moteurs, qui demandent plus de tension et de courant, sont alimentés par la Lipo.

Pour le module bluetooth, il suffit à présent de se référer au schéma ci-dessous :

Étape 4 – Code téléguidage

Afin de pouvoir contrôler les direction, on ajoute le code ci-dessous dans l’Arduino à l’aide d’Arduino IDE.

int motorPinA = 12;
int motorPinB = 13;
int motorBrakeA = 9;
int motorBrakeB = 8;
int motorSpeedA = 3;
int motorSpeedB = 11;
int globalSpeed = 255;


void setup() {
  // Setup Channel A
  pinMode(motorPinA, OUTPUT);     // Initiates Motor Channel A pin
  pinMode(motorBrakeA, OUTPUT);   // Initiates Brake Channel A pin

  // Setup Channel B
  pinMode(motorPinB, OUTPUT);     // Initiates Motor Channel B pin
  pinMode(motorBrakeB, OUTPUT);   // Initiates Brake Channel B pin

  // Stop the motors (just in case)
  digitalWrite(motorBrakeA, HIGH);     //Engage the Brake for Channel A
  digitalWrite(motorBrakeB, HIGH);     //Engage the Brake for Channel B
  
  // Initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
}

void loop() {
  // If some data is sent enters the condition
  if (Serial.available() > 0) {     
    String value = Serial.readString();
    Serial.write(value.c_str());
    Serial.println();

    if (value.equals("F")) {
      Serial.write(" FRONT ");
      Serial.println();
      front();
    }
    else if (value.equals("B")) {
      Serial.write(" BACK ");
      Serial.println();
      back();
    }
    else if (value.equals("R")) {
      Serial.write(" RIGHT ");
      Serial.println();
      right();
    }
    else if (value.equals("L")) {
      Serial.write(" LEFT ");
      Serial.println();
      left();
    }
    else if (value.equals("1") || value.equals("2") || value.equals("3") || value.equals("4")) {
      Serial.write(" STOP ");
      Serial.println();
      digitalWrite(motorBrakeA, HIGH);     // Engage the Brake for Channel A
      digitalWrite(motorBrakeB, HIGH);     // Engage the Brake for Channel B
    }
  }
}

void frontA() {
  // Forward @ full speed Channel A
  digitalWrite(motorPinA, HIGH);      // Establishes forward direction of Channel A (LOW for backward)
  digitalWrite(motorBrakeA, LOW);     // Disengage the Brake for Channel A
  analogWrite(motorSpeedA, globalSpeed);      // Spins the motor on Channel A at full speed
}

void frontB() {
  // Forward @ full speed Channel B
  digitalWrite(motorPinB, HIGH);      // Establishes forward direction of Channel B (LOW for backward)
  digitalWrite(motorBrakeB, LOW);     // Disengage the Brake for Channel B
  analogWrite(motorSpeedB, globalSpeed);      // Spins the motor on Channel B at full speed
}

void backA() {
  // Backward @ full speed Channel A
  digitalWrite(motorPinA, LOW);       // Establishes forward direction of Channel A (HIGH for forward)
  digitalWrite(motorBrakeA, LOW);     // Disengage the Brake for Channel A
  analogWrite(motorSpeedA, globalSpeed);      // Spins the motor on Channel A at full speed
}

void backB() {
  // Backward @ full speed Channel B
  digitalWrite(motorPinB, LOW);       // Establishes forward direction of Channel B (HIGH for forward)
  digitalWrite(motorBrakeB, LOW);     // Disengage the Brake for Channel B
  analogWrite(motorSpeedB, globalSpeed);      // Spins the motor on Channel B at full speed
}

void front() {
  frontA();
  frontB();
}

void back() {
  backA();
  backB();
}

void left() {
  frontA();
  backB();
}

void right() {
  backA();
  frontB();
}

Ensuite, sur l’application Application Arduino Joystick, on paramètre chaque bouton comme sur les images qui suivent.

Finalement, l’interface d’utilisation se présente comme suit. Si ce n’est pas le cas, dans le menu, sélectionnez modeButton Mode.

Pour connecter un téléphone pour la première fois, il faut activer le bluetooth du téléphone, sélectionner hc-05 et entrer le mot de passe : 1234.

Ensuite, pour chaque utilisation, il faut débrancher les câbles jaune et vert du schéma précédent, cliquer sur le symbole bluetooth de l’application, sélectionner hc-05 et finalement rebrancher les 2 câbles.

Permanent link to this article: https://www.eirlab.net/2022/02/10/mnms-strandbeest/