Projet Scorbot : faire revivre un vieux robot

De quoi parle ce projet ?

On s’est lancé dans la réhabilitation d’un Scorboter ER 5 Plus — un bras robotique éducatif des années 1990, conçu pour l’enseignement et les démonstrations. C’est un robot à 5 axes + pince (base, épaule, coude, poignet, pince), piloté à l’origine par le logiciel SCORBASE d’Intelitek, via une liaison série ou un boîtier dédié.

Le problème : on n’a plus accès au logiciel d’origine. Plus de SCORBASE, plus de PC avec le bon câble… L’idée est donc de faire revivre ce robot avec des outils d’aujourd’hui : Python, Scratch pour les plus jeunes, et surtout une interface web en WiFi pour le commander depuis un téléphone ou une tablette.

Le but du projet

  • Pouvoir commander le robot sans l’ancien logiciel — en utilisant du code ouvert (Arduino, ESP32, Python).
  • Offrir une interface simple — une page web sur le réseau local : champs pour les positions des 6 axes, boutons « Envoyer position », « Calibration (home) », « Arrêt d’urgence », et affichage des encodeurs en temps réel.
  • Garder la porte ouverte à un pilotage depuis Scratch (via un pont web ou série) ou depuis des scripts Python.

Ce qu’on a déjà fait

Documentation et repères

On a rédigé un guide qui recense les options : garder le boîtier d’origine (et retrouver son protocole série) ou le remplacer par une carte type Arduino / STM32. Le guide pointe vers des dépôts Git utiles (contrôleurs Scorbot ER 5 Plus, ER Vplus, exemples Python, etc.) et décrit des protocoles type « AT » pour parler au robot en série. On a aussi préparé des exemples Python (envoi de commandes série, pont HTTP pour Scratch) pour plus tard.

Code Arduino Mega (Scorbot)

On s’est appuyé sur un dépôt existant (Scorbot-master) dont le cœur est le fichier ScorbotCOMcontrol.ino. Ce programme fait tout le travail côté robot : lecture des encodeurs et des microswitches (fin de course), commande des moteurs (pont en H), et réception des ordres par série (en-têtes 255,254,100 pour un point, 200 pour la calibration, 150 pour une trajectoire polynomiale). On a commenté tout ce code en français pour bien comprendre chaque étape et pouvoir le réutiliser ou l’adapter.

Version ESP32 + interface web

L’objectif suivant était de se passer du câble série et du PC : un ESP32 se connecte au WiFi (à la box), héberge un petit serveur web et affiche une page avec les 6 axes, les boutons de commande et l’état des encodeurs. On a donc créé une version « v2 » du contrôleur : même logique que le Mega (moteurs, encodeurs, microswitches), mais avec un décodeur d’encodeur logiciel (car la librairie d’origine est pour Arduino AVR). L’ESP32 se connecte en mode STA à la box ; l’adresse IP s’affiche dans le moniteur série (74880 bauds) pour ouvrir la page dans le navigateur.

Les tests réalisés

  • Test « web only » : un sketch minimal (WiFi + une seule page HTML, sans aucun code robot) pour vérifier que la connexion WiFi et l’affichage de la page fonctionnent. Résultat : OK — on voit bien l’IP en série et la page dans le navigateur.
  • Test avec le code robot complet mais sans matériel : pour éviter tout risque avec l’ESP32 nu (aucun moteur ni encodeur branché), on a ajouté un mode démo (ROBOT_HARDWARE_CONNECTED = 0). Dans ce mode, aucune broche n’est configurée en sortie, aucune interruption n’est attachée ; l’interface web répond quand même (OK sur les boutons, encodeurs affichés à zéro avec la mention « demo »). Dès qu’on branchera le robot, on passera le flag à 1 et on recompile.

Où on en est aujourd’hui

À ce stade, on a :

  • Un guide et des exemples Python pour le pilotage série et Scratch.
  • Le code Arduino Mega (ScorbotCOMcontrol.ino) entièrement commenté en français.
  • Une version ESP32 avec interface web (WiFi STA, page de contrôle, mode démo sans matériel).
  • Un sketch « web only » qui valide WiFi + page web.

Le robot n’est pas encore physiquement branché à l’ESP32 (pas de moteurs sous la main pour l’instant). L’interface web et la logique côté ESP32 sont prêtes ; dès que le câblage sera fait et ROBOT_HARDWARE_CONNECTED mis à 1, le pilotage robot sera actif.

On anticipe aussi le cas où un seul ESP32 ne suffirait pas (nombre de broches pour tous les moteurs). La piste retenue est une architecture ESP32 + Arduino Mega : le Mega garde tout le pilotage robot (le code actuel) et reçoit les commandes en série ; l’ESP32 ne fait que le WiFi et l’interface web, et envoie à la Mega le même protocole (octets d’en-tête + positions) qu’un PC. Câblage en UART (TX/RX) entre les deux ; côté Mega, on utilisera Serial1 pour ne pas bloquer l’USB.

Prochaines étapes

  • Brancher moteurs, encodeurs et microswitches sur la carte choisie (ESP32 seul ou Mega).
  • Passer ROBOT_HARDWARE_CONNECTED à 1 sur l’ESP32 et valider les mouvements réels.
  • Si besoin, mettre en place le bridge ESP32 ↔ Mega (sketch ESP32 qui envoie le protocole série, Mega sur Serial1).