Micro I2S
Nối WS → GPIO4, SCK/BCLK → GPIO5, SD → GPIO6. Nối VDD và GND theo điện áp yêu cầu của module mic; nối chung GND với ESP32.
Sơ đồ kết nối GPIO, cách lắp microSD và pin LiPo, cùng hướng dẫn dùng các nút và tool luyện nghe tiếng Anh.
Board ESP32-S3 · màn hình LCD ST7789 · khe microSD · loa · cụm nút BOOT / VOL+ / VOL−.
| STT | Thành phần | Chức năng | Chân / giao tiếp |
|---|---|---|---|
| 1 | Công tắc nguồn | Bật/tắt nguồn pin cho toàn board | — |
| 2 | Màn hình TFT 1.54 inch 240×240 | Hiển thị giao diện, hội thoại, phụ đề | ST7789 SPI3_HOST: MOSI 8, SCLK 10, CS 45, DC 17, RST 38, BL 21 |
| 3 | Nút nhấn: Boot, Vol+, Vol− | Hội thoại, âm lượng và điều hướng menu | BOOT GPIO0, VOL+ GPIO40, VOL− GPIO39 (active-low) |
| 4 | Thẻ nhớ microSD | Lưu nhạc, bài luyện nghe và phụ đề | SPI2_HOST: MISO 12, MOSI 13, CLK 14, CS 11 |
| 5 | Loa 4/8 Ω 2/3 W | Phát âm thanh trợ lý và bài học | Nối với ngõ ra MAX98357A |
| 6 | ESP32-S3 N16R8 | Vi điều khiển trung tâm, Wi-Fi, 16 MB flash / 8 MB PSRAM | — |
| 7 | MAX98357A | Ampli I2S class-D cho loa | DIN 7, BCLK 15, LRCK/WS 16 |
| 8 | Mic INMP441 | Thu âm giọng nói người dùng | WS 4, SCK/BCLK 5, SD 6 |
| 9 | Mạch sạc pin Type-C TP4056 | Sạc pin LiPo qua USB-C, đo mức pin | Sạc qua Type-C; cầu chia áp pin về GPIO9 (ADC1_CH8) |
Xem video thao tác thực tế trên TikTok:
Dùng trình nạp firmware trên web (không cần cài đặt) để flash trực tiếp qua trình duyệt:
Kết nối board qua cáp USB Type-C, chọn đúng cổng COM và làm theo hướng dẫn trên trang. Nếu không nhận cổng, giữ nút BOOT khi cắm cáp để vào chế độ nạp.
Đây là sơ đồ tín hiệu theo config.h của board bread-compact-wifi-lcd. GPIO là chân tín hiệu trên ESP32-S3; cấp nguồn cho module theo thông số của module và nối chung GND.
| Khối | Tín hiệu module | GPIO / cấu hình | Ghi chú |
|---|---|---|---|
| Micro I2S | WS / LRCLK | GPIO4 | Chọn kênh trái/phải theo mic. |
| SCK / BCLK | GPIO5 | Clock dữ liệu mic. | |
| SD / DOUT của mic | GPIO6 | Dữ liệu mic đi vào ESP32. | |
| Loa / ampli I2S | BCLK | GPIO15 | Clock dữ liệu phát. |
| LRCK / WS | GPIO16 | Clock trái/phải. | |
| DIN / DATA | GPIO7 | Dữ liệu từ ESP32 tới ampli/DAC. | |
| LCD SPI, ST7789 | MOSI / SDA | GPIO8 | Bus SPI3_HOST, không dùng MISO. |
| SCLK / SCL | GPIO10 | Clock LCD. | |
| CS | GPIO45 | Chip select. | |
| DC | GPIO17 | Data / command. | |
| RST | GPIO38 | Reset LCD. | |
| BL / LED | GPIO21 | Điều khiển đèn nền. | |
| microSD SPI | MISO / DO | GPIO12 | Bus SPI2_HOST riêng, tối đa cấu hình 10 MHz. |
| MOSI / DI | GPIO13 | ||
| SCLK | GPIO14 | ||
| CS | GPIO11 | ||
| VCC | 3.3 V | Dùng module tương thích 3.3 V. | |
| GND | GND | Nối chung mass với ESP32. | |
| Nút nhấn | BOOT | GPIO0 | Nút active-low, nhấn nối tín hiệu xuống GND. |
| VOL+ | GPIO40 | Nút active-low. | |
| VOL− | GPIO39 | Nút active-low. | |
| Pin LiPo 1S | Điểm giữa cầu chia áp | GPIO9 / ADC1_CH8 | Hai điện trở 100 kΩ mắc nối tiếp. |
| Chân nhận biết sạc | Không có | Firmware không đọc trạng thái đang sạc. | |
| LED onboard | LED | GPIO48 | LED trạng thái. |
Firmware dùng I2S simplex: mic chạy ở 16 kHz, loa ở 24 kHz. GPIO hiển thị ở đây dành cho biến thể board LCD; hãy kiểm tra đúng phiên bản PCB/module trước khi cấp điện.
Nối WS → GPIO4, SCK/BCLK → GPIO5, SD → GPIO6. Nối VDD và GND theo điện áp yêu cầu của module mic; nối chung GND với ESP32.
GPIO7/15/16 là dữ liệu và clock I2S đi tới ampli hoặc DAC I2S. Nối DIN ← GPIO7, BCLK ← GPIO15, LRCK/WS ← GPIO16. Không nối loa thụ động trực tiếp vào GPIO ESP32; dùng ampli phù hợp.
MOSI 8, SCLK 10, CS 45, DC 17, RST 38, BL 21. LCD dùng SPI3_HOST, mode 0. Chọn build bread-compact-wifi-lcd-240x240. Cấu hình hiện tại: SWAP_XY=true, MIRROR_X=true, MIRROR_Y=false.
Nối MISO 12, MOSI 13, CLK 14, CS 11, nguồn và GND. Thẻ được mount tại /sdcard; bus thẻ riêng trên SPI2_HOST, LCD dùng SPI3_HOST.
BAT+ (LiPo 1S) ── 100 kΩ ──┬── GPIO9 (ADC1_CH8)
│
100 kΩ
│
GND ─────────────────────────┴── GND ESP32
Chỉ đưa điểm giữa cầu chia áp vào GPIO9; không nối trực tiếp BAT+ vào GPIO. Với hai điện trở bằng nhau, ADC nhận xấp xỉ một nửa điện áp pin. Mạch không có chân báo sạc. Phần trăm pin trong firmware là ước lượng và ngưỡng ADC cần hiệu chuẩn theo cell, điện trở và board thực tế.
/english trên thẻ. Có thể dùng lessons.json để đặt tiêu đề/thứ tự; nếu không có, firmware quét các file MP3 trong thư mục. Phụ đề tiếng Anh là file SRT cùng tên với MP3; phụ đề tiếng Việt dùng hậu tố .vi.srt./english/ ├── lessons.json (tùy chọn) ├── lesson_01.mp3 ├── lesson_01.srt (phụ đề tiếng Anh) ├── lesson_01.vi.srt (phụ đề tiếng Việt, tùy chọn) ├── lesson_02.mp3 ├── lesson_02.srt └── lesson_02.vi.srt
Mẫu lessons.json:
{
"lessons": [
{"id": 1, "title": "At the cafe", "level": "A1", "file": "/english/lesson_01.mp3"},
{"id": 2, "title": "A day at work", "level": "A2", "file": "/english/lesson_02.mp3"}
]
}
MP3 và SRT cần cùng stem tên file. Dùng UTF-8 cho SRT có dấu. English tool cần thẻ mount thành công; nếu thẻ lỗi hoặc thiếu, firmware vẫn chạy nhưng các tool SD/English sẽ không được đăng ký.
Giao diện English chiếm màn hình LCD. Để đọc phần trả lời của trợ lý trên giao diện hội thoại, hãy đóng English bằng cách nhấn đúp BOOT, sau đó nhấn BOOT một lần để bắt đầu nói (hoặc dùng cách đánh thức trợ lý đã cấu hình).
Có thể mở menu English → Câu hỏi / Hỏi AI, chọn loại yêu cầu bằng VOL− rồi nhấn BOOT để bắt đầu hội thoại. Nếu muốn xem phần chữ trợ lý trả lời, nhấn đúp BOOT đóng giao diện English.
Các tool được đăng ký khi bật English feature và thẻ microSD mount thành công. Người dùng thường gọi bằng lời nói; trợ lý sẽ tự chọn tool phù hợp.
self.english.get_status — trạng thái bài hôm nay và bài đang phát.self.english.get_progress — mục tiêu, streak và số bài hoàn thành.self.english.get_next_lesson — bài kế tiếp được đề xuất.self.english.get_lesson_list — danh sách bài, có phân trang.self.english.set_daily_goal — đặt mục tiêu 1–10 bài/ngày.self.english.play_lesson, self.english.stop_lesson.self.english.get_current_segment — câu hiện tại/gần nhất, bản dịch và mốc thời gian.self.english.repeat_current_segment — lặp một câu.self.english.set_english_subtitles, self.english.set_translation.self.english.set_learning_mode — normal, shadow, guess.self.english.reveal_subtitles — hiện lần lượt đáp án Anh rồi Việt trong guess.self.english.get_quiz_context — ngữ cảnh các câu đã nghe xong để hỏi hiểu bài.self.english.get_study_context — từ vựng, flashcard, quiz nghe hoặc quiz dịch.self.english.save_sentence — lưu câu khó vào thẻ SD.self.english.get_saved_sentences, self.english.play_saved_sentence, self.english.remove_saved_sentence.reveal_subtitles hoặc yêu cầu trợ lý hiện đáp án.Menu LCD hiện tại cho phép chuyển lần lượt ba chế độ. Cài đặt nâng cao như số giây chờ và quiz theo trang được điều khiển bằng tool/hội thoại.
Góp ý, báo lỗi hoặc cần hỗ trợ kỹ thuật, liên hệ qua Facebook:
Nếu tài liệu hữu ích, bạn có thể ủng hộ để duy trì các dự án tiếp theo. Quét mã QR bên dưới: