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

Littlearm 2C :Construire un bras de robot Arduino imprimé en 3D

Composants et fournitures

Arduino Nano R3
× 1
Servos (Tower Pro MG996R)
Servos MG90S
× 4
Meped Board
× 1

Outils et machines nécessaires

Imprimante 3D (générique)

À propos de ce projet

Le LittleArm 2C est conçu pour être le kit que les enfants peuvent facilement utiliser afin que les classes STEM puissent mettre en œuvre davantage de programmes de robotique. Il a été rendu plus robuste et beaucoup plus facile à assembler, de sorte qu'il est facile à utiliser pour les enfants.

Toutes les pièces peuvent être facilement imprimées en 3D et sont conçues pour garder le bras élégant et simple. La conception entière a moins de 15 vis.

Pour contrôler le bras, vous pouvez soit utiliser notre application Windows (qui a été écrite à l'origine en code Python ici) ou via Bluetooth avec l'application Android que nous avons conçue pour cela.

Des instructions complètes pour assembler le LittleArm 2C peuvent être trouvées ici.

Les fichiers d'impression 3D peuvent être téléchargés ici.

Code

  • Croquis Arduino LittleArm 2C
LittleArm 2C Arduino SketchC/C++
// Code arduino LittleArm 2C// Permet le contrôle en série du bras robotique imprimé en 3D LittleArm 2C // Créé par Slant Concepts#include  //bibliothèque arduino#include  //standard c library#define PI 3.141Servo baseServo; Épaule ServoServo; Servo coudeServo; Servo pince Servo ; //++++++++++++++++++ Variables globales++++++++++++++++++++++++++++++ +++struct jointAngle{ //une structure est un moyen d'organiser les variables dans un groupe int base ; épaule intérieure; int coude;};struct jointAngle desireAngle; //angles souhaités du servosint desireGrip; // position souhaitée du gripint griprPos; //position actuelle de la commande griprint ; // l'ensemble des angles d'articulations souhaitéDelay; // le délai que les servos font entre les pas // int ready =0; // un marqueur à utiliser pour signaler qu'un processus est terminé//++++++++++++++++++ DÉCLARATIONS DE FONCTION++++++++++++++++++++ +++++++++int servoParallelControl (int thePos, Servo theServo ); //Ceci est une fonction pour contrôler les servos//++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++void setup() // Le programme d'installation a préparé la carte Arduino pour l'opération{ Serial.begin (9600); // Activer la communication USB (port série) et la faire communiquer à 9600 bits par seconde baseServo.attach(5); // attache le servo sur la broche 5 à l'objet servo épauleServo.attach(4); // attache le servo sur la broche 4 à l'objet servo coudeServo.attach(3); // attache le servo sur la broche 3 à l'objet servo griprServo.attach(2); // attache le servo sur la broche 2 à l'objet servo Serial.setTimeout(50); // Arrête d'essayer de parler à l'ordinateur sans réponse après 50 millisecondes. Assure que l'arduino ne lit pas la série trop longtemps Serial.println("started"); // Imprimer sur l'ordinateur "Démarré" baseServo.write(90); //positions initiales des servos épauleServo.write(100); coudeServo.write(110);// ready =0;} //boucle arduino primaire. C'est là que tout votre programme principal doit être placé.void loop() { if (Serial.available()){ // Si les données arrivent via le port USB vers l'arduino alors...// ready =1; // Ready est défini sur 1 pour indiquer qu'une commande est en cours d'exécution // Les commandes sont envoyées depuis l'ordinateur sous la forme "#,#,#,#,#,\n" // Le code ci-dessous "analyse" cette commande en nombres entiers qui correspondent à // l'angle de base, l'angle d'épaule, l'angle de coude, l'angle de préhension et le retard dans les servos, respectivement. Angle désiré.base =Serial.parseInt(); desireAngle.shoulder =Serial.parseInt(); Angle désiré.elbow =Serial.parseInt(); desireGrip =Serial.parseInt(); desireDelay =Serial.parseInt(); if(Serial.read() =='\n'){ // si le dernier octet est '\n' alors arrête la lecture et exécute la commande '\n' signifie 'done' Serial.flush(); //efface toutes les autres commandes empilées dans le tampon Serial.print('d'); //Envoie la fin de la commande "d" signifie "exécution terminée" } } // Ces valeurs indiquent si l'articulation a atteint sa position ou non // variables déclarées à l'intérieur d'une partie du programme, comme celles-ci , sont appelés "Variables locales" int status1 =0; //base status int status2 =0; //statut de l'épaule int status3 =0; //état du coude int état4 =0; //statut de la pince int done =0; // cette valeur indique quand toutes les articulations ont atteint leurs positions while(done ==0){ // Boucle jusqu'à ce que toutes les articulations aient atteint leurs positions &&ready ==1 // déplace le servo vers la position souhaitée // Ce bloc de le code utilise des « Fonctions » pour être plus condensé. status1 =servoParallelControl(desiredAngle.base, baseServo, desireDelay); status2 =servoParallelControl(desiredAngle.shoulder, shoulderServo, desireDelay); status3 =servoParallelControl(desiredAngle.elbow, elbowServo, desireDelay); status4 =servoParallelControl(desiredGrip, pincerServo, desireDelay); // Vérifie si toutes les articulations ont atteint leur position if (status1 ==1 &status2 ==1 &status3 ==1 &status4 ==1){ done =1; //Une fois terminé =1 alors la boucle s'arrêtera } }// fin de while}//++++++++++++++++++++++++++++++++ +DEFINITIONS DE FONCTION++++++++++++++++++++++++++++++++++++++++++++int servoParallelControl (int thePos , Servo theServo, int theSpeed ​​){ //Forme de fonction :outputType FunctionName (inputType localInputName) //Cette fonction déplace un servo d'un certain nombre de pas vers une position souhaitée et renvoie s'il est proche ou a atteint cette position // thePos - la position souhaitée // thServo - la broche d'adresse du servo que nous voulons déplacer // theSpeed ​​- le délai entre les étapes du servo int startPos =theServo.read(); //lire la position actuelle du servo avec lequel nous travaillons. int newPos =startPos; // newPos maintient la position du servo lorsqu'il se déplace // définit où se trouve la pos par rapport à la commande // si la position actuelle est inférieure à la position souhaitée, déplace la position vers le haut if (startPos <(thePos-5)) { nouvellePos =nouvellePos + 1 ; theServo.write(newPos); retard(laVitesse); renvoie 0 ; // Indique au programme principal que le servo n'a pas atteint sa position } // Sinon, si la position actuelle est supérieure à la position souhaitée, déplacez le servo vers le bas, sinon si (newPos> (thePos + 5)){ newPos =newPos - 1; theServo.write(newPos); retard(laVitesse); renvoie 0 ; } // Si le servo est à +-5 dans la plage souhaitée, indiquez au programme principal que le servo a atteint la position souhaitée. else { return 1; } } //fin du contrôle parallèle des servos

Schémas

Il n'y a que quatre connexions si vous utilisez la carte Meped pour laquelle le Littlearm a été conçu.

Processus de fabrication

  1. Robot Raspberry Pi contrôlé par Bluetooth
  2. Créez votre robot de streaming vidéo contrôlé par Internet avec Arduino et Raspberry Pi
  3. Le bras robotique imprimé en 3D Open Source de Haddington Dynamics
  4. Robot SCARA à double bras
  5. Bras de robot MeArm - Votre robot - V1.0
  6. Robot suiveur de ligne
  7. Bras robotique Arduino imprimé en 3D
  8. Bras robotique contrôlé par Nunchuk (avec Arduino)
  9. Robot à commande vocale