ESP8266 Cảm biến siêu âm
Hướng dẫn này chỉ cho bạn cách sử dụng ESP8266 và cảm biến siêu âm để đo khoảng cách đến các vật thể hoặc chướng ngại vật. Cụ thể, chúng ta sẽ tìm hiểu:
- Cách cảm biến siêu âm hoạt động
- Cách kết nối cảm biến siêu âm với ESP8266
- Cách lập trình ESP8266 để đo khoảng cách bằng cảm biến siêu âm
- Cách lọc nhiễu khỏi các phép đo khoảng cách của cảm biến siêu âm trong mã ESP8266
Phần cứng cần chuẩn bị
| 1 | × | ESP8266 NodeMCU ESP-12E | ||
| 1 | × | Recommended: ESP8266 NodeMCU ESP-12E (Uno-form) | ||
| 1 | × | USB Cable Type-A to Type-C (for USB-A PC) | ||
| 1 | × | USB Cable Type-C to Type-C (for USB-C PC) | ||
| 1 | × | cảm biến siêu âm | ||
| 1 | × | dây jumper | ||
| 1 | × | (Khuyến nghị) Screw Terminal Expansion Board for ESP8266 | ||
| 1 | × | (Khuyến nghị) Power Splitter for ESP8266 Type-C |
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 để xác định khoảng cách tới một vật thể bằng cách sử dụng sóng siêu âm.
Bố trí chân của 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ừ ESP8266.
- Chân ECHO: chân này gửi tín hiệu (xung) tới ESP8266. ESP8266 đo độ dài của xung để tính khoảng cách.

Cách hoạt động
- Vi điều khiển tạo ra một xung dài 10 µs trên chân TRIG, xung này kích hoạt cảm biến siêu âm phát ra sóng siêu âm.
- Sóng siêu âm bị phản xạ sau khi va phải một vật cản.
- Cảm biến siêu âm sau đó phát hiện sóng siêu âm phản xạ và đo thời gian lan truyền của nó.
- Cảm biến siêu âm tạo ra một xung trên chân ECHO, với thời lượng xung bằng với thời gian lan truyền của sóng siêu âm.
- Vi điều khiển đo thời lượng xung trên chân ECHO và tính khoảng cách giữa cảm biến và vật cản.
Cách đo khoảng cách từ cảm biến siêu âm
- Để tính khoảng cách từ cảm biến siêu âm, hai bước phải được thực hiện (1 và 6 ở phần Cách nó hoạt động):
- Tạo một xung 10 microgiây trên chân TRIG.
- Đo thời lượng xung trên chân ECHO.
- 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
ESP8266 - Cảm biến siêu âm
Chúng ta có thể sử dụng hai chân GPIO của ESP8266 để đo khoảng cách từ cảm biến siêu âm: một chân được nối vào chân TRIG để phát ra xung 10µs, và chân kia được nối vào chân ECHO để đo xung từ cảm biến.
Sơ đồ đấu dây

This image is created using Fritzing. Click to enlarge image
Xem thêm Sơ đồ chân ESP8266 và Cách cấp nguồn cho ESP8266.
Cách Lập Trình Cho Cảm Biến Siêu Âm
- Tạo một xung 10 vi giây trên chân D5 của ESP8266 bằng cách sử dụng các hàm digitalWrite() và delayMicroseconds(). Ví dụ:
- Đặt chân ở mức HIGH bằng digitalWrite(), sau đó trì hoãn 10 vi giây bằng delayMicroseconds(), rồi đặt chân ở mức LOW bằng digitalWrite().
- Đo thời lượng xung (µs) trên chân D6 của Arduino bằng cách sử dụng hàm pulseIn(). Ví dụ:
- Tính khoảng cách (cm):
Mã ESP8266
Hướng dẫn từng bước
Để bắt đầu với ESP8266 trên Arduino IDE, hãy làm theo các bước sau:
- Hãy xem hướng dẫn ESP8266 - Cài đặt phần mềm nếu đây là lần đầu bạn sử dụng ESP8266.
- Nối các linh kiện như được hiển thị trong sơ đồ.
- Kết nối bo mạch ESP8266 với máy tính của bạn bằng cáp USB.
- Mở Arduino IDE trên máy tính của bạn.
- Chọn bo mạch ESP8266 phù hợp, chẳng hạn (ví dụ: NodeMCU 1.0 (ESP-12E Module)), và cổng COM tương ứng của nó.
- Sao chép mã nguồn và mở nó trong Arduino IDE.
- Nhấp vào nút Tải lên trên Arduino IDE để biên dịch và tải mã lên ESP8266.

- Mở Serial Monitor
- Di chuyển tay bạn quanh cảm biến siêu âm
- Xem khoảng cách giữa cảm biến và tay bạn được hiển thị trên Serial Monitor
Giải thích mã nguồn
Hãy xem lời giải thích theo từng dòng được chứa trong các chú thích của mã nguồ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 có thể bị nhiễu, điều này có thể dẫn đến các thao tác không mong muốn trong một số ứng dụng. Để loại bỏ nhiễu, thuật toán sau có thể được sử dụng:
- Đo nhiều lần và lưu chúng vào một mảng
- Sắp xếp mảng theo thứ tự tăng dần
- Lọc bỏ nhiễu
- Một số mẫu nhỏ nhất được xem là nhiễu → bỏ qua chúng
- Một số mẫu lớn nhất được xem là nhiễu → bỏ qua chúng
- Tính giá trị trung bình của các mẫu ở giữa
- Năm mẫu nhỏ nhất nên được bỏ qua.
- Năm mẫu lớn nhất nên được bỏ qua.
- Trung bình của 10 mẫu ở giữa (từ mẫu thứ năm đến mẫu thứ mười bốn) nên được tính.
Đ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ử thách bản thân
Sử dụng cảm biến siêu âm cho bất kỳ dự án nào trong số các dự án sau đây:
- Xây dựng một hệ thống tránh va chạm cho một chiếc xe ô tô điều khiển từ xa.
- Ước lượng mức đầy của 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 ý: Xem ESP8266 - Động cơ servo.
Các ứng dụng của cảm biến siêu âm
- Phòng ngừa va chạm
- Ước tính dung lượng
- Ước tính chiều cao
- Nhận diện các vật thể ở gần