Tự lắp Chatbot AI ESP32-S3 trên PCB

Hướng dẫn DIY · ESP32-S3

Thiết kế gọn cho chatbot AI: microphone I²S, ampli loa, microSD riêng, pin 18650 và ba phương án màn hình — OLED 0.96″, LCD 1.54″ hoặc TFT 2.8″ cảm ứng.

3 cấu hình màn hìnhPin 18650Boost 5V / 2AmicroSD · CS GPIO19Nạp firmware & Wi-Fi

Đặt PCB và linh kiện đi kèm — 50.000₫

Giá 50.000₫/bộ, chưa bao gồm phí vận chuyển.

Bao gồm: PCB, hàng rào chân cắm, tụ điện, điện trở và nút nhấn.

Chưa bao gồm: mạch sạc, microphone, MAX98357A, loa, màn hình và ESP32-S3 N16R8. Các linh kiện khác ngoài danh sách đi kèm cần chuẩn bị riêng.

Để đặt mua, vui lòng điền thông tin vào form bên dưới:

Điền form đặt PCB →

1. Tổng quan thiết kế

ESP32-S3 là trung tâm xử lý, kết nối Wi-Fi và chạy firmware chatbot. INMP441 thu âm qua I²S; MAX98357A khuếch đại tín hiệu I²S để phát ra loa. Module microSD riêng dùng các đường SPI GPIO11/12/13, với CS riêng ở GPIO19. PCB có ba vị trí header cho ba loại màn hình, nhưng mỗi lần chỉ lắp và cấu hình một loại.

Bài viết sử dụng ảnh PCB và thiết bị lắp ráp thực tế. Trước khi cấp nguồn, hãy đối chiếu silkscreen, sơ đồ nguyên lý và pinout của đúng bản bo với linh kiện thực tế.

▶ Video giới thiệu PCB

Xem nhanh PCB và thiết bị thực tế trước khi bắt đầu tìm hiểu linh kiện và các bước lắp ráp. Bấm Play để xem ngay trên trang.

Mở video trên YouTube

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

Điều khiển và âm thanh

  • ESP32-S3 DevKit tương thích chân cắm trên PCB
  • Microphone I²S INMP441
  • Ampli I²S MAX98357A
  • Loa phù hợp với công suất ampli

Hiển thị và lưu trữ

  • Chọn một: OLED 0.96″ I²C
  • Hoặc LCD 1.54″ SPI
  • Hoặc TFT 2.8″ SPI có cảm ứng XPT2046
  • Module microSD SPI và thẻ microSD

Nguồn và lắp ráp

  • Pin 18650 có mạch bảo vệ
  • Mạch sạc 1S kết hợp boost 5V/2A
  • Công tắc ON/OFF trên đường 5V
  • 2 tụ hóa 100 µF, dây, đầu nối và vỏ

Hình ảnh linh kiện

Board ESP32-S3-DevKitC-1
ESP32-S3-DevKitC-1Module WROOM N16R8, Wi-Fi 2.4 GHz và BLE 5.0; board chạy firmware chatbot.
Microphone MEMS I2S INMP441
Microphone INMP441MEMS I²S, nguồn 3.3V, xuất âm thanh số trực tiếp về ESP32-S3.
Ampli I2S MAX98357A
Ampli MAX98357AClass D, nhận I²S; công suất 3W tại 4Ω hoặc 2W tại 8Ω.
Loa cavity 2828 4 ohm 2W
Loa cavity 2828 · 4Ω · 2WLoa hộp 28×28 mm, phù hợp với MAX98357A; không mở hết âm lượng để tránh vượt công suất loa.

Một số ảnh linh kiện minh họa từ bộ kit KS5027 của Keyestudio; ảnh loa 2828 được cập nhật riêng. Mẫu thực tế có thể khác về hình dạng nhưng cần đúng thông số.

Kiểm tra trước khi mua: xác nhận điện áp đầu vào, dòng tải liên tục và pinout của từng module thực tế. Không phải module “boost 5V 2A” nào cũng duy trì được 2A từ một cell 18650 trong mọi điều kiện.

3. PCB và thiết bị lắp ráp thực tế

Năm ảnh dưới đây cho thấy hai mặt bo mạch, cách lắp hai loại màn hình và vị trí pin/thẻ microSD. Bấm ảnh để xem kích thước lớn.

Hai mặt PCB trước khi lắp linh kiện

Mặt trước PCB ESP32-S3 chưa lắp linh kiện, có nhãn vị trí module và GPIO
Mặt trước PCB: vị trí ESP32-S3, các header màn hình, micro, ampli, nút nhấn và linh kiện tùy chọn.
Mặt sau PCB ESP32-S3 trước khi lắp linh kiện
Mặt sau PCB chưa lắp: đối chiếu đường mạch và vị trí hàn trước khi gắn pin, module và dây nối.

Hai cấu hình đã lắp: OLED và TFT 1,54″

Chatbot ESP32-S3 N16R8 đã lắp màn OLED SSD1306 0,96 inch, micro INMP441 và loa
Bản OLED 0,96″: màn hình nhỏ ở phía trên, ESP32-S3 ở giữa, micro/ampli và loa bố trí trên PCB.
Chatbot ESP32-S3 đã lắp màn TFT ST7789 1,54 inch và đang hiển thị nội dung
Bản TFT ST7789 1,54″: màn hình màu lắp phía trên ESP32-S3; các nút điều khiển nằm bên phải.

Mặt sau sau khi lắp pin và microSD

Mặt sau chatbot có pin 18650, module microSD riêng và các dây nối
Mặt sau thiết bị: pin 18650 nằm phía trên, module microSD riêng nằm ở góc dưới; kiểm tra cực pin, mối hàn và dây nối trước khi cấp nguồn.

Riêng PCB V3 màu xanh lá, cần sửa header TFT 2,8″ bị ngược theo ghi chú bên dưới trước khi lắp. Màn 2,8″ sử dụng header TFT tương ứng sau khi sửa; màn 1,54″ và OLED là hai phương án thay thế. Mỗi lần chỉ lắp một loại màn hình và nạp đúng firmware của loại đó.

Lưu ý quan trọng: PCB V3 màu xanh lá có 3 lỗi cần sửa

Áp dụng riêng cho PCB V3 màu xanh lá. Người dùng bo này cần sửa các kết nối dưới đây trước khi lắp màn hình và cấp nguồn. Bảng GPIO trong bài thể hiện kết nối đúng sau khi sửa.

Vị trí Lỗi trên PCB V3 Cách khắc phục
Màn hình TFT 1,54″ – BL BL đang nối nhầm GPIO13. Ngắt đường nối BL → GPIO13, sau đó dùng dây nối BL → GPIO18.
ADC đo điện áp pin Tín hiệu ADC pin đang nối nhầm GPIO21. Ngắt đường tín hiệu ADC pin → GPIO21, sau đó dùng dây nối đầu ra cầu chia áp đo pin → GPIO14. Không nối trực tiếp cực pin vào GPIO14.
Màn hình TFT 2,8″ cảm ứng Header bị ngược và thiếu kết nối T_CS; MISO màn hình đang nối GPIO13. Đối chiếu tên từng chân trên module và PCB để đấu lại đúng thứ tự; không cắm trực tiếp màn hình vào header bị ngược. Thêm dây T_CS → GPIO8. Ngắt đường MISO của màn hình → GPIO13, để MISO màn hình không nối. Chân LED nối VCC (3.3V).

Phân biệt GPIO13: chỉ bỏ kết nối MISO của màn hình 2,8″; vẫn giữ Touch DO → GPIO13 và MISO của module microSD riêng → GPIO13. Bản 2,8″ không dùng GPIO8 cho LED xanh vì chân này dành cho T_CS.

Ngắt USB và pin trước khi sửa. Sau khi ngắt đường mạch cũ và hàn dây mới, dùng đồng hồ kiểm tra thông mạch, thứ tự chân VCC/GND và bảo đảm không chập trước khi cấp nguồn.

4. Chọn một trong ba màn hình

Ba header là các phương án thay thế, không lắp đồng thời. Chỉ cấp nguồn và tín hiệu cho loại màn hình đang dùng.

Mini · OLED 0.96″ I²C

Module OLED 0.96 inch giao tiếp I2C
Module OLED 0.96″; thứ tự chân trên module: GND, VCC, SCL, SDA.

Dùng nguồn 3.3V và GND từ PCB. Tín hiệu I²C:

  • SDA — GPIO41
  • SCL — GPIO42

Firmware phải dùng đúng driver, độ phân giải và địa chỉ I²C của module thực tế.

Standard · LCD 1.54″ SPI

Module LCD SPI 1.54 inch với hàng chân GND, VCC, SCL, SDA, RST, DC, CS, BL
Module LCD SPI; đối chiếu kích thước, driver và pinout với màn hình thực tế.

Dùng chung nhóm chân LCD bên dưới. Không lắp hoặc khởi tạo phần cảm ứng:

MOSI 11 · CLK 12 · CS 3 · DC 10 · RST 9 · BL 18

Driver thường gặp là ST7789. Kiểm tra độ phân giải, offset và chiều xoay trong firmware.

Pro · TFT 2.8″ SPI Touch

Màn TFT SPI 2.8 inch 240 x 320 có khe microSD tích hợp
TFT 2.8″ 240×320. Module có khe microSD nhưng bài này vẫn dùng module microSD riêng trên PCB.

Dùng chung bus LCD, thêm cảm ứng XPT2046:

Touch CS — GPIO8

Touch DIN = GPIO11, CLK = GPIO12, DO = GPIO13, CS = GPIO8; IRQ không nối. Màn hình dùng MOSI = GPIO11, CLK = GPIO12, CS = GPIO3, DC = GPIO10, RST = GPIO9; LED nối VCC (3.3V), không dùng BL/GPIO18. Chân MISO của màn hình không nối.

Chọn đúng cấu hình: OLED dùng I²C GPIO41/42; hai bản TFT dùng SPI GPIO11/12. GPIO47 là nút cảm ứng riêng của bản OLED hoặc DHT11 tùy chọn của bản TFT, theo bảng GPIO bên dưới.

5. Bảng GPIO cho ba cấu hình màn hình

Bảng chân cập nhật cho PCB ESP32-S3 N16R8. Các số trong bảng là số GPIO; dấu “—” nghĩa là không sử dụng trong cấu hình tương ứng.

Đối chiếu GPIO theo từng loại màn hình
Thiết bị / tín hiệu 0.96″ OLED 1.54″ TFT 2.8″ TFT touch
Màn hình SDA / MOSI 41 11 11
Màn hình SCL / CLK 42 12 12
Màn hình CS — 3 3
Màn hình DC — 10 10
Màn hình RST — 9 9
Đèn nền BL / LED — BL → GPIO18 LED → VCC (3.3V)
Touch DIN — — 11
Touch CLK — — 12
Touch DO — — 13
Touch CS — — 8
Touch IRQ — — Không nối
SD MOSI 11 11 11
SD CLK 12 12 12
SD MISO 13 13 13
SD CS 19 19 19
Micro WS 4 4 4
Micro SCK / BCLK 5 5 5
Micro DATA 6 6 6
Loa DATA 7 7 7
Loa BCLK 15 15 15
Loa LRCK / WS 16 16 16
Nút BOOT 0 0 0
Nút tăng âm lượng 40 40 40
Nút giảm âm lượng 39 39 39
Nút cảm ứng riêng 47 — —
Đo điện áp pin 14 14 14
LED tích hợp 48 48 48
DHT11 DATA (tùy chọn) — 47 47
LED xanh ngoài (mặc định) — 8 Không dùng (GPIO8 dành cho Touch CS)
LED đỏ ngoài (mặc định) — 17 17

SPI: màn TFT và thẻ SD dùng các đường MOSI = GPIO11, CLK = GPIO12; MISO của SD và DO của touch dùng GPIO13. Chọn thiết bị bằng CS riêng: màn hình = GPIO3, SD = GPIO19, touch = GPIO8. OLED dùng I²C trên GPIO41/42.

GPIO47 theo cấu hình: bản OLED dùng nút cảm ứng riêng; hai bản TFT dành chân này cho DHT11 tùy chọn. LED xanh GPIO8 chỉ dùng ở bản TFT 1.54″; bản 2.8″ dành GPIO8 cho Touch CS, không dùng chân này cho LED ngoài. LED đỏ dùng GPIO17.

Đo pin: tín hiệu qua cầu chia áp vào GPIO14. Không nối trực tiếp cực pin vào GPIO; hệ số chia áp phải khớp PCB và firmware.

6. Sơ đồ nguồn

Module sạc pin USB-C kết hợp boost 5V với đầu ra USB-A
Module sạc USB-C kèm boost 5V. Kiểm tra điện áp, dòng tải và chức năng bảo vệ của đúng module sử dụng.

Pin 18650 cấp cho mạch sạc/boost. Đầu ra boost 5V đi qua công tắc ON/OFF rồi cấp riêng cho VIN của ESP32-S3 và VIN của MAX98357A. Các module logic còn lại dùng 3.3V từ ESP32-S3.

PIN 18650 (1 cell)
      │
      ▼
MẠCH SẠC 1S + BOOST 5V/2A
      │ +5V
      ▼
CÔNG TẮC ON/OFF
      │
      ├──► VIN ESP32-S3 (5V)    [C1 100µF → GND]
      │
      └──► VIN MAX98357A (5V)   [C2 100µF → GND]
ESP32-S3 3V3 ──► INMP441, microSD, màn hình đang chọn
ESP32-S3 GPIO ─► tín hiệu I²S / SPI / I²C
MAX98357A OUT ─► loa

Chung GND: nối mass của boost, ESP32-S3, MAX98357A và các module làm một. Đặt đúng cực tụ hóa: cực dương vào VIN, cực âm vào GND. Không đặt tụ nối tiếp với nguồn.

Hai tụ 100 µF giảm sụt áp tức thời gần tải; tụ không thay thế một bộ boost đủ dòng, dây nguồn phù hợp và bố trí mass tốt. Chọn tụ có điện áp định mức trên 5V (thường 10V hoặc 16V) và lắp đúng cực.

INMP441, microSD và màn hình lấy 3.3V từ ESP32-S3. Cần kiểm tra khả năng dòng của bộ ổn áp 3.3V, nhất là đèn nền TFT 2.8″. Không cấp 5V vào chân nguồn 3.3V của module.

Pin 18650 là cell Li-ion danh định khoảng 3.6–3.7V. Mạch phải hỗ trợ đúng cấu hình một cell, có bảo vệ quá sạc/quá xả/quá dòng và khả năng sạc phù hợp. Không dùng module sạc 1S với pack nhiều cell mắc nối tiếp.

7. Các bước lắp ráp

  1. Kiểm tra PCB khi chưa cấp điện. So sánh mặt trước/sau với silkscreen của bo thật; xác định cực pin, VIN, GND, các header màn hình và thứ tự chân microSD.
  2. Lắp ESP32-S3. Canh đúng hướng cổng USB và hàng chân; hàn chắc, kiểm tra không chập giữa 5V, 3V3 và GND.
  3. Lắp microphone INMP441. Nối WS = 4, SCK = 5, DATA = 6; cấp 3.3V và GND. Xác nhận cổng âm thanh của module không bị vỏ che.
  4. Lắp MAX98357A và loa. Nối DOUT = 7, BCLK = 15, LRCK = 16; cấp VIN từ 5V sau công tắc và nối chung GND. Đặt tụ 100 µF sát VIN/GND của ampli. Nối loa đúng đầu ra của module, không nối một đầu loa xuống GND nếu đầu ra là cầu.
  5. Lắp microSD riêng. Nối MOSI = 11, CLK = 12, MISO = 13, CS = 19; cấp 3.3V và GND. Các đường SPI được dùng chung với màn TFT và touch, mỗi thiết bị có CS riêng. Dùng thẻ đã định dạng theo yêu cầu firmware.
    Module microSD SPI
    Module microSD SPI; kiểm tra thứ tự chân trên module trước khi đấu dây.
  6. Lắp đúng một màn hình. OLED dùng SDA = 41, SCL = 42; LCD 1.54″ dùng bus LCD, không cảm ứng; TFT 2.8″ dùng bus LCD và Touch CS = 8 nếu module có XPT2046. Không lắp chồng hoặc đấu song song nhiều header.
  7. Lắp mạch nguồn và công tắc. Đấu pin đúng cực vào mạch sạc/boost 1S. Nối đầu ra 5V của boost qua công tắc rồi phân nhánh đến VIN ESP32-S3 và VIN MAX98357A. Thêm tụ 100 µF tại mỗi VIN và nối chung GND.
  8. Lắp pin và cố định cơ khí. Chỉ đặt pin vào khay sau khi đã xác nhận cực tính và không có mối hàn nào có thể cọ rách lớp bọc cell. Không để pin bị ép, cong hoặc nóng.
  9. Đo điện áp trước khi cắm ESP32-S3. Khi chưa gắn board/module, bật nguồn và đo đầu ra: xác nhận đúng khoảng 5V, không đảo cực, công tắc ngắt/mở đúng. Tắt nguồn trước khi hoàn tất lắp ráp.

8. Kiểm tra và chạy thử

  1. Đo thông mạch để chắc chắn 5V không chập xuống GND; xác nhận hai tụ lắp đúng cực.
  2. Cấp nguồn USB cho ESP32-S3 trước, chưa gắn loa lớn; xác nhận firmware khởi động và nhận đúng màn hình.
  3. Thử hiển thị trước, rồi thử đọc thẻ microSD. Kiểm tra SD CS = GPIO19 và các đường MOSI/CLK/MISO = GPIO11/12/13.
  4. Thử thu mic và phát âm thanh ở âm lượng nhỏ. Nếu ESP32-S3 reset khi loa phát, kiểm tra dòng boost, sụt áp trên dây, điểm GND và tụ lọc.
  5. Thử pin: đo điện áp tại GPIO14 qua cầu chia áp. Không đưa trực tiếp điện áp pin vào GPIO; hệ số chia phải khớp với firmware.
  6. Kiểm tra công tắc cắt toàn bộ tải như dự kiến và kiểm tra sạc pin theo chỉ báo trên module sạc.

Chân đo điện áp pin là GPIO14 ở cả ba cấu hình. Tính năng hiển thị phần trăm pin cần được hiệu chuẩn theo cầu chia áp trên PCB và cell thực tế.

9. Nạp firmware và cấu hình Wi-Fi

Firmware chatbot và công cụ nạp được cập nhật tại trang Nạp firmware của VdLapTrinh.

Mở trang nạp firmware →

Chọn đúng firmware: với PCB tự lắp trong bài, chọn đúng mẫu OLED 0,96″, TFT ST7789 1,54″ hoặc TFT 2,8″ cảm ứng tại trang nạp. Bấm Kết nối USB, chọn cổng rồi bấm Nạp firmware trong hộp thoại khi cấu hình đã có tệp phát hành. Không chọn Freenove cho PCB tự lắp.

9.1. Hoàn tất nạp firmware (Flashing Complete)

Sau khi công cụ báo nạp xong, rút cáp USB, cấp nguồn cho thiết bị và nhấn nút RST trên board ESP32-S3 để khởi động lại. Thiết bị sẽ vào chế độ cấu hình Wi-Fi.

Nút RST trên board ESP32-S3
Nhấn RST sau khi nạp xong để khởi động lại và vào chế độ cấu hình (ảnh minh họa).

9.2. Cấu hình Wi-Fi cho thiết bị (How to Configure Device Wi-Fi)

  1. Giữ thiết bị đang cấp nguồn và nhấn RST để vào chế độ cấu hình. Đèn RGB (nếu có) nhấp nháy xanh dương.
  2. Trên điện thoại hoặc máy tính, mở danh sách Wi-Fi và kết nối mạng Xiaozhi-XXXXXX do thiết bị phát ra.
  3. Trình duyệt thường tự mở trang cấu hình. Nếu không, truy cập http://192.168.4.1.
  4. Chọn mạng Wi-Fi 2.4 GHz, nhập mật khẩu rồi nhấn Connect. Với hotspot iPhone, bật “Maximum Compatibility”.
  5. Khi trang hiện Done, thiết bị tự khởi động lại sau khoảng 3 giây.
Danh sách Wi-Fi có mạng Xiaozhi
Chọn Wi-Fi Xiaozhi-XXXXXX do thiết bị phát ra.
Trang cấu hình Wi-Fi của thiết bị
Nhập mật khẩu Wi-Fi 2.4 GHz và nhấn Connect.

Ảnh minh họa từ tài liệu KS5027 của Keyestudio.

Cấu hình lại: nếu board có nút cấu hình riêng, giữ nút đó rồi nhấn RST; nhả RST trước, sau đó nhả nút cấu hình. PCB trong bài không có nút này — Touch CS của bản 2.8″ dùng GPIO8 — nên hãy dùng cách cấu hình lại của bản firmware đang nạp. Với firmware từ 0.2.2, thiết bị tự về chế độ cấu hình sau ba lần kết nối Wi-Fi thất bại.

Đèn trạng thái (nếu board có LED RGB): xanh dương nháy = đang kết nối; xanh lá nháy = đã kết nối; xanh dương sáng = đang cập nhật OTA; đỏ = đang ghi âm; xanh lá sáng = đang phát âm thanh.

9.3. Thêm thiết bị vào Xiaozhi

  1. Sau khi kết nối Wi-Fi, thiết bị đọc một mã xác minh gồm 6 chữ số. Có thể đánh thức thiết bị bằng giọng nói để nghe lại mã.
  2. Mở xiaozhi.me, đăng nhập và vào Console.
  3. Tạo agent, đặt tên và chọn giọng nói.
  4. Chọn Add New Device, nhập mã 6 số và lưu.
  5. Cấu hình vai trò và mô hình AI, sau đó lưu lại.

9.4. Khởi động lại và bắt đầu trò chuyện

Nhấn RST hoặc ngắt nguồn rồi cấp lại. Sau khi đèn báo kết nối xanh, đánh thức thiết bị bằng câu lệnh thoại để bắt đầu trò chuyện.

Restart the Xiao Zhi AI Chatbot to start chatting! — Khởi động lại Xiao Zhi AI Chatbot để bắt đầu trò chuyện.

10. Lưu ý firmware và an toàn

  • Chọn đúng cấu hình màn hình/driver, độ phân giải, chiều xoay, offset và chế độ màu. Tên GPIO đúng vẫn chưa đủ để bảo đảm ảnh hiển thị đúng.
  • OLED SSD1306 128×64 dùng SDA = GPIO41, SCL = GPIO42; cấu hình này có nút cảm ứng riêng GPIO47 và không dùng LED ngoài theo bảng.
  • Màn 1.54″ bỏ toàn bộ phần cảm ứng. TFT 2.8″ chỉ dùng cảm ứng nếu đúng controller XPT2046; GPIO8 là CS, IRQ không nối theo config hiện tại.
  • Module microSD riêng dùng MOSI = GPIO11, CLK = GPIO12, MISO = GPIO13 và CS = GPIO19. Màn TFT và touch dùng chung các đường SPI với CS riêng; firmware phải cấu hình phù hợp.
  • Ở hai bản TFT, DHT11 DATA = GPIO47 là tùy chọn và LED đỏ = GPIO17. LED xanh GPIO8 chỉ dùng ở bản 1.54″; bản 2.8″ dành GPIO8 cho Touch CS. Không áp dụng các chức năng này cho bản OLED.
  • Ảnh thực tế giúp nhận biết vị trí lắp; trước khi cấp nguồn vẫn cần đối chiếu nhãn chân, cực tính, bảng GPIO và kiểm tra mối hàn trên bo.

Bảng GPIO đã được cập nhật theo ba cấu hình màn hình của PCB. Các thông số như dòng loa, dung lượng pin, IC sạc/boost và loại panel màn hình cần được xác nhận theo linh kiện thực tế.

↑ Về đầu trang

Hướng dẫn DIY · Kiểm tra pinout và cực tính trước khi cấp nguồn.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *