Combo xe 3 bánh bluetooth Arduino
Thương hiệu : Khác
600,000đ
Combo xe 3 bánh điều khiển bluetooth, thường được sử dụng trong dạy học STEM, thi đấu, giải trí, mạch khả năng hoạt động lên tới 3h, khi không còn sử dụng vào mục đích chính người dùng có thể thay đổi sang combo khác như: kết hợp với module dò line làm xe dò line, dò line tránh vật cản, kết hợp với cảm biến siêu âm làm cảm biến tránh vật cản,..
Danh sách sản phẩm sử dụng trong combo
- Khung xe robot 3 bánh
- Arduino UNO R3 SMD chip dán (kèm cáp)
- Mạch Điều Khiển Động Cơ DC L298N
- Module thu phát bluetooth HC-05
- Hộp Pin 18650 2 cell có nắp và công tắc
- Pin cell 18650 2000mAh x2
- Jack DC đực có dây
- Dây Cắm Test Board Đực Đực 20cm ( 10 sợi )
- Dây Cắm Test Board Đực Cái 20cm ( 20 sợi )
Thông số kỹ thuật của Combo tự làm xe 3 bánh bluetooth Arduino
- Dòng tiêu thụ trung bình: 0.5A
- Dòng chờ: 0.06A
- Số giờ hoạt động: liên tục 3h trong điều kiện pin được sạc đầy
- Trọng lượng: 500g
Lưu ý: combo này là tự ráp, quý khách chỉ cần đấu nối và nạp code theo đúng sơ đồ là chạy, quý khách có thể chỉnh sửa lại code để tối ưu hơn
Sơ đồ đấu nối của Combo tự làm xe 3 bánh bluetooth Arduino
Đấu nguồn
- L298N & Arduino lấy nguồn 8.4v ở hộp 2 pin 18650
- Hai động cơ lấy nguồn ở L298N
- HC-05 lấy nguồn 5v ở L298N
Đấu tín hiệu:
- Chân ENA đấu chân D6 của Arduino
- Chân ENB đấu chân D5 của Arduino
- Chân IN1 đấu chân D13 của Arduino
- Chân IN2 đấu chân D12 của Arduino
- Chân IN3 đấu chân D11 của Arduino
- Chân IN4 đấu chân D10 của Arduino
App hỗ trợ
Car Bluetooth RC
Một số lỗi khi test:
Hỏi: Đã kết nối bluetooth trên app, đèn rx trên arduino có nháy liên tục nhưng điều khiển không chạy?
Tl: Thử điều chỉnh lại tốc độ trên app
Hỏi: Nếu bấm chạy tới mà xe chạy lùi?
Tl: Ta đảo cực của 2 động cơ lại
Hỏi: Nếu bấm qua trái mà xe chạy qua phải hoặc bấm qua phải mà xe chạy qua trái ?
Tl: Ta đổi bên của động cơ
Video demo:
Code test:
#include <SoftwareSerial.h>
int bluetoothTx = 2; // định nghĩa chân 2 là chân truyền tín hiệu
int bluetoothRx = 3;// định nghĩa chân 3 là chân nhận tín hiệu
SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);
//định nghĩa chân motor trái
#define enA 6
#define in1 13
#define in2 12
//định nghĩa 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ị băm xung( tay ga).
void setup() {
bluetooth.begin(115200);
bluetooth.print("$$$");
delay(100);
bluetooth.println("U,9600,N");
bluetooth.begin(9600);
Serial.begin(9600);
// đị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 );// băm 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:
}