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:58]
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 folosita pe post de vehicul transport/​poate cara anumite chestii: Ex: Iti poti aduce o ciocolata din bucatarie in sufragerie doar cu ajutorul telefonului               - 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               - 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.               - 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.1619369902.txt.gz · Last modified: 2021/04/25 19:58 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