Arduino Ô tô

Một trong những dự án thú vị nhất dành cho người mới bắt đầu Arduino là chế tạo một chiếc xe robot Arduino. Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách sử dụng Arduino để xây dựng một chiếc xe robot và điều khiển nó bằng một điều khiển từ xa IR. Chúng ta cũng sẽ khám phá một bài hướng dẫn khác để học cách biến nó thành một chiếc xe được điều khiển bằng Bluetooth.

xe ô tô điều khiển từ xa bằng Arduino và ir

Phần cứng cần chuẩn bị

1×Arduino Uno R3
1×USB 2.0 cable type A/B (for USB-A PC)
1×USB 2.0 cable type C/B (for USB-C PC)
1×RC Car
1×L298N Motor Driver Module
1×IR Remote Controller Kit
1×CR2025 Battery (for IR Remote controller)
1×1.5V AA Battery (for Arduino and Car)
1×dây jumper
1×(Khuyến nghị) Screw Terminal Block Shield for Arduino Uno
1×(Khuyến nghị) Breadboard Shield for Arduino Uno
1×(Khuyến nghị) Enclosure for Arduino Uno
1×(Khuyến nghị) Prototyping Base Plate & Breadboard Kit for Arduino UNO

Or you can buy the following kits:

1×DIYables STEM V3 Starter Kit (Arduino included)
1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Giới thiệu về Xe Robot

Trong ngữ cảnh Arduino, xe robot thường được gọi là xe robot, xe RC, xe điều khiển từ xa, xe thông minh hoặc xe DIY. Nó có thể được điều khiển từ xa và không dây bằng bộ điều khiển IR hoặc bằng ứng dụng trên điện thoại qua Bluetooth/WiFi... Xe robot có thể rẽ trái hoặc rẽ phải và di chuyển về phía trước hoặc lùi lại.

Xe hai bánh dẫn động dành cho Arduino là một phương tiện robot nhỏ mà bạn có thể tự lắp ráp và điều khiển bằng một bo mạch Arduino. Nó thường gồm các thành phần sau:

  • Khung xe: Nền tảng hoặc khung gầm của xe, nơi tất cả các thành phần khác được lắp đặt.
  • Bánh xe: Hai bánh xe cung cấp khả năng di chuyển cho xe. Chúng được gắn với hai động cơ DC.
  • Động cơ: Hai động cơ DC được sử dụng để điều khiển hai bánh xe.
  • Bảng điều khiển động cơ: Bảng điều khiển động cơ là một thành phần thiết yếu giao tiếp giữa Arduino và các động cơ. Nó nhận tín hiệu từ Arduino và cung cấp nguồn và điều khiển cần thiết cho các động cơ.
  • Bảng Arduino: Não của xe. Nó đọc các đầu vào từ cảm biến và lệnh từ người dùng và điều khiển các động cơ cho phù hợp.
  • Nguồn cấp điện: Xe 2WD đòi hỏi một nguồn cấp điện, thường là pin và khay pin, để cấp nguồn cho động cơ và bảng Arduino.
  • Bộ nhận không dây: một module hồng ngoại, Bluetooth hoặc WiFi để giao tiếp không dây với điều khiển từ xa hoặc điện thoại thông minh.
  • Các thành phần tùy chọn: Tùy thuộc vào mức độ phức tạp của dự án, bạn có thể thêm nhiều thành phần tùy chọn như cảm biến (ví dụ: cảm biến siêu âm để tránh chướng ngại vật, cảm biến dò đường) và nhiều thành phần khác.

Trong hướng dẫn này, để đơn giản hóa mọi thứ, chúng ta sẽ sử dụng:

  • Bộ kit ô tô 2 bánh dẫn động (bao gồm khung xe, bánh xe, động cơ, giá đỡ pin)
  • Bộ điều khiển động cơ L298N
  • Bộ kit hồng ngoại (IR) (bao gồm điều khiển IR và bộ nhận IR)

Kiểm tra danh sách phần cứng ở đầu trang này.

Cách hoạt động

xe Arduino hai bánh dẫn động hoạt động như thế nào?
  • Arduino kết nối tới động cơ DC của xe robot thông qua module driver động cơ L298N.
  • Arduino kết nối với một bộ nhận IR.
  • Ắc quy cung cấp nguồn cho Arduino, động cơ DC, mạch driver và bộ nhận IR.
  • Người dùng nhấn các phím UP/DOWN/LEFT/RIGHT/OK trên điều khiển từ xa IR.
  • Arduino nhận các lệnh UP/DOWN/LEFT/RIGHT/OK qua bộ nhận IR.
  • Arduino điều khiển xe robot di chuyển về phía trước/đi lùi/đi sang trái/đi sang phải/dừng bằng cách điều khiển động cơ DC thông qua mạch driver.

Sơ đồ đấu dây

sơ đồ nối dây cho xe Arduino 2 bánh dẫn động

This image is created using Fritzing. Click to enlarge image

Thông thường, chúng ta cần hai nguồn cấp điện:

  • Một nguồn điện cho động cơ (gián tiếp thông qua mô-đun L298N).
  • Nguồn điện còn lại cho bo mạch Arduino, mô-đun L298N và bộ nhận IR.

Tuy nhiên, có một cách để sử dụng chỉ một nguồn điện cho mọi thứ. Bạn có thể sử dụng bốn pin 1.5V (tổng cộng 6V) cho mục đích này. Dưới đây là cách chúng ta có thể thực hiện điều ấy:

  • Nối các ắc quy vào mô-đun L298N theo sơ đồ ở trên.
  • Loại bỏ hai jumper nhỏ liên kết các chân ENA và ENB với 5V trên mô-đun L298N.
  • Đặt một jumper đặc biệt có nhãn 5VEN, được đánh dấu bằng vòng tròn màu vàng trên sơ đồ ở trên.
  • Nối chân 12V trên terminal vít của mô-đun L298N với chân Vin trên bo mạch Arduino. Cách này cấp nguồn cho Arduino trực tiếp từ ắc quy (tổng cộng 6V).

Xin lưu ý trong quá trình phát triển, khi bạn cần kết nối cáp USB vào Arduino để lập trình, bạn PHẢI ngắt nguồn cấp cho bo mạch Arduino từ nguồn pin bằng cách tháo một dây kết nối từ chân Vin. Bo mạch Arduino không được cấp nguồn đồng thời từ hai nguồn.

Mã Arduino

/* * Mã Arduino này được phát triển bởi newbiely.vn * Mã Arduino này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/arduino/arduino-car */ #include <DIYables_IRcontroller.h> // DIYables_IRcontroller library #define IR_RECEIVER_PIN 9 // The Arduino pin connected to IR receiver #define ENA_PIN 7 // The Arduino pin connected to the ENA pin L298N #define IN1_PIN 6 // The Arduino pin connected to the IN1 pin L298N #define IN2_PIN 5 // The Arduino pin connected to the IN2 pin L298N #define IN3_PIN 4 // The Arduino pin connected to the IN3 pin L298N #define IN4_PIN 3 // The Arduino pin connected to the IN4 pin L298N #define ENB_PIN 2 // The Arduino pin connected to the ENB pin L298N DIYables_IRcontroller_17 irController(IR_RECEIVER_PIN, 200); // debounce time is 200ms void setup() { Serial.begin(9600); irController.begin(); pinMode(ENA_PIN, OUTPUT); pinMode(IN1_PIN, OUTPUT); pinMode(IN2_PIN, OUTPUT); pinMode(IN3_PIN, OUTPUT); pinMode(IN4_PIN, OUTPUT); pinMode(ENB_PIN, OUTPUT); digitalWrite(ENA_PIN, HIGH); // set full speed digitalWrite(ENB_PIN, HIGH); // set full speed } void loop() { Key17 key = irController.getKey(); if (key != Key17::NONE) { switch (key) { case Key17::KEY_UP: Serial.println("MOVING FORWARD"); CAR_moveForward(); break; case Key17::KEY_DOWN: Serial.println("MOVING BACKWARD"); CAR_moveBackward(); break; case Key17::KEY_LEFT: Serial.println("TURNING LEFT"); CAR_turnLeft(); break; case Key17::KEY_RIGHT: Serial.println("TURNING RIGHT"); CAR_turnRight(); break; case Key17::KEY_OK: Serial.println("STOP"); CAR_stop(); break; default: Serial.println("WARNING: unused key:"); break; } } } vvoid CAR_moveForward() { digitalWrite(IN1_PIN, HIGH); digitalWrite(IN2_PIN, LOW); digitalWrite(IN3_PIN, HIGH); digitalWrite(IN4_PIN, LOW); } void CAR_moveBackward() { digitalWrite(IN1_PIN, LOW); digitalWrite(IN2_PIN, HIGH); digitalWrite(IN3_PIN, LOW); digitalWrite(IN4_PIN, HIGH); } void CAR_turnLeft() { digitalWrite(IN1_PIN, HIGH); digitalWrite(IN2_PIN, LOW); digitalWrite(IN3_PIN, LOW); digitalWrite(IN4_PIN, LOW); } void CAR_turnRight() { digitalWrite(IN1_PIN, LOW); digitalWrite(IN2_PIN, LOW); digitalWrite(IN3_PIN, HIGH); digitalWrite(IN4_PIN, LOW); } void CAR_stop() { digitalWrite(IN1_PIN, LOW); digitalWrite(IN2_PIN, LOW); digitalWrite(IN3_PIN, LOW); digitalWrite(IN4_PIN, LOW); }

Hướng dẫn từng bước

  • Cài đặt thư viện DIYables_IRcontroller trên Arduino IDE bằng cách làm theo hướng dẫn này.
  • Thực hiện wiring theo sơ đồ ở phía trên.
  • Ngắt kết nối dây từ pin Vin trên Arduino vì chúng ta sẽ cấp nguồn cho Arduino bằng cáp USB khi tải mã.
  • Lật ngược xe để các bánh xe ở phía trên.
  • Kết nối Arduino với máy tính bằng cáp USB.
  • Sao chép mã được cung cấp và mở nó trong Arduino IDE.
  • Nhấp vào nút Upload trong Arduino IDE để tải mã lên Arduino.
  • Sử dụng điều khiển từ xa IR để xe tiến về phía trước, lùi, trái, phải hoặc dừng.
  • Kiểm tra xem các bánh xe có di chuyển đúng theo lệnh của bạn hay không.
  • Nếu các bánh xe di chuyển sai hướng, hãy hoán đổi các dây của động cơ DC trên module L298N.
  • Bạn cũng có thể xem kết quả trên Serial Monitor trong Arduino IDE.
COM6
Send
MOVING FORWARD MOVING BACKWARD TURNING LEFT TURNING RIGHT STOP
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Nếu mọi thứ hoạt động tốt, ngắt cáp USB khỏi Arduino, và kết nối lại dây vào chân Vin để cấp nguồn cho Arduino từ pin Vin.
  • Đặt xe quay lại vị trí bình thường với bánh xe chạm đất.
  • Chúc bạn vui vẻ khi điều khiển chiếc xe!

Giải thích mã nguồn

Bạn có thể tìm lời giải thích trong các dòng chú thích của mã Arduino ở trên.

Bạn có thể tìm hiểu thêm về mã nguồn bằng cách tham khảo các bài hướng dẫn sau:

Bạn có thể mở rộng dự án này bằng cách:

  • Thêm cảm biến tránh va chạm để xe dừng ngay lập tức khi phát hiện chướng ngại vật.
  • Thêm chức năng điều khiển tốc độ cho xe (xem hướng dẫn Arduino - Động cơ một chiều). Đoạn mã được cung cấp điều khiển xe với tốc độ tối đa.

Video Tutorial

Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.

Bài hướng dẫn liên quan