P4 – Xe điều khiển bằng Bluetooth

Những chiếc xe đồ chơi điều khiển từ xa hiện nay có giá khá rẻ, chỉ vài trăm nghìn đồng. Sau một thời gian chơi, mạch có thể bị hỏng do va đập, ẩm mạch khiến xe không thể điều khiển. Tận dụng động cơ và khung xe có sẵn, ta sẽ gắn mạch Bluetooth và thực hiện điều khiển xe qua điện thoại di động.

Phần 1: Phần cứng

Đầu tiên tháo xe ra ta sẽ thấy mạch điều khiển và dây nối đến motor trước (để định hướng) và motor sau để chạy.

Chú ý chiều quay động cơ tương ứng với màu dây để sau này điều khiển đúng hướng. Phía sau xe là công tắc nguồn.

Với những xe nhỏ, dùng ít pin như xe trong hình ta phải gắn mạch nâng áp để đủ nguồn nuôi cho bo mạch Arduino. Mạch Arduino cần nguồn chuẩn 5V tại lối vào USB hoặc 7 – 10V tại chân VIN.

Nếu xe to, nhiều pin thì không cần mạch nâng áp.

Vì xe nhỏ nên ta sử dụng mạch động cơ TB6612FNG cho dòng tối đa mỗi động cơ 1A.

Đối với xe to, động cơ cần trên 1A thì có thể sử dụng mạch L298N. Với những loại xe đồ chơi hiện nay, động cơ ít khi vượt quá 1A.

Tiếp đến là mạch kết nối Bluetooth, sử dụng mạch HC-05 hay HC-06 đều được.

Chú ý rằng mạch Bluetooth có thể sử dụng điện áp từ 3,6V đến 6V nhưng chân giao tiếp thì chỉ nhận 3,3V nên khi gắn vào mạch ngoài cần dịch mức điện áp. Kỹ thuật đơn giản nhất là cầu điện trở phân áp cho chân Rx.

Sau khi chuẩn bị xong linh kiện, ta sử dụng sơ đồ nối dây sau cho xe nhỏ điện áp thấp. Trong trường hợp xe dùng nhiều pin, tổng điện áp lớn hơn 7V thì bỏ qua mạch nâng áp (DC converter) và nối dây vào chân VIN của bo Arduino.

Chú ý trong mạch không vẽ công tắc nguồn nhưng ta nên tận dụng công tắc của xe để đảm bảo an toàn cho mạch khi không sử dụng.

Đối với xe to, pin nhiều và động cơ công suất lớn thì dùng L298N

Kết nối theo sơ đồ ta có

Bổ sung chức năng điều khiển đèn bằng cách gắn thêm cặp LED phía trước

Sau khi hoàn tất ta gắn lại vỏ xe

Phần 2: Chương trình trên điện thoại di động

Mọi người có thể tải chương trình sau về máy tính, giải nén và tiến hành cài đặt lên điện thoại Bluecar

(Vì lý do an ninh nên không thể gửi trực tiếp tập tin .apk)

Một số điện thoại không cho phép cài phần mềm ngoài, ta chỉ cần gỡ bỏ hạn chế này là được. Vào phần Cài đặt –> Đánh dấu mục cho phép cài chương trình ngoài.

Nếu không thích phần mềm có sẵn, ta có thể tải gói  Bluecaraia  về máy và sử dụng phần mềm MIT App Inventor để sửa đổi hoặc viết chương trình mới.

Phần mềm chạy trên web và không cần tải về máy. Khi đăng ký, chỉ cần sử dụng một địa chỉ email của google (@gmail) .

Trình duyệt Internet Explorer (IE) không hỗ trợ, ta nên sử dụng Firefox hoặc Chrome.

Sau khi giải nén Bluecaraia  , vào Project –> Import project (.aia)

Giao diện chương trình thân thiện, dễ sử dụng

Lập trình bằng cách gắp thả cụm chức năng

Thử nghiệm:

Nếu không có sẵn điện thoại, ta sử dụng phần mô phỏng có sẵn

  • Cài chương trình MIT_Appinventor_Tools
  • Sau cài đặt ta chạy phần mềm mô phỏng  aiStarter
  • Tại chương trình MIT App Inventor –> Connect –> Emulator
  • Chờ vài giây để kiểm tra chương trình
  • Tuy nhiên trong chương trình mô phỏng ta không kiểm tra được Bluetooth

Để kiểm tra chức năng Bluetooth, cần sử dụng điện thoại

  • MIT App Inventor –> Connect –> AI Companion
  • Trên điện thoại cài MIT AI2 Companion App
  • Máy tính và điện thoại phải cùng mạng wifi
  • Nạp mã hoặc quét hình

  • Chờ máy tính gửi chương trình sang điện thoại xong là có thể kiểm tra tất cả tính năng

Sau khi hoàn tất thử nghiệm, xuất chương trình ra và nạp vào điện thoại

MIT App –> Build –> App (.apk)

Phần 3: Chương trình cho Arduino

// Bluetooth Car Controller
// Xe 2 motor trước sau, motor trước lái, motor sau chạy

#define PWMA 10
#define PWMB 9
#define STBY 8
#define AIN1 2 // Dây đỏ + thuận chiều quay moto
#define AIN2 3
#define BIN1 4 // Đỏ + thuận chiều quay moto
#define BIN2 5
#define Light 12 // Bật thêm đèn
#define Smoke 13 // Kích nhả khói hoặc...

int Light_on = 0;

int SpeedF = 220; // Tốc độ moto lái
int SpeedB = 250; // Tốc độ moto chạy

char c;

void setup() 
{
 pinMode(PWMA, OUTPUT);
 pinMode(PWMB, OUTPUT);
 pinMode(AIN1, OUTPUT);
 pinMode(AIN2, OUTPUT);
 pinMode(BIN1, OUTPUT);
 pinMode(BIN2, OUTPUT);
 pinMode(STBY, OUTPUT);
 pinMode(Light, OUTPUT);
 pinMode(Smoke, OUTPUT);
 Serial.begin(9600); // Bluetooth module comm
}
void loop() 
{
 c = 0;
 digitalWrite(STBY, HIGH);
 //
 if(Serial.available() >= 1)
 {
 c = Serial.read();
 //Serial.print(c);
 }
 //
 if (c == '!')
 {
 if (Light_on == 0)
 {
 // Bật
 Light_on = 1;
 digitalWrite(Light, HIGH);
 //Serial.print("Light on");
 }
 else
 {
 // Nhấn lần nữa sẽ tắt
 Light_on = 0;
 digitalWrite(Light, LOW);
 //Serial.print("Light off");
 }
 }
 //
 if (c == 'S')
 {
 digitalWrite(Smoke, HIGH);
 //Serial.print("Smoke");
 delay(100);
 digitalWrite(Smoke, LOW);
 }
 //
 if (c == 'F')
 {
 //Serial.print("Forward");
 // Tiến trước
 digitalWrite(BIN1, HIGH);
 digitalWrite(BIN2, LOW);
 }
 //
 if (c == 'B')
 {
 //Serial.print("Backward");
 // Lùi sau
 digitalWrite(BIN1, LOW);
 digitalWrite(BIN2, HIGH);
 }
 //
 if (c == 'L')
 {
 //Serial.print("Left");
 // Quay trái
 digitalWrite(AIN1, LOW);
 digitalWrite(AIN2, HIGH);
 }
 //
 if (c == 'R')
 {
 //Serial.print("Right");
 // Quay phải
 digitalWrite(AIN1, HIGH);
 digitalWrite(AIN2, LOW);
 }
 //
 if (c == 'Q')
 {
 // Rẽ trái
 digitalWrite(AIN1, LOW);
 digitalWrite(AIN2, HIGH);
 //
 digitalWrite(BIN1, HIGH);
 digitalWrite(BIN2, LOW);
 }
 //
 if (c == 'E')
 {
 // Rẽ phải
 digitalWrite(AIN1, HIGH);
 digitalWrite(AIN2, LOW);
 //
 digitalWrite(BIN1, HIGH);
 digitalWrite(BIN2, LOW);
 }
 //
 if (c == 'Z')
 {
 // Lùi trái
 digitalWrite(AIN1, LOW);
 digitalWrite(AIN2, HIGH);
 //
 digitalWrite(BIN1, LOW);
 digitalWrite(BIN2, HIGH);
 }
 //
 if (c == 'V')
 {
 // Lùi phải
 digitalWrite(AIN1, HIGH);
 digitalWrite(AIN2, LOW);
 //
 digitalWrite(BIN1, LOW);
 digitalWrite(BIN2, HIGH);
 }
 //
 if (c == 'P')
 {
 // Stop
 digitalWrite(AIN1, LOW);
 digitalWrite(AIN2, LOW);
 digitalWrite(BIN1, LOW);
 digitalWrite(BIN2, LOW);
 }
 //
 analogWrite(PWMA, SpeedF); // Xung tốc độ cho moto trước
 analogWrite(PWMB, SpeedB); // Moto sau
}

Hãy subscribe (Đăng ký) theo dõi kênh youtube sau để nhận cập nhật dự án mới:

One Reply to “P4 – Xe điều khiển bằng Bluetooth”

Leave a Reply

Your email address will not be published. Required fields are marked *