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

Robot biết nghe là gì

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

Robot biết nghe là gì

G4 01 - Robot biết nghe là gì

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, ví dụ KY-038/KY-037 hoặc module microphone analog tương đương.
  • 1 LED trạng thái nối GPIO2 qua điện trở 220 ohm, hoặc LED có sẵn trên board nếu phù hợp.
  • 1 buzzer active 3.3V nối GPIO15.
  • 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: time_ms, raw, level, led, nhận xét âm thanh.

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

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

Robot “biết nghe” không có nghĩa là hiểu câu nói ngay lập tức. Bước đầu tiên là đọc được tín hiệu âm thanh thật, thấy số thay đổi khi có tiếng vỗ tay hoặc tiếng nói gần microphone.

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

  • ESP32-S3 đọc analog từ sound sensor.
  • LED bật khi âm thanh vượt ngưỡng lớn.
  • Serial in raw value và mức LOW/MID/HIGH.
  • Học viên biết phân biệt “đọc âm thanh” và “hiểu lệnh”.

Pin map

Chức năngESP32-S3Thiết bịGhi chú
Sound AOGPIO4AO của sound sensorTín hiệu analog 0-3.3V
LEDGPIO2LED + điện trởBật khi âm thanh lớn
BuzzerGPIO15Buzzer activeBíp khi boot
3V33V3VCC sensorKhông cấp 5V vào AO nếu AO vượt 3.3V
GNDGNDGND sensor/buzzerBắt buộc chung GND

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

Bước 1: Lắp mạch

Nối AO của sound sensor vào GPIO4. Nếu module có biến trở chỉnh độ nhạy, để ở mức giữa. Không nối motor trong bài này để tránh nhiễu nguồn.

Bước 2: Upload code

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

code/g4-01-robot-biet-nghe-la-gi/g4-01-robot-biet-nghe-la-gi.ino

Log khởi động:

G4 01 sound bring-up ready
time_ms,raw,level,led

Bước 3: Tạo âm thanh kiểm thử

  1. Giữ phòng yên lặng 5 giây, ghi raw nền.
  2. Nói “robot” cách microphone 20 cm.
  3. Vỗ tay nhẹ một lần.
  4. Ghi xem level đổi từ LOW/MID/HIGH thế nào.

Giải thích code

Code đọc analog trực tiếp:

int raw = analogRead(PIN_SOUND);

LED bật khi raw vượt ngưỡng lớn:

bool loud = raw > 2200;
digitalWrite(PIN_LED, loud ? HIGH : LOW);

Ngưỡng 2200 chỉ là điểm bắt đầu. Mỗi module có độ nhạy khác nhau, nên cần log trước khi tuning.

Kiểm thử robot thật

TestThao tácKết quả mong đợiPass?
1Phòng yên lặngRaw tương đối ổn định
2Nói gần microphoneRaw thay đổi
3Vỗ tayLevel lên HIGH ít nhất một dòng
4Che microphoneRaw ít thay đổi hơn
5Rút AORaw bất thường, nhóm nhận biết lỗi

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

LỗiNguyên nhânCách sửa
Raw luôn 0 hoặc 4095Sai dây AO/VCC/GNDKiểm lại pin map
LED không sángNgưỡng quá cao hoặc LED ngược cựcGhi raw khi vỗ tay, kiểm điện trở LED
Raw nhiễu mạnhNguồn USB yếu hoặc dây dàiDùng dây ngắn, tránh đặt gần motor
Buzzer không kêu lúc bootBuzzer sai loại hoặc sai chânDùng buzzer active 3.3V, kiểm GPIO15

Checklist debug

  • Serial Monitor ở 115200 baud.
  • Raw đổi khi tạo âm thanh.
  • LED phản hồi khi âm thanh lớn.
  • Có bảng raw yên lặng/nói/vỗ tay.

Thử thách nhỏ

Tìm ngưỡng bật LED phù hợp với phòng học của bạn. Ghi ngưỡng cũ, ngưỡng mới và lý do chọn.

Checklist hoàn thành

  • Đọc được tín hiệu âm thanh thật.
  • LED phản hồi với âm thanh lớn.
  • Biết âm thanh raw chưa phải lệnh giọng nói.
  • Sẵn sàng sang G4 02 đo mức âm lượng theo cửa sổ thời gian.

Bài tiếp theo

G4 02 sẽ đo âm thanh bằng min/max trong một cửa sổ ngắn để có peak_to_peaklevel_pct ổn định hơn raw tức thời.


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

Bài tiếp theo: G4 02 - Microphone và âm thanh số

Bài trước: Không có