Hướng dẫn lắp ráp Khung Xe Robot Chasiss Black Cat Mecanum (P3)

0
603

Chào các bạn, cuối cùng tới phần cuối rồi. Trong bài này mình sẽ giải thích về code, và app điều khiển. Bắt đầu nào …

Giới thiệu App Android

Link down: https://play.google.com/store/apps/details?id=braulio.calle.bluetoothRCcontroller

Chắc nhiều bạn cũng biết về app này rồi nhỉ :))
Tuy nhiên điểm hạn chế là nó chỉ dùng được với các Bluetooth 2.0 như HC-05 và HC-06.

Cách app điều khiển như thế nào?

Ok, giờ mình vào icon “Option Menu” chọn “Settings” nhìn mục “Commands/characters sent to the car”:
Đây là các kí tự khi người dùng thao tác các nút, app sẽ gửi về cho module Bluetooth nó đang kết nối các kí tự đó. Mình chỉ cần viết code xử lý tương ứng các kí tự đó thôi.

Về Code

Link code: https://github.com/TrungKuro/Car_Mecanum_Bluetooth

Mình sẽ nói sơ quá trình hoạt động của code, trước tiên từ:

  • 1. Phần đọc data gửi về (trong hàm loop):
void loop()
{
  if(mySerial.available() > 0) // Nếu có dữ liệu gửi về thì đọc
  {
    blue = mySerial.read();
    processed();               // Hàm xử lý các tín hiệu
  }
}

→ Đoạn này có chức năng khi có kí tự gửi về sẽ đưa vào hàm processed.

  • 2. Phần xử lý data đó (trong hàm processed):
void processed()
{
  switch(blue)
  {
     case 'S': stop_car(); break;         // Dừng xe (ko làm gì cả)

     case 'F': go_forward(); break;       // Xe đi về phía trước (chiều dọc)
     case 'B': back_forward(); break;     // Xe đi lùi về phía sau (chiều dọc)
     case 'L': go_left(); break;          // Xe đi sang trái (chiều ngang)
     case 'R': go_right(); break;         // Xe đi sang phải (chiều ngang)

     case 'G': if(warning) turn_CCW();    // Xe quay ngược chiều đồng hồ (CCW)
               else go_left_forward();    // Xe đi thẳng về phía trái
               break;
     case 'I': if(warning) turn_CW();     // Xe quay chiều đồng hồ (CW)
               else go_right_forward();   // Xe đi thẳng về phía phải
               break;
     case 'H': if(warning) turn_CW();     // Xe quay chiều đồng hồ (CW)
               else back_left_forward();  // Xe đi lùi về phía trái
               break;
     case 'J': if(warning) turn_CCW();    // Xe quay ngược chiều đồng hồ (CCW)
               else back_right_forward(); // Xe đi lùi về phía phải
               break;

     case 'X': warning = true; break;  // Mode "Normal"
     case 'x': warning = false; break; // Mode "Mecanum"
  }
}

→ Dựa vào kí tự nhận được khi ta điều khiển, nó sẽ chọn các hàm cho chuyển động tương ứng.

  • 3. Truy cập hàm tương ứng:
    Vd, để chuyển động thẳng về phía trước, nó sẽ vào hàm go_forward, làm cả 4 bánh (FR, FL, BR, BL) quay chiều CW.
void go_forward()
{
  motor_FR_clockwise();
  motor_FL_clockwise();
  motor_BR_clockwise();
  motor_BL_clockwise();
}

  • 4. 3 trạng thái cơ bản của motor:
    Ở bài trước mình có nói, một motor chỉ có 3 trạng thái là quay chiều CW hoặc chiều CCW, và trạng thái Dừng.
    Cho nên ở cả 4 motor (FR, FL, BR, BL) đều cần có các hàm xử lý mỗi trạng thái đó cho chúng. Theo Vd trên, nó sẽ truy cập vào các hàm sau.
void motor_FR_counter_clockwise()
{
  digitalWrite(MOTOR_FR_IN2, HIGH);
}

void motor_FL_counter_clockwise()
{
  digitalWrite(MOTOR_FL_IN4, HIGH);
}

void motor_BR_counter_clockwise()
{
  digitalWrite(MOTOR_BR_IN2, HIGH);
}

void motor_BL_counter_clockwise()
{
  digitalWrite(MOTOR_BL_IN4, HIGH);
}

→ Các hàm trên sẽ xuất tín hiệu điều khiển đến Driver motor. Việc còn lại sẽ do Driver điều khiển. Cho nên để điều khiển xe đi đúng như ý mình, các bước đấu dây ở phần 2 rất quan trọng.

Clip mình chạy demo:

Hết rồi

Ok, phần này là bài cuối hướng dẫn lắp ráp khung xe Mecanum rồi. Hy vọng bài viết này giúp ích được nhiều cho các bạn.

Chúc các bạn làm xe điều khiển thành công và phát triển được nhiều project sáng tạo :))

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments