ESP8266 Xe ô tô

Một trong những điều thú vị nhất để thử khi bạn mới bắt đầu với ESP8266 là làm một chiếc xe robot. Trong hướng dẫn này, chúng ta sẽ học cách sử dụng ESP8266 để xây dựng một chiếc xe robot và điều khiển nó bằng điều khiển từ xa hồng ngoại (IR). Chúng ta sẽ học cách làm một chiếc xe robot Bluetooth trong một bài hướng dẫn khác.

IR

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

1×ESP8266 NodeMCU ESP-12E
1×Recommended: ESP8266 NodeMCU ESP-12E (Uno-form)
1×USB Cable Type-A to Type-C (for USB-A PC)
1×USB Cable Type-C to Type-C (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 ESP8266 and Car)
1×dây jumper
1×breadboard
1×(Khuyến nghị) Screw Terminal Expansion Board for ESP8266
1×(Khuyến nghị) Power Splitter for ESP8266 Type-C

Or you can buy the following kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Về Xe rô-bốt

Trong ngữ cảnh ESP8266, xe robot thường được gọi bằng nhiều tên khác nhau như xe robot, RC car, 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 mà không cần dây. Bạn có thể sử dụng một điều khiển từ xa đặc biệt dùng ánh sáng hồng ngoại hoặc một ứng dụng trên điện thoại thông qua Bluetooth hoặc WiFi. Xe robot có thể đi sang trái hoặc sang phải và cũng có thể tiến về phía trước hoặc lùi lại.

Xe 2 bánh dẫn động (Two-Wheel Drive) dành cho ESP8266 là một phương tiện robot nhỏ mà bạn có thể tự chế tạo và điều khiển bằng bo mạch ESP8266. Nó thường bao gồm các thành phần sau:

  • Khung xe: Nền tảng hay khung gầm của xe, nơi mọi thành phần khác được gắn.
  • 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ộ đ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 kết nối giữa ESP8266 và động cơ. Nó nhận tín hiệu từ ESP8266 và cung cấp nguồn và điều khiển cần thiết cho động cơ.
  • Bảng ESP8266: Bộ não của xe. Nó đọc các tín hiệu từ cảm biến và lệnh của người dùng, và điều khiển động cơ cho phù hợp.
  • Nguồn cấp: Xe 2WD cần một nguồn cấp điện, thường là pin và giá đỡ pin, để cấp nguồn cho động cơ và bảng ESP8266.
  • 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.
  • 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 vật cản, cảm biến theo đường), và nhiều hơn nữa.

Trong bài hướng dẫn này, để đơn giản, chúng ta sẽ sử dụng:

  • Bộ kit ô tô dẫn động hai bánh (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 (bao gồm điều khiển hồng ngoại và bộ nhận hồng ngoại)

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

Cách hoạt động

xe 2wd dùng ESP8266 NodeMCU hoạt động như thế nào?
  • ESP8266 kết nối với các động cơ DC của xe robot thông qua module điều khiển động cơ L298N.
  • ESP8266 kết nối với một bộ nhận IR.
  • Ắc quy cung cấp nguồn cho ESP8266, các động cơ DC, bộ điều khiển động cơ 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.
  • ESP8266 nhận các lệnh UP/DOWN/LEFT/RIGHT/OK thông qua bộ nhận IR.
  • ESP8266 điều khiển xe di chuyển về phía trước, lùi, rẽ trái, rẽ phải và dừng bằng cách điều khiển động cơ DC thông qua bộ điều khiển động cơ.

Sơ đồ đấu dây

sơ đồ nối dây cho xe ESP8266 NodeMCU hai bánh dẫn động

This image is created using Fritzing. Click to enlarge image

Xem thêm Sơ đồ chân ESP8266Cách cấp nguồn cho ESP8266.

Thường thì nó cần hai nguồn năng lượng:

  • Một dành cho động cơ (gián tiếp thông qua mô-đun L298N).
  • Một dành cho bo mạch ESP8266, mô-đun L298N và bộ nhận IR.

Tuy nhiên, có một phương pháp để đơn giản hóa điều này bằng cách chỉ sử dụng một nguồn điện cho mọi thứ. Bạn có thể đạt được điều này bằng cách sử dụng bốn pin 1,5V (tổng cộng 6V). Dưới đây là cách bạn có thể làm điều đó:

  • Kết nối các ắc quy với module L298N như hình vẽ.
  • Đặt hai jumper nối các chân ENA và ENB với điện áp 5 V trên module L298N.
  • Gỡ một jumper có nhãn 5VEN, được đánh dấu bằng vòng tròn màu vàng trên sơ đồ.
  • Thực hiện các dây nối còn lại theo sơ đồ ở trên.

Mã ESP8266

/* * Mã ESP8266 NodeMCU này được phát triển bởi newbiely.vn * Mã ESP8266 NodeMCU 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/esp8266/esp8266-car */ #include <DIYables_IRcontroller.h> // DIYables_IRcontroller library #define IR_RECEIVER_PIN D1 // The ESP8266 pin connected to IR receiver #define IN1_PIN D2 // The ESP8266 pin connected to the IN1 pin L298N #define IN2_PIN D5 // The ESP8266 pin connected to the IN2 pin L298N #define IN3_PIN D6 // The ESP8266 pin connected to the IN3 pin L298N #define IN4_PIN D7 // The ESP8266 pin connected to the IN4 pin L298N DIYables_IRcontroller_17 irController(IR_RECEIVER_PIN, 200); // debounce time is 200ms void setup() { Serial.begin(9600); irController.begin(); pinMode(IN1_PIN, OUTPUT); pinMode(IN2_PIN, OUTPUT); pinMode(IN3_PIN, OUTPUT); pinMode(IN4_PIN, OUTPUT); } 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; } } } void 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

Để bắt đầu với ESP8266 trên Arduino IDE, hãy làm theo các bước sau:

  • Xem hướng dẫn ESP8266 - Cài đặt phần mềm nếu đây là lần đầu bạn sử dụng ESP8266.
  • Kết nối bo mạch ESP8266 với máy tính của bạn bằng cáp USB.
  • Mở Arduino IDE trên máy tính của bạn.
  • Chọn bo mạch ESP8266 đúng, ví dụ như NodeMCU 1.0 (ESP-12E Module), và cổng COM tương ứng của nó.
  • 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
  • Hãy đấu dây theo sơ đồ ở trên đã hiển thị.
  • Ngắt kết nối dây từ Vin trên ESP8266 vì chúng ta sẽ cấp nguồn cho ESP8266 bằng cáp USB khi tải mã.
  • Lật ngược xe để bánh xe nằm ở phía trên.
  • Sao chép mã được cung cấp và mở nó trong Arduino IDE.
  • Nhấn nút Upload trong Arduino IDE để tải mã lên ESP8266.
  • Sử dụng điều khiển IR để xe tiến tới, lùi, trái, phải hoặc dừng.
  • Kiểm tra xem bánh xe có chuyển động đúng theo lệnh của bạn không.
  • Nếu bánh xe di chuyển sai hướng, hãy đổi 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
CAR - MOVING FORWARD CAR - MOVING BACKWARD CAR - TURNING LEFT CAR - TURNING RIGHT CAR - STOP
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Nếu mọi thứ diễn ra thuận lợi, hãy tháo cáp USB khỏi ESP8266, và sau đó kết nối lại dây vào pin Vin 5V. Điều này sẽ cấp nguồn cho ESP8266 từ pin.
  • Đặt xe trở lại vị trí bình thường với bánh xe chạm đất.
  • Chúc bạn điều khiển xe thật vui vẻ!

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 ở phía trên.

Bạn có thể tìm hiểu thêm về mã bằng cách xem các hướng dẫn sau đây:

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

  • Thêm cảm biến tránh vật cản để lập tức dừng xe khi phát hiện vật cản.
  • Thêm chức năng điều khiển tốc độ của xe (xem ESP8266 - Động cơ DC hướng dẫn). Mã được cung cấp điều khiển xe ở 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