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

Contrôle IoT à Distance d'un Bras Robotique Personnalisé avec Arduino MKR1000

Composants et Fournitures

ComposantQuantité
Arduino MKR10001
Contreplaqué 15" x 20" x 1/8 pouce1
5x Servo GS9025MG1
Connecteur Jack DC 2.1mm pour breadboard1
Alimentation DC 6V Jack1
Fils de connexion (jumper wires)1
3x Transistors 2n2222a1
10x Écrous M21
10x Vis M2 x 101
40x Écrous M31
40x Vis M3 x 251

Outils et Machines Nécessaires

Applications et Services en Ligne

À Propos du Projet

Introduction

Je voulais vraiment essayer de concevoir un bras robotique complètement à partir de zéro. Il existe de nombreux designs open-source, mais je pensais qu'il serait gratifiant de pouvoir en concevoir, construire et programmer un depuis rien (et ce le fut).

Je parlerai des phases de conception et de programmation, mais je me concentrerai davantage sur la programmation car il ne s'agit pas seulement de contrôler des angles de servos.

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 contrôle le bras robotique. J'ai ensuite ajouté la possibilité de contrôler le bras depuis pratiquement n'importe où via ThingSpeak, une plateforme IoT ouverte avec analytiques MATLAB.

Conception

Je voulais garder le coût des pièces bas, donc j'ai conçu ce bras pour des servos de loisir, spécifiquement le modèle GS-9025MG. Cela limitait le poids et la taille finale car les micro-servos ne peuvent pas exercer beaucoup de couple et ne peuvent pas soulever de lourds bras de levier.

J'ai d'abord prototypé avec du contreplaqué de 1/4 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 pouce, ce qui a résolu le problème de contrôle des servos. J'ai dessiné le design avec Fusion 360 et exporté en fichier .dxf pour la découpe laser.

L'alimentation continue en DC depuis une prise murale s'est avérée nécessaire car les packs de batteries se vidaient très vite vu le courant élevé consommé.

Pour le contrôle des moteurs, l'Arduino MKR1000 a 4 broches PWM mais j'en avais besoin de 5 pour les 5 servos. J'ai été créatif : j'ai utilisé une broche PWM pour contrôler 2 servos et une broche numérique pour basculer entre les deux et les contrôler l'un après l'autre.

Programmation

La programmation comportait deux phases : le prototypage où j'ai assemblé le bras et fait bouger les servos à certains angles, et le contrôle précis où j'ai pu commander une position au servo via ThingSpeak.

Prototypage

En utilisant des curseurs et des blocs constants, j'ai pu commander les servos sur l'Arduino pour qu'ils bougent à certains angles. Ce modèle m'a permis de trouver les décalages entre l'angle commandé et les angles réels du bras, ainsi que la plage d'angles autorisée pour chaque servo.

Les blocs avec l'engrenage sont les blocs d'écriture PWM pour commander le servo à un 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. Ce lien explique bien la cinématique : https://appliedgo.net/roboticarm/

Contrôle Précis

Bien que cela paraisse plus compliqué, la logique reste 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 des curseurs/constants mais lisent depuis le canal ThingSpeak. Les entrées sont la position X et Y du bras, converties en angles commandés via le bloc fonction MATLAB loc2angles. Le bloc angles2loc en haut du modèle surveille le système pour vérifier que les angles des servos correspondent à la position d'entrée via la cinématique directe. Un outil cool de Simulink utilisé ici est le Mode Externe, permettant de surveiller le système pendant son exécution sur l'Arduino.

Les blocs avec le nuage gris sont les blocs de lecture ThingSpeak intégrés au package Simulink pour Arduino. J'entre l'ID du canal, le numéro du champ de données à récupérer et la clé de lecture API, et cela sort les données de ce canal et champ.

Utilisation de ThingSpeak : Création et Utilisation d'un Canal

  1. Allez sur https://thingspeak.com/
  2. Cliquez sur « Sign in » en haut à droite, connectez-vous avec votre compte MathWorks gratuit.
  3. Sur la page d'accueil, cliquez sur « New Channel »
  4. Remplissez les données comme indiqué. C'est tout ce qu'il faut remplir.
  5. Cliquez sur « Save channel » en bas
  6. Vous avez maintenant créé un canal ThingSpeak
  7. Dans la fenêtre de commande MATLAB ou via l'appli mobile MATLAB, entrez des commandes comme :
    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 du canal ThingSpeak. Vous pouvez changer les valeurs du second argument pour changer la valeur du champ correspondant. Après modification, les données du canal devraient ressembler à ceci :

Exécution du Modèle

Une fois le canal ThingSpeak configuré, vous pouvez soit exécuter le modèle sur l'Arduino en mode externe, soit le déployer sur le matériel. Dans le modèle Simulink, allez dans « Model Configuration Parameters » (petit engrenage dans le menu du haut), sélectionnez « Hardware implementation » et assurez-vous que « Hardware Board » est Arduino MKR 1000. Sous « Target Hardware Resources », cliquez sur propriétés WiFi et entrez les identifiants WiFi.

Cliquez sur le bouton vert « Run » pour le mode externe ou le bleu « Deploy » pour 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 votre bras robotique bouger !

Code

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

Processus de fabrication

  1. Construire une télécommande Android universelle avec Arduino, 1Sheeld et contrôle IR
  2. Construire une Tirelire Intelligente : Contrôler un Accepteur de Pièces avec Arduino Nano
  3. Centre de contrôle d'alimentation Arduino : N-FET, P-FET, Relais et RTC
  4. Moniteur de Fréquence Cardiaque IoT en Temps Réel avec Arduino et MAX30100
  5. Bocal Intelligent IoT avec ESP8266, Arduino et Capteur Ultrasonique – Surveillance Temps Réel
  6. Construire un bras robotique 3D fonctionnel piloté par Arduino – Guide pas à pas
  7. Contrôlez un rover Arduino avec Firmata et une manette Xbox One
  8. Contrôleur d'humidificateur DIY avec Arduino et relais – Installation haute tension sécurisée
  9. Bras robotique 6 DoF piloté par Nunchuk Wii – Kit Arduino Mega