Table of Contents

Robotic Arm Master Slave

Student: Dospinescu Artemiza-Mihaela

Grupa: 334CC

Introducere

Prezentarea generala a proiectului:

Proiectul constă în existența a două brațe robotice(master și slave). Utilizatorul poate executa anumite operații asupra brațului master, iar cel slave va încerca sa reproducă cu exactitate. Scopul proiectului este de a simula avantajele conexiunii la distanță între două componente master-slave. Un astfel de ansamblu poate fi folosit în telerobotică, comanda și controlul de la distanță a unui robot aflat într-o altă locație față de persoana care îl controlează. Ideea proiectului a fost dezvoltată atunci când am aprofundat domeniul și am văzut câte aspecte interesante poate avea. De exemplu, în medicină, se permite executarea anumitor proceduri, tratamente la o anumită distanță folosind un astfel de ansamblu.

Descriere generală

Pentru a realiza conexiunea dintre cele două brațe robotice voi avea nevoie de două placuțe Arduino conectate prin SPI. În acest mod o placuță va fi asignată brațului slave, iar cealaltă brațului master. Componenta master va fi formată prin asamblarea mai multor potențiometre, fiecare detectând mișcarea pe un anumit nivel. Componenta slave va fi realizată în același mod, însă folosind servomotoare. Astfel, servomotoarele vor executa mișcări bazate pe valorile generate de potențiometre.

Ansamblul va semnala utilizatorului faptul că nu este în stare de funcționare prin prezența unui led RGB ce afișeaza culoarea roșie. Prin apăsarea unui buton ledul devine verde, ansamblul intră în stare de funcționare și fiecare braț robotic asteaptă câte un input: componenta master așteaptă input de la utilizator, iar cea slave de la componenta master. În acest fel, la primirea inputului de la utilizator de către componenta master, datele vor fi transmise către componenta slave prin intermediul celor două plăcuțe, urmând ca brațul robotic slave să trimită un ACK înainte de a executa mișcarea. În cazul în care componenta master nu primește vreun răspuns, ansamblul va intra în stare de blocare pentru câteva secunde semnalând acest lucru prin intermediul ledului RGB ce devine roșu și execută operația de blink pe durata acelui interval de timp. La expirarea timpului, componenta master va cere reexecutarea operației.

Interacțiunea dintre utilizator și ansamblu se va face prin intermediul ecranului LCD.

Din motive de siguranță și pentru a păstra identitatea utilizatorului principal, am adăugat un senzor de amprente.

Schema bloc:

Hardware Design

Listă piese:

Schema electrică:

Software Design

Descrierea codului aplicaţiei (firmware):

  • mediu de dezvoltare: Arduino IDE 2.1.0
  • librării:
    • SPI.h - folosită pentru comunicarea între cele două plăcuțe folosind SPI
    • LiquidCrystal_I2C.h - utilizată pe afișajul pe LCD folosind I2C
    • Wire.h - permite comunicarea device-urilor prin I2C
    • SoftwareSerial.h - folosită pentru a permite comunicare serială pe pinii digitali
    • Adafruit_Fingerprint.h - bibliotecă folosită pentru counicarea cu senzorul de amprente
    • ezButton.h - utilizată pentru o interacțiune mai facilă cu butonul de start-stop

Funcții implementate:

Logica ansamblului:

În starea inițială ansamblul semnalează prin ledul RGB roșu că nu este în stare de funcționare, cele două brațe nu comunică. Ecranul LCD va printa “Press the button”.

La apăsarea butonului de către utilizator ledul va deveni verde, iar LCD-ul va printa “Validate!”, atenționând utilizatorul să folosească senzorul de amprente pentru identificare. În urma unei identificări corecte LCD-ul va afișa “In use!”, iar utilizatorul va putea manipula brațul master, asteptând un raspuns de la brațul slave.

În timpul mișcărilor este posibil ca led-ul să devină roșu și să efectueze operația de blink pe parcursul unui interval scurt de timp în care ansamblul se găsește în stare de eroare și nu poate fi utilizat. Acest lucru se întâmplă din cauza unui mesaj neașteptat de la brațul slave, caracterul transmis ca răspuns nu este cel corespunzător. Un astfel de comportament arată ca brațele master și slave nu comunică ideal, iar comportamentul ansamblului poate fi nedefinit în acele situații. Utilizatorul este nevoit să aștepte ca led-ul să devină verde pentru a putea continua.

La final, a doua apăsare a butonului va închide ansamblul, ducându-l în starea inițială.

Rezultate Obţinute

Concluzii

Pot spune că versiunea finală a depășit cu mult așteptările inițiale. Cu toate că există multe funcționalități ce pot fi adăugate pentru a îmbunătați ideea și varianta finală nu este tocmai ideală, mă bucur ca am reușit să creez ceva al cărui rezultat îl pot vedea fizic. Consider că au fost 5 săptamâni în care m-am dezvoltat, am învățat să mă organizez să pot duce proiectul până la capăt la timp, să ies din situații imprevizibile și să-mi antrenez gândirea critică. Am învățat să-mi caut singură informațiile și să folosesc cât mai eficient ce găsesc. Cel mai important, consider că am reușit să aprofundez informațiile de la laborator și să devin mai sigură pe cunoștințele mele.

Download

Un demo poate fi găsit în arhivă: rams_proiect_2023.zip

Jurnal

  • 24.04.2023 - 30.04.2023 → comandă + primire componente
  • 01.05.2023 - 07.05.2023 → documentație + milestone 1
  • 08.05.2023 - 14.05.2023 → implementare hw
  • 15.05.2023 - 21.05.2023 → imbunătățiri + milestone 2
  • 22.05.2023 - 28.05.2023 → implementare sw + milestone 3

Bibliografie/Resurse

Resurse Hardware:

Resurse Software:

Export to PDF