ESP32-S3 · ST7789 · microSD · English

Bread Compact Wi-Fi LCD

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.

Tổng quan thiết bị

Tổng quan board Bread Compact Wi-Fi LCD: ESP32-S3, màn hình ST7789, khe microSD, loa, nút nhấn

Board ESP32-S3 · màn hình LCD ST7789 · khe microSD · loa · cụm nút BOOT / VOL+ / VOL−.

Các thành phần phần cứng

STTThành phầnChức năngChân / giao tiếp
1Công tắc nguồnBật/tắt nguồn pin cho toàn board—
2Màn hình TFT 1.54 inch 240×240Hiể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
3Nút nhấn: Boot, Vol+, Vol−Hội thoại, âm lượng và điều hướng menuBOOT GPIO0, VOL+ GPIO40, VOL− GPIO39 (active-low)
4Thẻ nhớ microSDLưu nhạc, bài luyện nghe và phụ đềSPI2_HOST: MISO 12, MOSI 13, CLK 14, CS 11
5Loa 4/8 Ω 2/3 WPhát âm thanh trợ lý và bài họcNối với ngõ ra MAX98357A
6ESP32-S3 N16R8Vi điều khiển trung tâm, Wi-Fi, 16 MB flash / 8 MB PSRAM—
7MAX98357AAmpli I2S class-D cho loaDIN 7, BCLK 15, LRCK/WS 16
8Mic INMP441Thu âm giọng nói người dùngWS 4, SCK/BCLK 5, SD 6
9Mạch sạc pin Type-C TP4056Sạc pin LiPo qua USB-C, đo mức pinSạc qua Type-C; cầu chia áp pin về GPIO9 (ADC1_CH8)

Video hướng dẫn

Xem video thao tác thực tế trên TikTok:

Mở trên TikTok

Nạp firmware

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:

Mở trang nạp firmware

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.

1. Sơ đồ GPIO

Đâ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ốiTín hiệu moduleGPIO / cấu hìnhGhi chú
Micro I2SWS / LRCLKGPIO4Chọn kênh trái/phải theo mic.
SCK / BCLKGPIO5Clock dữ liệu mic.
SD / DOUT của micGPIO6Dữ liệu mic đi vào ESP32.
Loa / ampli I2SBCLKGPIO15Clock dữ liệu phát.
LRCK / WSGPIO16Clock trái/phải.
DIN / DATAGPIO7Dữ liệu từ ESP32 tới ampli/DAC.
LCD SPI, ST7789MOSI / SDAGPIO8Bus SPI3_HOST, không dùng MISO.
SCLK / SCLGPIO10Clock LCD.
CSGPIO45Chip select.
DCGPIO17Data / command.
RSTGPIO38Reset LCD.
BL / LEDGPIO21Điều khiển đèn nền.
microSD SPIMISO / DOGPIO12Bus SPI2_HOST riêng, tối đa cấu hình 10 MHz.
MOSI / DIGPIO13
SCLKGPIO14
CSGPIO11
VCC3.3 VDùng module tương thích 3.3 V.
GNDGNDNối chung mass với ESP32.
Nút nhấnBOOTGPIO0Nút active-low, nhấn nối tín hiệu xuống GND.
VOL+GPIO40Nút active-low.
VOL−GPIO39Nút active-low.
Pin LiPo 1SĐiểm giữa cầu chia ápGPIO9 / ADC1_CH8Hai điện trở 100 kΩ mắc nối tiếp.
Chân nhận biết sạcKhông cóFirmware không đọc trạng thái đang sạc.
LED onboardLEDGPIO48LED 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.

2. Đấu nối phần cứng

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.

Loa

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.

LCD ST7789 240×240

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.

Thẻ microSD

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.

Lưu ý pull-up SD: log kiểm tra phần cứng được ghi trong README của board cho thấy module microSD thử nghiệm không có pull-up trên các đường SPI. Hãy kiểm tra module của bạn; nếu thiếu, bổ sung pull-up 10 kΩ lên 3.3 V theo hướng dẫn phần cứng của module. Không cấp 5 V vào GPIO ESP32-S3.

Cầu chia áp pin

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ế.

3. Bắt đầu luyện nghe tiếng Anh

  1. Ra lệnh bằng giọng nói: nói “Luyện nghe tiếng Anh”. Trợ lý chọn bài tiếp theo và mở màn hình phát. Cũng có thể nhấn đúp BOOT để mở giao diện English, rồi chọn bài trong menu.
  2. Chuẩn bị thẻ: chép bài MP3 vào /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.
  3. Nghe và theo dõi: màn hình hiển thị tên bài và câu phụ đề hiện tại; bản dịch xuất hiện nếu bật. Chức năng câu hỏi về đoạn vừa nghe dựa trên phụ đề và tiến độ thực tế.
  4. Khi hết bài: trình phát giữ nguyên màn hình bài học, không tự mở menu. Nhấn VOL− để phát lại bài hiện tại, hoặc nhấn đúp VOL+ để mở menu.

Cấu trúc thẻ gợi ý

/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ý.

4. Nút nhấn khi luyện nghe

Nút / thao tácTrong màn hình phátTrong menu EnglishNgoài English
VOL+ nhấnKhông đổi lựa chọn.Di chuyển xuống mục tiếp theo.Tăng âm lượng 5%.
VOL+ nhấn đúpMở menu English.Menu chính: quay lại màn hình phát. Menu câu hỏi: quay về menu chính.Nếu đang phát playlist SD thì chuyển bài kế.
VOL+ giữKhông đổi lựa chọn.Không đổi lựa chọn.Đặt âm lượng 100%.
VOL− nhấnTạm dừng / phát tiếp.Chọn mục đang có dấu >.Giảm âm lượng 5%.
VOL− nhấn đúpDừng bài nghe English.Dừng bài nếu đang phát.Dừng playlist nhạc SD.
VOL− giữKhông đổi lựa chọn.Không đổi lựa chọn.Tắt tiếng.
BOOT nhấn đúpĐóng giao diện English.Đóng giao diện English.Mở giao diện English/menu.
BOOT nhấnBắt đầu / chuyển trạng thái hội thoại với trợ lý.Trong menu câu hỏi, sau khi chọn loại câu hỏi, bắt đầu nói với trợ lý.Bắt đầu / chuyển trạng thái hội thoại.

Thao tác menu: VOL+ để di chuyển, VOL− để chọn. Từ màn hình phát, nhấn đúp VOL+ để vào menu; nhấn đúp VOL+ lần nữa để quay lại màn hình phát. BOOT nhấn đúp đóng/mở giao diện English.

5. Hỏi AI, xem câu trả lời và làm bài tập

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).

1 · Đóng màn hình EnglishBOOT nhấn đúp
2 · Bắt đầu hội thoạiBOOT nhấn một lần
3 · Nói yêu cầuVí dụ: “Giải thích câu vừa phát”
4 · Đọc / nghe phản hồiVăn bản hiện trên màn hình hội thoại

Câu lệnh có thể dùng

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.

Yêu cầu: các bài tập AI cần kết nối trợ lý. Tool lấy dữ liệu từ file MP3/SRT trên thẻ; nếu thiếu phụ đề, trợ lý không thể bảo đảm nội dung câu hỏi khớp chính xác với bài. “Kiểm tra nghe” và “Kiểm tra dịch” là bài tập hội thoại, không phải chấm điểm phát âm.

6. English tools

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.

Thư viện và tiến độ

  • 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.

Phát bài và phụ đề

  • 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.

Học tập và ôn câu

  • 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.

Ba chế độ luyệ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.

Liên hệ & ủng hộ

Góp ý, báo lỗi hoặc cần hỗ trợ kỹ thuật, liên hệ qua Facebook:

Liên hệ Facebook

Ủng hộ tác giả

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: