Differences

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

Link to this comparison view

pm:prj2021:abirlica:mcb_car [2021/04/25 19:54]
andrei.macadon
pm:prj2021:abirlica:mcb_car [2021/06/04 16:02] (current)
andrei.macadon
Line 1: Line 1:
 =====Mobile Controlled Bluetooth Car===== =====Mobile Controlled Bluetooth Car=====
 +**Autor**: Macadon Andrei-Cristian
 ===Introducere=== ===Introducere===
-       ​*Proiectul este reprezentat de o masinuta care poate fi controlata dintr-o aplicatie Arduino. Acest lucru este posibil printr-un modul bluetooth HC-05 conectat la placuta arduino uno. Aceasta se afla pe un sasiu de robot.+       ​*Proiectul este reprezentat de o masinuta care poate fi controlata dintr-o aplicatie Arduino. Acest lucru este posibil printr-un modul bluetooth HC-05 conectat la placuta arduino uno. De asemenea, atunci cand masinuta da cu spatele un LED verde va palpai. Exista comanda '​A'​ care va pune masinuta pe avarii. Avariile pot fi oprite dand, din nou, comanda '​A'​ sau dand comanda '​S'​(ce opreste si motoarele). Aceasta se afla pe un sasiu de robot.
        ​*Masinuta poate avea mai multe scopuri:        ​*Masinuta poate avea mai multe scopuri:
-              - poate fi+              - Poate fi folosita pe post de vehicul transport/​poate cara anumite chestii: Ex: Iti poti aduce o ciocolata din bucatarie in sufragerie doar cu ajutorul telefonului 
 +              - Poti pune un servetel sub ea, aceasta curatand zonele prin care se va plimba 
 +              - De asemenea, aceasta ​poate fi folosita si pe post de simpla jucarie. 
 +===Hardware Design=== 
 +**Lista componente** 
 +    -Arduino Uno 
 +    -Placa de control motoare L298n 
 +    -4 motoare  
 +    -Baterie 
 +    -Modul Bluetooth HC-05 
 +    -Sasiu robot 
 +    -Cabluri 
 + 
 +===Schema Bloc=== 
 +{{:​pm:​prj2021:​abirlica:​schemablocpm.png?​400|}} 
 + 
 +===Software Design=== 
 +    *Implementarea codului este destul de simpla. Prin intermediul calculatorului ma conectez la modulul bluetooth, iar printr-un terminal trimit comenzi precum '​F'​(masina merge in fata), '​B'​(masina da cu spatele), '​L'​(masina face stanga), '​R'​(masina face dreapta), '​S'​(masina se opreste, avariile se opresc), '​A'​(se pornesc sau se sting avariile). 
 +    *Pentru a folosi modulul bluetooth am inclus libraria SoftwareSerial.h. 
 +    *In setup() setez pinii de output. In loop() verific mereu requestul primit de la terminal si actionez corespunzator(misc masina sau activez avariile). Folosesc doua flag-uri: "​avarii"​ si "​backwardsLights"​ pentru a gestiona aprinderea si inchiderea LED-urilor. 
 +===Codul masinii=== 
 +<​code>#​include <​SoftwareSerial.h>​ 
 +SoftwareSerial hc05(0, 1); 
 + 
 +int m1pin1 = 8; 
 +int m1pin2 = 9; 
 +int m2pin1 = 10; 
 +int m2pin2 = 11; 
 +int avarii = 0; 
 +int backwardsLights = 0; 
 +char request; 
 + 
 +void setup() { 
 + 
 +  Serial.begin(9600);​ 
 +  hc05.begin(9600);​ 
 +  // put your setup code here, to run once: 
 +  pinMode(m1pin1,​ OUTPUT); 
 +  pinMode(m1pin2,​ OUTPUT); 
 +  pinMode(m2pin1,​ OUTPUT); 
 +  pinMode(m2pin2,​ OUTPUT); 
 + 
 +  pinMode(4, OUTPUT);  
 +  pinMode(5, OUTPUT); 
 +
 + 
 +void loop() { 
 + 
 +  request = ' '; 
 +  if(hc05.available() > 0){ 
 +    request = hc05.read();​ 
 +    Serial.write(Serial.read());​ 
 +  } 
 + 
 +  if (request == '​F'​) { 
 +     
 +    //Make the motors run forward: 
 +    digitalWrite(m1pin1,​ HIGH); 
 +    digitalWrite(m1pin2,​ LOW); 
 +     
 +    digitalWrite(m2pin1,​ HIGH); 
 +    digitalWrite(m2pin2,​ LOW); 
 + 
 +    backwardsLights = 0; 
 + 
 +    analogWrite(4,​ 255); //ENA pin 
 +    analogWrite(5,​ 255); //ENB pin 
 +  } 
 +  if(backwardsLights == 1){ 
 +    digitalWrite(6,​ HIGH); 
 +    delay(500);​ 
 +    digitalWrite(6,​ LOW); 
 +    delay(500);​ 
 +  } 
 +  if (request == '​B'​) { 
 + 
 +    //Make the motors run backwards 
 +    digitalWrite(m1pin1,​ LOW); 
 +    digitalWrite(m1pin2,​ HIGH); 
 +     
 +    digitalWrite(m2pin1,​ LOW); 
 +    digitalWrite(m2pin2,​ HIGH); 
 +    // set the flag for the backwardsLights 
 +    backwardsLights = 1; 
 +     
 +    digitalWrite(6,​ HIGH); 
 +    delay(1000);​ 
 +    digitalWrite(6,​ LOW); 
 +    delay(1000);​ 
 +     
 +    analogWrite(4,​ 255); //ENA pin 
 +    analogWrite(5,​ 255); //ENB pin 
 +  } 
 + 
 +  if (request == '​L'​) { 
 + 
 +    //Make only the left motors run  
 +    digitalWrite(m1pin1,​ HIGH); 
 +    digitalWrite(m1pin2,​ LOW); 
 +   
 +    digitalWrite(m2pin1,​ LOW); 
 +    digitalWrite(m2pin2,​ LOW); 
 + 
 +    backwardsLights = 0; 
 + 
 +    analogWrite(4,​ 255); //ENA pin 
 +    analogWrite(5,​ 255); //ENB pin 
 +  } 
 +   
 +  if (request == '​R'​) { 
 + 
 +    //Make only the right motors run 
 +    digitalWrite(m1pin1,​ LOW); 
 +    digitalWrite(m1pin2,​ LOW); 
 + 
 +    digitalWrite(m2pin1,​ HIGH); 
 +    digitalWrite(m2pin2,​ LOW); 
 + 
 +    backwardsLights = 0; 
 + 
 +    analogWrite(4,​ 255); //ENA pin 
 +    analogWrite(5,​ 255); //ENB pin 
 +  } 
 + 
 +  //check the avarii flag to see if the red LED should be flickering or not  
 +  if(avarii == 1){ 
 +    digitalWrite(7,​ HIGH); 
 +    delay(500);​ 
 +    digitalWrite(7,​ LOW); 
 +    delay(500);​ 
 +  } 
 + 
 +  if (request == '​S'​) { 
 +     
 +    // stop all the motors 
 +    digitalWrite(m1pin1,​ LOW); 
 +    digitalWrite(m1pin2,​ LOW); 
 + 
 +    digitalWrite(m2pin1,​ LOW); 
 +    digitalWrite(m2pin2,​ LOW); 
 + 
 +    //stop avarii  
 +    digitalWrite(7,​ LOW); 
 +      
 +    analogWrite(4,​ 0); //ENA pin 
 +    analogWrite(5,​ 0); //ENB pin 
 +    //set the flags accordingly 
 +    avarii = 0; 
 +    backwardsLights = 0; 
 +  } 
 +  if(request == '​A'​){ 
 +    // turn on avarii 
 +    digitalWrite(7,​ HIGH); 
 +    delay(1000);​ 
 +    digitalWrite(7,​ LOW); 
 +    delay(1000);​ 
 +    // if avarii were already turned on, turn them off 
 +    if(avarii == 0){ 
 +      avarii = 1; 
 +    } else { 
 +      avarii = 0; 
 +    } 
 +  } 
 +
 +===Poze=== 
 +{{:​pm:​prj2021:​abirlica:​poza_andrei_macadon_2.jpeg?​nolink&​300|}} 
 +{{:​pm:​prj2021:​abirlica:​poza_andrei_macadon_3.jpeg?​nolink&​300|}} 
 +{{:​pm:​prj2021:​abirlica:​poza_andrei_macadon_1.jpeg?​nolink&​300|}} 
 +{{:​pm:​prj2021:​abirlica:​poza_andrei_macadon_4.jpeg?​nolink&​300|}} 
 +===Demo=== 
 +[[https://​youtu.be/​WCbSVXxYX_Y]] 
 +===Bibliografie=== 
 +[[https://​www.youtube.com/​watch?​v=tujih1afqiE]] 
 +[[https://​ocw.cs.pub.ro/​courses/​pm/​prj2021/​abirlica/​mcb_car]] 
 +[[https://​ocw.cs.pub.ro/​courses/​pm/​prj2021/​abirlica/​mcb_car?​do=export_pdf]]
  
  
  
pm/prj2021/abirlica/mcb_car.1619369699.txt.gz · Last modified: 2021/04/25 19:54 by andrei.macadon
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