Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Littlearm 2C:bouw een 3D-geprinte Arduino-robotarm

Componenten en benodigdheden

Arduino Nano R3
× 1
Servo's (Tower Pro MG996R)
MG90S-servo's
× 4
Meped Board
× 1

Benodigde gereedschappen en machines

3D-printer (algemeen)

Over dit project

De LittleArm 2C is ontworpen als de kit die kinderen gemakkelijk kunnen gebruiken, zodat STEM-klassen meer robotica-curriculum kunnen implementeren. Het is robuuster gemaakt en veel gemakkelijker in elkaar te zetten, zodat het gemakkelijk te gebruiken is voor kinderen.

Alle onderdelen kunnen eenvoudig in 3D worden geprint en zijn ontworpen om de arm strak en eenvoudig te houden. Het hele ontwerp heeft minder dan 15 schroeven.

Om de arm te bedienen, kun je onze Windows-applicatie gebruiken (die hier oorspronkelijk in Python-code is geschreven) of via Bluetooth met de Android-app die we ervoor hebben gemaakt.

Volledige instructies voor het monteren van de LittleArm 2C vindt u hier.

3D Printing-bestanden kunnen hier worden gedownload.

Code

  • LittleArm 2C Arduino Sketch
LittleArm 2C Arduino SketchC/C++
// LittleArm 2C arduino-code// Maakt seriële besturing van de LittleArm 2C 3D-geprinte robotarm mogelijk // Gemaakt door Slant Concepts#include  //arduino library#include  //standard c bibliotheek#define PI 3.141Servo baseServo; Servo schouderServo; Servo elleboogServo; ServogrijperServo;//+++++++++++++++Globale variabelen++++++++++++++++++++++++++++ +++struct jointAngle{ //a struct is een manier om variabelen te organiseren in een group int base; int schouder; int elleboog;};struct jointHoek gewenstHoek; // gewenste hoeken van de servosint wantedGrip; // gewenste positie van de gripperint grijperPos; // huidige positie van het gripperint-commando; // de set van gezamenlijke hoekenint gewensteDelay; // de vertraging die de servo's maken tussen stappen//int ready =0; // een markering die wordt gebruikt om aan te geven dat een proces is voltooid//++++++++++++++++ FUNCTIEVERKLARINGEN++++++++++++++++++++ ++++++++int servoParallelControl (int thePos, Servo theServo ); //Dit is een functie voor het besturen van de servo's//++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++void setup() // Setup heeft het Arduino-bord voorbereid voor gebruik{Serial.begin(9600); // Schakel USB-communicatie (seriële poort) in en laat deze communiceren met 9600 bits per seconde baseServo.attach(5); // bevestigt de servo op pin 5 aan het servo-object shoulderServo.attach (4); // bevestigt de servo op pin 4 aan het servo-object elleboogServo.attach (3); // bevestigt de servo op pin 3 aan het servo-object gripperServo.attach (2); // hecht de servo op pin 2 aan het servo-object Serial.setTimeout (50); // Stopt met proberen om met de computer te praten is geen reactie na 50 millisenconds. Zorgt ervoor dat de Arduino de serie niet te lang leest Serial.println("started"); // Print naar de computer "Gestart" baseServo.write(90); // aanvankelijke posities van servo's shoulderServo.write (100); elleboogServo.write (110);// klaar =0;} //primaire arduino-lus. Dit is waar jullie allemaal primaire programma's moeten worden geplaatst.void loop() { if (Serial.available()){ // Als er gegevens via de USB-poort naar de Arduino komen, dan...// ready =1; // Ready is ingesteld op 1 om aan te geven dat een opdracht wordt uitgevoerd // Opdrachten worden vanaf de computer verzonden in de vorm "#,#,#,#,#,\n" // De onderstaande code "parseert" die opdracht in gehele getallen die overeenkomen met respectievelijk de // basishoek, schouderhoek, ellebooghoek, grijphoek en vertraging in de servo's. gewensteAngle.base =Serial.parseInt(); wenselijkAngle.shoulder =Serial.parseInt(); gewensteAngle.elbow =Serial.parseInt(); gewensteGrip =Serial.parseInt(); gewensteDelay =Serial.parseInt(); if(Serial.read() =='\n'){ // als de laatste byte '\n' is, stop dan met lezen en voer het commando uit. '\n' staat voor 'done' Serial.flush(); //wis alle andere opdrachten die in de buffer zijn opgestapeld Serial.print('d'); //stuur voltooiing van het commando "d" staat voor "klaar met uitvoeren" } } // Deze waarden geven aan of het gewricht al dan niet zijn positie heeft bereikt // variabelen gedeclareerd in een deel van het programma, zoals deze , worden "lokale variabelen" genoemd int status1 =0; // basisstatus int status2 =0; // schouderstatus int status3 =0; //elleboogstatus int status4 =0; // grijperstatus int klaar =0; // deze waarde geeft aan wanneer alle gewrichten hun posities hebben bereikt while(done ==0){ // Loop totdat alle gewrichten hun posities hebben bereikt &&klaar ==1 // verplaats de servo naar de gewenste positie // Dit blok van code gebruikt "Functies" om te maken is meer gecondenseerd. status1 =servoParallelControl (gewenste hoek. basis, basisServo, gewenste vertraging); status2 =servoParallelControl (gewenste hoek. schouder, schouderServo, gewenste vertraging); status3 =servoParallelControl (gewenste hoek. elleboog, elleboogServo, gewenste vertraging); status4 =servoParallelControl(desiredGrip, gripperServo, wantedDelay); // Controleer of alle gewrichten hun positie hebben bereikt if (status1 ==1 &status2 ==1 &status3 ==1 &status4 ==1){ done =1; //Als je klaar bent =1 dan stopt de lus } }// end of while}//++++++++++++++++++++++++++++++ +FUNCTIEDEFINITIES++++++++++++++++++++++++++++++++++++++++++int servoParallelControl (int thePos , Servo theServo, int theSpeed) {//Functievorm:outputType FunctionName (inputType localInputName) // Deze functie verplaatst een servo een bepaald aantal stappen naar een gewenste positie en geeft terug of deze al dan niet dichtbij is of die positie heeft bereikt // thePos - de gewenste positie // thServo - de adrespen van de servo die we willen verplaatsen // theSpeed ​​- de vertraging tussen de stappen van de servo int startPos =theServo.read(); // lees de huidige positie van de servo waarmee we werken. int newPos =startPos; // newPos houdt de positie van de servo vast terwijl deze beweegt // definieer waar de pos is ten opzichte van het commando // als de huidige positie kleiner is dan de gewenste verplaats de positie omhoog if (startPos <(thePos-5)){ nieuwePos =nieuwePos + 1; theServo.write(newPos); vertraging (de Snelheid); retourneer 0; // Vertel het primaire programma dat de servo zijn positie niet heeft bereikt} // Anders als de huidige positie groter is dan de gewenste verplaats de servo naar beneden else if (newPos> (thePos + 5)) { newPos =newPos - 1; theServo.write(newPos); vertraging (de Snelheid); retourneer 0; } // Als de servo +-5 binnen het gewenste bereik is, vertel het hoofdprogramma dan dat de servo de gewenste positie heeft bereikt. anders { retour 1; } } // einde servo parallelle besturing

Schema's

Er zijn maar vier aansluitingen als je het Meped Board gebruikt waarvoor de Littlearm is ontworpen.

Productieproces

  1. Raspberry Pi-robot bestuurd via Bluetooth
  2. Bouw uw internetgestuurde videostreamingrobot met Arduino en Raspberry Pi
  3. De open source 3D-geprinte robotarm van Haddington Dynamics
  4. Dual Arm SCARA-robot
  5. MeArm Robotarm - Uw robot - V1.0
  6. Lijnvolger Robot
  7. Arduino 3D-geprinte robotarm
  8. Nunchuk-gestuurde robotarm (met Arduino)
  9. Spraakgestuurde robot
  10. Robotarm bestuurd via Ethernet
  11. Arduino-gestuurde pianorobot:PiBot