Kit Bras Robotique 3 Axes Programmable – Contrôle Local & Bluetooth avec Arduino
Composants et Fournitures
| Composant | Quantité | Notes |
|---|---|---|
| Arduino Mega 2560 | 1 | |
| SainSmart Bras Robot 3 Axes pour Arduino UNO/MEGA2560 | 1 | |
| Kit MeArm DIY Bras Robotique | 1 | |
| Module Bluetooth HC-06 | 1 | |
| Afficheur LCD RGB 16x2 Adafruit | 1 | |
| Appareil Android | 1 | |
| Potentiomètre rotatif 10Kohm | 4 | |
| Bouton poussoir 12mm SparkFun | 3 | |
| LEDs (ROUGE, BLEU, VERT, JAUNE) | 4 |
Applications et Services
- Arduino IDE
- MIT App Inventor 2 (développement app Android)
À propos du projet

Ce tutoriel développe pas à pas un projet de contrôle et programmation d'un bras robotique, simulant les fonctions de base d'un robot industriel.
Étape 1 : Spécifications

Deux fonctions de base :
- Programmer : Enregistrer les positions du bras en 3D (chaque enregistrement = un "pas")
- Exécuter : Rejouer en séquence les positions enregistrées jusqu'à commande "ABORT"
Caractéristiques principales :
- Compatible robots 3 ou 4 DOF (degrés de liberté)
- Modes LOCAL et DISTANT (via appareil Android)
- Changement de mode possible pendant la phase de programmation
- Retour utilisateur : LEDs colorées, afficheur 2 lignes, buzzer
- Alarme sonore déclenchable aussi à distance
Étape 2 : Le Projet

Le diagramme montre la nomenclature complète. Choix de l'Arduino MEGA pour éviter les limitations de ports I/O (UNO possible avec extension type décodeur 74138).
Premier prototype programmé en "mode local".
Réseau Bluetooth : module HC-06.
App Android pour "mode distant" développée avec MIT App Inventor 2, plateforme puissante pour apps Android. Disponible gratuitement sur Google Play : MJRoBot Arduino Robot Arm Control.
Vidéo démonstration programmation à distance disponible.
Étape 3 : Développement du Projet


Classification des bras selon nombre d'articulations / DOF :
- Base (Taille) : rotation 180° ou 360° selon servo (ici 180°)
- Épaule : lève/abaisse le bras verticalement
- Coude : avance/recule le bras
- Pince (Gripper) : ouvre/ferme pour saisir
Étape 4 : Le Circuit

Servomoteurs pilotant les articulations, connectés directement à l'Arduino. Moteurs pas-à-pas parfois utilisés à la base pour couple/précision supérieurs. Choix des servos crucial (servos chinois bon marché type MG995 souvent médiocres – ceux fournis avec mon SainSmart 3DOF). Alimentation servos séparée de l'Arduino (5-6V externe, vérifier datasheet). Condensateurs 470µF entre VCC/GND recommandés pour filtrer bruit moteurs DC. Masse commune impérative.
Si servos vibrent : ajuster les delay() dans le code (laisser temps d'atteindre position). Vérifier servos analogiques (50Hz) vs numériques (300Hz) – bibliothèque standard Servo.h prévue pour analogiques, modifiable pour numériques.
Étape 5 : Le Code
Projet pas complexe mais nombreuses variables. Fichier de définition centralisé :
ArmDefine.h
Définit angles min/max/initiaux des servos. Deux jeux de paramètres pour les bras testés (un seul à utiliser) :
// MeArm 4-DOF
#define minGrip 15
#define minBase 0
#define minShou 60
#define minElbw 60
#define maxGrip 45
#define maxBase 170
#define maxShou 180
#define maxElbw 150
#define midGrip 30
#define midBase 87
#define midShou 138
#define midElbw 100
/* SS 3-DOF
#define minGrip 75
#define minBase 5
#define minShou 5
#define minElbw 0
#define maxGrip 125
#define maxBase 150
#define maxShou 155
#define maxElbw 0
#define midGrip 100
#define midBase 90
#define midShou 90
#define midElbw 0 */
Chaque bras a ses paramètres. Méthode recommandée : potentiomètres au milieu, mapping PWM par défaut (Max=255, Min=0, Mid=126), puis varier chaque pot et noter les valeurs min/max de fonctionnement correct sur Moniteur Série ou LCD. Remplacer mes valeurs dans ArmDefine.h.
Pour "enregistrer" les coordonnées (pas) : tableaux de données :
int gripPosition[100];
int basePosition[100];
int shouPosition[100];
int elbwPosition[100];
int positionIndex = 0; // index pour tableaux positions enregistrées
Note : positions non conservées après exécution (index remis à zéro). Alternative : stocker en EEPROM pour programmes persistants/multiples.
Étape 6 : Logique Programme
Boucle principale (Loop) simple :
void loop() {
checkBTcmd();
defineLocalRemote();
execTaskCmd = digitalRead(execTaskPin);
if (execTaskCmd == HIGH || command == "runon") {
RunProgram();
} else {
recArmPosition();
}
command = "";
}
- checkBTcmd() : assemble chaîne depuis caractères reçus du module BT → variable
command - defineLocalRemote() : analyse
commandpour changer mode LOCAL/DISTANT, gère aussi commande alarme (si alarme déclenchée sur Android → passage obligatoire mode DISTANT) - RunProgram() : préparations (LEDs, etc.) et appel ExecuteTask() qui contient la logique d'exécution : incrémente
positionIndex, envoie positions aux servos viaarmPosition(grip, base, shoulder, elbow) - recArmPosition() : définit positionnement servos via pots (mode LOCAL) ou sliders app Android (mode DISTANT). À chaque changement, envoie coordonnées via
armPosition(). Lecture position réelle + activation servos au déclenchement commande "SAVE"/"PROGRAM" (incrémente index, stocke le pas)
Organisation code en 4 fichiers :
- MJRoBot_Arm_Robot_Task_Prgm.ino : Setup, Loop, fonctions principales décrites ci-dessus
- General_Functions.ino :
checkBTcmd(), générateur sonbeep(pin, freq, ms), anti-rebonddebounce(pin) - Arm_Ctrl_and_Display.ino : lecture pots
readPotenciometers(), lecture sliders AndroidreadSliders(), pilotage servosarmPosition(grip, base, shoulder, elbow), affichage LCD/Moniteur Série, alarmes - ArmDefine.h : définitions constantes (voir Étape 5)
Important : Arduino à 16MHz lit les boutons des centaines de fois/seconde → anti-rebond indispensable sur bouton d'enregistrement.
Vidéo démo : bras 4DOF MeArm programmé à distance via app Android.
Code source complet sur GitHub : https://github.com/Mjrovai/MJRoBot-Programmed-Arm
Étape 7 : Conclusion

J'espère que ce projet aidera d'autres à explorer l'électronique, la robotique et l'IoT ! Plus de projets sur mon blog : MJRoBot.org
Saludos du bout du monde ! À bientôt pour le prochain tutoriel !
Merci, Marcelo
Code
Extrait 1 : Définitions bras (Arduino)
// MeArm 4-DOF
#define minGrip 15
#define minBase 0
#define minShou 60
#define minElbw 60
#define maxGrip 45
#define maxBase 170
#define maxShou 180
#define maxElbw 150
#define midGrip 30
#define midBase 87
#define midShou 138
#define midElbw 100
/* SS 3-DOF
#define minGrip 75
#define minBase 5
#define minShou 5
#define minElbw 0
#define maxGrip 125
#define maxBase 150
#define maxShou 155
#define maxElbw 0
#define midGrip 100
#define midBase 90
#define midShou 90
#define midElbw 0 */
Extrait 2 : Tableaux positions (Arduino)
int gripPosition[100];
int basePosition[100];
int shouPosition[100];
int elbwPosition[100];
int positionIndex = 0; // Index pour tableaux positions tâches enregistrées
Extrait 3 : Boucle principale (Arduino)
void loop() {
checkBTcmd();
defineLocalRemote();
execTaskCmd = digitalRead(execTaskPin);
if (execTaskCmd == HIGH || command == "runon") {
RunProgram();
} else {
recArmPosition();
}
command = "";
}
GitHub
https://github.com/Mjrovai/MJRoBot-Programmed-Arm
Schémas
Bras Robotique
Processus de fabrication
- Construire une télécommande Android universelle avec Arduino, 1Sheeld et contrôle IR
- Comment les bras robotiques industriels transforment la fabrication : avantages clés
- Manipulateurs robotiques vs bras robotiques : différences clés expliquées
- Créer des animations et jeux sur LCD avec Arduino UNO
- Construire un Voltmètre Intelligent avec Arduino et Smartphone – Projet DIY Facile
- Contrôle IoT à Distance d'un Bras Robotique Personnalisé avec Arduino MKR1000
- Construire un bras robotique 3D fonctionnel piloté par Arduino – Guide pas à pas
- Bras robotique 6 DoF piloté par Nunchuk Wii – Kit Arduino Mega
- Construire un voltmètre DIY avec Arduino et écran Nokia 5110