Bras robotique piloté par Ethernet : contrôle à distance simplifié
Composants et fournitures
| Arduino 101 | ×1 |
| WIZnet WIZ750SR – Module Ethernet série | ×1 |
| Appareil Android | ×1 |
| Bras robotique 4 DoF (kit DIY ~25$ Banggood, ou tout autre bras – ajustez le code si différent) | ×1 |
| Servomoteurs à engrenages métalliques (micro) | ×4 |
Applications et services en ligne
- Arduino IDE
- Outil de configuration WIZnet S2E
- Android Studio
À propos du projet
Introduction
J'adore les bras robotiques. Quelques pièces mécaniques simples, des servomoteurs, un bon logiciel, et vous obtenez un dispositif non seulement spectaculaire et amusant, mais réellement utile. Je voulais en construire un depuis un cours de robotique que j'ai beaucoup aimé.
On apprend énormément en construisant un bras robotique – c'est un excellent projet de niveau intermédiaire pour approfondir vos connaissances en robotique. C'est parti !
Le bras robotique
On trouve des bras robotiques à partir de ~20$. Pour expérimenter, j'ai commencé avec un modèle bon marché : un bras 4 DoF (degrés de liberté) DIY à 25$ de Banggood.
C'est un bras 4 DoF : 3 servos pour le positionnement, 1 pour l'effecteur (pince). La pince peut atteindre n'importe quelle position dans une zone donnée, mais son orientation est fixe. Limitation significative, mais acceptable pour débuter.
Le kit DIY inclut 4 servos (tout sauf le contrôleur). Les servos fournis sont corrects, mais j'ai préféré ces servos à engrenages métalliques : plus rapides et plus robustes (engrenages métal vs plastique).
Les pièces arrivent en 4 plaques de plastique. Il faut les détacher délicatement. Je recommande de regarder cette vidéo (montage à 7:43) – bien meilleure que la notice fournie de mauvaise qualité. Attention : le plastique casse facilement si on serre trop les vis. Le serrage optimal est crucial sur certaines articulations.
Le servo de la pince a un câble trop court : je l'ai désoudé et remplacé par un câble au moins deux fois plus long.
Le cerveau : Arduino 101
Seul Arduino officiel avec microcontrôleur Intel (Intel Curie). Gyroscope et accéléromètre intégrés, Bluetooth (pour futur contrôle BLE). Atout majeur : USB Serial (Serial) et UART matériel sur D0/D1 (Serial1) sont séparés. Pas besoin de déconnecter le circuit de communication pour reprogrammer. Très utile pour le débogage.
L'Arduino 101 a 4 broches PWM (D3, D5, D6, D9) – toutes utilisées pour les 4 servos.
Communication : WIZ750SR
Module Ethernet compact avec MCU Cortex-M0. Fonction de base : convertisseur Série ↔ Ethernet, mais reprogrammable (ex: I2C vers Ethernet). Fonctionnalité clé : serveur TCP intégré (ou client). Contrôle de l'Arduino à distance comme via USB Série, mais depuis n'importe où ! Côté Arduino, c'est totalement transparent – aucun code supplémentaire nécessaire.
J'utilise aussi la carte d'évaluation WIZ750SR-TTL-EVB (alimentation + port USB debug). Les deux cartes (Arduino 101 et WIZ750SR) sont en 3,3V → pas de level shifting nécessaire sur TX/RX. L'Arduino alimente le module Ethernet. Les servos ont leur propre alim 5V. Schéma simple dans la section Schématiques.
Configuration du module
La documentation WIZnet est excellente (lien). Quelques points d'attention :
- Le port USB de la carte d'évaluation sert au debug/flash, pas à la communication TCP.
- LED bleue allumée = connexion réseau OK, continuez avec l'outil de configuration.
- Problème rencontré : l'outil ne trouvait plus le module après 2 semaines. Solution : reflash via le port USB debug avec le firmware le plus récent. La version Python sous Ubuntu a fonctionné, puis Windows a retrouvé le module.
- Les machines virtuelles et leurs adaptateurs réseau virtuels peuvent perturber la recherche.
- Outil de test TCP pratique : NetCat (
nc [ip_serveur_tcp] [port_serveur_tcp]).
Déplacement de A vers B
Pour bouger le bras, on envoie les angles cibles des articulations. Méthode simple : mise à jour directe des angles (essais/erreurs). Prochain projet : cinématique inverse pour coordonnées monde.
La vitesse est critique. Les servos sont rapides mais ont besoin de temps. Les fils dupont n'aiment pas les mouvements trop vifs. J'ai donc implémenté un calcul de trajectoire avec temporisation :
- Commande position :
A 10 130 120 110→ mouvement avec pas de 10 ms, angles : 130° (articulation haute), 120° (basse), 110° (base rotative) - Commande pince :
G 1→ fermer pince (niveau 1 = léger). 0 = ouvrir
Le calculateur de trajectoire détermine un pas optimal pour chaque servo de positionnement : tous atteignent leur but simultanément, mouvement linéaire fluide. La pince fonctionne différemment : états discrets (ouvert/fermé 3 niveaux) sans transition douce – on veut saisir vite.
Application Android pour contrôle à distance
L'appli a un client TCP qui se connecte directement au serveur TCP du WIZ750SR. Le bras ne stocke pas la trajectoire complète : il ne connaît que l'objectif courant. L'appli envoie périodiquement de nouvelles positions basées sur le retour de position. Si l'appli se ferme ou se déconnecte, le bras s'arrête à sa dernière position reçue.
Écran "Configurer" avec 3 onglets : Exécuter, Initialisation, Boucle. Init et Boucle sont identiques, seul l'endroit de sauvegarde diffère. 4 curseurs (position + vitesse) + bouton pince. Modifications instantanées sur le bras. Bouton "Sauvegarder" pour ajouter à la séquence.
Si on change pince ET position, cela crée deux commandes distinctes (pince d'abord, puis position).
L'exécution démarre par Init (mouvements non répétés), puis Boucle (répétition infinie jusqu'à arrêt). Champs EditText : modifiables, copiables, l'appli mémorise la dernière séquence.
Retour visuel : gauche = position cible envoyée (S), droite = position actuelle reçue (R). Nouvelle cible envoyée dès que cible = position actuelle.
Résultats
Vidéo démo : le bras place des canards en caoutchouc (Init) puis les déplace un par un autour de lui indéfiniment (Boucle). Mouvements fluides, continus et précis malgré le matériel bon marché et ses limitations.
Conclusion
Le logiciel fonctionne très bien. Je continuerai d'améliorer ce bras ou d'en construire un plus avancé. Objectifs atteints sans blocage majeur.
- Arduino 101 : idéal pour ce projet. Seule limite : 4 broches PWM (problème futur si plus de DoF). USB Serial et GPIO Serial séparés = gros atout en développement. Puissance de calcul confortable.
- Appli Android : bonne idée, mais à rendre plus robuste, conviviale et fonctionnelle (version alpha).
- WIZ750SR : excellente surprise. Après configuration, fonctionnement parfait, totalement transparent, zéro problème. Meilleur module Ethernet jamais utilisé avec un microcontrôleur.
Travailler avec des bras robotiques est passionnant, j'en referai et partagerai mes apprentissages ! Merci de votre lecture.
Code
- Éditeur Web Arduino : accès direct au code Arduino du projet
- Code Arduino + Android : https://github.com/abysmalsb/Robot-Arm-Controller
Schématiques
Actuellement deux sources d'alimentation séparées : USB Arduino + source 5V externe pour les servos. Schéma joint.
Processus de fabrication
- Construire un robot Raspberry Pi piloté par Bluetooth avec retour audio
- Robot à commande gestuelle piloté par Raspberry Pi
- Construire un robot piloté par la parole avec Windows 10 IoT Core sur Raspberry Pi 2
- Construire un robot Raspberry Pi piloté Wi-Fi avec Python – Guide pas à pas
- ROObockey : Robot de hockey sur rue télécommandé à visée assistée de précision
- Robot SCARA double bras : Solutions avancées d'assemblage et production
- Bras Robotique MeArm V1.0 – Construisez Votre Bras Robotisé Arduino et Raspberry Pi
- Contrôler des LED avec Alexa via Raspberry Pi – Guide Pas à Pas
- Bras robotique 6 DoF piloté par Nunchuk Wii – Kit Arduino Mega