Inhoudsopgave:

Robotarm met Zio-modules Deel 2: 11 stappen
Robotarm met Zio-modules Deel 2: 11 stappen

Video: Robotarm met Zio-modules Deel 2: 11 stappen

Video: Robotarm met Zio-modules Deel 2: 11 stappen
Video: Makeblock Untimate Robot Kit Part 2 : Robtic Arm Explaine, Software, Code App and Having Fun demo 2024, November
Anonim
Robotarm met Zio-modules, deel 2
Robotarm met Zio-modules, deel 2

In de tutorial van vandaag zullen we alle 4 servo's en een PS2 draadloze controller gebruiken om de robotarm te besturen.

Deze blogpost maakt deel uit van de Zio Robotics Series.

Invoering

In onze vorige blog hebben we deel 1 tutorial gepost over het besturen van een robotarm met behulp van Zio-modules. Deel 1 concentreerde zich vooral op het automatisch bedienen van de klauw van je robotarm om te openen en te sluiten.

In de tutorial van vandaag zullen we het een beetje opknappen door een PS2 Wireless-controller op te nemen om de robotarm te besturen. Voor dit project zullen we 4 servo's gebruiken.

Stap 1: Projectoverzicht

Moeilijkheidsgraad:

Zio Padawan

Handige bronnen:

U moet een basiskennis hebben van het installeren van Zio-ontwikkelingsborden. In deze tutorial gaan we ervan uit dat je ontwikkelbord al is geconfigureerd en klaar is om te worden ingesteld. Als je je board nog niet hebt geconfigureerd, bekijk dan onze Zio Qwiic Start Guide-tutorial hieronder om aan de slag te gaan:

Zio Zuino M UNO Qwiic Startgids

Stap 2: Schema's

Schema's
Schema's

Hier is de bedradingsschema's van het Robotic Arm Part 2-project en het PS2-controllerdiagram dat nodig is om uw codeergedeelte te begrijpen.

Stap 3: PS2-controllerdiagram

Schema PS2-controller
Schema PS2-controller

Stap 4: Zio-modules verbinding instellen

Hieronder ziet u de aansluiting van onze Zio-modules die moeten worden ingesteld met de Robotarm. Het aansluiten van alle modules is vrij eenvoudig en duurt niet langer dan 10 minuten om in te stellen.

Stap 5: Sluit de robotarmservo aan op de Zio 16 servocontroller

Sluit de robotarm-servo aan op de Zio 16-servocontroller
Sluit de robotarm-servo aan op de Zio 16-servocontroller

Stap 6: Sluit uw 16 Servo aan op DC/DC Booster en stel deze in op 6,0 V

Sluit uw 16 Servo aan op DC/DC Booster en stel deze in op 6,0 V
Sluit uw 16 Servo aan op DC/DC Booster en stel deze in op 6,0 V

We gebruiken een DC/DC-booster om de voedingsspanning van de batterij te verhogen en aan te passen naar 6,0.

Gebruik de potentiometer op de DC Booster om de spanning aan te passen totdat u 6,0 krijgt. Druk op de In/Out-knop totdat het display 6.0 toont. Om de spanning aan te passen, moet u eerst uw DC/DC-booster van stroom voorzien (3,7 V-batterij).

Stap 7: Verbind Zuino M Uno met de Zio 16 Servo Controller

Verbind Zuino M Uno met de Zio 16 Servo Controller
Verbind Zuino M Uno met de Zio 16 Servo Controller

Qwiic sluit Zuino M Uno aan op de Zio Servo-controller met qwiic-kabel.

Stap 8: Uno aansluiten op de PS2-ontvanger

Uno aansluiten op de PS2-ontvanger
Uno aansluiten op de PS2-ontvanger

Hier is een pin-diagram van de verbindingen. Voor dit onderdeel heb je 5 mannelijke naar vrouwelijke verbindingsdraden nodig.

Stap 9: Code voor robotarm

We zullen de PS2 Arduino-bibliotheek gebruiken om onze PS2 draadloze controller te coderen om met onze robotarm te werken. Je kunt de broncode voor dit Robotic Arm Part 2-project vinden en downloaden op onze Github-pagina.

Download en installeer de volgende bibliotheken en sla deze op in uw lokale Arduino IDE-bibliothekenmap:

  • Adafruit PWM Servo Driver Bibliotheek
  • PS2 Arduino-bibliotheek

Om de bibliotheken te installeren, opent u uw Arduino IDE, gaat u naar het tabblad Sketch, selecteert u Bibliotheek opnemen -> Add. Zip-bibliotheek. Selecteer de bovenstaande bibliotheken die in uw IDE moeten worden opgenomen.

Arduino heeft een handige handleiding voor het installeren van bibliotheken op uw Arduino IDE. Bekijk ze hier!

Stap 10: Voer uw code uit

Voer uw code uit
Voer uw code uit

Open Arduino-IDE. Selecteer onder Bestanden > Voorbeelden > PS2_Arduino_Library PS2X_Servo

Let op: Controleer de volgende stappen voordat je je robotarm kunt besturen met de PS2-controller: Schakel je PS2-controller in. Controleer of de Mode-LED oplicht. Als dit niet het geval is, drukt u op de modusknop op uw controller. Nadat je het bovenstaande hebt gedaan, moet je op de resetknop op je Zuino M Uno drukken om de instellingen van je controller te lezen. Je moet op L1 en de joystick drukken om je robotarm te bewegen.

  • Linker joystick regelt het naar boven of beneden buigen van de arm
  • De rechter joystick bedient de klauw om te openen of te sluiten en de klauw naar links of rechts te draaien.

Stap 11: Code Uitleg

Het gebruik van de PS2X Arduino-bibliotheek is eenvoudig en vereist alleen een initialisatie, een setup en vervolgens een leesopdracht.

Om de verbinding voor je PS2-controller met je Uno in te stellen, staan hieronder de pinnen die je in je code moet definiëren:

/************************************************** *************** * set pinnen aangesloten op PS2 controller: * - 1e kolom: origineel * - 2e colmun: Stef? * vervang pincodes door degene die u gebruikt********************************************* **********************/#define PS2_DAT 13 //14 #define PS2_CMD 11 //15#define PS2_SEL 10 //16#define PS2_CLK 12 // 17

We hebben de pinnen vervangen door degene die we gebruiken om verbinding te maken met onze Uno, zoals beschreven in het pindiagram hierboven.

/************************************************** **************** selecteer modi van PS2-controller: * - drukken = analoge aflezing van drukknoppen * - gerommel = gerommel van de motor * verwijder 1 van de regels voor elke modusselectie** ************************************************** ***********/ //#define drukken true#define drukken false //#define rumble true#define rumble false

Hier hebben we de PS2-modus voor druk en gerommel als onwaar gedefinieerd. We hebben opmerkingen gemaakt over degenen die we niet gebruiken.

We gebruiken alleen de joystickopdracht van de controller en L1 om de beweging van onze robotarm te besturen.

void loop() {/* Je moet Gamepad lezen om nieuwe waarden te krijgen en trillingswaarden in te stellen ps2x.read_gamepad (kleine motor aan/uit, grotere motorsterkte van 0-255) als je het gerommel niet inschakelt, gebruik ps2x.read_gamepad (); zonder waarden Je zou dit minstens één keer per seconde moeten aanroepen*/ if(error == 1) //loop overslaan als er geen controller gevonden is return; else {// DualShock Controller ps2x.read_gamepad (false, trillen); //lees de controller en stel de grote motor in op 'trilsnelheid' als (ps2x. Button (PSB_START))// zal WAAR zijn zolang de knop wordt ingedrukt Serial.println ("Start wordt vastgehouden"); if(ps2x. Button(PSB_SELECT)) Serial.println("Select wordt vastgehouden"); trillen = ps2x. Analoog (PSAB_CROSS); // hierdoor wordt de trilsnelheid van de grote motor ingesteld op basis van hoe hard je op de blauwe (X) knop drukt if(ps2x. Button(PSB_L1) || ps2x. Button(PSB_R1)) {//print stick-waarden als een van beide TRUE RY_Value is =ps2x. Analoog (PSS_RY); RX_Value=ps2x. Analoog (PSS_RX); LY_Value=ps2x. Analoog (PSS_LY); LX_Value=ps2x. Analog(PSS_LX);Serial.print("Stick Values:"); Serial.print(RX_Value); Serieel.print(" "); Serial.print(RY_Value); Serieel.print(" "); Serial.print(LY_Value); Serieel.print(" "); Serial.println(LX_Value);

In de onderstaande code coderen we onze servo's die onze robotarm besturen, die we opnemen in de functieaanroep onder ps2x.button(PSB_L1)|| ps2x.knop (PSB_R1).

U moet samen met de joystick op de L1- of R1-knop drukken om uw robotarm te bedienen.

De linker joystick bedient servo's 2 en 3 voor het armgedeelte - regel respectievelijk het omhoog en omlaag buigen van de arm, terwijl de rechter joystick de servo's 0 en 1 van de klauw van de robotarm bestuurt om te openen of te sluiten en om naar links of rechts te draaien.

SERVO 0, 1 - Klauw SERVO 2, 3 - Arm

U kunt waarden in dit gedeelte wijzigen om de mate van uw robotarmhoek te regelen:

pulselen0=kaart (RY_Value, 0, 127, SERVOMIN0, SERVOMAX0); pulselen1=kaart (RX_Value, 0, 127, SERVOMIN0, SERVOMAX0); pulselen2=kaart(LY_Value, 0, 127, SERVOMIN2, SERVOMAX2); pulselen3=kaart(LX_Value, 0, 255, SERVOMIN3, SERVOMAX3);

Aanbevolen: