Accueil > ESP32, impression 3D > Bras robotisé 5 servos SG90 piloté par un ESP32 en MicroPython

Bras robotisé 5 servos SG90 piloté par un ESP32 en MicroPython

Ayant depuis peu une imprimante 3D Geeetech A10, j’ai effectué une recherche sur le fameux site Thingiverse et je suis tombé sur la modélisation d’un bras miniature pour des servos SG90.

Depuis le temps que je souhaitais en réaliser un, voici un rêve qui devient réalité. Désolé mais le tuto est long…

Le matériel nécessaire à la réalisation de ce petit bras sera le suivant :

  • Une imprimante 3D et télécharger les fichiers nécessaires sur le site Thingiverse afin d’imprimer les différentes pièces.
  • 5 servos moteur SG90.
  • Un ESP32 avec Micropython installé.
  • Une plaque Breadboard pour monter la partie électronique.
  • Je vais également prévoir l’impression d’un support boitier pour le bras qui hébergera l’électronique.

La première étape est d’imprimer les différentes pièces du bras; pour ma part j’ai utilisé du PLA blanc avec une impression à 0.15 mm. Attention à bien choisir les fichiers qui ont dans le nom ‘mm’.

La première pièce est le support du bras ayant pour nom ‘fot_for_mm.stl‘ :

La seconde pièce à imprimer est le pivot ayant pour nom ‘sving_v2_-_mm.stl‘ :

La troisième pièce est une partie de bras ayant pour nom ‘arm_v4_-_mm.stl‘ :

La quatrième pièce est une partie du bras ayant pour nom ‘arm_w_spring‘ :

La cinquème pièce concerne le haut du bras ayant pour nom ‘arm_front_v3_-_mm.stl‘ :

La sixième pièce concerne les pinces à imprimer 2 fois ayant pour nom ‘gripper_v5_-_mm.stl‘ :

Attention pour l’impression de la pince (à imprimer 2 fois), j’ai activé le support dans Cura afin de réussir l’impression.

Pour la dernère pièce, c’est un petit engrenage ayant pour nom ‘grippergear_-_mm.stl‘ :

Attention pour cette dernière pièce, j’ai été obliger de l’agrandir un petit peu dans Cura afin que l’engrenage puisse s’emboiter sur le servo.

Pour l’ensemble, il faut compter environ 6 heures d’impression.

Ensuite il faut monter les servos aux emplacements prévus à cet effet (attention en forçant les servos dans leur emplacement, on peut casser les pièces); donc voici le montage du bras :

Le plus difficile est de positionner les 2 pinces avec l’engrenage mais vraiment le montage reste simple. Comme on peut voir sur la photo le pied du bras ne permettra pas de maintenir le robot si le bras s’ouvre complètement.

Donc je suis partie pour imprimer un support qui fera office de boitier pour l’électronique :

J’ai une ouverture pour l’ensemble des câbles servos et une ouverture pour l’accès à l’USB de l’ESP32.

Ce boitier que j’ai modélisé à l’aide de Fusion 360 est pour une carte Breadboard de 78mm x 58mm et un ESP32 Wroom de chez Seeektool. L’impression avec une qualité de 0.15 mm et une vitesse de 60 mm/s  a pris environ 8h.

Passons au montage électronique; j’ai soudé l’ESP32 sur le breadboard et j’ai préparé pour chaque servo, un connecteur avec 3 broches (masse, 3.3V, signal); j’ai également prévu un connecteur pour une connexion I2C pour étendre les possibilités du bras :

Pour le connecteur I2C, les broches correspondantes seront les suivantes (en partant du haut) :

  • pin 1 : non connecté
  • pin 2 : GND
  • pin 3 : SCL
  • pin 4 : SDA
  • pin 5 : +3.3v

 

Voici l’ensemble monté et prêt à être programmé; le pied du bras est collé sur la plaque :

Passons à la partie programmation; j’ai décidé d’utiliser MicroPython version 1.10 sur l’ESP32 WROOM.

La première expérimentation du bras va consister à créer un serveur Web qui jouera également de point d’accès WiFi afin de piloter le bras.

On se connectera au bras via le WiFi à partir d’un ordinateur ou d’un téléphone; le point d’accès se nomme ‘microarm‘ et est non sécurisé.

La page Web sera la suivante et un fichier de nom ‘robot_arm_web.html‘ contiendra le nécessaire en HTML et des scripts Javascripts pour permettre la mise à jour dynamique de la page HTML :

Nous aurons 5 sliders qui permet de piloter les 5 servos; afin de gérer la page HTML dynamiquement, j’ai implémenté l’utilisation d’AJAX.

Dans le fichier HTML, il faudra régler pour les sliders les valeur min et max en fonction du positionnement des servos (cela prend un peu de temps mais est nécessaire).

L’utilisation des boutons sera la suivante :

  • Sauve : à chaque fois que vous cliquez sur ‘sauve’, vous sauvegardez l’ensemble de la position du bras; cela permet d’enregistrer une série de mouvements.
  • Init : permet d’initialiser à zéro les mouvements sauvegardés; permet également d’arrêter l’exécution en boucle.
  • Executer une fois : exécute une seule fois les mouvements sauvegardés.
  • Executer en boucle : exécute en boucle les mouvements sauvegardés.

Le programme en Micropython de nom ‘robot_arm_web.py‘ permettra d’effectuer les tâches suivantes :

  • Initialisation du WiFi en point d’accès de nom ‘microarm‘; l’adresse IP du module sera 192.168.4.1.
  • Création d’un socket de communication écoutant sur le port 80.
  • Envoi de la page Web, en chargeant le fichier ‘robot_arm_web..html‘.
  • Traitement des actions à effectuer sur la page Web.
  • Gestion des servos.
  • Mise en place d’un Thread pour l’exécution en boucle afin de pouvoir toujours traiter les requêtes sur la page HTML.

Les 2 fichiers sont accessible en téléchargement sur mon Github. J’ai également déposé le fichier 3D au format STL du boitier/support du bras.

Pour l’instant je n’ai pas conçu de couvercle car je vais y effectuer un certain nombre de tests et certainement y ajouter des fonctionnalités.

Une petite vidéo sur mon Youtube lors des tests. D’autres vidéos vont arriver….

D’autres articles en perspectives sont prévus pour ajouter des fonctionnalités à l’ensemble.

Publicités
Catégories :ESP32, impression 3D Étiquettes : , , ,

Répondre

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l'aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

%d blogueurs aiment cette page :