Macropad 3 phím BLE HID cho Claude Code, chạy trên ESP32-C3 SuperMini. Cấp nguồn bằng USB-C, không dùng pin.
| Phím | GPIO | Ký tự gửi |
|---|---|---|
| Yes | GPIO3 | 1 |
| Yes, always | GPIO4 | 2 |
| No | GPIO5 | 3 |
Mỗi switch: một chân vào GPIO, chân còn lại về GND. Board chỉ có một pad GND — nối daisy-chain ba switch với nhau rồi chạy một dây duy nhất về pad đó.
Không cần điện trở kéo, firmware dùng INPUT_PULLUP.
# Bước 1 - kiểm tra mối hàn
pio run -e pintest -t upload
pio device monitor # không bấm = 1 1 1, bấm phím = chân đó về 0
# Bước 2 - firmware BLE
pio run -e keys -t uploadSau đó vào Bluetooth trên máy, tìm Claude Code Keys và kết nối.
- Phải dùng
platform = espressif32@6.7.0(arduino-esp32 core 2.0.17). Core 3.x chưa tương thích với thư việnESP32-BLE-Keyboard. - Chân cấm dùng trên ESP32-C3: GPIO2, GPIO8, GPIO9 (strapping pin), GPIO20/21 (UART0), GPIO18/19 (USB).
- Switch bị dội phím thì tăng
DEBOUNCE_MStrongsrc/main.cpplên 50. - Test ở trình soạn thảo văn bản trước, đừng gõ thẳng vào Claude Code.
- Đổi cáp USB-C khác — nhiều cáp chỉ có dây nguồn, không có dây data.
- Vào bootloader thủ công: giữ BOOT → nhấn nhả RESET → thả BOOT.
- Xóa cache:
rm -rf .piorồi build lại. - Lỗi
Unable to verify flash chip connection (No serial data received.)ngay sau dòngStub running...: board này bị treo ở giai đoạn stub loader của esptool (gặp trên một số ESP32-C3 SuperMini). Cáp, tốc độ upload, và bootloader thủ công không ảnh hưởng gì — đã kiểm chứng. Fix: dùng thẳng ROM bootloader thay vì stub, đã cấu hình sẵn trongplatformio.inibằngupload_flags = --no-stub. Nếu vẫn thấy lỗi này, kiểm traplatformio.inicòn dòng đó không.