Differences

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

Link to this comparison view

pm:prj2021:abirlica:object_following_robot [2021/06/04 00:42]
radu_stefan.blejan [Hardware design]
pm:prj2021:abirlica:object_following_robot [2021/06/04 02:08] (current)
radu_stefan.blejan [Bibliografie/Resurse]
Line 1: Line 1:
 ====== Object Following Robot ======= ====== Object Following Robot =======
 +
 +Autor: Blejan Radu-Stefan 333CC
 ==== Introducere === ==== Introducere ===
  
Line 34: Line 36:
      - 4 motoare DC       - 4 motoare DC 
      - 2 punti H      - 2 punti H
-     ​- ​baterie ​de 9V+     ​- ​2 baterii ​de 9V
      - 1 servomotor      - 1 servomotor
      - 1 senzor ultrasonic      - 1 senzor ultrasonic
-     - fire+     - fire jumper + mama-tata
      - breadboard      - breadboard
      - 4 roti      - 4 roti
Line 52: Line 54:
 </​note>​ </​note>​
  
-Pentru ​implementarea proiectului ​am creat prima data o masinuta normala +Am folosit structura "#​define <​nume_componenta>​ <​pin>"​ pentru a avea control 
-care se putea deplasa in toate directiile, implementand ​cate o functie pentru +asupra fiecarei roti a masinii, asupra servomotorului si a senzorului ultrasonic. 
-fiecare ​tip de deplasare.+ 
 +Pentru ​tipurile de deplasare(stanga,​ dreapta, fata, spate) ​am implementat 
 +cate o functie pentru ​fiecare. ​ 
 +De exemplu, functia pentru mers inainte: 
 + 
 +void forward() { 
 +  analogWrite(enA,​ 150); 
 +  analogWrite(enB,​ 150); 
 +   
 +  digitalWrite(in1_stanga_spate,​LOW);​ 
 +  digitalWrite(in2_stanga_spate,​ HIGH); 
 +  digitalWrite(in3_stanga_fata,​LOW);​ 
 +  digitalWrite(in4_stanga_fata,​ HIGH); 
 +   
 +  analogWrite(enA_2,​ 150); 
 +  analogWrite(enB_2,​ 150); 
 +   
 +  digitalWrite(in1_dreapta_fata,​LOW);​ 
 +  digitalWrite(in2_dreapta_fata,​ HIGH); 
 +  digitalWrite(in3_dreapta_spate,​LOW);​ 
 +  digitalWrite(in4_dreapta_spate,​ HIGH); 
 +
 + 
 +Astfel am setat directia curentului prin fiecare ​roata si am dat directia masinii. 
 + 
 +Apoi am implementat o functie ce calculeaza distanta determinata de senzorul ultrasonic. 
 +Se trimite un impuls de la senzor. Apoi sunt folosite viteza sunetului și timpul revenirii 
 +impulsului pentru a calcula distanța. 
 + 
 +int setDistance() { 
 +  digitalWrite(Trig,​ LOW);    
 +  delayMicroseconds(2);​ 
 +  digitalWrite(Trig,​ HIGH); ​  
 +  delayMicroseconds(20);​ 
 +  digitalWrite(Trig,​ LOW);    
 +  float distance = pulseIn(Echo,​ HIGH); ​  
 +  distance= distance / 58;        
 +  return (int)distance;​ 
 +
 + 
 +In final, in cadrul functiei loop() determin constant distantele din stanga si dreapta sevomotorului 
 +pentru a putea deplasa masina dupa un obiect care se misca si in functie de aceste valori, apelez 
 +functiile ​de deplasare ​a masinii pentru a respecta traiectoria. 
 + 
 +void loop() { 
 +    myservo.write(120); ​  
 +    delay(200);  
 +    rightDistance = setDistance();​ 
 + 
 +    myservo.write(60);​  
 +    delay(200);  
 +    leftDistance = setDistance();​ 
 + 
 +    if((rightDistance > 50)&&​(leftDistance > 50)){ 
 +      stop(); 
 +    }else if((rightDistance >= 20) && (leftDistance >= 20)) {      
 +      forward();​ 
 +    }else if((rightDistance <= 5) && (leftDistance <= 5)) { 
 +        back(); 
 +        delay(100);​ 
 +    }else if(rightDistance - 3 > leftDistance) { 
 +        left(); 
 +        delay(100);​ 
 +    }else if(rightDistance + 3 < leftDistance) { 
 +        right(); 
 +        delay(100);​ 
 +    }else{ 
 +      stop(); 
 +    } 
 +
 + 
 +=== Activity Diagram === 
 + 
 +{{:​pm:​prj2021:​abirlica:​activitydiagramblejanradu.png?​direct&​300|}} ​
  
  
Line 60: Line 135:
  
 ==== Rezultate obtinute ==== ==== Rezultate obtinute ====
 +
 +Poze:
 +
 +
 +{{:​pm:​prj2021:​abirlica:​pozapisoi1.jpg?​direct&​300|}}
 +{{:​pm:​prj2021:​abirlica:​pozapisoi2.jpg?​direct&​300|}}
 +{{:​pm:​prj2021:​abirlica:​pozapisoi3.jpg?​direct&​300|}}
 +{{:​pm:​prj2021:​abirlica:​pozapisoi4.jpg?​direct&​300|}}
 +{{:​pm:​prj2021:​abirlica:​pozapisoi5.jpg?​direct&​300|}}
 +
  
 Link video Youtube: https://​www.youtube.com/​watch?​v=hF8JkSknpL0 Link video Youtube: https://​www.youtube.com/​watch?​v=hF8JkSknpL0
Line 67: Line 152:
 ==== Concluzii ==== ==== Concluzii ====
  
-TODO+Proiectul a fost unul din care am invatat foarte multe. Am intampinat destul 
 +de multe dificultati,​ deoarece a fost nevoie de o atentie mare la conectarea  
 +componentelor,​ fiind nevoit sa folosesc si pinii analogici de pe placuta  
 +Arduino(A0, A1,... A5). 
 +Adevarata provocare dupa crearea masinii si obtinerea controlului asupra fiecarei 
 +roti a fost tratarea corecta a cazurilor pentru distantele senzorului ultrasonic,​ 
 +deoarece a trebuit sa le adaptez si la dimensiunea obiectului pe care trebuia sa il 
 +urmeze. 
 +Ca si concluzie, a fost o alegere buna, iar realizarea proiectului char mi-a oferit 
 +satisfactie si posibil noi idei pentru proiecte cu Arduino. ​
  
-==== Download ==== 
- 
-TODO 
  
 ==== Bibliografie/​Resurse ==== ==== Bibliografie/​Resurse ====
  
-TODO+https://​www.youtube.com/​watch?​v=8Ea_jUQPVrE 
 + 
 +https://​randomnerdtutorials.com/​complete-guide-for-ultrasonic-sensor-hc-sr04/​ 
 + 
 +Link pagina ocw: https://​ocw.cs.pub.ro/​courses/​pm/​prj2021/​abirlica/​object_following_robot 
 + 
 +Pdf: https://​ocw.cs.pub.ro/​courses/​pm/​prj2021/​abirlica/​object_following_robot?​do=export_pdf
pm/prj2021/abirlica/object_following_robot.1622756570.txt.gz · Last modified: 2021/06/04 00:42 by radu_stefan.blejan
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