Cảm biến

Tổng quan cảm biến robot - phân loại, nguyên lý và cách chọn đúng

8 phút đọc05/07/2026HocLapTrinhRobot
Tổng quan cảm biến robot - phân loại, nguyên lý và cách chọn đúng

Bản đồ đầy đủ về cảm biến robot - phân loại theo đại lượng đo, chuẩn giao tiếp digital/analog/I2C, tiêu chí chọn và bảng cảm biến phổ biến kèm giá. Trong bài viết này, chúng ta sẽ cùng tìm hiểu chi tiết và ứng dụng thực tế trong robot.

Cảm biến là gì trong hệ thống robot?

Cảm biến (sensor) là linh kiện biến đại lượng vật lý — khoảng cách, ánh sáng, nhiệt độ, gia tốc — thành tín hiệu điện mà vi điều khiển đọc được. Trong chu trình Cảm nhận - Suy nghĩ - Hành động của robot, cảm biến đảm nhận toàn bộ khâu "cảm nhận": không có cảm biến, robot chỉ là cỗ máy chạy mù theo kịch bản định sẵn.

Chất lượng của một robot tự hành phụ thuộc vào cảm biến ít hơn bạn nghĩ và phụ thuộc vào cách xử lý dữ liệu cảm biến nhiều hơn bạn nghĩ. Vì vậy hiểu nguyên lý và giới hạn của từng loại cảm biến quan trọng hơn việc sở hữu cảm biến đắt tiền.

Phân loại theo đại lượng đo

Cảm biến khoảng cách và vật cản

Cảm biếnTầm đoNguyên lýGiá tham khảo
HC-SR04 (siêu âm)2-400 cmThời gian sóng âm dội lại15.000-25.000 đ
VL53L0X (laser ToF)3-200 cmThời gian bay của photon50.000-80.000 đ
E18-D80NK (hồng ngoại)3-80 cm chỉnh đượcPhản xạ IR, trả có/không40.000-60.000 đ
Sharp GP2Y0A2110-80 cmTam giác quang học, trả analog80.000-120.000 đ

Dùng cho robot tránh vật cản, đo mực nước, phát hiện có người. So sánh chi tiết siêu âm và hồng ngoại trong bài Siêu âm vs hồng ngoại ở mục Kiến thức.

Cảm biến dò line

TCRT5000 (đơn hoặc mảng 5-8 mắt) phát hồng ngoại xuống sàn và đo lượng phản xạ: nền trắng phản xạ mạnh, vạch đen hấp thụ. Trái tim của mọi robot dò line — phân tích sâu trong bài Cảm biến dò line TCRT5000 ở mục Kiến thức.

Cảm biến chuyển động và tư thế

MPU6050 tích hợp gia tốc kế 3 trục + con quay hồi chuyển 3 trục, giao tiếp I2C, giá 25.000-40.000 đ. Cho robot biết mình đang nghiêng bao nhiêu độ, quay nhanh chậm ra sao — nền tảng của robot tự cân bằng và đo góc rẽ chính xác.

Cảm biến môi trường

  • DHT11/DHT22: nhiệt độ + độ ẩm, giao thức 1 dây riêng, 15.000-60.000 đ
  • BMP280: áp suất khí quyển + nhiệt độ, I2C, đo được độ cao, ~30.000 đ
  • Quang trở LDR: ánh sáng, analog thuần, 2.000-5.000 đ
  • MQ-2/MQ-135: khói, gas, chất lượng không khí, analog, 25.000-45.000 đ

Cảm biến âm thanh và tiếp xúc

  • Microphone MAX4466/MAX9814: robot phản ứng tiếng vỗ tay
  • Công tắc hành trình: phát hiện chạm vật lý, làm lớp bảo vệ cuối cho robot tránh vật cản
  • Cảm biến chạm điện dung TTP223: nút bấm không cần lực

Phân loại theo tín hiệu đầu ra - quan trọng nhất khi đấu nối

Cách cảm biến gửi dữ liệu quyết định bạn nối dây và viết code thế nào:

Digital đơn giản (HIGH/LOW)

Cảm biến trả về đúng 1 bit: có vật / không có vật. Ví dụ: E18-D80NK, TCRT5000 module (chân D0), công tắc hành trình. Code chỉ cần digitalRead(pin). Dễ nhất nhưng thông tin ít nhất.

Analog (điện áp liên tục)

Cảm biến trả điện áp tỉ lệ với đại lượng đo. Ví dụ: quang trở, MQ-2, TCRT5000 (chân A0), Sharp GP2Y. Code dùng analogRead(pin) — ESP32 trả 0-4095. Lưu ý ESP32: khi bật WiFi chỉ dùng được các chân ADC1 (GPIO 32-39).

Xung thời gian (pulse)

HC-SR04 trả kết quả qua độ rộng xung — code đo bằng pulseIn. Encoder trả chuỗi xung — code đếm bằng ngắt (interrupt).

Bus số I2C và SPI

Cảm biến thông minh (MPU6050, VL53L0X, BMP280) có chip xử lý riêng, gửi số liệu đã tính toán qua bus I2C: chỉ tốn 2 dây (SDA/SCL) cho hàng chục cảm biến mắc song song, mỗi con một địa chỉ. Cần thư viện tương ứng thay vì đọc chân trực tiếp. Chi tiết trong bài Giao tiếp I2C, SPI, UART ở mục Kiến thức.

Giao thức riêng

DHT11/DHT22 dùng giao thức 1 dây riêng của hãng — bắt buộc dùng thư viện DHT, không tự đọc bằng digitalRead được.

5 tiêu chí chọn cảm biến

  1. Đo đúng đại lượng cần đo: nghe hiển nhiên nhưng hay sai — muốn "phát hiện vật cản trước mặt" thì cảm biến khoảng cách nào cũng được, muốn "đo chính xác 15.3 cm" thì chỉ VL53L0X trở lên mới đủ
  2. Điện áp tương thích: cảm biến 5V nối với ESP32 (3.3V) phải chia áp tín hiệu trả về; ưu tiên cảm biến ghi rõ hỗ trợ 3.3-5V
  3. Tần suất đọc đủ nhanh: DHT22 chỉ đọc được 2 giây/lần — quá chậm cho robot đang chạy; HC-SR04 đọc 20-50 lần/giây — đủ cho tránh vật cản
  4. Độ nhiễu và cách lọc: cảm biến analog giá rẻ nhiễu mạnh, cần lọc trung bình/trung vị trong code; cảm biến I2C thường sạch hơn
  5. Giá và độ sẵn có tại Việt Nam: mọi cảm biến trong bài này đều mua được ở shop linh kiện Việt Nam; với lớp học, chọn loại phổ biến để thay thế nhanh

Kỹ thuật đọc cảm biến đáng tin cậy

Ba kỹ thuật code biến cảm biến rẻ thành dữ liệu tốt:

cpp
// 1. Lọc trung vị 3 mẫu - loại giá trị bất thường
long medianOf3(long a, long b, long c) {
  if (a > b) { long t = a; a = b; b = t; }
  if (b > c) { long t = b; b = c; c = t; }
  if (a > b) { long t = a; a = b; b = t; }
  return b;
}

// 2. Lọc trung bình trượt - làm mượt tín hiệu analog
float smooth = 0;
void loop() {
  int raw = analogRead(34);
  smooth = smooth * 0.9 + raw * 0.1;  // hệ số 0.9 = mượt hơn, chậm hơn
}

Kỹ thuật thứ ba là hiệu chuẩn (calibration): đọc giá trị cảm biến ở trạng thái chuẩn lúc khởi động (ví dụ đặt robot trên nền trắng 2 giây để học "trắng là bao nhiêu") thay vì viết cứng ngưỡng vào code — giúp robot chạy ổn định khi đổi ánh sáng, đổi sân thi đấu.

Bộ cảm biến khởi đầu khuyến nghị

Cho người mới học robot với ngân sách ~150.000 đ:

Cảm biếnSố lượngDạy được gì
HC-SR041Đo xung, tránh vật cản
TCRT5000 module2-3Digital + analog, dò line
Quang trở + điện trở 10k2Analog thuần, chia áp
Nút nhấn2Digital input, pull-up
MPU60501I2C, dữ liệu đa trục

Bộ này phủ đủ 4 kiểu tín hiệu (digital, analog, xung, I2C) — học xong bạn tự tin đấu nối bất kỳ cảm biến mới nào.

Câu hỏi thường gặp

Robot cần bao nhiêu cảm biến là đủ?

Theo nhiệm vụ, không theo số lượng: tránh vật cản cần 1 (HC-SR04), dò line cơ bản cần 2-3 mắt, dò line thi đấu cần 5-8 mắt, robot tự cân bằng cần 1 MPU6050. Thêm cảm biến chỉ có ích khi thuật toán thực sự dùng dữ liệu đó.

Cảm biến 5V có dùng được với ESP32 không?

Nguồn nuôi 5V thì lấy từ chân VIN. Tín hiệu trả về phải xem datasheet: nếu mức cao là 5V (như ECHO của HC-SR04) thì bắt buộc chia áp về 3.3V bằng 2 điện trở, nếu không sẽ làm suy yếu chân GPIO theo thời gian.

Vì sao cùng một cảm biến mà mỗi lần đọc một giá trị khác nhau?

Nhiễu là bản chất của cảm biến, đặc biệt loại analog giá rẻ. Xử lý bằng ba lớp: nguồn sạch (tụ lọc 100nF sát chân cảm biến), dây ngắn tránh xa dây động cơ, và lọc phần mềm (trung vị/trung bình trượt như code ở trên).

Nên mua cảm biến rời hay mua bộ kit cảm biến 37 món?

Kit 37 cảm biến giá ~200.000-300.000 đ hấp dẫn nhưng phần lớn module trong đó ít khi dùng đến. Mua 5-6 cảm biến đúng nhu cầu (danh sách khuyến nghị ở trên) chất lượng tốt hơn sẽ hiệu quả hơn cho việc học.

Tài nguyên tải về

Tải bản PDF của bài viết để in giáo án hoặc gửi trước cho học viên.

Tải PDF
Chia sẻ bài viết