Agregar Placas y Herramientas: Guía de Hardware de ZeroClaw
Esta guía explica cómo agregar nuevas placas de hardware y herramientas personalizadas a ZeroClaw.
Inicio rápido: Agregar un tablero mediante CLI
sh
# Agregar un tablero
zeroclaw peripheral add nucleo-f401re /dev/ttyACM0
zeroclaw peripheral add arduino-uno /dev/cu.usbmodem12345
zeroclaw peripheral add rpi-gpio native # para GPIO de Raspberry Pi (Linux)
# Reiniciar el daemon para aplicar
zeroclaw daemon --host 127.0.0.1 --port 42617
Placas compatibles
Las placas se identifican mediante el VID/PID USB. El registro canónico:
| Tablero | Arquitectura | USB VID:PID |
|---|---|---|
nucleo-f401re | ARM Cortex-M4 | 0x0483:0x374b |
nucleo-f411re | ARM Cortex-M4 | 0x0483:0x3748 |
arduino-uno | AVR ATmega328P | 0x2341:0x0043 |
arduino-uno | Arduino Uno Q / ATmega328P | 0x2341:0x0078 |
arduino-mega | AVR ATmega2560 | 0x2341:0x0042 |
cp2102 | Puente USB-UART | 0x10c4:0xea60 |
cp2102n | Puente USB-UART | 0x10c4:0xea70 |
esp32 | ESP32 (CH340) | 0x1a86:0x7523 |
esp32 | ESP32 (CH340) | 0x1a86:0x55d4 |
El valor board en [[peripherals.boards]] se compara con estos nombres del registro (y algunos alias específicos del transporte como arduino-uno-q / rpi-gpio gestionados en peripherals/mod.rs).
Configuración manual
Las placas se configuran en peripherals y peripherals.boards. Consulte la referencia de configuración para el índice completo de campos, incluido datasheet_dir (fuente RAG).
Agregando una Hoja de Datos (RAG)
Coloca archivos .md o .txt en docs/datasheets/ (o en tu datasheet_dir). Nombra los archivos por placa: nucleo-f401re.md, arduino-uno.md. Los archivos se extraen, se dividen en fragmentos y se recuperan en el contexto del agente para preguntas específicas de la placa. El análisis de datasheets en PDF ya no es compatible desde #8519; convierte los PDFs a .md o .txt antes de indexarlos.
Alias de pines (Recomendado)
Añade una sección ## Pin Aliases para que el agente pueda mapear “red led” → pin 13:
# My Board
## Pin Aliases
| alias | pin |
|-------------|-----|
| red_led | 13 |
| builtin_led | 13 |
| user_led | 5 |
O usa el formato de clave-valor:
## Pin Aliases
red_led: 13
builtin_led: 13
Agregar un nuevo tipo de placa
- Crea una hoja de datos:
docs/datasheets/my-board.mdcon alias de pines e información de GPIO. - Agregar a la configuración:
zeroclaw peripheral add my-board /dev/ttyUSB0 - Implementar un periférico (opcional): Para protocolos personalizados, implemente el trait
Peripheralencrates/zeroclaw-hardware/src/peripherals/y regístrelo encreate_peripheral_tools.
Consulta docs/hardware/hardware-peripherals-design.md para ver el diseño completo.
Agregar una herramienta personalizada
- Implementa el rasgo
Toolencrates/zeroclaw-tools/src/. - Regístrate en
create_peripheral_tools(para herramientas de hardware) o en el registro de herramientas del agente. - Agregue una descripción de la herramienta a
tool_descsdel agente encrates/zeroclaw-runtime/src/agent/loop_.rs.
Referencia de la CLI
Consulta la referencia de CLI generada para los subcomandos zeroclaw peripheral y zeroclaw hardware.
Solución de problemas
- Puerto serie no encontrado: En macOS use
/dev/cu.usbmodem*; en Linux use/dev/ttyACM0o/dev/ttyUSB0. - Compilar con hardware:
cargo build --features hardware - Probe-rs para Nucleo:
cargo build --features hardware,probe