This shows you the differences between two versions of the page.
pm:prj2023:ncaroi:robotic-arm [2023/05/24 21:29] corina_elena.ulariu [Software Design] |
pm:prj2023:ncaroi:robotic-arm [2023/05/29 18:20] (current) corina_elena.ulariu [Download] |
||
---|---|---|---|
Line 18: | Line 18: | ||
Brațul robotic este alimentat prin intermediul a doi acumulatori. | Brațul robotic este alimentat prin intermediul a doi acumulatori. | ||
- | ===== Hardware Design ===== | + | }===== Hardware Design ===== |
Lista de piese: | Lista de piese: | ||
Line 30: | Line 30: | ||
Schema electrica: | Schema electrica: | ||
{{ :pm:prj2023:ncaroi:arduino_bb.png?300 |}} | {{ :pm:prj2023:ncaroi:arduino_bb.png?300 |}} | ||
+ | {{ :pm:prj2023:ncaroi:schema.png?300 |}} | ||
===== Software Design ===== | ===== Software Design ===== | ||
- | |||
- | <note tip> | ||
- | Descrierea codului aplicaţiei (firmware): | ||
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | ||
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | ||
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | ||
- | * (etapa 3) surse şi funcţii implementate | ||
- | </note> | ||
<note>Mediul de dezvoltare folosit pentru realizarea proiectului a fost Arduino IDE.</note> | <note>Mediul de dezvoltare folosit pentru realizarea proiectului a fost Arduino IDE.</note> | ||
Librăriile folosite au fost: | Librăriile folosite au fost: | ||
Line 69: | Line 62: | ||
//variabile care rețin ultima mișcare făcută de joystick-uri// | //variabile care rețin ultima mișcare făcută de joystick-uri// | ||
int last_x1, last_x2, last_y1, last_y2; | int last_x1, last_x2, last_y1, last_y2; | ||
+ | |||
+ | Pentru a executa principalele mișcări ale brațului robotic, am împărțit implementarea în 4 funcții, care se ocupă fiecare de modificarea poziției unui servomotor. | ||
+ | |||
+ | Funcția **claw()** se ocupă de cel de-al patrulea servomotor, care va deschide și închide cleștele de la capătul brațului robotic, în funcție de mișcările pe orizontală ale joystick-ului din stânga. Dacă joystick-ul este împins în stânga, cleștele se va închide, iar dacă este împins în dreapta se închide. Pentru a se asigura că cleștele nu se va deschide sau închide mai mult decât poate, se limitează unghiul de rotire al servomotorului. | ||
+ | |||
+ | Funcția **turn()** va controla primul servomotor, transmițându-i acestuia unghiul la a cărui poziție va trebui să ajungă pentru a roti corpul brațului robotic, în funcție de mișcările pe orizontală ale joystick-ului din dreapta. Brațul se va roti în direcția în care este împins joystick-ul. Pentru a se asigura că rotația este limitată, unghiul de rotire al servomotorului va fi în intervalul [1, 180]. | ||
+ | |||
+ | Funcția **upper_arm()** va determina mișcarea de coborâre și urcare a brațului, fiind controlată prin cel de-al treilea servomotor, mișcările căruia vor fi preluate din citirea mișcării pe verticală a modulului joystick din stânga. Dacă joystick-ul este împins în jos, brațul coboară, urcând dacă e împins în sus. | ||
+ | |||
+ | Funcția **lower_arm()** stabilește mișcarea de întindere și retragere a brațului, fiind controlată prin cel de-al doilea servomotor, mișcările căruia vor fi preluate din citirea mișcării pe verticală a modulului joystick din dreapta. Dacă joystick-ul este împins în jos, brațul se va trage înapoi, întinzându-se dacă e împins în sus. | ||
+ | |||
+ | În funcția de **setup()** se setează lcd-ul și se aduce robotul în poziția inițială, afișându-se pe ecranul LCD un mesaj de început. | ||
+ | |||
+ | în funcția de **loop()** se apelează funcțiile de mișcare ale brațului, și se afișează mesaje corespunzătoare dacă mișcăriile nu pot avea loc. | ||
+ | |||
+ | <note>**Cod proiect: **{{:pm:prj2023:ncaroi:robotic_arm.zip|}}</note> | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
Line 77: | Line 86: | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | 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. | ||
+ | |||
+ | Cea mai grea parte a reprezentat-o cel mai probabil asamblarea scheletului și legarea firelor, deoarece a necesitat o foarte mare atenție, | ||
+ | dar și scrierea codului a fost destul de complicată întrucât nefiind foarte familiarizată cu librăriile am întâmpinat câteva bug-uri. | ||
+ | |||
+ | Mi-ar plăcea să lucrez și la alte proiecte mai complicate, dar consider că este o muncă destul de dificilă atât proiectarea, cât și asamblarea unui asemenea proiect. | ||
===== Download ===== | ===== Download ===== | ||
<note warning> | <note warning> | ||
- | O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). | + | Arhiva conține: |
- | + | * codul sursă | |
- | Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:pm:prj20??:c?** sau **:pm:prj20??:c?:nume_student** (dacă este cazul). **Exemplu:** Dumitru Alin, 331CC -> **:pm:prj2009:cc:dumitru_alin**. | + | * schema bloc |
+ | * diagrama electrică | ||
+ | * imagini cu brațul robotic | ||
</note> | </note> | ||
+ | |||
+ | {{:pm:prj2023:ncaroi:331cc_ulariu_corina-elena.zip|}} | ||
===== Jurnal ===== | ===== Jurnal ===== | ||
Line 91: | Line 110: | ||
* 05.05.2023 - scriere documentație | * 05.05.2023 - scriere documentație | ||
* 18.05.2023 - finalizarea părții hardware | * 18.05.2023 - finalizarea părții hardware | ||
+ | * 23.05.2023 - finalizarea părții software | ||
+ | * 24.05.2023 - finalizarea wiki | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
Line 97: | Line 118: | ||
* https://www.hackster.io/Hack-star-Arduino/learn-to-use-lcd-1602-i2c-parallel-with-arduino-uno-f73f07 | * https://www.hackster.io/Hack-star-Arduino/learn-to-use-lcd-1602-i2c-parallel-with-arduino-uno-f73f07 | ||
* https://microbotlabs.com/arduino-joystick-servo-motor-robot-arm-control-tutorial.html | * https://microbotlabs.com/arduino-joystick-servo-motor-robot-arm-control-tutorial.html | ||
+ | - Resurse Software: | ||
+ | * https://ocw.cs.pub.ro/courses/pm/lab/lab4-2022 | ||
+ | * https://ocw.cs.pub.ro/courses/pm/lab/lab5-2022 | ||
+ | * https://ocw.cs.pub.ro/courses/pm/lab/lab6-2022 | ||
+ | * https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf | ||
+ | * https://reference.arduino.cc/reference/en/libraries/liquidcrystal-i2c/ | ||
+ | |||
<html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||