Kiểm tra đầu vào: robot 2WD, motor, PWM, Serial và cảm biến line
Bài 3 trong khóa Robot Thế hệ 1 — Tránh vật cản, dò line và điều khiển từ xa

RLF lesson 01 — Kiểm tra đầu vào: robot 2WD, motor, PWM, Serial và cảm biến line
1. Sau bài này bạn làm được gì?
Sau bài này, bạn sẽ làm được 10 việc:
- Kiểm tra robot 2WD đã đủ điều kiện để học Robot Dò Line chuyên sâu.
- Xác nhận motor trái/phải hoạt động đúng chiều.
- Xác nhận PWM điều khiển tốc độ motor còn ổn định.
- Xác nhận
stopRobot()đáng tin trước khi chạy line. - Xác nhận Serial Monitor in log rõ ràng, đủ dùng để debug.
- Kiểm tra cảm biến line hoặc sensor array đọc được nền và line.
- Ghi được baseline raw data của từng cảm biến line.
- Phát hiện lỗi phổ biến trước khi học calibration/P/PD/PID.
- Đánh giá robot đã sẵn sàng sang RLF 02 hay cần sửa lại phần Robot Starter.
- Nộp được checklist, log và video bằng chứng đầu vào.
Bài này là bài đầu vào của khóa Robot Dò Line.
Nếu Robot Starter giúp bạn làm robot 2WD chạy được, thì Robot Dò Line chuyên sâu sẽ yêu cầu robot chạy ổn định hơn, dữ liệu cảm biến rõ hơn và log chính xác hơn.
2. Vì sao cần kiểm tra đầu vào?
Robot dò line chuyên sâu sẽ học:
sensor array
calibration
weighted average
setpoint
error
P
PD
PID
sample time
lost-line recovery
tuning bằng dữ liệu
Nếu robot chưa ổn ở các phần cơ bản như motor, PWM, Serial hoặc cảm biến line, bạn sẽ rất khó học các thuật toán phía sau.
Ví dụ:
| Lỗi đầu vào | Hậu quả khi học dò line |
|---|---|
| Motor trái/phải sai chiều | P/PD/PID sẽ điều khiển sai |
stopRobot() không chắc | Robot nguy hiểm khi mất line |
| PWM thấp không làm motor quay | Tuning tốc độ khó |
| Serial log rối | Không phân tích được lỗi |
| Line sensor đọc nền/line không rõ | Weighted average/PID không có dữ liệu tốt |
| Dây chạm bánh | Robot lệch nhưng tưởng thuật toán sai |
| Pin yếu | Kết quả tune không lặp lại |
> Robot dò line tốt bắt đầu từ đầu vào tốt.
3. Bài này không dạy lại toàn bộ Robot Starter
Bài này không lặp lại chi tiết các bài cũ.
Bạn chỉ cần kiểm tra:
robot 2WD
motor
PWM
Serial
line sensor
log
an toàn
Nếu một phần chưa đạt, hãy quay lại bài tương ứng trong Robot Starter hoặc Core Robotics Skills.
4. Điều kiện phần cứng tối thiểu
Robot cần có:
| Thành phần | Yêu cầu |
|---|---|
| Chassis 2WD | lắp chắc, bánh/caster không kẹt |
| Arduino Uno hoặc tương thích | upload code được, Serial ổn |
| TB6612FNG hoặc driver tương đương | điều khiển 2 motor |
| 2 motor DC | trái/phải đúng chiều, PWM chạy được |
| Nguồn motor | đủ pin, không reset Arduino |
| Cảm biến line | ít nhất 1 mắt, tốt hơn là 3/5 mắt nếu học chuyên sâu |
| Đường line test | nền sáng, line tối, tương phản rõ |
| Serial Monitor | dùng để xem log raw/speed/state |
Nếu chưa có sensor array 3/5 mắt, vẫn có thể học bài đầu, nhưng các bài sau về weighted average sẽ cần nhiều cảm biến hơn.
5. Pin map mặc định
Motor TB6612FNG:
| Chức năng | Arduino |
|---|---|
| STBY | D4 |
| LEFT_PWM / PWMA | D5 |
| LEFT_IN1 / AIN1 | D7 |
| LEFT_IN2 / AIN2 | D8 |
| RIGHT_PWM / PWMB | D6 |
| RIGHT_IN1 / BIN1 | D9 |
| RIGHT_IN2 / BIN2 | D10 |
Cảm biến line:
| Cảm biến | Arduino |
|---|---|
| Sensor giữa / 1 mắt | A0 |
| Sensor trái nếu có | A1 |
| Sensor phải nếu có | A2 |
| Sensor 5 mắt nếu có | A0, A1, A2, A3, A4 |
Nếu robot của bạn dùng pin khác, cập nhật code và ghi rõ trong practice sheet.
6. Checklist an toàn trước khi kiểm tra
| STT | Mục kiểm tra | Đạt? |
|---|---|---|
| 1 | Robot không ở mép bàn/cầu thang | |
| 2 | Có thể tắt nguồn motor nhanh | |
| 3 | Dây không chạm bánh | |
| 4 | Không có vít kim loại trên board | |
| 5 | Pin motor đủ điện | |
| 6 | GND chung chắc | |
| 7 | Cảm biến line không chạm mặt sàn | |
| 8 | Serial Monitor mở được | |
| 9 | stopRobot đã kiểm tra | |
| 10 | Test tốc độ thấp trước |
Nếu một mục chưa đạt, sửa trước khi chạy motor.
Phần A — Preflight robot và Serial
7. Code 1 — Preflight heartbeat và pin map
Tạo file:
RLF_lesson_01A_preflight_heartbeat_pinmap.ino
Sketch này:
- nhấp nháy LED_BUILTIN;
- in uptime;
- in pin map motor và cảm biến line;
- không chạy motor.
Kết quả mong đợi:
LED_BUILTIN nhấp nháy đều
uptime_ms tăng đều
Serial không reset
pin map in rõ
Nếu uptime quay về 0 bất thường, nghi Arduino reset, cáp USB, nguồn hoặc dây chập.
8. Bài thực hành A — Preflight
| Kiểm tra | Kết quả | Ghi chú |
|---|---|---|
| Upload thành công | ||
| LED_BUILTIN nhấp nháy | ||
| Serial uptime tăng đều | ||
| Không reset bất thường | ||
| Pin map đúng với robot thật |
Phần B — Motor và PWM
9. Vì sao motor phải kiểm tra lại?
Robot Starter có thể đã chạy, nhưng trước khóa dò line cần xác nhận lại:
- motor trái/phải không bị đảo;
- PWM ở các mức thấp/vừa/cao còn hoạt động;
- tốc độ thấp đủ làm robot di chuyển;
stopRobot()dừng cả hai motor;- driver không nóng;
- Arduino không reset khi motor chạy.
Dò line cần motor phản ứng đều. Nếu motor lỗi, thuật toán PID sau này không cứu được.
10. Code 2 — Motor PWM diagnostic
Tạo file:
RLF_lesson_01B_motor_pwm_diagnostic_serial.ino
Lệnh Serial:
| Lệnh | Ý nghĩa |
|---|---|
| L | test motor trái forward |
| R | test motor phải forward |
| F | hai motor forward |
| B | hai motor backward |
| S | stop |
| 1/2/3/4 | speed 60/80/100/130 |
| H | help |
Robot cần được kê lên trước khi test.
11. Bài thực hành B — Motor/PWM
| Lệnh | Mong đợi | Thực tế | Đạt? |
|---|---|---|---|
| L | chỉ motor trái quay | ||
| R | chỉ motor phải quay | ||
| F | hai bánh hướng tiến | ||
| B | hai bánh hướng lùi | ||
| S | hai motor dừng | ||
| Speed 60 | motor quay ổn? | ||
| Speed 80 | motor quay ổn? | ||
| Speed 100 | motor quay ổn? |
Ghi tốc độ nhỏ nhất motor quay ổn định:
Motor trái PWM min = ______
Motor phải PWM min = ______
Phần C — Serial log chuẩn cho Robot Dò Line
12. Vì sao log cần chuẩn?
Trong Robot Dò Line, bạn sẽ dựa vào log để phân tích:
raw sensor
calibrated sensor
position
error
correction
leftSpeed
rightSpeed
state
Nếu log không rõ, việc tuning P/PD/PID sẽ rất khó.
Format nên dùng:
key=value,key=value,key=value
hoặc CSV:
time_ms,leftRaw,centerRaw,rightRaw,leftSpeed,rightSpeed
Bài này kiểm tra khả năng in log có nhịp, không quá rối.
13. Code 3 — Serial log format test
Tạo file:
RLF_lesson_01C_serial_log_format_test.ino
Sketch này in:
time_ms,mode,lineRaw,leftSpeed,rightSpeed
Không cần chạy motor thật nếu chưa muốn.
14. Bài thực hành C — Log format
| Mục | Đạt? | Ghi chú |
|---|---|---|
| Có header CSV hoặc key-value rõ | ||
Có time_ms | ||
| Có sensor value | ||
| Có motor speed | ||
| Tần suất log dễ đọc | ||
| Không in quá nhiều gây rối |
Phần D — Cảm biến line 1 mắt
15. Kiểm tra cảm biến line đơn
Nếu robot chỉ có một cảm biến line, kiểm tra:
nền sáng
line tối
mép line
độ cao cảm biến
ánh sáng khác
Bạn cần biết:
LINE_IS_LOW = true hay false
LINE_THRESHOLD = bao nhiêu
UNCERTAIN_MARGIN = bao nhiêu
16. Code 4 — Line sensor single raw threshold check
Tạo file:
RLF_lesson_01D_line_sensor_single_threshold_check.ino
Sketch này in:
raw=...,state=LINE/BACKGROUND/UNCERTAIN
Mục tiêu là xác nhận threshold từ RS13/RS14 vẫn đúng.
17. Bài thực hành D — Cảm biến line đơn
| Bề mặt | Raw/Average | State | Ghi chú |
|---|---|---|---|
| Nền sáng | |||
| Line đen | |||
| Mép line trái | |||
| Mép line phải | |||
| Ánh sáng khác |
Kết luận:
LINE_THRESHOLD = ______
LINE_IS_LOW = true / false
UNCERTAIN_MARGIN = ______
Phần E — Sensor array 3 mắt hoặc 5 mắt
18. Vì sao cần sensor array?
Robot dò line chuyên sâu cần biết line lệch bao nhiêu, không chỉ biết có line hay không.
Một sensor array giúp robot biết:
line lệch trái
line ở giữa
line lệch phải
line mất
Các bài sau sẽ học weighted average và error. Bài này chỉ kiểm tra raw data.
19. Code 5 — Sensor array raw check
Tạo file:
RLF_lesson_01E_sensor_array_raw_check.ino
Sketch hỗ trợ 3 kênh mặc định:
LEFT=A1
CENTER=A0
RIGHT=A2
Nếu có 5 mắt, có thể mở rộng A0–A4.
Log:
time_ms,leftRaw,centerRaw,rightRaw
20. Bài thực hành E — Sensor array
| Vị trí line | Left raw | Center raw | Right raw | Nhận xét |
|---|---|---|---|---|
| Line dưới cảm biến trái | ||||
| Line dưới cảm biến giữa | ||||
| Line dưới cảm biến phải | ||||
| Không có line | ||||
| Line rộng che nhiều mắt |
Nếu sensor trái/phải bị đảo vị trí, ghi lại ngay. Đây là lỗi rất nguy hiểm khi học weighted average.
Phần F — Bài test đầu vào tổng hợp
21. Code 6 — Entry readiness dashboard
Tạo file:
RLF_lesson_01F_entry_readiness_dashboard.ino
Sketch này in dashboard tổng hợp:
time_ms,leftRaw,centerRaw,rightRaw,lineState,motorReady,notes
Mục tiêu không phải tự chấm điểm hoàn toàn, mà giúp bạn có log để trainer đánh giá.
22. Checklist đạt đầu vào RLF
| Nhóm | Điều kiện đạt | Đạt? | Bằng chứng |
|---|---|---|---|
| Cơ khí | bánh/caster không kẹt, dây không chạm bánh | ||
| Nguồn | Arduino không reset khi motor chạy | ||
| Motor | L/R/F/B/S đúng | ||
| PWM | speed thấp/vừa hoạt động | ||
| Serial | log rõ, có time_ms/sensor/speed | ||
| Line sensor | phân biệt nền/line rõ | ||
| Sensor array nếu có | trái/giữa/phải đọc đúng vị trí | ||
| Safety | stopRobot đáng tin |
Nếu chưa đạt, ghi rõ cần sửa gì trước RLF 02.
23. Bảng lỗi đầu vào thường gặp
| Triệu chứng | Nghi ngờ | Cách kiểm tra | Cách xử lý |
|---|---|---|---|
| Motor trái/phải đảo | dây/kênh A-B/cờ invert | test L/R | sửa pin map hoặc cờ invert |
| PWM 60 không quay | motor có vùng chết | test nhiều speed | đặt min speed phù hợp |
| Arduino reset khi motor chạy | pin/GND/nguồn | heartbeat + motor test | thay pin, kiểm tra GND |
| Line sensor không phân biệt line/nền | threshold/độ cao/ánh sáng | raw check | chỉnh độ cao/threshold |
| Sensor array trái/phải đảo | lắp ngược hoặc pin map sai | đưa line dưới từng mắt | sửa mapping |
| Log quá rối | format không chuẩn | xem Serial | dùng CSV/key-value |
| Dây chạm bánh | cơ khí/dây | quay bánh bằng tay | cố định dây |
| Robot chạy lệch nặng | cơ khí/trim | test forward ngắn | kiểm tra caster/bánh/trim |
24. Tiêu chí được học tiếp RLF 02
Bạn sẵn sàng sang RLF 02 khi:
- robot 2WD chạy/dừng an toàn;
- motor trái/phải đúng chiều;
- PWM điều khiển được speed cơ bản;
- Serial log rõ;
- line sensor đọc được line/nền;
- nếu có sensor array, biết kênh trái/giữa/phải;
- robot không reset khi chạy test ngắn;
- có checklist và bằng chứng đầu vào.
Nếu chưa đạt, không sao. Bài này giúp bạn biết cần sửa gì.
25. Câu hỏi kiểm tra nhanh
- Vì sao cần kiểm tra đầu vào trước khi học P/PD/PID?
- Nếu motor trái/phải bị đảo, thuật toán dò line sẽ bị ảnh hưởng thế nào?
- Vì sao cần biết PWM nhỏ nhất làm motor quay?
- Serial log cho Robot Dò Line nên có những trường nào?
- Vì sao line sensor raw quan trọng hơn chỉ đọc DO?
- Sensor array giúp gì so với một cảm biến?
- Nếu sensor trái/phải bị đảo, các bài weighted average sẽ sai ra sao?
- Nếu robot reset khi motor chạy, cần kiểm tra gì đầu tiên?
- Điều kiện tối thiểu để sang RLF 02 là gì?
- Robot của em hiện cần cải thiện điểm nào nhất?
26. Bằng chứng cần nộp
Nộp 6 phần:
- Ảnh robot 2WD hiện tại.
- Video motor diagnostic L/R/F/B/S.
- Ảnh Serial log PWM/motor.
- Ảnh hoặc log cảm biến line trên nền và line.
- Nếu có sensor array: log trái/giữa/phải.
- Checklist đầu vào RLF đã điền.
27. Kết luận
Bài này giúp bạn kiểm tra robot có đủ điều kiện để học Robot Dò Line chuyên sâu hay chưa.
Bạn đã kiểm tra:
robot 2WD
motor
PWM
Serial
line sensor
sensor array nếu có
log
an toàn
Ở bài tiếp theo, bạn sẽ học tiêu chuẩn đường line và phương pháp đo hiệu suất robot để các bài tuning sau này có dữ liệu rõ ràng.
Điều hướng bài học
Bài tiếp theo: Module Robot Dò Line - Bài 02: Tiêu chuẩn đường line và phương pháp đo hiệu suất robot Bài trước: Module Robot Starter - Bài 16: Capstone Robot Starter: robot 2WD có hai chế độ hoạt động