Điều khiển GPIO bằng giọng nói trên Xiaozhi breadboard
Bật/tắt LED GPIO18 bằng MCP có sẵn, hoặc thêm thiết bị relay/quạt qua mã nguồn ESP-IDF.
Bài viết dịch và biên soạn từ tài liệu chính thức (Hướng dẫn GPIO (Feishu)), thuộc bộ tài liệu DIY Xiaozhi AI.
Tổng quan
Firmware Xiaozhi breadboard Wi-Fi (bread-compact-wifi) hỗ trợ điều khiển thiết bị bằng giọng nói qua giao thức MCP trên thiết bị. Cách nhanh nhất: nối LED (hoặc relay module) vào GPIO18 — firmware mẫu đã có sẵn. Muốn thêm đèn quạt, relay riêng: chỉnh mã nguồn và build lại.

Cách 1 — LED trên GPIO18 (có sẵn trong firmware)
Đấu dây
- LED đơn + điện trở 220Ω–1kΩ
- Anode LED → điện trở → GPIO18
- Cathode LED → GND
Chân LAMP_GPIO trong main/boards/bread-compact-wifi/config.h mặc định là GPIO_NUM_18.
Điều khiển bằng giọng nói
Firmware đăng ký công cụ MCP:
self.lamp.turn_on— bậtself.lamp.turn_off— tắtself.lamp.get_state— đọc trạng thái
Nói với Xiaozhi các câu tự nhiên, ví dụ: "Bật đèn", "Tắt đèn", "Bật đèn phòng khách" — mô hình ngôn ngữ sẽ gọi công cụ phù hợp. Cần firmware ≥ 0.9.7 (khuyến nghị bản mới từ GitHub).
Relay / thiết bị AC
GPIO18 chỉ xuất tín hiệu 3,3 V — không nối trực tiếp máy 220 V. Dùng module relay 1 kênh (IN → GPIO18, VCC/GND theo datasheet module). Nói "bật" hoặc "tắt" để điều khiển relay.
Cách 2 — Thêm thiết bị GPIO tùy chỉnh (biên dịch firmware)
Hướng dẫn cộng đồng dành cho người đã cài VS Code + ESP-IDF:
- Mở mã nguồn
xiaozhi-esp32, chọn board ESP32-S3 và đúng thư mục board (ví dụ bread Wi-Fi). - Trong thư mục board, thêm file header thiết bị (ví dụ
lamp_G.h) — định nghĩa tên thiết bị và thuộc tính cho AI. - Thay tên mẫu (ví dụ
Green_Lamp) bằng tên thiết bị của bạn; đổi nhãn hiển thị trong file. - Trong file
.cccủa board, đăng ký thiết bị để AI nhìn thấy qua MCP. idf.py build→ flash. Thử nói "mở quạt", "bật đèn đỏ"… tùy tên đã khai báo.
Video minh họa trên Bilibili (tìm "Xiaozhi GPIO") có thêm ví dụ hẹn giờ và điều khiển đèn.

Lưu ý
- Mỗi chân GPIO chỉ nên gánh một chức năng — tránh trùng chân mic, loa, OLED, I2S.
- Motor cần driver (L298N, MOSFET…) — không cấp trực tiếp từ GPIO.
- Muốn mở rộng qua máy tính (API, tìm kiếm…): xem cấu hình MCP endpoint.