Combo xe 3 bánh bluetooth

17/03/2021 Đăng bởi: Hoàng Thiên

Combo xe 3 bánh bluetooth  thường được sử dụng trong dạy học STEM, thi đấu , giải trí. Thời gian sử dụng lên tới 3h. Ngoài ra có thể kết hợp với các module khác như: module dò line, module siêu âm....

Các linh kiện trong combo

  • Khung xe 3 bánh
  • Arduino UNO R3
  • Mạch điều khiển động cơ L298N
  • Module thu phát bluetooth HC-05
  • Hôp pin 18650 2 cell 
  • Pin cell 18650
  • Jack DC đực
  • Dây cắm Bread Board Đực-Đực
  • Dây cắm Bread Board Đực-Cái

Thông số kĩ thuật:

  • Dòng tiêu thụ trung bình: 0.5A
  • Hoạt động tối đa 3h với điệu kiện Pin được sạc đầy
  •  

Sơ đồ đấu nối các linh kiện trong combo với nhau

 

 

 

  • Nguồn của L298N và Arduino được lấy từ hộp 2 pin 18650 8.4V
  • Hai động cơ và Module Bluetooth HC-05 lấy từ L298N
  • Chân ENA nối với chân D6 của Arduino
  • Chân ENB nối với chân D5 của Arduino
  • Chân IN1 nối với chân D13 của Arduino
  • Chân IN2 nối với chân D12 của Arduino
  • Chân IN3 nối với chân D11 của Arduino
  • Chân IN4 nối với chân D10 của Arduino

App điều khiển

Các bạn vào CH Play hoặc App Store nhập Car Bluetooth RC tìm và tải về.

Code test

 

 

#include <SoftwareSerial.h>

int bluetoothTx = 2; // định nghia chân 2 là chân truyền tín hiệu

int bluetoothRx = 3;// định nghia chân 3 là chân nhận tín hiệu

SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);  

//định nghia chân motor trái

#define enA 6

#define in1 13

#define in2 12

//định nghia chân  motor phai

#define enB 5

#define in3 11

#define in4 10

char blue;// là vùng nhớ để so sánh kí tự trả về từ app.

int spd; // giá trị bam xung( tay ga).

void setup()

{

   bluetooth.begin (115200);

   bluetooth.print ("$$$");

   delay (100);

   bluetooth.println ("U, 9600, N");

   bluetooth.begin (9600) ;

   Serial.begin (9600);

   // dịnh nghĩa chân tín hiệu in&out

   pinMode (in1, OUTPUT);

   pinMode (in2, OUTPUT);

   pinMode (in3, OUTPUT);

   pinMode (in4, OUTPUT);

}

// dieu khien motor trai

void motor_left(INT spd, byte dir)

{

   IF (dir == 0) // motor trái quay tới

   {

      digitalWrite (in2, LOW);

      digitalWrite (in1, HIGH);

   }

   else IF (dir == 1) // motor trái quay lùi

   {

      digitalWrite (in2, HIGH);

      digitalWrite (in1, LOW);

   }

   else IF (dir == 2)// motor trái đứng yên

   {

      digitalWrite (in1, LOW);

      digitalWrite (in2, LOW) ;

   }

   analogWrite (enA, spd); // bam xung cho motor trái

}

// dieu khien motor phai

void motor_right(INT spd, byte dir)

{

   IF (dir == 0) // motor phải quay tới

   {

      digitalWrite (in4, LOW);

      digitalWrite (in3, HIGH);

   }

   else IF (dir == 1)//motor phải quay lùi

   {

      digitalWrite (in4, HIGH);

      digitalWrite (in3, LOW);

   }

   else IF (dir == 2) //motor phải dừng lùi

   {

      digitalWrite (in3, LOW);

      digitalWrite (in4, LOW);

   }

   analogWrite (enB, spd);

}

void forw () // chay

{

   Serial.println ("motor di thang") ;

   motor_right (spd, 0);

   motor_left (spd, 0);

}

void back () // chay lui

{

   Serial.println ("motor di lui") ;

   motor_right (spd, 1);

   motor_left (spd, 1);

}

void right () // quay trai

{

   Serial.println ("motor cua trai") ;

   motor_right (spd, 0);

   motor_left (spd, 2);

}

void left () // quai phai

{

   Serial.println ("motor cua phai") ;

   motor_left (spd, 0);

   motor_right (spd, 2);

}

void leftforw () // quai phai cham

{

   Serial.println ("motor cua phai nhanh") ;

   motor_left (spd - 20, 0);

   motor_right (spd, 0);

}

void rightforw () // quai phai nhanh

{

   Serial.println ("motor cua trai nhanh ") ;

   motor_left (spd, 0);

   motor_right (spd - 20, 0);

}

void rightback () // quai phai nhanh

{

   Serial.println ("motor cua trai nhanh ") ;

   motor_left (spd, 1);

   motor_right (spd - 20, 1);

}

void leftback () // quai phai nhanh

{

   Serial.println ("motor cua trai nhanh ") ;

   motor_left (spd - 20, 1);

   motor_right (spd, 1);

}

void tack()

{

   motor_left (spd, 2);

   motor_right (spd, 2);

}

 VOID robot_android ()

 {

    IF (bluetooth.available ())

    {

       blue = bluetooth.read ();

       Serial.println ("gia tri cua blue la ");

       Serial.println (blue);

    }

 

    SWITCH (blue)

    {

       CASE ('0') :

       spd = 70;

       CASE ('1') :

       spd = 80;

       BREAK;

       CASE ('2') :

       spd = 100;

       BREAK;

       CASE ('3') :

       spd = 110;

       BREAK;

       CASE ('4') :

       spd = 127;

       BREAK;

       CASE ('5') :

       spd = 140;

       BREAK;

       CASE ('6') :

       spd = 160;

       BREAK;

       CASE ('7') :

       spd = 200;

       BREAK;

       CASE ('8') :

       spd = 230;

       BREAK;

       CASE ('9') :

       spd = 255;

       BREAK;

      

       CASE ('S') :

       tack () ;

       BREAK;

       CASE ('F') :

       forw () ;

       BREAK;

       CASE ('B') :

       back () ;

       BREAK;

       CASE ('L') :

       left () ;

       BREAK;

       CASE ('R') :

       right () ;

       BREAK;

       CASE ('H') :

       leftback () ;

       BREAK;

       CASE ('J') :

       rightback () ;

       BREAK;

       CASE ('I') :

       rightforw () ;

       BREAK;

       CASE ('G') :

       leftforw () ;

       BREAK;

    }

 }

 VOID loop ()

 {

    robot_android () ;

    // put your main code here, to run repeatedly:

 }

 

 

 

Viết bình luận của bạn: