Raspberry Pi Cảm Biến Siêu Âm
Hướng dẫn này sẽ chỉ cho bạn cách sử dụng Raspberry Pi và cảm biến siêu âm để đo khoảng cách đến vật cản hoặc đối tượng. Cụ thể, chúng ta sẽ học:
- Cách hoạt động của cảm biến siêu âm
- Cách kết nối cảm biến siêu âm với Raspberry Pi
- Cách lập trình Raspberry Pi để đo khoảng cách bằng cảm biến siêu âm
- 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 trong code Raspberry Pi
Phần Cứng Cần Thiết
| 1 | × | Raspberry Pi 5 | ||
| 1 | × | Cảm Biến Siêu Âm | ||
| 1 | × | Dây Jumper | ||
| 1 | × | (Khuyến nghị) Screw Terminal Block Shield for Raspberry Pi | ||
| 1 | × | (Khuyến nghị) Raspberry Pi Prototyping Base Plate & Breadboard Kit | ||
| 1 | × | (Khuyến nghị) HDMI Touch Screen Monitor for Raspberry Pi |
Or you can buy the following kits:
| 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 sử dụng để tính toán khoảng cách đến một vật thể bằng cách sử dụng sóng siêu âm.
Sơ Đồ Chân Cảm Biến Siêu Âm
Cảm biến siêu âm HC-SR04 có bốn chân:
- Chân VCC: phải được kết nối với VCC (5V)
- Chân GND: phải đượ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ừ Raspberry Pi
- Chân ECHO: chân này gửi tín hiệu (xung) đến Raspberry Pi. Raspberry Pi đo độ dài xung để tính toán khoảng cách.

Cách Hoạt Động
- Vi điều khiển tạo ra một xung 10 microsecond trên chân TRIG, khiến cảm biến siêu âm tự động phát ra sóng siêu âm.
- Khi sóng va chạm vào vật cản, chúng được phản xạ trở lại cảm biến.
- Cảm biến siêu âm sau đó phát hiện sóng phản xạ và đo thời gian truyền của nó.
- Kết quả là, cảm biến siêu âm tạo ra một xung đến chân ECHO, với thời lượng xung bằng thời gian truyền của sóng siêu âm.
- Vi điều khiển đo thời lượng xung ở chân ECHO và tính toán khoảng cách giữa cảm biến và vật cản.
Cách Lấy Khoảng Cách Từ Cảm Biến Siêu Âm
- Để tính toán khoảng cách từ cảm biến siêu âm, cần thực hiện hai bước như được nêu trong phần "Cách Hoạt Động" (bước 1 và 6):
- Tạo ra một xung 10 microsecond trên chân TRIG.
- Đo thời lượng xung ở chân ECHO.
- Sử dụng thời lượng xung đo được để tính toán khoảng cách giữa cảm biến và vật cản.
Tính Toán Khoảng Cách
Ta 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:
- Quãng đường 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
Raspberry Pi - Cảm Biến Siêu Âm
Các chân của Raspberry Pi có thể tạo ra xung 10 microsecond và đo độ dài của xung. Điều này cho phép chúng ta tính toán khoảng cách từ cảm biến siêu âm bằng cách sử dụng hai chân Raspberry Pi. Vậy, chúng ta chỉ cần sử dụng hai chân của Raspberry Pi:
- Một chân được kết nối với chân TRIG của cảm biến siêu âm để tạo ra xung 10µs.
- Chân còn lại được kết nối với chân ECHO của cảm biến siêu âm để đo xung từ cảm biến
Sơ Đồ Kết Nối

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 xung 10 microsecond trên chân 9 của Raspberry Pi bằng cách sử dụng các hàm GPIO.output() và time.sleep().
- Ví dụ:
- Đặt chân 9 ở mức HIGH với digitalWrite() và sau đó delay 10 microseconds với delayMicroseconds().
- Xác định thời lượng xung (µs) trên chân 8 của Raspberry Pi bằng cách sử dụng hàm pulseIn(). Ví dụ:
- Xác định khoảng cách (cm):
Code Raspberry Pi
Các Bước Thực Hiện
- Đảm bảo bạn đã cài đặt Raspbian hoặc hệ điều hành tương thích Raspberry Pi khác trên Pi của bạn.
- Đảm bảo Raspberry Pi của bạn được kết nối với cùng mạng cục bộ với PC của bạn.
- Đảm bảo Raspberry Pi của bạn được kết nối internet nếu bạn cần cài đặt một số thư viện.
- Nếu đây là lần đầu tiên bạn sử dụng Raspberry Pi, hãy xem Raspberry Pi - Cài Đặt Phần Mềm
- Kết nối PC của bạn với Raspberry Pi thông qua SSH sử dụng SSH client tích hợp trên Linux và macOS hoặc PuTTY trên Windows. Xem cách kết nối PC với Raspberry Pi qua SSH.
- Đảm bảo bạn đã cài đặt thư viện RPi.GPIO. Nếu chưa, hãy cài đặt bằng lệnh sau:
- Tạo file script Python ultrasonic_sensor.py và thêm code sau:
- Lưu file và chạy script Python bằng cách thực thi lệnh sau trong terminal:
- Đặt tay bạn trước cảm biến siêu âm
- Kiểm tra khoảng cách giữa cảm biến và bàn tay của bạn hiển thị trên Terminal
Script chạy trong vòng lặp vô hạn liên tục cho đến khi bạn nhấn Ctrl + C trong terminal.
Giải Thích Code
Hãy xem giải thích từng dòng có trong các comment của mã nguồn!
Cách Lọc Nhiễu Từ 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 có thể chứa nhiễu dẫn đến hoạt động không mong muốn trong một số ứng dụng. Để loại bỏ nhiễu này, có thể sử dụng thuật toán sau:
- Thực hiện nhiều phép đo và lưu chúng trong một mảng
- Sắp xếp mảng theo thứ tự tăng dần
- Lọc nhiễu bằng cách:
- Các mẫu nhỏ nhất được coi là nhiễu và nên bỏ qua
- Các mẫu lớn nhất được coi là nhiễu và nên bỏ qua
- Lấy trung bình của các mẫu ở giữa làm giá trị đo
- Bỏ qua năm mẫu nhỏ nhất, được coi là nhiễu.
- Bỏ qua năm mẫu lớn nhất, cũng được coi là nhiễu.
- Lấy trung bình của 10 mẫu ở giữa (từ thứ 5 đến thứ 14).
Code ví dụ sau 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ử Thách Bản Thân
Sử dụng cảm biến siêu âm để hoàn thành một trong các dự án sau:
- Xây dựng hệ thống tránh va chạm cho xe điều khiển từ xa.
- Đo lượng vật liệu trong thùng rác.
- Giám sát mức độ đầy của thùng rác.
- Tự động mở và đóng thùng rác. Gợi ý: Tham khảo Raspberry Pi - Servo Motor.
Ứng Dụng Cảm Biến Siêu Âm
- Tránh Va Chạm
- Phát Hiện Độ Đầy
- Đo Mức Độ
- Phát Hiện Gần