Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2023:ndrogeanu:robotic-arm-master-slave [2023/05/07 14:37]
artemiza.dospinescu [Descriere generală]
pm:prj2023:ndrogeanu:robotic-arm-master-slave [2023/05/29 20:12] (current)
artemiza.dospinescu [Download]
Line 18: Line 18:
  
 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. 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:** **Schema bloc:**
  
-{{:​pm:​prj2023:​ndrogeanu:​schema_bloc_robotic_arm.jpeg?nolink&300 |}}+{{:​pm:​prj2023:​ndrogeanu:​rams_schema_block.png?direct&300|}}
  
 ===== Hardware Design ===== ===== Hardware Design =====
Line 28: Line 32:
  
   * Arduino UNO R3 ATM328p x2   * Arduino UNO R3 ATM328p x2
-  * Potentiometru 10Kohm ​x5 +  * Potentiometru 10Kohm ​x4 
-  * Servomotor MG90S x5+  * Servomotor MG90S x4 
 +  * Adafruit Optical Fingerprint Sensor AS608
   * Breadboard x3   * Breadboard x3
   * Led RGB   * Led RGB
 +  * Ecran LCD
   * Buton   * Buton
   * Rezistențe   * Rezistențe
   * Fire   * Fire
-<note tip> + 
-Aici puneţi tot ce ţine de hardware design: +**Schema electrică:** 
-  ​listă de piese + 
-  * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri,​ e.g. http://​www.captain.at/​electronic-atmega16-mmc-schematic.png) +{{:​pm:​prj2023:​ndrogeanu:​rams_hw.jpeg?​direct&​300|}}
-  ​diagrame de semnal  +
-  ​rezultatele simulării +
-</​note>​+
  
 ===== Software Design ===== ===== Software Design =====
Line 48: Line 51:
 <note tip> <note tip>
 Descrierea codului aplicaţiei (firmware): Descrierea codului aplicaţiei (firmware):
-  * mediu de dezvoltare ​(if any) (e.gAVR Studio, CodeVisionAVR) +  * mediu de dezvoltare: Arduino IDE 2.1.0 
-  * librării ​şi surse 3rd-party (e.gProcyon AVRlib) +  * librării
-  algoritmi şi structuri ​pe care plănuiţi să le implementaţi +    *SPI.h ​folosită pentru comunicarea între cele două plăcuțfolosind SPI 
-  (etapa 3) surse şi funcţii implementate+    *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
 </​note>​ </​note>​
 +
 +Funcții implementate:​
 +
 +  *getFingerprintIdez() - funcție ce returnează id-ul amprentei scanate. Cunoscând id-ul amprentei se poate face verificarea utilizatorului ce accesează ansamblul
 +  *checkStopCondition() - funcție ce verifică daca butonul a fost apăsat de două ori, la a doua apăsare ansamblul ajunge din nou în starea initială de unde poate fi reutilizat
 +
 +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ă.
 +
 +{{:​pm:​prj2023:​ndrogeanu:​rams_first.jpeg?​direct&​300|}}
 +{{:​pm:​prj2023:​ndrogeanu:​rams_second.jpeg?​direct&​300|}}
 +{{:​pm:​prj2023:​ndrogeanu:​rams_third.jpeg?​direct&​300|}}
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
-<note tip> +{{:​pm:​prj2023:​ndrogeanu:​poza1_rams.jpeg?​direct&​300|}} 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru+ 
-</​note>​+{{:​pm:​prj2023:​ndrogeanu:​pozaa2_rams.jpeg?​direct&​300|}} 
 + 
 +{{:​pm:​prj2023:​ndrogeanu:​poza3_rams.jpeg?​300|}}
  
 ===== Concluzii ===== ===== 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 ===== ===== 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ă ;-). +Un demo poate fi găsit în arhivă: 
- +{{:pm:prj2023:ndrogeanu:rams_proiect_2023.zip|}}
-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**.+
 </​note>​ </​note>​
  
Line 73: Line 102:
  
 <note tip> <note tip>
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.+  *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
 </​note>​ </​note>​
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
-<​note>​ +Resurse Hardware: 
-Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse ​Hardware**. + 
-</note>+  *https://​www.instructables.com/​Simple-Smart-Robotic-Arm-Using-Arduino-/​ 
 +  ​*https://​cleste.ro/​motor-servo-mg90s-180g.html 
 +  ​*https://​ardushop.ro/​ro/​electronica/​193-potentiometru-10k.html?​gclid=Cj0KCQjw98ujBhCgARIsAD7QeAgvJJqwXjBUrssGPcccpvdFBBjdedKRrXV8bzP1lZnJz33FNBmo9YoaArIIEALw_wcB 
 +  ​*https://​www.optimusdigital.ro/​ro/​placi-avr/​1685-uno-r3-atmega328p-atmega16u2-placa-de-dezvoltare-compatibila-cu-arduino.html?​search_query=arduino&​results=570 
 +  ​*https://​www.optimusdigital.ro/​ro/​senzori-senzori-optici/​1276-senzor-optic-de-amprenta.html?​search_query=fingerprint&​results=1 
 +  ​*https://​ardushop.ro/​ro/​home/​1893-lcd-1602-verde-iic.html?​search_query=lcd&​results=54 
 +  ​*https://​ardushop.ro/​ro/​electronica/​177-modul-led-rgb.html?​search_query=modul+rgb&​results=492 
 + 
 +Resurse ​Software: 
 + 
 +  ​*https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab5-2022 
 +  ​*https://www.youtube.com/​watch?​v=CvqHkXeXN3M 
 +  ​*https:​//​randomnerdtutorials.com/​fingerprint-sensor-module-with-arduino/​ 
 +  *https://​cdn-learn.adafruit.com/​downloads/​pdf/​adafruit-optical-fingerprint-sensor.pdf 
 +  *https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab3-2023
  
 <​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>​
  
  
pm/prj2023/ndrogeanu/robotic-arm-master-slave.1683459450.txt.gz · Last modified: 2023/05/07 14:37 by artemiza.dospinescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0