Table of Contents

Robotics Arm

Introducere

Proiectul meu este un brat robotic, conceput pentru a ridica și muta diverse obiecte într-un mediu controlat. Scopul său principal este de a oferi asistență în sarcinile de manipulare a obiectelor, ușurând munca umană și sporind eficiența proceselor.

Ideea mea a pornit de la observarea nevoii de automatizare a anumitor sarcini repetitive și obositoare, precum mutarea obiectelor grele sau fragile. Am dorit să creez un dispozitiv care să fie ușor de utilizat.

Cred că acest brat robotic este util deoarece este un punct de plecare pentru peluarea sarcini grele și periculoase pentru oameni, reducând astfel riscul de accidente și epuizare. Prin afișarea unui mesaj atunci când nu poate să apuce un obiect, ofer utilizatorului informații rapide și precise despre starea operațională a bratului robotic, ceea ce contribuie la o utilizare mai eficientă și sigură a dispozitivului.

Descriere generală

Prin intermediul unuia dintre cele două module joystick, ai posibilitatea să direcționezi mișcarea brațului robotic. Odată ce ai ajustat brațul în poziția potrivită, vei utiliza celălalt joystick pentru a controla deschiderea și închiderea cleștelui, permițându-ți să apuci sau să eliberezi un obiect.

Mișcarea brațului este gestionată de patru servomotoare. În cazul în care obiectul este prea voluminos sau prea greu și servomotoarele nu pot opera în mod corespunzător, un mesaj adecvat va fi afișat pe ecranul LCD.

Hardware Design

Lista de piese:

  1. 1x Arduino Uno R3 CH340
  2. 4x Servo motor MG90S
  3. 1x Placa expansiune
  4. 1x Cablu USB
  5. 2x Modul joystick Arduino
  6. Piese acrilic
  7. Ecran LCD + modul I2C

Schema electrica:

Software Design

Mediul de dezvoltare folosit pentru relizarea proiectului a fost Arduino IDE

Librăriile folosite au fost:

Descrierea codului implementat

Variabile folosite

LiquidCrystal_I2C mylcd(0x27,16,2);

Servo myservo1;

Servo myservo2;

Servo myservo3;

Servo myservo4;

int pos1=90, pos2=90, pos3=90, pos4=90;

aceste variabile au fost folosite si pt a calibra servomotoarele inainte de a reliza montajul bratului, atfel incat sa avem o referinta.

int prev_pos1=90, prev_pos2=90, prev_pos3=90, prev_pos4=90;

int x1,y1,z1;

int x2,y2,z2;

int last_x1, last_x2, last_y1, last_y2;

Pentru a realiza mișcările principale ale brațului robotic, am împărțit implementarea în patru funcții, fiecare dintre acestea gestionând modificarea poziției unui servomotor

Funcția turn() gestionează primul servomotor, indicându-i unghiul la care trebuie să ajungă pentru a roti corpul brațului robotic, bazându-se pe mișcările orizontale ale joystick-ului din dreapta. Brațul se va roti în direcția în care este împins joystick-ul.

Funcția lower_arm() controlează mișcarea de extindere și retragere a brațului, utilizând al doilea servomotor. Aceasta interpretează mișcările verticale ale joystick-ului din dreapta. Când joystick-ul este împins în jos, brațul se retrage, iar când este împins în sus, brațul se extinde.

Funcția upper_arm() reglează mișcarea de ridicare și coborâre a brațului, fiind controlată de al treilea servomotor. Această funcție interpretează mișcările verticale ale joystick-ului din stânga. Când joystick-ul este împins în jos, brațul coboară, iar când este împins în sus, brațul urcă.

Funcția claw() controlează al patrulea servomotor, responsabil de deschiderea și închiderea cleștelui de la capătul brațului robotic, în funcție de mișcările orizontale ale joystick-ului din stânga. Când joystick-ul este împins spre stânga, cleștele se închide, iar când este împins spre dreapta, se deschide. Pentru a preveni deschiderea sau închiderea excesivă a cleștelui, unghiul de rotire al servomotorului este limitat.

În funcția setup(), se configurează LCD-ul și bratul robotic este adus în poziția inițială, afișând un mesaj de pornire pe ecranul LCD.

În funcția loop(), sunt apelate funcțiile care controlează mișcările brațului și sunt afișate mesaje pe ecranul LCD dacă mișcările nu pot fi efectuate.

Intializarea pinilor si setarea LCD-ului

myservo1.attach(3); seteaza pin-ul de control al servomotorului 1 la D3

myservo2.attach(5); seteaza pin-ul de control al servomotorului 2 la D5

myservo3.attach(6); seteaza pin-ul de control al servomotorului 3 la D6

myservo4.attach(9); seteaza pin-ul de control al servomotorului 4 la D9

pinMode(right_key, INPUT);

pinMode(left_key, INPUT);

const int right_X = A2; miscarea pe axa X a joystick-ului din dreapta este conectata la pin-ul A2

const int right_Y = A1; miscarea pe axa Y a joystick-ului din dreapta este conectata la pin-ul A5

const int right_key = 7; joystick-ul din dreapta e conectat la pin-ul 7

const int left_X = A3; miscarea pe axa X a joystick-ului din stanga este conectata la pin-ul A3

const int left_Y = A0; miscarea pe axa Y a joystick-ului din stanga este conectata la pin-ul A4

const int left_key = 8; joystick-ul din stanga e conectat la pin-ul 8

mylcd.init();

mylcd.backlight();

Rezultate Obţinute

Rezultate obținute în urma ansamblării componentelor hardware și a scheletului brațului robotic

Link catre video cu proiectul: https://drive.google.com/file/d/1cY6TqEeWAdGDGRrtBJKsB_g0R_Y-mH4Q/view?usp=sharing

Concluzii

Realizarea acestui proiect m-a făcut să conștientizez cât de multă muncă implică fiecare mic obiect care are la bază un circuit electric. Mi-ar plăcea să mă implic și în alte proiecte mai complexe, dar recunosc că atât proiectarea, cât și asamblarea unui astfel de proiect sunt provocări considerabile.

Probabil cea mai dificilă parte a fost asamblarea structurii și conectarea firelor, deoarece a necesitat o atenție extremă. Scrierea codului s-a dovedit și ea destul de complexă, întâmpinând diverse bug-uri din cauza lipsei de familiaritate cu librăriile.

Realizarea acestui proiect m-a făcut să realizez câtă muncă se află în spatele oricărui mic obiect care are în spatele lui un circuit electric. Această experiență m-a determinat să apreciez mai mult munca și dedicarea necesară în acest domeniu.

În ciuda dificultăților întâmpinate, mă simt motivată să lucrez la alte proiecte mai complicate. Proiectarea și asamblarea unui astfel de proiect sunt sarcini dificile, dar satisfacția obținută la final este pe măsură.

Download

Arhiva conține:

331cc_circioroaba_anca_maria.zip

Jurnal

Bibliografie/Resurse

  1. Resurse Software
  1. Resurse Hardware

Export to PDF