Construire un robot quadrupède Arduino intelligent : guide étape par étape
Composants et fournitures
| Arduino Mega 2560 | 1 |
| Moteur servo SG90 | 12 |
| Capteur ultrason HC-SR04 SparkFun | 1 |
| LED 5 mm rouge | 4 |
| LED 5 mm verte | 4 |
| LED bleue | 4 |
| Connecteur mâle 40 positions 1 rangée (0,1") | 2 |
| PCB personnalisé | 1 |
Outils et machines nécessaires
| Fer à souder (générique) |
Applications et services en ligne
| Arduino IDE |
À propos de ce projet
Robot quadrupède basé sur Arduino ! Quadrupède signifie robot à quatre pattes, ressemblant à une araignée. Apprenons comment l'araignée marche et reproduisons-le avec Arduino.
Fournitures
Étape 1 : Composants requis
- 1 x Arduino Mega ou Arduino Uno
- 1 x PCB percé
- 12 x Servomoteurs (9g)
- 1 x Capteur ultrason HC-SR04
- 4 x LED RGB
- Carton
Étape 2 : Maintenir le centre de gravité

Le centre de gravité (CG) est le facteur principal lors de la marche. Il doit rester au centre du corps pour l'équilibre ; s'il sort de certaines limites, l'équilibre est perdu et le robot tombe.
Si chaque patte est à 45°, le CG est parfaitement centré. Mais si on bouge une patte, le CG se déplace de ce côté, risquant la chute.
Pour éviter cela, les pattes aux extrémités sont maintenues à un angle supérieur à 45° selon la taille du robot, formant un triangle où le CG reste à l'intérieur, libérant la quatrième patte pour bouger tout en gardant le CG dans le triangle.
Étape 3 : Procédure de marche

- Position de départ : deux pattes (C, D) étendues d'un côté, les deux autres (A, B) rentrées.
- La patte avant droite (B) se lève et s'avance loin devant le robot.
- Toutes les pattes reculent, faisant avancer le corps.
- La patte arrière gauche (D) se lève et avance le long du corps. Position miroir du départ.
- La patte avant gauche (A) se lève et s'avance loin devant.
- Toutes les pattes reculent, corps avance.
- La patte arrière droite (C) se lève et revient vers le corps, retour à la position de départ.
Étape 4 : Plans du quadrupède
LEGS.pdf BODY.pdf
Étape 5 : Construction du corps


Construire le corps selon les plans PDF.
Étape 6 : Connexions du circuit

Créez votre propre shield selon vos besoins. L'Arduino Mega a 15 broches PWM : 12 pour les servos, 3 pour la LED RGB, 2 pour le capteur ultrason.
Étape 7 : Initialisation des servos
- Téléversez le programme sur l'Arduino Mega et commencez l'assemblage des pattes selon l'image.

#include <Servo.h>
Servo servo[4][3];
const int servo_pin[4][3] = { {10,11,2}, {3,4,5}, {6,7,8}, {9, 12, 13} };
void setup() {
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 3; j++) {
servo[i][j].attach(servo_pin[i][j]); delay(20);
}
}
}
void loop(void) {
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 3; j++) {
servo[i][j].write(90); delay(20);
}
}
}
Étape 8 : Étape finale


Code principal
spider (Arduino)
/* Includes */
#include <Servo.h>
#include <FlexiTimer2.h>
#define ledred 46 #define ledblue 44 #define ledgreen 45
/* Servos */
Servo servo[4][3];
const int servo_pin[4][3] = { {2, 3, 4}, {20, 6, 7}, {8, 9, 17}, {16, 12, 13} };
/* Dimensions robot */
const float length_a = 55; const float length_b = 77.5; const float length_c = 27.5;
const float length_side = 71; const float z_absolute = -28;
/* Constantes mouvement */
const float z_default = -50, z_up = -30, z_boot = z_absolute;
const float x_default = 62, x_offset = 0;
const float y_start = 0, y_step = 40; const float y_default = x_default;
/* Variables mouvement */
volatile float site_now[4][3]; volatile float site_expect[4][3];
float temp_speed[4][3]; float move_speed; float speed_multiple = 1;
const float spot_turn_speed = 4; const float leg_move_speed = 8;
const float body_move_speed = 3; const float stand_seat_speed = 1;
volatile int rest_counter; const float KEEP = 255; const float pi = 3.1415926;
/* Constantes rotation */
const float temp_a = sqrt(pow(2 * x_default + length_side, 2) + pow(y_step, 2));
const float temp_b = 2 * (y_start + y_step) + length_side;
const float temp_c = sqrt(pow(2 * x_default + length_side, 2) + pow(2 * y_start + y_step + length_side, 2));
const float temp_alpha = acos((pow(temp_a, 2) + pow(temp_b, 2) - pow(temp_c, 2)) / 2 / temp_a / temp_b);
const float turn_x1 = (temp_a - length_side) / 2;
const float turn_y1 = y_start + y_step / 2;
const float turn_x0 = turn_x1 - temp_b * cos(temp_alpha);
const float turn_y0 = temp_b * sin(temp_alpha) - turn_y1 - length_side;
// setup, loop, fonctions mouvement (stand, step_forward, step_back, turn_left, turn_right, hand_wave, hand_shake, body_dance)
// service servos (timer 50Hz), conversion cartésien/polaire, mapping polaire/servo
// Code complet disponible dans la source originale
spider_fix.ino (Arduino) - Position initiale pattes
// Position initiale des pattes - RegisHsu 2015-09-09
#include <Servo.h>
Servo servo[4][3];
const int servo_pin[4][3] = { {10,11,2}, {3,4,5}, {6,7,8}, {9, 12, 13} };
void setup() {
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 3; j++) {
servo[i][j].attach(servo_pin[i][j]); delay(20);
}
}
}
void loop(void) {
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 3; j++) {
servo[i][j].write(90); delay(20);
}
}
}
Pièces personnalisées et boîtiers

Schémas

Processus de fabrication
- Construisez votre propre LUMAZOID : Visualiseur musical DIY Arduino
- Panneau de contrôle Arduino Nano pour Flight Simulator 2020 – Affichage LCD et CDI
- Contrôler une LED par Bluetooth avec Arduino et MIT App Inventor
- Minuteur de lavage des mains Arduino : un outil DIY simple pour lutter contre le COVID‑19
- Mélangeur de couleurs RVB Arduino – Projet DIY débutant
- Maîtriser une matrice LED 8×8 avec Arduino Uno : Guide pas à pas
- Dispositif de Traitement Radionique EMR DIY avec Arduino Nano
- Projecteurs RGB LED extérieurs DMX – Abordables et haute performance
- Jeu de Roulette LED DIY – Construisez une Borne d'Arcade Solo avec Arduino Nano