Nâng cao 75-90 phút practiceMiễn phí

Kiến trúc Sense Think Act

Bài 3 trong khóa Robot Thế hệ 5 — Robot AI đa giác quan và bộ não thông minh

Kiến trúc Sense Think Act

G5 02 - Kiến trúc Sense Think Act

Linh kiện cần chuẩn bị

  • 1 ESP32-S3 DevKit.
  • 1 robot base 2WD đã kiểm tra motor trái/phải.
  • 1 driver TB6612FNG.
  • 1 cảm biến khoảng cách HC-SR04.
  • 1 LED trạng thái nối GPIO2.
  • 1 buzzer active 3.3V nối GPIO15.
  • Pin motor, công tắc nguồn, dây jumper, GND chung.
  • Điện trở chia áp cho ECHO nếu HC-SR04 xuất tín hiệu 5V.
  • Máy tính cài Arduino IDE, cáp USB data, Serial Monitor 115200 baud.
  • Vật cản mềm để test khoảng cách.

Code bài này dùng ESP32-S3, TB6612FNG, HC-SR04, LED và buzzer. Chưa dùng camera, microphone hoặc AI computer.

Bài này giúp bạn làm được gì?

Sense-Think-Act là vòng lặp cốt lõi của robot tự chủ:

  • Sense: đọc dữ liệu thật từ cảm biến.
  • Think: chọn hành động dựa trên dữ liệu.
  • Act: chạy motor hoặc dừng robot.
  • Review: dừng giữa các bước và ghi log kết quả.

Kết quả cuối bài:

  • Robot đọc khoảng cách bằng HC-SR04.
  • Nếu phía trước trống, robot tiến một nhịp ngắn.
  • Nếu vật cản gần hơn 24 cm, robot quay tránh.
  • Nếu cảm biến lỗi, robot giữ yên.
  • Serial Monitor có log STA,SENSE, STA,THINK, STA,ACT, STA,REVIEW.

Sơ đồ khối

HC-SR04 -> Sense -> distanceCm
distanceCm -> Think -> MOVE_FORWARD / TURN_AWAY / HOLD_SENSOR_ERROR
action -> Act -> TB6612FNG -> motor
result -> Review -> dừng giữa các nhịp và ghi log

Robot AI không cần phức tạp ngay từ đầu. Điều quan trọng là mọi quyết định đều có dữ liệu và lý do.

Pin map

Chức năngESP32-S3Thiết bịGhi chú
LED trạng tháiGPIO2LEDSáng khi robot đang act
BuzzerGPIO15Buzzer activeDự phòng cảnh báo
HC-SR04 TRIGGPIO5HC-SR04Output
HC-SR04 ECHOGPIO18HC-SR04Chia áp nếu ECHO là 5V
TB6612 STBYGPIO33Driver motorHIGH để bật driver
Motor trái PWM/IN1/IN2GPIO25/GPIO26/GPIO27TB6612 AKiểm chiều quay
Motor phải PWM/IN1/IN2GPIO14/GPIO12/GPIO13TB6612 BGND chung

Code mẫu hoàn chỉnh

Mở sketch:

code/g5-02-kien-truc-sense-think-act/g5-02-kien-truc-sense-think-act.ino

Ba hàm chính:

void sense() {
  distanceCm = readDistanceCm();
}

void think() {
  if (distanceCm > 0 && distanceCm <= STOP_CM) planAction = "TURN_AWAY";
  else if (distanceCm < 0) planAction = "HOLD_SENSOR_ERROR";
  else planAction = "MOVE_FORWARD";
}

void act() {
  if (planAction == "MOVE_FORWARD") drive(105, 105);
  else if (planAction == "TURN_AWAY") drive(90, -90);
  else drive(0, 0);
}

Bạn có thể đọc code như một câu: "Nếu cảm biến nói vật cản gần, robot nghĩ nên quay tránh, rồi motor thực hiện quay".

Thực hành từng bước

Bước 1: Kê robot và upload code

Đặt robot lên giá kê, bật USB, chưa bật nguồn motor. Upload code và xem log:

G5-02 ready: Sense-Think-Act with real distance sensor
STA,SENSE,distanceCm=56.2
STA,THINK,action=MOVE_FORWARD,reason=distance_gate
STA,ACT,action=MOVE_FORWARD
STA,REVIEW,action=MOVE_FORWARD,result=stop_between_steps

Nếu khoảng cách hợp lý, bật nguồn motor và đặt robot xuống sân trống.

Bước 2: Test đường trống

Không đặt vật cản trước robot. Robot phải tiến từng nhịp ngắn rồi dừng giữa các nhịp. Dừng giữa các nhịp giúp bạn quan sát an toàn.

Ghi vào bảng:

LầndistanceCmactionRobot làm gì?
1
2

Bước 3: Test vật cản gần

Đưa vật mềm cách robot 15-20 cm. Log đúng:

STA,SENSE,distanceCm=18.4
STA,THINK,action=TURN_AWAY,reason=distance_gate
STA,ACT,action=TURN_AWAY

Robot quay tránh thay vì lao về phía vật cản.

Bước 4: Test lỗi cảm biến

Rút dây ECHO hoặc che cảm biến quá xa để tạo timeout. Log đúng:

STA,SENSE,distanceCm=-1.0
STA,THINK,action=HOLD_SENSOR_ERROR,reason=distance_gate
STA,ACT,action=HOLD_SENSOR_ERROR

Khi dữ liệu không đáng tin, robot giữ yên. Đây là quyết định AI an toàn.

Bảng kiểm thử robot thật

TestĐiều kiệnLog cần cóKết quả
1Đường trống > 40 cmMOVE_FORWARD
2Vật cản 15-20 cmTURN_AWAY
3ECHO lỗi/timeoutHOLD_SENSOR_ERROR
4Robot đặt trên sânDừng giữa các nhịp
5Tắt nguồn motorLog vẫn chạy, motor không quay

Giải thích code theo khối

  • readDistanceCm() đo khoảng cách thật.
  • sense() chỉ đọc dữ liệu, không quyết định.
  • think() chỉ chọn planAction, không điều khiển motor.
  • act() là nơi duy nhất chạy motor.
  • review() dừng robot giữa các bước để giảm rủi ro.

Tách như vậy giúp code dễ debug. Nếu robot chọn sai hành động, bạn xem log SENSETHINK; nếu chọn đúng nhưng motor sai, bạn xem phần ACT và dây motor.

Lỗi thường gặp và cách sửa

LỗiNguyên nhân hay gặpCách sửa
Robot luôn HOLD_SENSOR_ERRORHC-SR04 sai dây hoặc echo quá ápKiểm TRIG/ECHO, dùng chia áp
Robot quay khi đường trốngCảm biến nhìn xuống sàn hoặc bị dây cheCăn lại cảm biến
Robot tiến quá mạnhTốc độ 105 vẫn cao với robot nhẹGiảm speed xuống 80-90
Robot không quayThiếu nguồn motor hoặc GND chungKiểm VM, GND, STBY

Checklist debug nhanh

  • STA,SENSE in khoảng cách thay đổi khi đưa vật lại gần.
  • STA,THINK đổi action theo khoảng cách.
  • Motor chỉ chạy trong bước ACT.
  • Robot dừng giữa các nhịp.
  • Lỗi cảm biến làm robot giữ yên.

Thử thách nhỏ

Tạo hai ngưỡng:

NgưỡngÝ nghĩa
18 cmRobot chấp nhận đi gần hơn
30 cmRobot giữ khoảng cách an toàn hơn

Chạy cùng một sân thử và ghi action thay đổi như thế nào.

Checklist hoàn thành

  • Robot chạy được vòng Sense-Think-Act thật.
  • Có bảng test ít nhất 5 tình huống.
  • Có log giải thích vì sao robot tiến, quay hoặc giữ yên.
  • Học viên chỉ ra được lỗi thuộc Sense, Think hay Act.
  • Sẵn sàng sang G5 03 để thiết kế dữ liệu trạng thái rõ ràng hơn.

Bài tiếp theo

G5 03 sẽ gom dữ liệu cảm biến, nút, pin và mode thành một cấu trúc trạng thái. Đây là bước quan trọng để robot AI có "bộ nhớ ngắn" rõ ràng thay vì nhiều biến rời rạc khó kiểm soát.


Điều hướng bài học

Bài tiếp theo: G5 03 - Thiết kế dữ liệu trạng thái robot

Bài trước: G5 01 - Robot AI Agent là gì

Kiến trúc Sense Think Act | HocLapTrinhRobot