Lab.Vatli365
← Cấp độ 3 · Cảm biến đơn giản

Bài 19 · Công nghệ · Tin học

Cảm biến dò line
phân biệt vạch và nền bằng ánh sáng hồng ngoại phản xạ

Một LED hồng ngoại chiếu xuống mặt giấy, một mắt thu nhìn phần ánh sáng dội lại. Nền trắng và vạch đen phản xạ khác nhau, nhưng kết quả còn phụ thuộc khoảng cách và ánh sáng phòng. Đó là lí do xe dò line cần được chỉnh trên chính đường chạy.

Thời lượng
1 tiết (45 phút)
Chi phí một nhóm
≈ 15 nghìn đồng (chưa tính bo)
Cấp độ
3 / 12
Trạng thái
Đã có phần cứng, đang hoàn thiện
01

Mục tiêu và yêu cầu cần đạt

Tôi tách bài cảm biến khỏi bài xe robot. Khi chưa biết cảm biến phân loại đúng ở khoảng cách nào, ghép thêm động cơ chỉ làm lỗi khó tìm hơn. Bài này kết thúc khi học sinh chứng minh được tỉ lệ nhận đúng trên một đường thử cố định.

Sau bài này học sinh làm được

  • Nêu được nguyên lí phát–thu ánh sáng hồng ngoại phản xạ.
  • Đọc tín hiệu số kích mức thấp từ GPIO27.
  • Điều chỉnh biến trở ngưỡng bằng hai mẫu đen và trắng.
  • Khảo sát ảnh hưởng của độ cao và bề mặt bóng.
  • Tính tỉ lệ phân loại đúng từ nhiều lần thử.
Gắn với chương trình
  • Công nghệ — cảm biến, kiểm thử và tối ưu giải pháp kĩ thuật.
  • Tin học — dữ liệu Boolean, rẽ nhánh và đo chất lượng thuật toán phân loại.

Chọn yêu cầu cần đạt đúng khối lớp khi chuyển thành kế hoạch bài dạy.

02

Lí thuyết

Đen và trắng phản xạ khác nhau

LED trên module phát ánh sáng hồng ngoại. Mặt trắng thường phản xạ nhiều ánh sáng về mắt thu hơn mặt đen. Mạch so sánh trên module đối chiếu tín hiệu với ngưỡng do biến trở đặt, rồi đưa ra chân DO chỉ còn hai trạng thái.

Khoảng cách là một phần của phép đo

Quá xa thì cả đen và trắng đều phản xạ yếu. Quá gần có thể làm mắt thu bão hoà hoặc cọ vào đường. Cảm biến còn bị ánh nắng và bề mặt bóng làm nhiễu. Một độ cao tốt phải cho hai mẫu ổn định qua nhiều lần thử, không chỉ đúng một lần.

Logic kích mức thấp

Module trong hồ sơ bo cho DO = 0 khi gặp vạch. Mã đổi ngay thành biến gap_vach đúng hoặc sai để phần còn lại dễ đọc. Nếu thay module, phải thử lại chứ không tự đổi bảng chân.

03

Linh kiện

Linh kiệnMô tả, lưu ý khi muaSố lượng · giá
ESP32 DevKit V1Bo 30 chân1 · 90–150k
Module dò line hồng ngoạiMột mắt, có ngõ DO và biến trở chỉnh ngưỡng1 · 10–20k
LED 5 mm và điện trở 220 ΩĐèn báo gặp vạch1 bộ · 700đ
Giấy trắng và băng dính đen mờLàm đường thử rộng 18–25 mm1 bộ
Miếng kê 5–20 mmGiữ độ cao cảm biếnvài miếng
04

Lắp mạch và sơ đồ nối dây

Đỏ · nguồn dương Đen · GND Vàng · SCL Xanh dương · SDA Trắng · tín hiệu Xanh lá · 1-Wire
KhốiNối dâyNguồn
Nguồn moduleVCC → 3V3 · GND → GNDDùng 3,3 V theo hồ sơ bo
Tín hiệu sốDO → GPIO27Module kích mức thấp được xử lí trong mã
LEDGPIO23 → 220 Ω → LED → GNDSáng khi nhận vạch đen
Mặt cảm biếnHướng xuống giấy, không chạm bề mặtBắt đầu ở độ cao khoảng 8 mm
B19.1 Ảnh thực

Module được cố định song song mặt giấy bằng miếng kê, phía dưới là băng dính đen trên giấy trắng.

Khung giữ chỗ — thay bằng ảnh chụp thật khi có
B19.2 Hình vẽ

VCC nối 3V3, GND chung, DO nối GPIO27, LED ngoài nối GPIO23.

Khung giữ chỗ — thay bằng ảnh chụp thật khi có
B19.3 Sơ đồ thí nghiệm

Ma trận thử ba độ cao với nền trắng, băng đen mờ và bề mặt đen bóng.

Khung giữ chỗ — thay bằng ảnh chụp thật khi có

Làm một đường thử lặp lại được

  1. Dán băng đen mờ thẳng trên giấy trắng, tránh nếp nhăn và mép bong.
  2. Nối VCC → 3V3, GND → GND, DO → GPIO27.
  3. Lắp LED ngoài ở GPIO23 qua điện trở 220 Ω.
  4. Cố định cảm biến song song mặt giấy, bắt đầu ở độ cao khoảng 8 mm.
  5. Đưa trắng rồi đen qua bên dưới; chỉnh biến trở rất chậm tới khi DO đổi ổn định.
Không nhìn sát LED hồng ngoại

Ánh sáng hồng ngoại khó thấy bằng mắt. Không áp mắt sát module để kiểm tra LED; quan sát đèn báo trên module hoặc dùng camera điện thoại từ khoảng cách bình thường.

Xoay biến trở đến hết hành trình

Biến trở nhỏ và khá mỏng. Dùng tua vít phù hợp, xoay nhẹ từng chút; khi đã tới cuối hành trình thì dừng, không cố vặn thêm.

05

Mã nguồn

Mã dùng MicroPython cho ESP32. Module cấp 3,3 V và chỉ đọc DO; bài chưa điều khiển động cơ hay xe.

Bước 1 — phân biệt vạch và nền
# Bai 19 - Cam bien do line mot mat
from machine import Pin
import time

# ===== CẤU HÌNH =====
CHAN_LINE = 27
CHAN_LED = 23
CHU_KY_MS = 100
# ====================

cam_bien = Pin(CHAN_LINE, Pin.IN)
led = Pin(CHAN_LED, Pin.OUT)

while True:
    # Module trong ho so bo kich muc thap: 0 nghia la gap vach.
    gap_vach = cam_bien.value() == 0

    if gap_vach:
        led.on()
        print("Vach den")
    else:
        led.off()
        print("Nen trang")

    time.sleep_ms(CHU_KY_MS)

Nếu màn hình luôn in một trạng thái, giữ nguyên mã và kiểm tra lần lượt nguồn, độ cao, biến trở ngưỡng. Chỉ khi module thật sự có logic ngược mới cần xem lại cấu hình.

Bước 2 — đếm số lần phân loại đúng
# Moi lan chay, dat MAU_THAT la "d" (den) hoac "t" (trang)
from machine import Pin
import time

cam_bien = Pin(27, Pin.IN)
MAU_THAT = "d"
so_dung = 0
for lan in range(20):
    gap_vach = cam_bien.value() == 0
    du_doan = "d" if gap_vach else "t"
    if du_doan == MAU_THAT:
        so_dung += 1
    print("Cam bien:", du_doan, "| Dung:", so_dung, "/", lan + 1)
    time.sleep_ms(500)

Chạy 20 lần với mẫu đen và MAU_THAT = "d", rồi làm lại trên giấy trắng với MAU_THAT = "t". Dịch cảm biến nhẹ giữa các lần để phép thử không lặp đúng một điểm duy nhất.

Em mô tả bằng tiếng Việt, hệ thống dựng thuật toán và chương trình, rồi nạp thẳng xuống ESP32 qua Wi-Fi.

06

Hiệu chuẩn và kiểm thử

Tìm độ cao làm việc tốt nhất

Độ caoĐúng trên trắng/10Đúng trên đen/10Tổng đúng/20Ghi chú
5 mm…………
8 mm…………
12 mm…………
20 mm…………

Danh sách kiểm

  • Module cấp 3,3 V, DO nối GPIO27.
  • Cảm biến cố định song song mặt giấy.
  • Biến trở được chỉnh bằng cả mẫu đen và trắng.
  • Độ cao được chọn từ ít nhất 20 lần thử.
  • LED GPIO23 báo đúng theo biến gap_vach.
07

Kinh nghiệm và cạm bẫy

Băng đen bóng có thể giống màu trắng

Khi dựng bài, tôi dùng băng keo điện đen bóng. Ở một góc, nó phản chiếu tia hồng ngoại thẳng về mắt thu và bị nhận nhầm là nền sáng. Đổi sang băng đen mờ và giữ cảm biến song song làm kết quả ổn định hơn hẳn.

Đèn báo module không phải kết quả cuối

Đèn nhỏ trên module cho biết bộ so sánh đã đổi trạng thái, nhưng sản phẩm cần đọc đúng ở ESP32. Nếu đèn module đổi mà mã không đổi, kiểm tra dây DO và GND chung.

08

Ứng dụng trong dạy học

Công nghệTin họcToánSTEM

Tin học — một bộ phân loại hai lớp

Đen và trắng là hai nhãn; trạng thái DO là dự đoán. Từ 20 phép thử, học sinh tính độ chính xác và xem riêng lỗi trên từng lớp. Đây là phiên bản rất cụ thể của bài toán phân loại.

Công nghệ — chưa cần xe vẫn học được phần cốt lõi

Độ cao, vật liệu đường và ánh sáng ngoài là các ràng buộc thiết kế. Chốt được chúng trước giúp bài xe robot sau này dành thời gian cho điều khiển động cơ.

Bài học STEM 5 hoạt động — “Máy kiểm tra vạch dẫn đường”

Hoạt động 1 — Xác định vấn đề. Cần chọn vật liệu vạch để robot mô hình nhận ổn định.

Tiêu chí sản phẩm: đúng ít nhất 18/20 lần; làm việc ở độ cao có thể lắp được; dùng 3,3 V.

Hoạt động 2 — Kiến thức nền. Phản xạ hồng ngoại, ngưỡng và logic kích thấp.

Hoạt động 3 — Đề xuất phương án. Chọn băng mờ, độ rộng vạch và cơ cấu giữ độ cao.

Hoạt động 4 — Chế tạo và thử. Thử chéo các vật liệu ở nhiều độ cao.

Hoạt động 5 — Báo cáo và điều chỉnh. Chọn cấu hình có tổng lỗi thấp nhất và nêu điều kiện sử dụng.

Hướng mở rộng
  • Thử dưới ánh sáng phòng và gần cửa sổ.
  • So băng đen mờ, mực in và giấy màu.
  • Ghép hai cảm biến để xác định vạch lệch trái hay phải.
  • Hướng thi Khoa học kĩ thuật: vật liệu dẫn đường bền và dễ nhận cho robot giáo dục.