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

Utiliser l'IoT pour contrôler à distance un bras robotique

Composants et fournitures

Arduino MKR1000
× 1

Outils et machines nécessaires

Coupe laser (générique)

Applications et services en ligne

MATLAB
Arduino IDE

À propos de ce projet

Présentation

Je voulais vraiment essayer de concevoir un bras robotique entièrement à partir de zéro. Il existe de nombreuses conceptions open source disponibles, mais j'ai pensé que ce serait gratifiant si je pouvais en concevoir, construire et programmer une à partir de rien (et c'était le cas).

Je parlerai à la fois des phases de conception et de programmation. Mais je me concentrerai davantage sur le côté programmation car il ne s'agit pas seulement de contrôler les angles d'asservissement.

Voici un lien vers la vidéo du projet final en action - https://www.mathworks.com/videos/how-to-control-a-robotic-arm-from-a-remote-location-using-iot-1538564659095. html.

J'ai utilisé Simulink pour programmer un Arduino MKR1000 qui est le MCU contrôlant le bras robotique. J'ai ensuite ajouté la possibilité de contrôler le bras du robot de pratiquement n'importe où via ThingSpeak, une plate-forme IoT ouverte avec des analyses MATLAB.

Matériel requis

  • Contreplaqué 15" x 20" 1/8"
  • Arduino MKR1000
  • 5x servomoteurs GS9025MG
  • Prise de baril CC compatible avec les maquettes de 2,1 mm
  • Alimentation par jack barillet 6 V CC
  • Cavaliers
  • 3x Transistors 2n2222a
  • 10x écrous M2
  • 10 vis M2 x 10
  • 40x écrous M3
  • 40 vis M3 x 25

Logiciel utilisé

  • MATLAB
  • Simulink
  • Pack de support MATLAB pour le matériel Arduino
  • Pack de support Simulink pour le matériel Arduino
  • Pack d'assistance MATLAB pour ThingSpeak

Conception

Je voulais garder le coût des pièces bas, j'ai donc conçu cela pour les servos de loisir, en particulier le modèle GS-9025MG. Cela signifiait que le poids et la taille finaux étaient limités. En effet, les micro servos ne pouvaient pas exercer beaucoup de couple et, par conséquent, ne pouvaient pas soulever de lourds bras de levier.

J'ai essayé le prototypage avec du contreplaqué 1/4 de pouce, qui s'est avéré trop lourd pour les servos. J'ai réduit la longueur des bras et utilisé du contreplaqué de 1/8 de pouce, ce qui a résolu le problème de la servocommande. J'ai dessiné le design à l'aide de Fusion 360 et téléchargé le design sous forme de fichier .dxf, que j'ai ensuite découpé au laser.

De plus, la fourniture d'une tension continue continue à partir d'une prise murale s'est avérée nécessaire car le courant tiré des batteries était très élevé et les vidait très rapidement.

Concernant le contrôle des moteurs, l'Arduino MKR1000 possède 4 broches PWM, mais j'en avais besoin de 5 pour contrôler les 5 servos. J'ai fait preuve de créativité et j'ai utilisé une broche PWM pour contrôler 2 servos et une broche numérique pour basculer entre les deux servos et en contrôler un à la fois.

Voici le circuit décrivant cela :

Voici le câblage des servos à l'Arduino :

Programmation

Il y avait deux parties de la programmation, la phase de prototypage où je l'ai assemblé et obtenu que les servos commandent à un certain emplacement, et la phase de contrôle précis où j'ai pu commander un emplacement au servo en utilisant ThingSpeak.

Prototypage

À l'aide de curseurs et de blocs constants, j'ai pu commander les servos de l'Arduino pour qu'ils se déplacent selon certains angles. J'ai utilisé ce modèle pour découvrir les biais entre l'angle commandé et les angles réels du bras, ainsi que la plage d'angles admissibles pour chaque servo.

Les blocs avec l'équipement sont les blocs d'écriture PWM pour commander le service à un certain angle entre 0 et 180.

J'ai utilisé la cinématique inverse pour un bras en mouvement planaire 2D pour résoudre les angles nécessaires pour déplacer le bras vers une coordonnée XY. J'ai trouvé que ce lien explique plutôt bien la cinématique :https://appliedgo.net/roboticarm/

Contrôle précis

Bien que cela semble plus compliqué que l'autre, la logique est toujours la même. Les blocs de sortie sont toujours les blocs d'écriture servo avec les engrenages. Les blocs d'entrée ne sont plus les entrées de bloc curseur/constant mais sont lus à partir du canal ThingSpeak. Je développerai plus tard l'utilisation de ThingSpeak. Les entrées sont les positions X et Y du bras, qui à l'aide du bloc fonction loc2angles MATLAB sont converties en angles commandés pour le bras. Le bloc angles2loc en haut du modèle est juste un moyen de surveiller le système pour s'assurer que le servo angles traduits à la position d'entrée correcte à l'aide de la cinématique avant. L'un des outils sympas de Simulink que j'ai utilisé dans ce projet est le mode externe . Cela m'a permis de surveiller le système pendant qu'il fonctionnait sur l'Arduino lui-même.

Les blocs avec le nuage gris dessus sont le bloc de lecture ThingSpeak intégré au package de support Simulink pour Arduino. Je saisis l'ID du canal, le numéro du champ de données que je souhaite récupérer et la clé de lecture API, et il génère les données de ce canal et de ce champ. Ne vous inquiétez pas, si vous n'êtes pas familier avec l'un de ces termes, je développerai bientôt.

Utilisation de ThingSpeak :création et utilisation d'un canal

1. Allez sur https://thingspeak.com/

2. Cliquez sur « Se connecter » dans le coin supérieur droit et connectez-vous en utilisant votre compte MathWorks gratuit.

3. Sur la page du tableau de bord, cliquez sur « Nouvelle chaîne »

4. Remplissez les données comme ci-dessous. Les données affichées sont tout ce que vous devez remplir.

5. Cliquez sur « Enregistrer la chaîne » en bas

6. Vous avez maintenant créé une chaîne ThingSpeak

7. Dans la fenêtre de commande MATLAB ou à l'aide de l'application mobile MATLAB, vous pouvez saisir des commandes qui ressemblent à :thingSpeakWrite(chID, [0.6963.94 -12 0 0], 'WriteKey', APIKEY, 'Fields', [1 2 3 4 5]);

Cela écrit de nouvelles données dans les champs spécifiés dans le canal ThingSpeak. Vous pouvez modifier les valeurs dans le deuxième argument de l'appel de fonction pour modifier la valeur du champ correspondant. Après avoir modifié les valeurs, les données du canal devraient ressembler à ceci :

Exécution du modèle

Lorsque vous avez terminé de configurer le canal ThingSpeak, vous pouvez soit exécuter le modèle sur l'Arduino en mode externe, soit en le déployant sur le matériel. Dans le modèle Simulink, accédez à « Paramètres de configuration du modèle » en cliquant sur le petit engrenage dans le panneau de menu supérieur, sélectionnez « Implémentation matérielle » et assurez-vous que la « Carte matérielle » est l'Arduino MKR 1000. Sous « Ressources matérielles cibles » dans le même onglet, cliquez sur Propriétés WiFi et entrez les informations d'identification WiFi pour accéder au réseau.

Cliquez sur le bouton d'exécution vert pour exécuter le modèle en mode externe ou sur le bouton de déploiement bleu pour le déployer sur le matériel.

Une fois le modèle en cours d'exécution, vous pouvez écrire de nouvelles données dans les champs du canal ThingSpeak depuis MATLAB ou MATLAB mobile sur votre téléphone et regarder comment il déplace le bras de votre robot !

Code

https://www.mathworks.com/matlabcentral/fileexchange/68880-controlling-a-robotic-arm-from-anywhere-using-iot


Processus de fabrication

  1. Télécommande universelle utilisant Arduino, 1Sheeld et Android
  2. Contrôler l'accepteur de pièces avec Arduino
  3. Centre de contrôle Arduino
  4. Moniteur de fréquence cardiaque utilisant l'IoT
  5. IOT - Smart Jar utilisant ESP8266, Arduino et capteur à ultrasons
  6. Bras robotique Arduino imprimé en 3D
  7. Contrôler Arduino Rover à l'aide de Firmata et de la manette Xbox One
  8. Contrôle de l'humidificateur Arduino
  9. Bras robotique contrôlé par Nunchuk (avec Arduino)