Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Arme de robot contrôlée via Ethernet

Composants et fournitures

Arduino 101
× 1
WIZnet WIZ750SR
× 1
Appareil Android
× 1
Bras Robot
Vous pouvez utiliser n'importe quel autre bras de robot, mais vous devrez peut-être ajuster le code si votre bras de robot est trop différent
× 1
Metal Gear Micro Servo
× 4

Applications et services en ligne

Arduino IDE
Outil de configuration WIZnet S2E
Android Studio

À propos de ce projet

Présentation

J'adore les bras robots. J'aime que vous ayez juste besoin de pièces mécaniques simples, de servos ou de moteurs, d'un bon logiciel et vous pouvez obtenir un appareil qui n'est pas seulement spectaculaire et amusant, mais aussi vraiment utile. Je voulais en construire un car j'avais un cours de robotique que j'aimais vraiment.

Vous pouvez apprendre beaucoup lorsque vous construisez un bras de robot, donc je pense que c'est un excellent projet de niveau intermédiaire pour approfondir vos connaissances en robotique. Commençons !

Bras robotique

Vous pouvez acheter des bras de robot à partir d'environ 20$. Pour expérimenter, je voulais commencer avec un moins cher. Plus tard, je construirai ou j'achèterai un bras de robot plus sérieux, mais pour l'instant, je vais travailler sur ce bras de robot DIY à 25 $ de Banggood.

Il s'agit d'un bras de robot 4DoF (Degrés de liberté), où 3 servos sont utilisés pour le déplacement et un pour l'effecteur (je l'ai appelé pince dans le projet). Cela signifie que la pince peut être déplacée dans n'importe quelle position dans une zone spécifique, mais ses angles ne peuvent pas être modifiés. C'est une limitation importante, mais ça va pour l'instant et c'est toujours bon pour beaucoup de choses.

Le kit de bricolage est venu avec 4 servos, donc en fait, vous obtenez tous les composants pour construire le bras du robot en plus d'un contrôleur. Ces servos ne sont pas mauvais, mais j'ai préféré ceux-ci :

Ces servos sont plus rapides que les bleus et ils utilisent des engrenages en métal au lieu de plastique.

Les pièces du robot sont venues en 4 feuilles de plastique. Vous devez retirer les pièces de ces feuilles.

Le kit de bras de robot composé d'un tas de pièces. Je vous recommande de regarder la vidéo suivante. Dans cette vidéo, un Russe construit le même type de bras de robot. La partie construction commence à 7h43.

J'ai reçu un lien sur l'emballage expliquant comment construire le bras du robot, mais la qualité des images et des instructions était très faible. Cette vidéo est bien meilleure. Vous pouvez peut-être comprendre ce qui est quoi, mais si vous faites cela, vous vous retrouverez dans une boucle presque infinie d'assemblage, de démontage, de remontage.

Soyez très très prudent lorsque vous insérez les servos. Cette conception avec ce genre de plastique a tendance à se casser très facilement lorsque vous serrez les vis. Le serrage optimal des vis est également important sur certaines autres parties du robot. Rendez-les trop serrés et vous ne pourrez pas déplacer les segments du bras du robot avec les servos.

Après quelques constructions, vous vous retrouverez avec votre propre bras robotique.

Les servos de positionnement ont un câble assez long, mais la pince a besoin d'un câble beaucoup plus long. J'ai démonté ce servo, dessoudé l'ancien câble et j'ai utilisé un câble au moins deux fois plus long.

Cerveau

Très bien, le bras du robot est prêt, mais il est plus que probable que vous vouliez le contrôler d'une manière ou d'une autre. J'avais besoin d'un microcontrôleur pour cela et j'ai choisi mon Arduino 101 pour ce travail.

C'est la seule carte Arduino officielle qui utilise un microcontrôleur Intel (Intel Curie). Il a un gyroscope et un accéléromètre intégrés. Il dispose également de Bluetooth, ce qui me laisse la possibilité de contrôler le robot via BLE à l'avenir. Une autre caractéristique très utile de cette carte est le fonctionnement de la communication série. Contrairement à la plupart des Arduinos, la série USB et l'UART sur les broches 1 et 0 (TX et RX) ne sont pas les mêmes. Il a ses avantages comme je n'ai pas à déconnecter d'autres circuits de communication des broches 0 et 1 lorsque je reprogramme l'Arduino. Il est également utile à des fins de débogage.

Si vous souhaitez utiliser la série du port USB, vous devez utiliser 'Serial' et si vous souhaitez utiliser les broches GPIO0 et GPIO1, vous avez 'Serial1'

L'Arduino 101 dispose de 4 GPIO compatibles PWM (GPIO3, GPIO5, GPIO6 et GPIO9) et je les ai tous utilisés pour contrôler les servos.

Communication

Mon bras robotique peut être contrôlé par série (Serial1 pour être précis). J'ai utilisé mon dernier module de communication, le WIZ750SR à cet effet.

Il s'agit d'un petit module Ethernet avec un microcontrôleur Cortex-M0. Dans sa fonctionnalité de base, il s'agit d'un module série vers Ethernet, mais vous pouvez facilement reprogrammer le module pour répondre à vos besoins. Vous pouvez transformer cette carte en une carte I2C vers Ethernet si vous le souhaitez.

Une fonctionnalité très intéressante est le serveur TCP intégré (ou client). En utilisant le serveur TCP, vous pouvez contrôler l'Arduino à distance, comme vous le feriez via une série USB, mais de n'importe où dans le monde ! Du côté de l'Arduino c'est complètement transparent. Vous n'avez pas besoin d'ajouter de code supplémentaire à votre croquis pour utiliser ce module.

J'ai aussi une carte d'évaluation WIZ750SR-TTL-EVB. Je pouvais alimenter le WIZ750SR et j'ai un port USB de débogage, mais je ne l'ai pas utilisé à part quelques expérimentations précoces.

L'Arduino 101 et le WIZ750SR utilisent tous deux 3,3 V et je n'ai donc pas eu à utiliser le décalage de niveau pour les broches TX et RX. L'Arduino alimente également le module Ethernet à partir de son alimentation. Le circuit est très simple et vous pouvez le trouver dans la section Schémas de ce projet. Les servos ont leur propre alimentation 5V.

Configuration du module

Pour utiliser cette carte, vous devez d'abord la configurer. Je ne re-documenterai pas cette partie car les gars de WIZnet l'ont déjà fait ici et vous pouvez être sûr que vous y trouverez toujours la dernière documentation.

Leur documentation est excellente, mais j'ai des informations utiles et j'ai eu des problèmes (résolus) qui méritent d'être partagés.

Tout d'abord, vous pouvez alimenter la carte à partir du port USB de la carte d'évaluation, mais en plus de cela, ce port est principalement utilisé pour le débogage et le flash. Je pense que vous ne pouvez pas communiquer avec le serveur TCP du WIZ750SR en utilisant le port USB, mais vous recevrez des informations de débogage si vous vous connectez à ce port COM. Cela m'a causé une certaine confusion au début car je ne savais pas à quoi m'attendre.

Deuxièmement, si la LED bleue est allumée lorsque le WIZ750SR se connecte à votre réseau, alors votre carte devrait fonctionner correctement, continuez avec l'outil de configuration, elle devrait trouver la carte.

Mon plus gros problème s'est produit à ce stade lorsque j'ai essayé de rechercher le périphérique dans l'outil de configuration. Au début ça fonctionnait à merveille, mais ensuite je n'ai pas eu le temps alors je me suis arrêté là. Après deux semaines, j'ai essayé de le refaire, mais il ne trouvait plus la carte sous plusieurs systèmes d'exploitation et ordinateurs sur plusieurs réseaux.

J'ai fait un reflashage via le port USB de débogage de la carte d'évaluation avec le dernier firmware et cela a fonctionné. Mon PC Windows ne pouvait toujours pas le trouver, mais la version Python sous Ubuntu le pouvait. Je ne sais pas quel était le problème, mais ces étapes ont finalement résolu mon problème. Après avoir configuré avec succès le WIZ750SR, mon PC Windows a également pu le retrouver, j'ai donc continué le travail.

Comme je l'ai lu, les VM avec leurs adaptateurs réseau virtuels perturbent également la recherche, donc si vous rencontrez des problèmes avec la recherche, vous devriez y jeter un œil.

NetCat est un excellent outil pour tester la communication TCP. En utilisant ce logiciel, vous pouvez vous connecter au serveur TCP sur le WIZ750SR. Après avoir installé NetCat, utilisez cette commande pour vous connecter :

nc [tcp_server_ip] [tcp_server_port]  

Après cela, vous pouvez directement envoyer et recevoir des données du WIZ750SR. J'ai beaucoup utilisé cet outil.

Passer de A à B

Pour déplacer un bras de robot, vous devez dire au contrôleur ce que vous voulez. Le moyen le plus simple est de mettre à jour directement les angles de tous les servos. La mise à jour des angles des articulations peut être effectuée avec quelques essais et erreurs et cela peut en fait bien fonctionner.

Dans mon prochain projet de bras de robot, j'utiliserai la cinématique inverse pour contrôler le bras du robot avec les coordonnées du monde, mais pour l'instant, je contrôlerai le robot en utilisant uniquement les angles d'articulation.

La vitesse du système est ici un point clé. Les servos sont très rapides mais il leur faut encore du temps pour atteindre la position reçue. Par contre, les fils volants n'aiment pas les mouvements très rapides, j'ai donc dû ralentir les choses. Tant sur la partie matérielle que logicielle.

J'ai fait cela en créant un calcul de chemin vers le système et en insérant un délai. Lorsque vous envoyez de nouveaux angles d'articulation pour le bras du robot, vous devez fournir un paramètre supplémentaire :la vitesse (mDelay). Fondamentalement, vous indiquez au contrôleur du bras du robot le temps de pas minimum de la boucle. Le calculateur de trajectoire calculera une taille de pas facultative pour chaque servomoteur de positionnement. Cela signifie que tous les servos atteindront leur objectif à peu près au même moment et la vitesse dépend du délai. Le résultat est un mouvement linéaire très agréable et fluide à chaque fois.

L'effecteur fonctionne différemment. Fondamentalement, il ne peut avoir qu'un état ouvert ou fermé (avec 3 niveaux différents de force fermée), sans transition en douceur. Évidemment, vous voudrez saisir l'objet dès que possible, tandis que le déplacement doit être fluide et agréable.

Il existe actuellement 2 types de commandes dans ce système. Voici un exemple pour les deux :

  • G 1 --> Fermeture de la pince, légèrement. 0 signifie ouvert
  • A 10 130 120 110 --> Déplacement du bras du robot avec un temps de pas de 10 ms, un angle d'articulation supérieur de 130º, un angle d'articulation inférieur de 120º et un angle de rotation de base de 110º.

Application Android pour le contrôle à distance

Très bien, donc à ce stade, je peux contrôler le bras du robot de n'importe où dans le monde, mais je dois écrire manuellement chaque nouvelle commande. Ce n'est pas très amusant de cette façon. J'avais besoin d'un moyen beaucoup plus convivial de contrôler le bras du robot, alors j'ai créé une application Android pour faire exactement cela.

L'application dispose d'un client TCP, elle peut donc se connecter directement au serveur TCP du WIZ750SR. Le bras du robot ne stocke pas le tracé des mouvements anciens et futurs. Il ne connaît qu'une position de but actuelle. Cela signifie que l'application n'enverra pas simplement l'ensemble du tracé de mouvement au bras du robot, mais qu'elle enverra plutôt périodiquement de nouvelles positions au bras du robot, en fonction du retour de position. Si vous fermez l'application ou vous déconnectez du WIZ750SR, le bras du robot s'arrêtera de bouger dès qu'il aura atteint sa dernière position reçue.

Après vous être connecté au bras du robot, vous arriverez à l'écran Configurer. Il contient 3 pages. Le premier est Run (plus de détails plus tard), le second est Init et le troisième est Loop. Init et Loop sont fondamentalement les mêmes, leur seule différence est l'endroit où ils enregistrent la position.

L'écran contient 4 barres de recherche et un bouton de préhension en plus du bouton de sauvegarde. Ces curseurs sont utilisés pour régler la position et la vitesse du mouvement, tandis que le bouton de préhension sert à ouvrir ou fermer l'effecteur. Tous les changements sont instantanés, vous verrez donc immédiatement la nouvelle position sur le bras du robot, mais vous devez cliquer sur le bouton Enregistrer pour l'ajouter au tracé. Voici une courte démonstration à ce sujet :

Si vous modifiez à la fois l'état de la pince et la position du bras du robot, cela sera enregistré sous deux commandes différentes. La commande de préhension d'abord, puis la commande de position.

Comme vous vous en doutez, l'exécution de l'intrigue commencera avec init. L'initialisation et la boucle fonctionnent exactement comme les fonctions de configuration et de boucle d'Arduino. Init est bon pour les mouvements qui ne seront pas répétés plus tard. Lorsque les commandes d'initialisation sont terminées, les commandes de boucle suivront. Les commandes de boucle seront répétées indéfiniment, ou au moins jusqu'à ce que vous arrêtiez le tracé. Si vous n'avez pas besoin de boucle ou d'initialisation, vous laissez simplement ce champ vide.

Ces champs sont des champs EditText, ce qui signifie que vous pouvez facilement modifier ou supprimer leur contenu. Si vous ne souhaitez pas utiliser les curseurs, vous pouvez écrire les commandes à la main. Vous pouvez également copier et coller le tracé. L'application se souviendra du dernier tracé que vous avez exécuté pour une utilisation ultérieure.

La première ligne sous « Configurer » est utilisée comme retour visuel pour les tests. La partie gauche vous montre la dernière position d'objectif pour le bras du robot (S - envoyé), tandis que le champ droit est la position actuelle de celui-ci (R - reçu). L'application enverra une nouvelle position d'objectif au bras du robot dès que l'objectif et les positions actuelles seront les mêmes.

Comme vous pouvez le voir, lorsqu'il n'y avait que l'initialisation, le bras du robot s'arrêtait dès qu'il terminait les commandes d'initialisation.

Avec mon application, vous pouvez faire pas mal de choses, mais il y a beaucoup de possibilités d'amélioration à l'avenir. Je prévois d'utiliser des fonctions, un contrôle conditionnel, des boucles avec des arguments, etc. dans les tracés.

Si vous souhaitez construire un robot similaire, vous pouvez trouver à la fois le code Arduino et l'application Robot Arm Controller dans le segment Code de ce projet.

Résultats

J'ai utilisé à la fois les commandes d'initialisation et de boucle et cela m'a permis d'effectuer des tâches modérément complexes. Voici une vidéo sur la façon dont mon bras robotique met en place des canards en caoutchouc (init) puis commence à les déplacer un par un autour de lui, pour toujours (boucle).

Comme vous pouvez le voir si vous tenez compte du fait qu'il s'agit d'un bras de robot très bon marché avec de sérieuses limitations liées au matériel, les mouvements sont très fluides, continus et précis.

Conclusion

Mon logiciel fonctionne très bien et à l'avenir je travaillerai certainement sur l'amélioration de ce bras robotique, ou j'en construirai un plus avancé. J'ai réalisé tout ce que j'avais prévu pour ce projet et sans aucun problème de blocage sérieux.

L'Arduino 101 est idéal à cet effet. La seule limitation de la carte réside dans les 4 seuls GPIO compatibles PWM. Cela pourrait être un problème à l'avenir si je construis un nouveau bras robotique avec plus de degrés de liberté, mais la série USB et la série GPIO séparées sont très utiles pendant le développement et cette carte peut également fournir beaucoup de puissance de calcul.

Je pense que l'application Android était une bonne idée, mais je vais devoir la rendre plus robuste, conviviale et augmenter ses fonctionnalités. C'est une version alpha pour le moment.

Le WIZ750SR a été une très belle surprise. Je craignais d'avoir plus de problèmes avec cette carte, mais après la configuration, cela a parfaitement fonctionné. C'était totalement transparent et je n'ai eu aucun problème avec ça. C'est un appareil très facile à utiliser et le meilleur module Ethernet que j'ai jamais utilisé avec l'un de mes microcontrôleurs.

Travailler avec des bras de robot est extrêmement amusant, alors j'en apprendrai certainement plus à ce sujet et je partagerai mes connaissances avec vous à l'avenir ! Merci d'avoir lu !

Code

Éditeur Web Arduino
Vous pouvez utiliser Arduino Web Editor pour accéder et télécharger directement le code Arduino de mon projet
Code Arduino et Android
https://github.com/abysmalsb/Robot-Arm-Controller

Schémas

Pour le moment, le système utilise deux sources d'alimentation distinctes. Une du port USB de l'Arduino et une autre source 5V qui est utilisée pour déplacer les servos.

Processus de fabrication

  1. Robot Raspberry Pi contrôlé par Bluetooth
  2. Robot à commande gestuelle utilisant Raspberry Pi
  3. Windows 10 IoT Core :Robot à commande vocale
  4. Robot contrôlé par Wi-Fi utilisant Raspberry Pi
  5. ROObockey :robot de hockey de rue télécommandé et assisté
  6. Robot SCARA à double bras
  7. Bras de robot MeArm - Votre robot - V1.0
  8. LED contrôlées par Alexa via Raspberry Pi
  9. Bras robotique contrôlé par Nunchuk (avec Arduino)