Bỏ qua, đến nội dung chính
Nastrotek
MochiHardware

Kiến trúc phần cứng hoàn chỉnh cho một robot Mochi dùng ESP32-S3

Phân tích các khối phần cứng chính của robot Mochi dùng ESP32-S3: màn hình, touch, microphone I2S, amplifier, loa, pin, sạc, nguồn và lưu ý chọn GPIO.

Chia sẻ

LinkedInFacebookX
Opened Mochi prototype showing the controller, display, wiring and 3D-printed enclosure used during early hardware experiments

Khi chuyển Robot Mochi từ bản thử nghiệm đơn giản sang một thiết kế gọn hơn, phần khó không chỉ là chọn module. Việc quan trọng hơn là chia hệ thống thành các khối rõ ràng: khối xử lý, khối hiển thị, khối chạm, khối âm thanh, khối nguồn và khối debug.

Trong bài này, mình sẽ cùng bạn đi qua từng khối và giải thích những đánh đổi cần cân nhắc trước khi chốt schematic.

ESP32-S3 là lựa chọn hợp lý cho một bản Mochi có màn hình màu, cảm ứng và âm thanh cơ bản. Chip có nhiều peripheral phù hợp cho UI nhúng như GPIO, I2C, I2S, SPI, LCD và USB. Tuy vậy, nếu chọn GPIO vội, rất dễ rơi vào tình trạng màn hình chạy được nhưng audio nhiễu, touch thiếu chân interrupt, hoặc mạch khó debug khi chuyển sang PCB.

Sơ đồ khối tổng quát

Sơ đồ khối phần cứng Robot Mochi dùng ESP32-S3 với màn hình, touch, microphone, amplifier, loa, pin, sạc và nguồn.

Sơ đồ khối đề xuất cho một Robot Mochi dùng ESP32-S3. Đây là kiến trúc tham khảo, không phải sơ đồ nguyên lý cuối cùng.

Sơ đồ trên không cố định linh kiện cụ thể. Nó dùng để trả lời câu hỏi: mỗi khối cần bus nào, cần bao nhiêu chân, và khối nào nên được ưu tiên khi phân bổ GPIO.

ESP32-S3 làm bộ xử lý trung tâm

Trong kiến trúc này, ESP32-S3 là nơi chạy firmware chính, quản lý LVGL hoặc lớp UI tương đương, đọc touch, nhận âm thanh từ microphone, phát âm thanh ra amplifier và theo dõi trạng thái nguồn.

Nên xem ESP32-S3 như một trung tâm điều phối thay vì chỉ là một board dev gắn thêm module. Khi thiết kế PCB, các đường bus tốc độ cao như LCD, SPI hoặc I2S nên được đặt trước. Các tín hiệu chậm hơn như enable, interrupt, nút bấm hoặc LED trạng thái có thể linh hoạt hơn.

Khối màn hình

Mochi cần màn hình để hiển thị khuôn mặt, biểu cảm, trạng thái pin, kết nối hoặc menu nhỏ. Với ESP32-S3, có thể cân nhắc:

  • SPI LCD: dễ mua module, ít chân hơn, phù hợp màn nhỏ.
  • RGB LCD: nhiều chân hơn, nhưng có lợi khi cần refresh mượt và độ phân giải cao hơn.
  • OLED/I2C nhỏ: đơn giản, nhưng giới hạn nếu muốn biểu cảm màu hoặc animation phong phú.

Tài liệu esp_lcd của ESP-IDF mô tả LCD theo hai phần: control plane để cấu hình controller và data plane để truyền dữ liệu pixel. Mình thấy cách nghĩ này rất hữu ích khi thiết kế Mochi, vì nó buộc mình tách rõ chân điều khiển, chân dữ liệu, reset, backlight và nguồn màn hình.

Khối touch

Touch có thể dùng để chạm đầu, chạm mặt, hoặc thao tác menu đơn giản. Có hai hướng phổ biến:

  • Touch controller qua I2C, ví dụ dùng chung bus với cảm biến khác.
  • Cảm biến chạm điện dung đơn giản đưa tín hiệu vào một GPIO input.

Nếu dùng touch controller I2C, nên chừa thêm một chân interrupt. Không nên chỉ nghĩ “I2C cần hai chân là đủ”, vì interrupt giúp firmware biết khi nào có chạm mà không phải polling liên tục.

Microphone I2S

Nếu Mochi cần nghe lệnh, nhận âm thanh môi trường hoặc làm hiệu ứng phản hồi theo giọng nói, microphone I2S là lựa chọn sạch hơn so với microphone analog. Một microphone I2S thường cần các tín hiệu như BCLK, WS/LRCLK và DATA.

Với layout PCB, nên đặt microphone tránh xa nguồn xung, đường loa công suất và anten Wi-Fi. Âm thanh là phần dễ bị nhiễu, nên ngay từ sơ đồ khối đã cần tách nó khỏi khối nguồn và amplifier.

Amplifier và loa

Loa giúp Mochi có phản hồi tự nhiên hơn: tiếng xác nhận, âm trạng thái, hoặc giọng nói ngắn. Có hai kiểu triển khai thường gặp:

  • I2S amplifier, ví dụ nhận thẳng dữ liệu digital từ ESP32-S3.
  • Amplifier analog nhỏ, nếu firmware chỉ phát âm đơn giản qua DAC/PWM hoặc nguồn audio khác.

Với robot nhỏ, công suất loa không cần quá lớn. Điều quan trọng hơn là kiểm soát nhiễu nguồn, tránh làm màn hình nháy hoặc ESP32-S3 reset khi âm lượng tăng đột ngột.

Pin, sạc và nguồn

Một Robot Mochi để bàn thường dùng pin LiPo hoặc Li-ion một cell. Khối nguồn nên được thiết kế như một phần riêng, gồm:

  • Pin.
  • Mạch sạc.
  • Bảo vệ pin nếu module sạc chưa có.
  • Công tắc nguồn.
  • Regulator 3.3V cho ESP32-S3 và logic.
  • Đường cấp riêng hoặc lọc thêm cho màn hình, amplifier nếu cần.

Không nên cấp mọi thứ một cách “tiện đâu nối đó”. Màn hình và amplifier có thể tạo tải biến thiên, trong khi ESP32-S3 cần nguồn ổn định khi Wi-Fi, màn hình và audio cùng hoạt động.

Lưu ý chọn GPIO

Một thứ tự chọn chân tương đối an toàn:

  1. Chốt interface màn hình trước, đặc biệt nếu dùng RGB LCD hoặc SPI tốc độ cao.
  2. Chốt I2S microphone và I2S audio out.
  3. Chốt I2C cho touch hoặc cảm biến phụ.
  4. Chừa chân cho USB, UART debug, boot mode và flash/PSRAM theo board hoặc module đang dùng.
  5. Cuối cùng mới gán GPIO cho nút bấm, interrupt, enable, LED hoặc tín hiệu phụ.

Không có một bảng GPIO đúng cho mọi Mochi. Mỗi màn hình, module ESP32-S3 và cách đóng gói PCB sẽ khác nhau. Điều nên giữ là nguyên tắc: bus quan trọng trước, tín hiệu phụ sau, và luôn kiểm tra datasheet của module cụ thể trước khi vẽ PCB.

Gợi ý cấu hình cho bản prototype

Với bản prototype đầu tiên, có thể bắt đầu từ cấu hình vừa đủ:

  • ESP32-S3 module có PSRAM nếu muốn UI mượt hơn.
  • Màn SPI TFT 1.28 inch, 1.69 inch hoặc 2.0 inch.
  • Touch I2C hoặc một cảm biến chạm đơn giản.
  • Microphone I2S.
  • I2S amplifier nhỏ và loa 4 ohm hoặc 8 ohm.
  • Pin LiPo một cell, mạch sạc USB-C và regulator 3.3V đủ dòng.
  • UART hoặc USB debug dễ tiếp cận.

Khi firmware, UI và âm thanh đã ổn, lúc đó mới nên gom các module thành PCB riêng. Làm ngược lại thường khiến mỗi lỗi nhỏ đều trở thành lỗi phần cứng khó sửa.

Kết luận

Một Robot Mochi dùng ESP32-S3 nên được thiết kế theo khối ngay từ đầu. Màn hình, touch, microphone, amplifier, loa, pin, sạc và nguồn đều ảnh hưởng đến cách chọn GPIO và layout PCB. Nếu chia khối tốt, bản prototype sẽ dễ debug hơn, còn bản PCB sau này cũng ít phải sửa những lỗi nền tảng.

Tham khảo

Đọc thêm liên quan

Chia sẻ

LinkedInFacebookX

Tiếp tục khám phá

Đọc tiếp

Bài viết liên quan

Xem thêm trong Mochi

Nastrotek sử dụng cookie để phân tích truy cập và cá nhân hóa quảng cáo, giúp hiểu cách website được sử dụng. Bạn có thể chấp nhận hoặc từ chối các cookie không thiết yếu.