You are on page 1of 7

HƯỚNG DẪN LẮP XE DÒ LINE ARDUINO UNO

1. Chuẩn bị phần cứng:


- Xe 4 bánh: Khung xe 4 bánh x1, động cơ kèm bánh x2, module L298, arduino UNO,
testboard, pin 18650 x2, đế pin 18650, dây đực-đực , dây đực-cái .
- Phần mềm lập trình là Arduino IDE, có thể tải theo link: https://www.arduino.cc/en/software
- Cài driver CH340:
https://sparks.gogo.co.nz/ch340.html
- App trên điện thoại Bluetooth RC Car: https://play.google.com/store/apps/details?
id=braulio.calle.bluetoothRCcontroller&hl=fr&gl=US
2. Sơ đồ đấu dây:

-
- Thứ tự chân đấu nối arduino vs L298: 5-ENA, 2-IN1, 3-IN2, 4-IN3, 7-IN4, 6-ENB (gỡ bỏ
jump ở ENA ENB trước khi đấu).
- Thứ tự chân đấu nối arduino vs cảm biến dò line: các chân nguồn Vcc, GND đấu chung cấp
nguồn 5V, chân A0 của cảm biến trái nối A3 arduino, tương tự cảm biến giữa nối A4 và phải
nối A5.

3. Nạp code
Vào Device Manager, xem cổng com của arduino là cổng nào. Mở file code ra, chọn đúng cổng
com sau đó Upload. Trong quá trình Upload, chờ cho đến khi báo Done uploading.
4. Kết nối với điện thoại
Bật nguồn xe lên. Sau đó bật bluetooth trên điện thoại lên, vào app đã cài đặt. Vào Option Menu,
chọn Connect to car, chọn đúng tên xe (mặc định HC-05). Nếu là lần đầu kết nối thì nó sẽ báo
cho phép kết nối bluetooth với xe, còn những lần sau sẽ không cần. Trạng thái hiển thị Connected
được thiết lập thông báo quá trình hoàn tất.
5. Code mẫu
#define lsen A3
#define fsen A4
#define rsen A2 // hoac A5
#define pinvol A0
#define enaa 5
#define enab 6
#define in1 2
#define in2 3
#define in3 4
#define in4 7
int fsen_value, lsen_value, rsen_value, pinvol_value;
int fx, lx, rx;
byte dir1 = 1;
byte dir2 = 0;
int sen_value_hi=1, sen_value_lo=0;
int speed_f, speed_l, speed_r;
int pin_vol;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(enaa, OUTPUT);
pinMode(enab, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
pinMode(lsen, INPUT);
pinMode(fsen, INPUT);
pinMode(rsen, INPUT);
pinMode(pinvol, INPUT);

void loop() {
// put your main code here, to run repeatedly:
fsen_value=digitalRead(fsen);
lsen_value=digitalRead(lsen);
rsen_value=digitalRead(rsen);
pinvol_value=analogRead(pinvol);
//Serial.print(pinvol_value); Serial.println(" ");
speed_f=100+pinvol_value/85; // 3 pin 70, 2 pin 100
speed_l=80+pinvol_value/85; // 3 pin 55,2 pin 80
/*
Serial.print(lsen_value); Serial.print(" ");
Serial.print(fsen_value); Serial.print(" ");
Serial.print(rsen_value); Serial.println(" ");*/
if ((lsen_value==sen_value_hi&& fsen_value==sen_value_lo && rsen_value==sen_value_lo ) ||
(lsen_value==sen_value_hi && fsen_value==sen_value_hi && rsen_value==sen_value_lo ))
{
analogWrite(enaa, speed_l);
analogWrite(enab, speed_f);
right();
// Serial.println(" L ");
lx=1;

if ((rsen_value==sen_value_hi&& fsen_value==sen_value_lo && lsen_value==sen_value_lo ) ||


(rsen_value==sen_value_hi && fsen_value==sen_value_hi && lsen_value==sen_value_lo ))
{
analogWrite(enab, speed_l);
analogWrite(enaa, speed_f);
left();
// Serial.println(" R ");
//rx=1;
lx=2;
}

if ((rsen_value==sen_value_hi && fsen_value==sen_value_hi && lsen_value==sen_value_hi ) ||


(rsen_value==sen_value_lo && fsen_value==sen_value_hi && lsen_value==sen_value_lo ))

{
analogWrite(enaa, speed_f);
analogWrite(enab, speed_f);
backward();
// Serial.println(" F ");
lx=0;
}
if (lx==2 && (rsen_value==sen_value_lo && fsen_value==sen_value_lo && lsen_value==sen_value_lo
))
{
analogWrite(enab, speed_l);
analogWrite(enaa, speed_f);
left();
//Serial.println(" LB ");
// lx=1;

}
if (lx==1 && (rsen_value==sen_value_lo && fsen_value==sen_value_lo &&
lsen_value==sen_value_lo ))
{
analogWrite(enaa, speed_l);
analogWrite(enab, speed_f);
right();
//Serial.println(" RB ");
// lx=1;

}
/*
if (lx==0 && (rsen_value==sen_value_lo && fsen_value==sen_value_lo &&
lsen_value==sen_value_lo ))
{
analogWrite(enaa, 0);
analogWrite(enab, 0);
right();
//Serial.println(" RB ");
// lx=1;

}
/*
if (rsen_value==sen_value_lo && fsen_value==sen_value_lo && lsen_value==sen_value_lo )

{
analogWrite(enaa, 0);
analogWrite(enab, 0);
// Stop();
// Serial.println(" F ");
// lx=0;
}
*/
//delay(10);
Serial.println(lx);
}

void forward()
{
digitalWrite(in1, dir2);
digitalWrite(in2, dir1);
digitalWrite(in3, dir2);
digitalWrite(in4, dir1);

}
void backward()
{
digitalWrite(in1, dir1);
digitalWrite(in2, dir2);
digitalWrite(in3, dir1);
digitalWrite(in4, dir2);
}
void left()
{
digitalWrite(in1, dir1);
digitalWrite(in2, dir1);
digitalWrite(in3, dir1);
digitalWrite(in4, dir2);
}
void right()
{
digitalWrite(in1, dir1);
digitalWrite(in2, dir2);
digitalWrite(in3, dir1);
digitalWrite(in4, dir1);
}
void Stop()
{
digitalWrite(in1, dir1);
digitalWrite(in2, dir1);
digitalWrite(in3, dir1);
digitalWrite(in4, dir1);
}

You might also like