Trung cấp 75-90 phút practiceMiễn phí

Microphone và âm thanh số

Bài 3 trong khóa Robot Thế hệ 4 — Điều khiển giọng nói và tương tác thông minh

Microphone và âm thanh số

G4 02 - Microphone và âm thanh số

Linh kiện cần chuẩn bị

  • 1 ESP32-S3 DevKit.
  • 1 module cảm biến âm thanh analog có chân AO.
  • Dây jumper, breadboard, cáp USB data.
  • Máy tính có Arduino IDE hoặc Arduino CLI, Serial Monitor 115200 baud.
  • Bảng log gồm: min, max, peak_to_peak, level_pct, điều kiện âm thanh.

Code bài này chỉ dùng ESP32-S3 và sound sensor AO. Không dùng LED, buzzer, motor hoặc module khác.

Bài này giúp bạn làm được gì?

Raw analog thay đổi rất nhanh. Nếu chỉ đọc một mẫu, robot dễ hiểu sai. Bài này đọc nhiều mẫu trong 50 ms, lấy min/max và tính peak_to_peak để biểu diễn mức âm lượng.

Kết quả cuối bài:

  • Đọc được cửa sổ âm thanh 50 ms.
  • In min, max, peak_to_peak, level_pct.
  • Biết vì sao tiếng vỗ tay tạo peak lớn hơn tiếng nói nhẹ.

Pin map

Chức năngESP32-S3Thiết bịGhi chú
Sound AOGPIO4AO của sound sensorTín hiệu analog
3V33V3VCC sensorGiữ AO trong 0-3.3V
GNDGNDGND sensorBắt buộc

Thực hành từng bước

Bước 1: Upload code

Code hoàn chỉnh nằm tại:

code/g4-02-microphone-va-am-thanh-so/g4-02-microphone-va-am-thanh-so.ino

Log:

G4 02 sound window reader
time_ms,min,max,peak_to_peak,level_pct

Bước 2: Ghi 3 điều kiện

Ghi ít nhất 10 dòng cho mỗi điều kiện:

Điều kiệnDự đoán
Yên lặngpeak_to_peak thấp
Nói gần microphonepeak_to_peak trung bình
Vỗ taypeak_to_peak cao

Bước 3: Vẽ bảng nhanh

Tạo bảng trung bình level_pct cho 3 điều kiện. Không cần đồ thị đẹp; điều quan trọng là số liệu có phân biệt được âm lượng.

Giải thích code

Code đọc liên tục trong 50 ms:

while (millis() - startMs < SAMPLE_WINDOW_MS) {
  int raw = analogRead(PIN_SOUND);
  minValue = min(minValue, raw);
  maxValue = max(maxValue, raw);
}

peak_to_peak = max - min cho biết dao động âm thanh trong cửa sổ đó.

Kiểm thử thật

TestThao tácKết quả mong đợiPass?
1Yên lặnglevel_pct thấp
2Nói “robot”level_pct tăng
3Vỗ taylevel_pct cao nhất
4Đưa microphone xa miệng hơnLevel giảm
5Ghi 30 dòngCó dữ liệu đủ để lấy trung bình

Lỗi thường gặp và cách sửa

LỗiNguyên nhânCách sửa
peak_to_peak luôn 0AO không nối hoặc sensor hỏngKiểm dây AO/GND/VCC
level_pct luôn 100Module quá nhạy hoặc nhiễu nguồnGiảm biến trở độ nhạy, dây ngắn
Số nhảy mạnh khi yên lặngBàn rung, dây lỏngCố định sensor, kiểm jumper

Checklist debug

  • Có log min/max.
  • peak_to_peak phân biệt được yên lặng và vỗ tay.
  • Có bảng trung bình 3 điều kiện.
  • Học viên giải thích được vì sao dùng cửa sổ 50 ms.

Thử thách nhỏ

Đổi SAMPLE_WINDOW_MS thành 20 ms và 100 ms, đo lại level. Chọn cửa sổ phù hợp và giải thích bằng log.

Checklist hoàn thành

  • Đọc được âm lượng dạng số.
  • Có bảng so sánh điều kiện âm thanh.
  • Sẵn sàng sang G4 03 kiểm wiring AO/DO và event âm thanh.

Bài tiếp theo

G4 03 sẽ kiểm tra cả ngõ analog AO và ngõ digital DO của module để biết khi nào âm thanh được coi là một event.


Điều hướng bài học

Bài tiếp theo: G4 03 - Kết nối microphone I2S hoặc voice module

Bài trước: G4 01 - Robot biết nghe là gì