Differences

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

Link to this comparison view

pm:prj2021:alazar:rc_offroad_car [2021/04/25 21:46]
ioan_robert.gogete created
pm:prj2021:alazar:rc_offroad_car [2021/05/31 18:25] (current)
ioan_robert.gogete [Concluzii]
Line 1: Line 1:
-Introducere +====== RC Offroad Car ====== 
-O sa contruiesc masina de teren controlata bluetooth prin aplicatie cu senzor de proximitate pentru oprire de urgenta+ 
 +===== Autor ===== 
 +Robert Gogete 331CB  
 + 
 +===== Introducere ​===== 
 + 
 +Masina controlata de la distanta prin bluetooth. 
 + 
 +===== Descriere generală ===== 
 + 
 +O sa contruiesc masina de teren controlata bluetooth prin aplicatie ​android, ​cu senzor de proximitate pentru oprire de urgenta
 +Masina era foarte greu de controlat cand am cumparat-o, avand doar acceleratie digitala, neputand fi modificata viteza. Pe langa asta 
 +eu o loveam de multe ori in obiecte asa ca am decis sa ii adaug un senzor de proximitate prin care sa franez de urgenta. 
 + 
 +===== Schemă bloc ===== 
 + 
 +{{:​pm:​prj2021:​alazar:​schemablocv2_gogeterobert331cb.png?​200|}} 
 + 
 +===== Hardware Design =====
  
 Componente folosite: Componente folosite:
-Arduino pro microacumulator 5Vbluetooth HC-05Driver motoaresenzor de proximitate+  * Arduino pro micro 
 +  * acumulator 5V 
 +  * bluetooth HC-05 
 +  * Driver motoare 
 +  * senzor de proximitate 
 +  * 3 motoare 5V 
 + 
 + 
 +{{:​pm:​prj2021:​alazar:​schemabloc_gogeterobert331cb.png?​200|}} 
 + 
 +===== Software Design ===== 
 + 
 +<​code>​ 
 +void setup()  
 +
 +  Serial.begin(9600);​ 
 +  Serial1.begin(9600);​ 
 +  pinMode(MOTORS,​ OUTPUT); 
 +  pinMode(MOTORS_DIRECTION,​ OUTPUT); 
 +  pinMode(SERVO_DIRECTION,​ OUTPUT); 
 +  pinMode(SERVO_DIRECTION_SPEED,​ OUTPUT); 
 +  pinMode(PROXIMITY_SENSOR,​ INPUT_PULLUP);​ 
 +
 + 
 +void loop() 
 +
 +  readInput();​ 
 +  resetAtInactivity();​ 
 +  setMotorSpeed();​ 
 +  setDirection();​ 
 +
 + 
 +void resetAtInactivity() 
 +
 +  if (millis() - time > 200) 
 +  { 
 +    controller_y = 50; 
 +    controller_x = 50; 
 +  } 
 +
 + 
 +void readInput() 
 +
 +  if(Serial1.available()) ​  
 +  { 
 +    time = millis(); 
 +    incoming_value = Serial1.read();​ 
 + 
 +    switch(incoming_value) 
 +    { 
 +      case '​X':​ 
 +        value_type = 1; 
 +        setControllerCoordinates();​ 
 +        controller_x_auxiliary = 0; 
 +        break; 
 +      case '​Y':​ 
 +        value_type = 2; 
 +        controller_y_auxiliary = 0; 
 +        break; 
 +      default: 
 +          switch(value_type) 
 +          { 
 +            case 1: 
 +              controller_x_auxiliary *= 10; 
 +              controller_x_auxiliary += incoming_value - '​0';​ 
 +              break; 
 +            case 2: 
 +              controller_y_auxiliary *= 10; 
 +              controller_y_auxiliary += incoming_value - '​0';​ 
 +              break; 
 +          } 
 +        break; 
 +    } 
 +  }    
 +
 + 
 +void setMotorSpeed() 
 +
 +  int clearPath = digitalRead(PROXIMITY_SENSOR);​ 
 +  Serial.println(clearPath);​ 
 +   
 +  if (controller_y <= 50 && clearPath) 
 +  { 
 +    analogWrite(MOTORS,​ controller_y * 255 / 50); 
 +    digitalWrite(MOTORS_DIRECTION,​ HIGH); 
 +  }  
 +  else if (controller_y > 50) 
 +  { 
 +    analogWrite(MOTORS,​ (controller_y - 50) * 255 / 50); 
 +    digitalWrite(MOTORS_DIRECTION,​ LOW); 
 +  } 
 +  else 
 +  { 
 +    analogWrite(MOTORS,​ 255); 
 +    digitalWrite(MOTORS_DIRECTION,​ HIGH); 
 +  } 
 +
 + 
 +void setDirection() 
 +
 +  if (controller_x < 25) 
 +  { 
 +    digitalWrite(SERVO_DIRECTION,​ HIGH); 
 +    digitalWrite(SERVO_DIRECTION_SPEED,​ LOW); 
 +  }  
 +  else if (controller_x > 75) 
 +  { 
 +    digitalWrite(SERVO_DIRECTION,​ LOW); 
 +    digitalWrite(SERVO_DIRECTION_SPEED,​ HIGH); 
 +  } 
 +  else 
 +  { 
 +    digitalWrite(SERVO_DIRECTION,​ LOW); 
 +    digitalWrite(SERVO_DIRECTION_SPEED,​ LOW); 
 +  } 
 +
 + 
 +void setControllerCoordinates() 
 +
 +  controller_x = controller_x_auxiliary;​ 
 +  controller_y = controller_y_auxiliary;​ 
 +
 +</​code>​ 
 + 
 +===== Rezultate Obţinute ===== 
 + 
 +{{:​pm:​prj2021:​alazar:​rcoffroadcar_robertgogete331cb_car1.jpg?​200|}} 
 +{{:​pm:​prj2021:​alazar:​rcoffroadcar_robertgogete331cb_car2.jpg?​200|}} 
 + 
 +Link catre video cu demo (am filmat masinuta in timp  ce o controlam din telefon): [[https://​mega.nz/​file/​IpAE2TqA#​ABH6GDGrwyVRfZCJEqUFGSODR-stFDeneov0merYs3o]] 
 +===== Concluzii ===== 
 + 
 +Proiect pe care l-am facut din placere, din care simt ca am invatat mai multa electronica decat in 2 cursuri. 
 +===== Download ===== 
 +Export în [[https://​ocw.cs.pub.ro/​courses/​pm/​prj2021/​alazar/​rc_offroad_car?​do=export_pdf| PDF]]
pm/prj2021/alazar/rc_offroad_car.1619376408.txt.gz · Last modified: 2021/04/25 21:46 by ioan_robert.gogete
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