Bài 2 – tìm hiểu phần cứng tay cầm điều khiển drone esp32

Thương hiệu: (Đang cập nhật ...) Loại: (Đang cập nhật ...)

Liên hệ
Bài 2: Tìm hiểu phần cứng tay cầm điều khiển Drone ESP32 Khóa học STEM Drone ESP32 – LINHKIEN1993 Trong Bài 1, chúng ta đã nhìn tổng quan hệ thống Drone Mini ESP32. Bài 2 tập trung vào tay cầm: hiểu joystick tạo tín hiệu điện như thế nào, ESP32 đọc và xử lý tín hiệu ra sao, sau đó chuẩn bị dữ liệ...

Bài 2: Tìm hiểu phần cứng tay cầm điều khiển Drone ESP32

Khóa học STEM Drone ESP32 – LINHKIEN1993

Trong Bài 1, chúng ta đã nhìn tổng quan hệ thống Drone Mini ESP32. Bài 2 tập trung vào tay cầm: hiểu joystick tạo tín hiệu điện như thế nào, ESP32 đọc và xử lý tín hiệu ra sao, sau đó chuẩn bị dữ liệu để truyền đến Drone.

1. Tay cầm ESP32 trong hệ thống Drone

Tay cầm là giao diện trực tiếp giữa người điều khiển và Drone. Theo tài liệu, tay cầm LINHKIEN1993 dùng ESP32 DEVKIT V1 làm bộ xử lý trung tâm.

Người điều khiển

↓

Joystick / Button

↓

ESP32

↓

Xử lý dữ liệu

↓

ESP-NOW

↓

Drone ESP32

Tay cầm không trực tiếp điều khiển motor. Nó nhận thao tác → chuyển thành dữ liệu → xử lý → truyền dữ liệu đến Drone.

 

2. Các khối chính trên tay cầm

·         ESP32 DEVKIT V1 30 pin

·         2 joystick

·         Các nút nhấn

·         LED báo trạng thái

·         Cổng USB

·         Đầu nối nguồn / ngoại vi

·         PCB tay cầm và linh kiện phụ trợ

Hai joystick nằm hai bên, ESP32 gần trung tâm PCB; bố cục được thiết kế để thao tác bằng hai tay.


Hình PCB tay cầm – mặt trước và mặt sau.

Sơ đồ kết nối chân của tay cầm

3. ESP32 – bộ xử lý trung tâm

ESP32 DEVKIT V1 30 pin thực hiện 4 bước chính:

1.    Đọc tín hiệu từ joystick, nút nhấn và các tín hiệu trạng thái cần thiết.

2.    Xử lý tín hiệu thành các giá trị điều khiển có ý nghĩa.

3.    Đóng gói dữ liệu điều khiển.

4.    Truyền dữ liệu đến Drone qua ESP-NOW.

Ví dụ logic dữ liệu điều khiển:

struct DroneControl {
  int throttle;
  int roll;
  int pitch;
  int yaw;
};

Đây chỉ là ví dụ cấu trúc; firmware chính thức phải phù hợp với thiết kế Drone.

4. Joystick – bộ phận tạo lệnh điều khiển

Mỗi joystick tạo tín hiệu thay đổi theo hai phương X/Y. Khi người dùng di chuyển cần joystick, điện áp đầu ra thay đổi và ESP32 đọc điện áp đó bằng ngõ vào tương tự.

Vị trí joystick

↓

Điện áp analog

↓

ADC ESP32

↓

Giá trị số

↓

Firmware

Joystick không gửi trực tiếp câu lệnh như “sang trái”; nó tạo ra tín hiệu điện, sau đó phần mềm chuyển tín hiệu thành dữ liệu điều khiển.

5. ADC của ESP32 và tín hiệu joystick

ADC (Analog to Digital Converter) biến điện áp analog thành giá trị số mà chương trình có thể xử lý. Có thể kiểm tra giá trị bằng Serial Monitor.

Ví dụ trong tài liệu: Joystick X = 2040, Y = 1985; khi di chuyển có thể xuất hiện các giá trị như X = 500 hoặc X = 3500.

Giá trị thực tế phụ thuộc joystick, mạch điện, nguồn cấp và firmware. Không nên lấy một giá trị ADC trên Internet áp dụng trực tiếp cho PCB LINHKIEN1993; cần đo trên phần cứng thực tế.

6. Center Point – điểm giữa joystick

Khi joystick ở giữa, hệ thống cần hiểu đó là trạng thái không điều khiển theo hướng tương ứng. Giá trị ADC tại điểm giữa có thể khác nhau giữa các joystick, vì vậy firmware có thể cần calibration.

7. Dead Zone – vùng chết

Ngay cả khi người dùng không chạm joystick, ADC vẫn có thể dao động nhẹ. Nếu coi mọi thay đổi là lệnh, Drone có thể nhận tín hiệu ngoài ý muốn.

Dead Zone tạo một vùng quanh điểm giữa; các dao động nhỏ trong vùng này có thể được coi là 0. Điều này giúp tay cầm ổn định hơn.

8. Nút nhấn trên tay cầm

Nút nhấn có thể được firmware dùng cho Arm, Disarm, chuyển chế độ, xác nhận, chức năng phụ hoặc báo trạng thái. Về điện tử, nút tạo thay đổi logic tại GPIO.

Nút nhấn

↓

GPIO ESP32

↓

Firmware

↓

Thực hiện chức năng

Không nên tự gán chức năng cho từng nút khi chưa xác định schematic và firmware của đúng phiên bản Drone đang sử dụng.

9. LED báo trạng thái và cổng USB

LED giúp người dùng và kỹ thuật viên nhận biết trạng thái. Ví dụ: LED tắt có thể là chưa cấp nguồn; LED sáng là hệ thống hoạt động; LED nhấp nháy có thể là đang chờ kết nối. Trạng thái thực tế phụ thuộc firmware.

Cổng USB phục vụ nạp firmware và kiểm tra dữ liệu bằng Serial Monitor.

Máy tính

↓

USB

↓

ESP32

↓

Upload Firmware

Ví dụ Serial Monitor: Joystick X: 2048; Joystick Y: 2051; Button 1: RELEASE; Button 2: PRESS.

10. PCB tay cầm và tư duy phần cứng

PCB có đường mạch, via, vùng đồng, điểm hàn, đường nguồn, đường tín hiệu và GND. Khi quan sát PCB, cần đặt các câu hỏi: ESP32 lấy nguồn từ đâu? Tín hiệu joystick vào chân nào? Nút nhấn nối GPIO nào? LED được điều khiển bởi chân nào?

Đây là tư duy quan trọng khi thiết kế, kiểm tra hoặc sửa chữa PCB.

11. Đọc schematic theo functional block

Không nên cố đọc toàn bộ schematic cùng lúc. Hãy chia thành từng khối:

POWER

↓

ESP32

↓

Joystick + Button + LED

↓

Firmware

↓

ESP-NOW

Phân tích theo functional block giúp liên hệ schematic → PCB → linh kiện thực tế và đặc biệt hữu ích khi sửa chữa hoặc thiết kế PCB mới.

12. Tay cầm gửi dữ liệu gì đến Drone?

Một gói điều khiển có thể gồm:

·         Throttle

·         Roll

·         Pitch

·         Yaw

·         Button / Mode

Đọc Joystick

↓

Calibration

↓

Dead Zone

↓

Mapping

↓

Đóng gói dữ liệu

↓

ESP-NOW

↓

Drone ESP32

Đây là nền tảng để tìm hiểu sâu hơn về ESP-NOW ở Bài 5 và điều khiển Drone ở Bài 6.

13. Vì sao phải Calibration tay cầm?

Hai joystick không nhất thiết có cùng điểm giữa. Tài liệu minh họa: joystick trái Center = 2048, joystick phải Center = 2015. Nếu không xử lý, hệ thống có thể hiểu joystick đang phát lệnh dù người dùng đang để ở giữa.

Calibration giúp xác định giá trị trung tâm, nhỏ nhất, lớn nhất, hướng chuyển động và vùng chết. Sau đó firmware có thể Mapping dữ liệu về khoảng phù hợp với thuật toán điều khiển.

ADC

↓

Calibration

↓

Dead Zone

↓

Mapping

↓

Roll / Pitch / Throttle / Yaw

14. Bài thực hành

Trước khi chuyển sang Bài 3, học viên có thể thực hiện các bài kiểm tra sau.

Thực hành 1 – Kiểm tra ESP32

Cấp nguồn và kiểm tra ESP32 có hoạt động bình thường hay không.

Thực hành 2 – Kiểm tra joystick

Đọc giá trị ADC của từng trục.

 

Trước khi cắm nguồn hoặc cắm USB nạp code thì cần giữ nút nhấn số 2 rồi cắm nguồn hoặc cáp usb vào, giữ 1s.


 

Code test

#define J1_X 34

#define J1_Y 35

#define J2_X 32

#define J2_Y 33

#define BTN1 13

#define BTN2 12

#define BTN3 15

#define BTN4 2

void setup() {

  Serial.begin(115200);

  pinMode(BTN1, INPUT_PULLUP);

  pinMode(BTN2, INPUT_PULLUP);

  pinMode(BTN3, INPUT_PULLUP);

  pinMode(BTN4, INPUT_PULLUP);

 

  Serial.println();

  Serial.println("================================");

  Serial.println("       TEST TAY CAM ESP32");

  Serial.println("================================");

  Serial.println();

}

void loop() {

  int j1_x = analogRead(J1_X);

  int j1_y = analogRead(J1_Y);

  int j2_x = analogRead(J2_X);

  int j2_y = analogRead(J2_Y);

  bool btn1 = !digitalRead(BTN1);

  bool btn2 = !digitalRead(BTN2);

  bool btn3 = !digitalRead(BTN3);

  bool btn4 = !digitalRead(BTN4);

  Serial.println("--------------------------------");

  Serial.print("Joystick 1: ");

  Serial.print("X = ");

  Serial.print(j1_x);

  Serial.print(" | Y = ");

  Serial.println(j1_y);

  Serial.print("Joystick 2: ");

  Serial.print("X = ");

  Serial.print(j2_x);

  Serial.print(" | Y = ");

  Serial.println(j2_y);

  Serial.print("BTN1 = ");

  Serial.print(btn1 ? "NHAN" : "THA");

  Serial.print(" | BTN2 = ");

  Serial.print(btn2 ? "NHAN" : "THA");

  Serial.print(" | BTN3 = ");

  Serial.print(btn3 ? "NHAN" : "THA");

  Serial.print(" | BTN4 = ");

  Serial.println(btn4 ? "NHAN" : "THA");

  delay(500);

}

 

Quan sát trên serial nếu kết quả là tay cầm nhận được tín hiệu và hoạt động, chưa cần phải thao tác gì trên tay cầm, nếu có hiển thị như hình bên dưới nghĩa là tay cầm đã có thể hoạt động ổn định

Thực hành 3 – Kiểm tra điểm giữa

Để joystick ở vị trí trung tâm và ghi lại giá trị.

Như kết quả từ hình trên thì giá trị điểm giữa:

- của joystick 1 là X = 1808 , Y = 1877

- của joystock 2 là X = 1823, Y = 1808

Thực hành 4 – Kiểm tra nút nhấn

Nhấn từng nút và quan sát trạng thái GPIO qua serial.

Nhấn nút nào thì sẽ hiển thị trạng thái nút đó tương ứng trên serial




Thực hành 5 – Kiểm tra LED

Xác định LED nào được điều khiển bởi firmware và trạng thái của từng LED.

Khi vừa cấp nguồn thì led đỏ sẽ sáng báo hiệu trạng thái mạch được cấp nguồn.


Led xanh được nối với GPIO26, được dùng với mục đích riêng nào đó tùy mục đích người dùng.


15. Những kiến thức cần nắm sau Bài 2

·         Phần cứng: ESP32, joystick, nút nhấn, LED, USB, PCB, nguồn.

·         Điện tử: tín hiệu analog, ADC, GPIO, nguồn, GND, schematic và PCB Layout.

·         Lập trình: đọc ADC/GPIO, Calibration, Dead Zone, Mapping và đóng gói dữ liệu.

·         Kiến trúc hệ thống: Joystick → ADC → ESP32 → Xử lý → Packet → ESP-NOW → Drone.

16. Tổng kết Bài 2

Điểm quan trọng nhất: tay cầm không trực tiếp điều khiển motor. Tay cầm tạo dữ liệu điều khiển; ESP32 xử lý, đóng gói và truyền dữ liệu đến ESP32 trên Drone.

Sau khi hiểu phần cứng tay cầm, người học có nền tảng để bước sang Bài 3: tìm hiểu bo mạch Drone, ESP32, MPU6050, mạch điều khiển motor và hệ thống 4 động cơ.

LINHKIEN1993 – STEM DRONE ESP32 | Học điện tử – Học lập trình – Hiểu nguyên lý – Tự nghiên cứu

Website: linhkien1993.com  |  Zalo: 0367 547 577

popup

Số lượng:

Tổng tiền: