-
-
-
Tổng tiền thanh toán:
-
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:
}