Logo Ngân LộcNGÂN LỘC COMPUTERMẠCH ỨNG DỤNG← Mạch ứng dụng
HƯỚNG DẪN SỬ DỤNG · ESP32-S3 + MAX98357A

Loa thông báo.
Dễ cài, dễ sử dụng.

Làm theo từng tab: chuẩn bị linh kiện, đấu dây, nạp firmware, cài Wi-Fi, gửi thông báo và xử lý lỗi.

👁 0 lượt xem
Module khuếch đại âm thanh I2S MAX98357A
ESP32-S3 nhận thông báo từ app và phát giọng nói qua module MAX98357A.
01 / TỔNG QUAN

Vì sao bộ đôi này phù hợp?

ESP32-S3 kết nối Wi‑Fi, nhận lệnh từ app hoặc máy chủ và tải tệp âm thanh. MAX98357A nhận âm thanh số I2S rồi khuếch đại trực tiếp cho một loa. Không cần DAC analog rời và không cần tín hiệu MCLK.

Ứng dụng phù hợpThông báo đơn hàng, báo khách, chuông cửa, báo trạng thái máy, nhắc lịch và cảnh báo IoT.
Giới hạn cần biếtMAX98357A là ampli mono. Chất lượng và độ lớn phụ thuộc loa, nguồn, hộp loa và tệp âm thanh.
Theo datasheet, MAX98357A dùng nguồn 2,5–5,5V, hỗ trợ I2S, không cần MCLK và có thể đạt tới 3,2W với tải 4Ω ở nguồn 5V trong điều kiện phù hợp.
02 / CHUẨN BỊ

Linh kiện cần có

Bo mạch phát triển ESP32-S3 với hai cổng USB-C
Bo ESP32-S3Bo xử lý kết nối Wi‑Fi, nhận lệnh từ app và xuất âm thanh số I2S.
Module khuếch đại âm thanh I2S MAX98357A mono
Module MAX98357ANhận BCLK, LRC và DIN từ ESP32-S3 rồi khuếch đại ra loa 4–8Ω.
  • Bo ESP32-S3 có Wi‑Fi; ưu tiên bản có PSRAM nếu phát tệp dài hoặc giao diện lớn.
  • Module ampli I2S MAX98357A.
  • Loa thụ động 4Ω hoặc 8Ω, công suất phù hợp module; mẫu phổ biến là 3W.
  • Nguồn 5V ổn định, đủ dòng cho cả ESP32-S3 và ampli; dây nguồn ngắn, tiết diện phù hợp.
  • Tụ lọc gần ampli nếu nguồn hoặc dây dài gây sụt áp; giá trị chọn theo bo và thiết kế thực tế.
  • Cáp USB dữ liệu để nạp và kiểm tra Serial Monitor.
Không dùng loa chủ động có ampli tích hợp ở đầu SPK. Hai đầu SPK+ và SPK− là ngõ ra cầu của ampli; không nối một đầu loa xuống GND.
03 / ĐẤU DÂY

Sơ đồ ESP32-S3 với MAX98357A

Cấu hình dưới đây dùng GPIO4, GPIO5 và GPIO6 làm ví dụ. ESP32-S3 cho phép định tuyến I2S qua nhiều GPIO, nhưng phải kiểm tra sơ đồ đúng bo để tránh chân flash, PSRAM, USB hoặc chân đã dùng cho thiết bị khác.

Chân MAX98357AChức năngCách dùng
VINNguồn ampliCấp 5V ổn định để có công suất tốt; luôn nối chung GND.
BCLKBit clockNối GPIO4 trong mã mẫu.
LRC / WSChọn kênh / word selectNối GPIO5 trong mã mẫu.
DINDữ liệu âm thanh sốNối GPIO6, là I2S DOUT của ESP32-S3.
SD / MODEBật/tắt hoặc chọn kênh tùy moduleĐể theo cấu hình sẵn của bo; xem đúng sơ đồ module trước khi thay đổi.
GAINChọn hệ số khuếch đạiKhông nên đổi khi chưa đọc datasheet/module.
Ngắt nguồn trước khi đấu. Đo đúng 5V và cực nguồn trước khi cắm module. Không cấp 5V vào chân GPIO 3,3V của ESP32-S3.
04 / KIẾN TRÚC

App gửi thông báo đến loa như thế nào?

BƯỚC 1App gửi nội dungVí dụ: “Có đơn hàng mới”.
BƯỚC 2Máy chủ tạo lệnhLưu URL MP3 hoặc tạo giọng đọc.
BƯỚC 3ESP32-S3 nhận lệnhMQTT, WebSocket hoặc hỏi API định kỳ.
BƯỚC 4Phát qua I2SMAX98357A khuếch đại ra loa.

Hai cách triển khai

  • Tệp âm thanh có sẵn: app gửi mã như don_hang_moi; ESP phát tệp MP3 tương ứng. Nhanh, ổn định, không tốn dịch vụ chuyển văn bản thành giọng nói.
  • Nội dung thay đổi: app gửi văn bản; máy chủ chuyển văn bản thành MP3, trả URL có thời hạn; ESP tải và phát. Linh hoạt hơn nhưng cần dịch vụ TTS và cơ chế bảo mật.
Khuyên dùng khi bán sản phẩm: app chỉ giao tiếp với máy chủ qua HTTPS. Thiết bị xác thực bằng mã riêng; không mở ESP trực tiếp ra Internet và không nhúng khóa quản trị trong firmware.
05 / CÀI ĐẶT & MÃ NGUỒN

Cài đúng một lần để tránh toàn bộ lỗi đã gặp

Firmware hoàn chỉnh bên dưới nhận thông báo từ app Ngân Lộc, phát tiếng Việt qua MAX98357A, tự mở trang nhập Wi‑Fi, tự kết nối lại và báo trạng thái phát về tài khoản. Wi‑Fi không được viết sẵn trong mã. Bản 2026.09.28-siren3 phát tiếng còi hú lên xuống trong 5–10 giây trước mỗi lượt thông báo. App chỉnh riêng thời gian hú, âm lượng còi và giọng đọc; mặc định còi hú 7 giây ở mức 21/21. Loa đang dùng bản cũ cần nạp lại firmware riêng để dùng các mức mới.

1. Cài phần mềm và thư viện

  1. Dùng Arduino IDE 2.x.
  2. Trong Boards Manager, cài hoặc cập nhật esp32 by Espressif Systems 3.3.11.
  3. Cài ESP32-audioI2S 4.0.0. Nếu đã có nhiều thư mục Audio cũ, chỉ giữ đúng một bản trong thư mục Arduino/libraries.
  4. Mở lại Arduino IDE sau khi cài thư viện.

2. Chọn đúng cấu hình trong menu Tools

MụcGiá trị phải chọnLý do
BoardESP32S3 Dev ModuleTránh lỗi “This chip is ESP32-S3, not ESP32”.
Partition SchemeHuge APP (3MB No OTA/1MB SPIFFS)Firmware âm thanh khoảng 1,9MB, không vừa phân vùng 1,3MB.
PSRAMOPI PSRAMThư viện cần vùng đệm lớn; nếu tắt sẽ báo OOM khoảng 720KB.
USB CDC On BootEnabledSerial Monitor làm việc qua cổng USB.
Upload ModeUART0 / Hardware CDCPhù hợp bo ESP32-S3 hai cổng USB.
Upload Speed115200Ổn định hơn khi cáp hoặc bo kén tốc độ.
Flash SizeChọn đúng dung lượng in trên module; N16R8 chọn 16MBKhông chọn lớn hơn phần cứng thật.

3. Lấy mã thiết bị và tải firmware riêng

Mã được tạo tại Quản trị loa thông báo. Bạn cũng có thể vào Trung tâm quản trị → Quản lý loa thông báo.

  1. Đăng nhập bằng mật khẩu quản trị.
  2. Nhập tên loa → bấm Tạo loa mới.
  3. Lưu mã thiết bị và mã ghép vừa hiện ra.
  4. Bấm Tải firmware riêng .ino. File này đã chứa sẵn mã thiết bị và token riêng, không cần tự nhập.
Mỗi loa cần một cặp mã thiết bị và token riêng. Không nạp cùng một file firmware riêng cho nhiều loa. Các nút tải .INO và .ZIP công khai ở đầu bài là bản mẫu; khi nạp thiết bị thực tế, hãy dùng file riêng do trang quản trị tạo.

4. Cách nạp

  1. Cắm cáp dữ liệu vào cổng USB của bo và chọn đúng COM.
  2. Mở file .ino, chọn đủ các mục trong bảng rồi bấm Verify. Dòng kết quả phải có dung lượng tối đa khoảng 3.145.728 byte.
  3. Bấm Upload. Nếu dừng ở “Connecting…”, giữ BOOT, nhấn RESET một lần, thả RESET rồi thả BOOT khi bắt đầu ghi.
  4. Mở Serial Monitor ở 115200 baud. Lần đầu loa phát mạng NLC-AUDIO-xxxx; dùng điện thoại kết nối và mở 192.168.4.1 để nhập Wi‑Fi 2.4GHz.

5. Ghép loa vào tài khoản sau khi nạp

Vào Loa thông báo → Ghép loa mới, nhập mã thiết bị + mã ghép đã lưu, rồi bấm Ghép loa. Sau khi ghép thành công, chọn loa để gửi thông báo ngay hoặc hẹn giờ.

Mã ghép khác token: khách dùng mã ghép để thêm loa vào tài khoản; token nằm trong firmware và được loa dùng để xác thực với máy chủ. Không nhập token vào ô mã ghép.

Firmware đã xử lý sẵn

  • Kiểm tra đúng chip ESP32-S3 ngay khi biên dịch và báo lỗi dễ hiểu nếu chọn sai bo.
  • Kiểm tra PSRAM lúc khởi động; không tiếp tục âm thầm khi cấu hình sai.
  • Không chứa tên hoặc mật khẩu Wi‑Fi; khách tự nhập bằng điện thoại.
  • Tự kết nối lại Wi‑Fi, mở lại cổng cài đặt khi mất mạng lâu và cho phép giữ BOOT 3 giây để đổi Wi‑Fi.
  • Phát tiếng còi hú liên tục 5–10 giây, cao độ lên xuống, từ tệp âm thanh tạo ngay trên ESP32-S3 trước mỗi thông báo, kể cả lượt lặp; không dùng dịch vụ TTS cho còi. App cho chỉnh thời gian và âm lượng còi riêng, mặc định 7 giây và 21/21; giọng đọc giữ mức đã chọn.
  • Chống gửi dồn lệnh trong lúc đang phát; xác nhận played/error và tự thử lại nếu mạng gián đoạn.
  • Giới hạn thời gian bắt đầu/phát để một lệnh lỗi không làm thiết bị kẹt vĩnh viễn.
Không chia sẻ file firmware riêng của khách vì trong đó có token thiết bị. Chỉ đăng bản mẫu công khai hoặc bộ cài do trang quản trị tạo cho đúng thiết bị.
06 / APP & MÁY CHỦ

Thiết kế để nhiều thiết bị không phát nhầm

Mở app loa thông báo →

Mang loa sang nơi có Wi‑Fi khác: giữ BOOT 3 giây khi loa đang chạy, hoặc giữ BOOT khoảng 2 giây lúc cấp nguồn. Loa mở mạng NLC-AUDIO-xxxx; khách kết nối bằng điện thoại, mở 192.168.4.1 và nhập Wi‑Fi 2.4GHz mới. Không cần nạp lại firmware hoặc ghép lại tài khoản.
  1. Mỗi bộ có device_id và token riêng, được ghép vào đúng tài khoản khách.
  2. App gửi nội dung cùng device_id đến API; máy chủ kiểm tra quyền sở hữu.
  3. Máy chủ xếp lệnh phát ngay hoặc theo giờ đã chọn.
  4. ESP32-S3 nhận đúng lệnh, chuyển văn bản thành tiếng Việt và phát qua I2S.
  5. Thiết bị báo played hoặc error; nếu mất mạng lúc báo kết quả, firmware tự thử lại.
Trường lệnhVí dụMục đích
command_idmsg_000125Ngăn phát lặp.
device_idNLA-56C1144AChọn đúng loa.
textCó đơn hàng mớiNội dung tiếng Việt cần đọc.
volume1–21Âm lượng giọng đọc.
chime_volume1–21Âm lượng còi; mặc định 21/21.
chime_seconds5–10 giâyThời gian còi hú; mặc định 7 giây, cần firmware 2026.09.28-siren3.
run_atThời điểm UnixPhát ngay hoặc đúng lịch.
07 / KIỂM TRA

Kiểm tra theo từng lớp

  1. Nguồn: đo 5V tại VIN–GND khi đang phát; điện áp không được sụt mạnh.
  2. Loa và ampli: nạp mã phát một tệp cố định trước, chưa kết nối app.
  3. I2S: kiểm tra đúng BCLK, LRC và DIN; GPIO trong mã phải trùng dây.
  4. Mạng: xem ESP có IP và tải được URL MP3 bằng HTTPS.
  5. Máy chủ: gửi một lệnh duy nhất và kiểm tra trạng thái nhận/phát.
  6. App: thử nhiều tài khoản và nhiều device_id để chắc không phát nhầm.
Khi thử lần đầu, đặt âm lượng thấp. Loa nhỏ dễ méo hoặc nóng nếu phát tín hiệu quá lớn liên tục.
08 / XỬ LÝ LỖI

Các lỗi thường gặp

Hiện tượngCách sửa đúng
Audio.h: No such fileCài ESP32-audioI2S 4.0.0, kiểm tra thư mục thư viện có src/Audio.h, sau đó mở lại Arduino IDE.
span: No such fileCập nhật esp32 by Espressif Systems lên 3.3.11; xóa bản ESP32-audioI2S cũ hoặc trùng tên rồi cài lại đúng một bản.
This chip is ESP32-S3, not ESP32Đang chọn ESP32 Dev Module. Đổi sang ESP32S3 Dev Module.
text section exceeds available spaceChọn Partition Scheme → Huge APP (3MB No OTA/1MB SPIFFS).
OOM: failed to allocate 720896 bytesChọn PSRAM → OPI PSRAM. Nếu Serial vẫn báo PSRAM 0MB, bo không có PSRAM hoặc chọn sai loại.
Không có tiếngKiểm tra GPIO4→BCLK, GPIO5→LRC, GPIO6→DIN; loa nối SPK+–SPK−. Nếu module có chân SD và đang tắt, kéo SD lên 3,3V.
Tiếng rè hoặc bị vỡGiảm volume, dùng nguồn 5V đủ dòng, nối chung GND, rút ngắn dây nguồn/loa và kiểm tra loa 4–8Ω.
ESP khởi động lại khi phátNguồn sụt áp hoặc nhiễu; dùng nguồn 5V tốt, dây ngắn và thêm tụ lọc gần module.
Kẹt ở Connecting…Chọn đúng COM, dùng cáp dữ liệu, giữ BOOT rồi nhấn RESET để vào chế độ nạp.
Loa trực tuyến nhưng không phátMở Serial Monitor 115200, kiểm tra Internet và nội dung lỗi. Firmware mới tự báo error nếu TTS không bắt đầu sau 20 giây.
TÀI LIỆU ĐỐI CHIẾU

Nguồn kỹ thuật

Espressif — I2S trên ESP32-S3Analog Devices — MAX98357A product & datasheetEspressif Arduino-ESP32 — I2S APIESP32-audioI2S — mã nguồn và ví dụ

Đánh giá & bình luận

Chia sẻ kết quả hoặc hỏi thêm về ESP32-S3 và MAX98357A.

Đang tải đánh giá…

Đăng nhập để đánh giá hoặc bình luận.