Bài 17 · Công nghệ
Cảm biến chuyển động PIR
nhìn sự thay đổi nhiệt, không chụp ảnh và không nhận dạng người
PIR thường được gọi là cảm biến người, nhưng cách gọi ấy dễ làm ta hiểu quá khả năng của nó. Cảm biến chỉ phản ứng với sự thay đổi bức xạ hồng ngoại trong vùng nhìn. Không có camera, không biết ai đang đi qua và cũng không đo được khoảng cách.
01 Mục tiêu và yêu cầu cần đạt
Bài này là dịp tốt để nói về giới hạn cảm biến và quyền riêng tư. PIR chỉ trả về một bit có hoặc không có thay đổi. Nó phù hợp để đếm lần kích hoạt, nhưng không đủ căn cứ để kết luận ai có mặt hay một phòng chắc chắn đang trống.
Sau bài này học sinh làm được
- Giải thích PIR phản ứng với thay đổi bức xạ hồng ngoại.
- Đọc tín hiệu số từ GPIO27 và điều khiển LED ở GPIO23.
- Đo thời gian ổn định sau cấp nguồn và thời gian giữ tín hiệu.
- So sánh khả năng phát hiện khi đi ngang và đi thẳng.
- Nêu được giới hạn: không đo khoảng cách, không nhận dạng và có thể báo sai.
- Công nghệ — cảm biến đầu vào, hệ thống điều khiển và đánh giá giải pháp.
- Tin học — dữ liệu logic, rẽ nhánh và nguyên tắc tối thiểu hoá dữ liệu.
Đối chiếu chương trình môn và khối lớp cụ thể trước khi đưa vào kế hoạch bài dạy.
02 Lí thuyết
PIR nhìn sự thay đổi giữa các vùng
Phần tử pyroelectric bên trong phản ứng với thay đổi bức xạ hồng ngoại. Thấu kính trắng chia vùng nhìn thành nhiều vùng nhỏ. Khi một vật ấm di chuyển từ vùng này sang vùng khác, tín hiệu thay đổi rõ và module đưa chân OUT lên mức cao.
Đi ngang thường dễ thấy hơn đi thẳng
Đi ngang cắt qua nhiều vùng của thấu kính, nên tín hiệu thay đổi liên tiếp. Đi thẳng về phía cảm biến có thể tạo thay đổi nhỏ hơn. Kết quả còn phụ thuộc nhiệt độ phòng, quần áo, tốc độ và vị trí đặt cảm biến.
Một biến trở chỉnh độ nhạy, biến trở kia chỉnh thời gian OUT giữ mức cao. Nếu xoay cả hai cùng lúc, ta không biết thay đổi do đâu. Giữ một núm cố định, đo núm còn lại rồi mới đổi vai.
03 Linh kiện
| Linh kiện | Mô tả, lưu ý khi mua | Số lượng · giá |
|---|---|---|
| ESP32 DevKit V1 | Bo 30 chân | 1 · 90–150k |
| PIR HC-SR501 | Module có hai biến trở chỉnh độ nhạy và độ trễ | 1 · 20–30k |
| LED 5 mm và điện trở 220 Ω | Đèn báo chuyển động | 1 bộ · 700đ |
| Thước dây và băng dính giấy | Đánh dấu vị trí thử | 1 bộ |
04 Lắp mạch và sơ đồ nối dây
| Khối | Nối dây | Nguồn |
|---|---|---|
| Nguồn PIR | VCC → 5V của ESP32 · GND → GND | Nguồn thấp áp từ USB, không dùng nguồn ngoài |
| Tín hiệu PIR | OUT → GPIO27 | OUT mức logic phù hợp để ESP32 đọc |
| LED | GPIO23 → 220 Ω → LED → GND | LED sáng khi OUT ở mức cao |
| Hai biến trở | Giữ vị trí giữa lúc bắt đầu | Sau đó chỉ đổi từng biến một |
PIR hướng ra khoảng trống, ESP32 và LED đặt phía sau, có vạch khoảng cách trên sàn.
Khung giữ chỗ — thay bằng ảnh chụp thật khi cóVCC PIR nối 5V, GND chung, OUT nối GPIO27 và LED nối GPIO23.
Khung giữ chỗ — thay bằng ảnh chụp thật khi cóHai đường di chuyển: đi ngang qua vùng nhìn và đi thẳng về phía cảm biến.
Khung giữ chỗ — thay bằng ảnh chụp thật khi cóĐể cảm biến nhìn ra khoảng trống
- Rút USB, xác định đúng ba chân VCC, OUT, GND theo chữ in trên module.
- Nối
VCC → 5V,GND → GND,OUT → GPIO27. - Lắp LED ở
GPIO23qua điện trở 220 Ω. - Đặt PIR cố định, tránh hướng vào cửa sổ nắng, quạt sưởi hoặc rèm lay động.
- Cấp nguồn và không đi trước cảm biến trong ít nhất 30 giây.
Chân 5V ở đây là nguồn thấp áp từ cổng USB để nuôi module. Không nối PIR với điện lưới, đèn 220 V hay bất kì tải điện áp cao nào.
Người ngồi yên lâu có thể không kích hoạt PIR. Vì vậy sản phẩm lớp học chỉ báo “vừa có chuyển động”, không gắn nhãn “có người” hoặc dùng để giám sát cá nhân.
05 Mã nguồn
Mã dùng MicroPython cho ESP32. PIR không ghi hình hay nhận dạng; thử trong lớp bằng chuyển động bình thường, không thu dữ liệu định danh.
Bước 1 — báo chuyển động# Bai 17 - Cam bien chuyen dong PIR HC-SR501
from machine import Pin
import time
# ===== CẤU HÌNH =====
CHAN_PIR = 27
CHAN_LED = 23
CHU_KY_MS = 300
# ====================
pir = Pin(CHAN_PIR, Pin.IN)
led = Pin(CHAN_LED, Pin.OUT)
print("Cho PIR on dinh sau khi cap nguon...")
time.sleep_ms(30000)
while True:
co_chuyen_dong = pir.value() == 1
if co_chuyen_dong:
led.on()
print("Co chuyen dong")
else:
led.off()
time.sleep_ms(CHU_KY_MS) Dòng chờ 30 giây là thời gian khởi động thực hành, không phải con số cố định cho mọi module. Nếu OUT vẫn đổi bất thường, chờ thêm và kiểm tra hướng nhìn.
Bước 2 — đo thời gian giữ mức cao# Do khoang thoi gian OUT giu muc 1
from machine import Pin
import time
pir = Pin(27, Pin.IN)
print("Cho PIR on dinh...")
time.sleep_ms(30000)
bat_dau = None
trang_thai_cu = pir.value()
while True:
trang_thai = pir.value()
if trang_thai == 1 and trang_thai_cu == 0:
bat_dau = time.ticks_ms()
print("Bat dau bao")
elif trang_thai == 0 and trang_thai_cu == 1 and bat_dau is not None:
do_tre = time.ticks_diff(time.ticks_ms(), bat_dau)
print("Giu muc cao:", do_tre, "ms")
trang_thai_cu = trang_thai
time.sleep_ms(20) Mỗi lần đi qua chỉ ghi một khoảng thời gian. Xoay rất nhẹ núm trễ, thử lại cùng đường đi và so sánh. Không vừa xoay độ nhạy vừa xoay độ trễ.
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ử
Lập bản đồ phát hiện đơn giản
| Khoảng cách | Đi ngang: số lần phát hiện/5 | Đi thẳng: số lần phát hiện/5 | Ghi chú |
|---|---|---|---|
| 1 m | …/5 | …/5 | … |
| 2 m | …/5 | …/5 | … |
| 3 m | …/5 | …/5 | … |
Danh sách kiểm
- PIR ổn định sau cấp nguồn trước khi ghi dữ liệu.
- OUT nối GPIO27, LED nối GPIO23.
- Mỗi điều kiện được thử ít nhất năm lần.
- Chỉ thay đổi một biến trở trong mỗi lượt khảo sát.
- Kết luận dùng từ “phát hiện chuyển động”, không nói “nhận dạng người”.
07 Kinh nghiệm và cạm bẫy
Lần đầu dựng bài, tôi nhìn sát LED để chờ nó tắt. Chính việc bước qua lại kiểm tra dây đã liên tục kích hoạt cảm biến. Đặt máy tính sang một bên và đứng sau PIR giúp tách lỗi mạch khỏi chuyển động của người thử.
OUT có thể giữ mức 1 nhiều giây dù người đã đi khỏi. Đây là thiết lập của module, không phải vòng lặp bị treo. Đo cạnh lên và cạnh xuống sẽ nhìn ra ngay.
08 Ứng dụng trong dạy học
Công nghệ — đặc tính cảm biến quyết định thiết kế
Muốn đặt PIR ở hành lang, học sinh phải biết vùng nhìn, hướng chuyển động thuận lợi và thời gian trễ. Một chương trình đúng không cứu được vị trí lắp sai.
Tin học — dữ liệu tối thiểu vẫn giải quyết được việc
PIR chỉ tạo một bit và không thu hình ảnh. Đây là ví dụ rõ về chọn loại dữ liệu ít xâm phạm hơn khi bài toán chỉ cần biết vừa có chuyển động.
Hoạt động 1 — Xác định vấn đề. Cần báo có người vừa đi qua một lối tối trong mô hình.
Tiêu chí sản phẩm: phát hiện ít nhất 4/5 lần ở 2 m; không dùng camera; chỉ điều khiển LED thấp áp.
Hoạt động 2 — Kiến thức nền. Hồng ngoại, vùng nhìn, tín hiệu số và độ trễ.
Hoạt động 3 — Đề xuất phương án. So vị trí và góc đặt PIR bằng sơ đồ.
Hoạt động 4 — Chế tạo và thử. Thử hai hướng đi ở ba khoảng cách.
Hoạt động 5 — Báo cáo và điều chỉnh. Chọn góc cho tỉ lệ phát hiện cao nhất, nêu giới hạn.
- Đếm số lần kích hoạt theo từng khoảng 10 phút mà không lưu thông tin cá nhân.
- So ảnh hưởng của nhiệt độ phòng tới khoảng cách phát hiện.
- Thêm trạng thái chờ để tránh đếm nhiều lần trong một lượt đi qua.
- Hướng thi Khoa học kĩ thuật: bố trí chiếu sáng thấp áp tiết kiệm cho mô hình hành lang.