Arduino Cảm biến siêu âm
Trong hướng dẫn này, chúng ta sẽ học:
- Cảm biến siêu âm hoạt động như thế nào
- Cách kết nối cảm biến siêu âm với Arduino
- Cách lập trình Arduino để đọc trạng thái từ cảm biến siêu âm
- Cách sử dụng Arduino và cảm biến siêu âm HC-SR04 để đo khoảng cách đến một vật thể
- Cách lọc nhiễu từ các phép đo khoảng cách bằng cảm biến siêu âm trong mã Arduino
Phần cứng cần chuẩn bị
| 1 | × | Arduino Uno R3 | ||
| 1 | × | USB 2.0 cable type A/B (for USB-A PC) | ||
| 1 | × | USB 2.0 cable type C/B (for USB-C PC) | ||
| 1 | × | cảm biến siêu âm | ||
| 1 | × | dây jumper | ||
| 1 | × | (Khuyến nghị) Screw Terminal Block Shield for Arduino Uno | ||
| 1 | × | (Khuyến nghị) Breadboard Shield for Arduino Uno | ||
| 1 | × | (Khuyến nghị) Enclosure for Arduino Uno | ||
| 1 | × | (Khuyến nghị) Prototyping Base Plate & Breadboard Kit for Arduino UNO |
Or you can buy the following kits:
| 1 | × | DIYables STEM V3 Starter Kit (Arduino included) | ||
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | ||
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Về cảm biến siêu âm
Cảm biến siêu âm HC-SR04 được dùng để đo khoảng cách tới một vật thể bằng sóng siêu âm.
Sơ đồ chân
Cảm biến siêu âm HC-SR04 gồm bốn chân:
- Chân VCC: cần được kết nối với VCC (5V)
- Chân GND: cần được kết nối với GND (0V)
- Chân TRIG: chân này nhận tín hiệu điều khiển (xung) từ Arduino.
- Chân ECHO: chân này gửi một tín hiệu (xung) tới Arduino. Arduino đo thời lượng của xung để tính khoảng cách.

Cách hoạt động
- Vi xử lý: tạo một xung 10 microgiây trên chân TRIG.
- Cảm biến siêu âm tự động phát ra sóng siêu âm.
- Sóng siêu âm được phản xạ sau khi va chạm với một vật cản.
- Cảm biến siêu âm:
- Phát hiện sóng siêu âm phản xạ.
- đo thời gian truyền của sóng siêu âm.
Cách đo khoảng cách từ cảm biến siêu âm
Để lấy khoảng cách từ cảm biến siêu âm, chúng ta chỉ cần thực hiện hai bước (1 và 6 trong phần How It Works)
- Tạo một xung 10 microgiây trên chân TRIG
- Đo thời lượng của xung trên chân ECHO, và sau đó tính khoảng cách giữa cảm biến và vật cản
Tính toán khoảng cách
Chúng tôi có:
- Thời gian truyền của sóng siêu âm (µs): travel_time = pulse_duration
- Tốc độ của sóng siêu âm: speed = SPEED_OF_SOUND = 340 m/s = 0.034 cm/µs
Vậy:
- Khoảng cách lan truyền của sóng siêu âm (cm): travel_distance = speed × travel_time = 0.034 × pulse_duration
- Khoảng cách giữa cảm biến và vật cản (cm): distance = travel_distance / 2 = 0.034 × pulse_duration / 2 = 0.017 × pulse_duration
Arduino - Cảm biến Siêu âm
Các chân của Arduino có thể tạo ra một xung dài 10 micro giây và đo thời lượng của xung. Do đó, chúng ta có thể xác định khoảng cách từ cảm biến siêu âm bằng cách sử dụng hai chân của Arduino:
- Một chân được nối tới TRIG PIN để tạo xung 10µs cho chân TRIG của cảm biến
- Một chân khác được nối tới ECHO PIN để đo xung từ cảm biến
Sơ đồ đấu dây

This image is created using Fritzing. Click to enlarge image
Cách Lập Trình Cho Cảm Biến Siêu Âm
- Tạo một xung dài 10 microgiây trên một chân của Arduino bằng cách sử dụng các hàm digitalWrite() và delayMicroseconds(). Ví dụ, chân số 9:
- Đo thời gian xung (µs) trên chân của Arduino bằng cách sử dụng hàm pulseIn(). Ví dụ, chân 8:
- Tính khoảng cách (cm):
Mã Arduino
Hướng dẫn từng bước
- Sao chép mã ở trên và mở bằng Arduino IDE
- Nhấn nút Tải lên trên Arduino IDE để tải mã lên Arduino

- Mở Serial Monitor
- Di chuyển tay của bạn trước cảm biến siêu âm
- Xem khoảng cách từ cảm biến đến tay bạn trên Serial Monitor
Giải thích mã nguồn
Bạn có thể tìm lời giải thích trong các dòng chú thích của mã Arduino ở trên.
Cách lọc nhiễu từ các phép đo khoảng cách của cảm biến siêu âm
Kết quả đo từ cảm biến siêu âm chứa nhiễu. Trong một số ứng dụng, kết quả bị nhiễu gây ra thao tác không mong muốn. Chúng ta có thể loại bỏ nhiễu bằng cách sử dụng thuật toán sau:
- Lấy nhiều lần đo và lưu vào một mảng
- Sắp xếp mảng theo thứ tự tăng dần
- Lọc nhiễu
- Những mẫu nhỏ nhất được xem là nhiễu → bỏ qua
- Những mẫu lớn nhất được xem là nhiễu → bỏ qua
- ⇒ lấy trung bình của các mẫu ở giữa
- Năm mẫu nhỏ nhất được xem là nhiễu → bỏ qua chúng
- Năm mẫu lớn nhất được xem là nhiễu → bỏ qua chúng
- ⇒ lấy trung bình của 10 mẫu ở giữa (từ mẫu thứ 5 đến mẫu thứ 14)
Đoạn mã ví dụ dưới đây thực hiện 20 phép đo.
Video Tutorial
Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.
Thách thức bản thân
Sử dụng cảm biến siêu âm để thực hiện một trong các dự án sau:
- Phòng tránh va chạm cho xe điều khiển từ xa.
- Phát hiện mức đầy của thùng rác.
- Giám sát mức độ của thùng rác.
- Mở và đóng thùng rác tự động. Gợi ý: Tham khảo Arduino - Động cơ servo.
Kiến thức bổ sung
Một số nhà sản xuất cung cấp cảm biến siêu âm có 3 chân. Tín hiệu TRIG và tín hiệu ECHO ở chung một chân. Trong trường hợp này, chúng ta chỉ cần dùng một chân của Arduino cho cả hai mục đích: phát xung tới cảm biến và đo xung từ cảm biến.
Ứng dụng của cảm biến siêu âm
- Phòng tránh va chạm
- Phát hiện mức đầy
- Đo mức
- Phát hiện gần