Robot điều khiển bằng điện thoại qua sóng Bluetooth - congnghelop10

Latest

Hình đại diện

Monday, 1 January 2018

Robot điều khiển bằng điện thoại qua sóng Bluetooth


CHƯƠNG TRÌNH CHO XE ĐIỀU KHIỂN BẰNG BLUETOOTH

Yêu cầu phần cứng

Một khu xe robot

Một module điều khiển động cơ l298N
Một module thu phát Bluetooth HC_06
Một mini testboard
Dây điện đực cái
còi
pin 9v và hộp

Yêu cầu phần mềm

Arduino IDE classic
bluetoothRCcontroller

https://play.google.com/store/apps/details?id=braulio.calle.bluetoothRCcontroller&hl=vi
Sơ đồ cấm dây

Mở Arduino IDE classic và nhập đoạn mã sau

//code bluetooth RC controller

#define dtruoc_P  14    //LED Trước phải   pin A0 for Arduino Uno
#define dtruoc_T  15    //LED Trước trái     pin A1 for Arduino Uno
#define dsau_P  16    //LED Sau phải       pin A2 for Arduino Uno
#define dsau_T  17    //LED Sau trái         pin A3 for Arduino Uno
#define ken 18    //ken       pin A4 for Arduino Uno

#define ENA_m1 5        // Enable/speed motor Trước phải
#define ENB_m1 6        // Enable/speed motor Sau phải
#define ENA_m2 10       // Enable/speed motor Trước trái
#define ENB_m2 11       // Enable/speed motor Sau trái

#define IN_11  2                  // L298N #1 in 1 motor Trước phải
#define IN_12  3                  // L298N #1 in 2 motor Trước phải
#define IN_13  4                  // L298N #1 in 3 motor Sau phải
#define IN_14  7                  // L298N #1 in 4 motor Sau phải

#define IN_21  8                  // L298N #2 in 1 motor Trước trái
#define IN_22  9                  // L298N #2 in 2 motor Trước trái
#define IN_23  12                // L298N #2 in 3 motor Sau trái
#define IN_24  13                // L298N #2 in 4 motor Sau trái

int command;                                          //Int to store app command state.
int tocdo = 100;                    // 50 - 255.
int speed_Coeff = 4;
boolean lightFront = false;
boolean lightBack = false;
boolean horn = false;

void setup() { 
  
            pinMode(dtruoc_P, OUTPUT);
            pinMode(dtruoc_T, OUTPUT);
            pinMode(dsau_P, OUTPUT);
            pinMode(dsau_T, OUTPUT);
            //pinMode(ken, OUTPUT);
   
pinMode(ENA_m1, OUTPUT);
pinMode(ENB_m1, OUTPUT);
pinMode(ENA_m2, OUTPUT);
pinMode(ENB_m2, OUTPUT);
 
pinMode(IN_11, OUTPUT);
pinMode(IN_12, OUTPUT);
pinMode(IN_13, OUTPUT);
pinMode(IN_14, OUTPUT);
   
             pinMode(IN_21, OUTPUT);
             pinMode(IN_22, OUTPUT);
             pinMode(IN_23, OUTPUT);
             pinMode(IN_24, OUTPUT);

            Serial.begin(9600);

  }

void goAhead(){ //chạy tới

      digitalWrite(IN_11, HIGH);
      digitalWrite(IN_12, LOW);
                analogWrite(ENA_m1, tocdo);

      digitalWrite(IN_13, LOW);
      digitalWrite(IN_14, HIGH);
                analogWrite(ENB_m1, tocdo);


      digitalWrite(IN_21, LOW);
      digitalWrite(IN_22, HIGH);
                analogWrite(ENA_m2, tocdo);


      digitalWrite(IN_23, HIGH);
      digitalWrite(IN_24, LOW);
                analogWrite(ENB_m2, tocdo);

  }

void goBack(){ //chạy lùi

      digitalWrite(IN_11, LOW);
      digitalWrite(IN_12, HIGH);
                analogWrite(ENA_m1, tocdo);


      digitalWrite(IN_13, HIGH);
      digitalWrite(IN_14, LOW);
                analogWrite(ENB_m1, tocdo);


      digitalWrite(IN_21, HIGH);
      digitalWrite(IN_22, LOW);
                analogWrite(ENA_m2, tocdo);


      digitalWrite(IN_23, LOW);
      digitalWrite(IN_24, HIGH);
                analogWrite(ENB_m2, tocdo);

  }

void veophai(){ //sang phải

      digitalWrite(IN_11, LOW);
      digitalWrite(IN_12, HIGH);
                analogWrite(ENA_m1, tocdo);


      digitalWrite(IN_13, HIGH);
      digitalWrite(IN_14, LOW);
                analogWrite(ENB_m1, tocdo);


      digitalWrite(IN_21, LOW);
      digitalWrite(IN_22, HIGH);
                analogWrite(ENA_m2, tocdo);


      digitalWrite(IN_23, HIGH);
      digitalWrite(IN_24, LOW);
                analogWrite(ENB_m2, tocdo);


  }

void veotrai(){ //sang trái

      digitalWrite(IN_11, HIGH);
      digitalWrite(IN_12, LOW);
                analogWrite(ENA_m1, tocdo);


      digitalWrite(IN_13, LOW);
      digitalWrite(IN_14, HIGH);
                analogWrite(ENB_m1, tocdo);

       
      digitalWrite(IN_21, HIGH);
      digitalWrite(IN_22, LOW);
                analogWrite(ENA_m2, tocdo);


      digitalWrite(IN_23, LOW);
      digitalWrite(IN_24, HIGH);
                analogWrite(ENB_m2, tocdo);

       
  }

void toiveophai(){ //chạy tới vẹo phải
     
      digitalWrite(IN_11, HIGH);
      digitalWrite(IN_12, LOW);
      analogWrite(ENA_m1, tocdo/speed_Coeff);

      digitalWrite(IN_13, LOW);
      digitalWrite(IN_14, HIGH);
      analogWrite(ENB_m1, tocdo/speed_Coeff);


      digitalWrite(IN_21, LOW);
      digitalWrite(IN_22, HIGH);
      analogWrite(ENA_m2, tocdo);


      digitalWrite(IN_23, HIGH);
      digitalWrite(IN_24, LOW);
      analogWrite(ENB_m2, tocdo);

  }

void toiveotrai(){ //chạy tới vẹo trái
     
      digitalWrite(IN_11, HIGH);
      digitalWrite(IN_12, LOW);
      analogWrite(ENA_m1, tocdo);

      digitalWrite(IN_13, LOW);
      digitalWrite(IN_14, HIGH);
      analogWrite(ENB_m1, tocdo);


      digitalWrite(IN_21, LOW);
      digitalWrite(IN_22, HIGH);
      analogWrite(ENA_m2, tocdo/speed_Coeff);


      digitalWrite(IN_23, HIGH);
      digitalWrite(IN_24, LOW);
            analogWrite(ENB_m2, tocdo/speed_Coeff);

  }

void luisangphai(){ //chạy lui sang phải

      digitalWrite(IN_11, LOW);
      digitalWrite(IN_12, HIGH);
            analogWrite(ENA_m1, tocdo/speed_Coeff);


      digitalWrite(IN_13, HIGH);
      digitalWrite(IN_14, LOW);
            analogWrite(ENB_m1, tocdo/speed_Coeff);


      digitalWrite(IN_21, HIGH);
      digitalWrite(IN_22, LOW);
            analogWrite(ENA_m2, tocdo);


      digitalWrite(IN_23, LOW);
      digitalWrite(IN_24, HIGH);
            analogWrite(ENB_m2, tocdo);

  }

void luisangtrai(){ // chạy lui sang trái

      digitalWrite(IN_11, LOW);
      digitalWrite(IN_12, HIGH);
            analogWrite(ENA_m1, tocdo);


      digitalWrite(IN_13, HIGH);
      digitalWrite(IN_14, LOW);
      analogWrite(ENB_m1, tocdo);


      digitalWrite(IN_21, HIGH);
      digitalWrite(IN_22, LOW);
            analogWrite(ENA_m2, tocdo/speed_Coeff);


      digitalWrite(IN_23, LOW);
      digitalWrite(IN_24, HIGH);
             analogWrite(ENB_m2, tocdo/speed_Coeff);

  }

void dunglai(){  //dừng lại

      digitalWrite(IN_11, LOW);
      digitalWrite(IN_12, LOW);
                analogWrite(ENA_m1, tocdo);


      digitalWrite(IN_13, LOW);
      digitalWrite(IN_14, LOW);
                analogWrite(ENB_m1, tocdo);

 
      digitalWrite(IN_21, LOW);
      digitalWrite(IN_22, LOW);
                analogWrite(ENA_m2, tocdo);

     
      digitalWrite(IN_23, LOW);
      digitalWrite(IN_24, LOW);
                analogWrite(ENB_m2, tocdo);
 
  }
 
void loop(){
 
if (Serial.available() > 0) {
            command = Serial.read();
            dunglai();                               //Initialize with motors stopped.

if (lightFront) {digitalWrite(dtruoc_P, HIGH); digitalWrite(dtruoc_T, HIGH);}
if (!lightFront) {digitalWrite(dtruoc_P, LOW); digitalWrite(dtruoc_T, LOW);}
if (lightBack) {digitalWrite(dsau_P, HIGH); digitalWrite(dsau_T, HIGH);}
if (!lightBack) {digitalWrite(dsau_P, LOW); digitalWrite(dsau_T, LOW);}
//if (horn) {digitalWrite(ken, HIGH);} cồi xe
//if (!horn) {digitalWrite(ken, LOW);}

switch (command) {
case 'F':goAhead();break;
case 'B':goBack();break;
case 'L':veotrai();break;
case 'R':veophai();break;
case 'I':toiveophai();break;
case 'G':toiveotrai();break;
case 'J':luisangphai();break;
case 'H':luisangtrai();break;
case '0':tocdo = 100;break;// tốc độ tối thiểu 100 vòng trên phút
case '1':tocdo = 115;break;
case '2':tocdo = 130;break;
case '3':tocdo = 145;break;
case '4':tocdo = 160;break;
case '5':tocdo = 175;break;
case '6':tocdo = 190;break;
case '7':tocdo = 205;break;
case '8':tocdo = 220;break;
case '9':tocdo = 235;break;
case 'q':tocdo = 255;break;  // tốc độ tối đa 255 vòng trên phút
case 'W':lightFront = true;break;  // bật đèn trước
case 'w':lightFront = false;break; // tắt đèn trước
case 'U':lightBack = true;break; // bật đèn sau
case 'u':lightBack = false;break; // tắt đèn sau
case 'V':horn = true;break; // nhấn cồi
case 'v':horn = false;break; // tắt cồi

}
}



--
video demo (no light)



No comments:

Post a Comment