{
  "metadata": {
    "id": "sparkfun-xrp-controller-rob-26619",
    "name": "SparkFun XRP Controller",
    "type": "controller",
    "description": "RP2350-based robotics controller with four DC motor ports (with encoder support), four servo headers, two Qwiic I2C connectors, on-board LSM6DSO/LSM6DSOX IMU, and Raspberry Pi RM2 Wi-Fi 4/Bluetooth wireless module. Power via USB-C or 5–11 V barrel jack.",
    "manufacturer": "SparkFun",
    "part_number": "ROB-26619",
    "datasheet_url": "https://github.com/sparkfun/SparkFun_XRP_Controller/raw/main/Hardware/SparkFun_XRP_Controller_v10_Schematic.pdf",
    "tags": [
      "xrp",
      "rp2350",
      "rm2",
      "qwiic",
      "i2c",
      "imu",
      "dc-motor",
      "servo",
      "education"
    ],
    "schema_version": "1.4.0",
    "version": "1.1.0",
    "taxonomy": [
      "microcontroller",
      "robotics.educational"
    ]
  },
  "domains": [
    {
      "domain": "electrical",
      "power_domains": [
        {
          "id": "vbat_in",
          "name": "Barrel VIN",
          "nominal_voltage_V": 6,
          "voltage_range_V": [
            5,
            11
          ],
          "regulation_type": "unregulated",
          "isolation_type": "non_isolated",
          "ground_reference": "common",
          "description": "Primary input from battery pack via barrel jack"
        },
        {
          "id": "usb_5v_in",
          "name": "USB 5V",
          "nominal_voltage_V": 5,
          "voltage_range_V": [
            4.5,
            5.5
          ],
          "regulation_type": "regulated",
          "isolation_type": "non_isolated",
          "ground_reference": "common",
          "description": "USB-C 5 V input and data"
        },
        {
          "id": "sys_5v",
          "name": "System 5V",
          "nominal_voltage_V": 5,
          "voltage_range_V": [
            4.8,
            5.2
          ],
          "regulation_type": "regulated",
          "isolation_type": "non_isolated",
          "ground_reference": "common",
          "compatible_domains": [
            "vbat_in",
            "usb_5v_in"
          ],
          "description": "5 V rail from buck regulator for motors, servos, and system"
        },
        {
          "id": "sys_3v3",
          "name": "System 3V3",
          "nominal_voltage_V": 3.3,
          "voltage_range_V": [
            3.1,
            3.5
          ],
          "regulation_type": "regulated",
          "isolation_type": "non_isolated",
          "ground_reference": "common",
          "compatible_domains": [
            "sys_5v"
          ],
          "description": "3.3 V rail for logic, IMU, Qwiic"
        }
      ],
      "resources": [
        {
          "id": "barrel_jack",
          "functions": [
            "power_input",
            "ground"
          ],
          "connector_type": "barrel_jack",
          "power_domain_id": "vbat_in",
          "description": "5–11 V DC input via barrel jack"
        },
        {
          "id": "usb_c",
          "functions": [
            "power_input",
            "usb_data",
            "ground"
          ],
          "connector_type": "usb",
          "power_domain_id": "usb_5v_in",
          "description": "USB-C for 5 V power, programming, and comms"
        },
        {
          "id": "qwiic_0",
          "functions": [
            "i2c_sda",
            "i2c_scl",
            "power_output",
            "ground"
          ],
          "connector_type": "qwiic_4pin",
          "power_domain_id": "sys_3v3",
          "description": "Qwiic connector on I2C0 (3.3 V logic)"
        },
        {
          "id": "qwiic_1",
          "functions": [
            "i2c_sda",
            "i2c_scl",
            "power_output",
            "ground"
          ],
          "connector_type": "qwiic_4pin",
          "power_domain_id": "sys_3v3",
          "description": "Qwiic connector on I2C1 (3.3 V logic)"
        },
        {
          "id": "servo_1",
          "functions": [
            "servo_pwm",
            "power_output",
            "ground"
          ],
          "connector_type": "servo_3pin",
          "power_domain_id": "sys_5v",
          "description": "Servo 1 header (signal is 3.3 V logic)"
        },
        {
          "id": "servo_2",
          "functions": [
            "servo_pwm",
            "power_output",
            "ground"
          ],
          "connector_type": "servo_3pin",
          "power_domain_id": "sys_5v",
          "description": "Servo 2 header (signal is 3.3 V logic)"
        },
        {
          "id": "servo_3",
          "functions": [
            "servo_pwm",
            "power_output",
            "ground"
          ],
          "connector_type": "servo_3pin",
          "power_domain_id": "sys_5v",
          "description": "Servo 3 header (signal is 3.3 V logic)"
        },
        {
          "id": "servo_4",
          "functions": [
            "servo_pwm",
            "power_output",
            "ground"
          ],
          "connector_type": "servo_3pin",
          "power_domain_id": "sys_5v",
          "description": "Servo 4 header (signal is 3.3 V logic)"
        },
        {
          "id": "motor_L",
          "functions": [
            "motor_pos",
            "motor_neg",
            "encoder_a",
            "encoder_b",
            "power_output",
            "ground"
          ],
          "connector_type": "jst-sh-6",
          "power_domain_id": "sys_5v",
          "description": "Left DC motor port with encoder power and signals"
        },
        {
          "id": "motor_R",
          "functions": [
            "motor_pos",
            "motor_neg",
            "encoder_a",
            "encoder_b",
            "power_output",
            "ground"
          ],
          "connector_type": "jst-sh-6",
          "power_domain_id": "sys_5v",
          "description": "Right DC motor port with encoder power and signals"
        },
        {
          "id": "motor_3",
          "functions": [
            "motor_pos",
            "motor_neg",
            "encoder_a",
            "encoder_b",
            "power_output",
            "ground"
          ],
          "connector_type": "jst-sh-6",
          "power_domain_id": "sys_5v",
          "description": "Motor 3 port with encoder power and signals"
        },
        {
          "id": "motor_4",
          "functions": [
            "motor_pos",
            "motor_neg",
            "encoder_a",
            "encoder_b",
            "power_output",
            "ground"
          ],
          "connector_type": "jst-sh-6",
          "power_domain_id": "sys_5v",
          "description": "Motor 4 port with encoder power and signals"
        },
        {
          "id": "user_button",
          "functions": [
            "digital_input"
          ],
          "connector_type": "onboard",
          "power_domain_id": "sys_3v3",
          "description": "USER pushbutton to RP2350 GPIO"
        },
        {
          "id": "status_rgb_led",
          "functions": [
            "led"
          ],
          "connector_type": "onboard",
          "power_domain_id": "sys_3v3",
          "description": "On-board RGB status LED"
        }
      ],
      "interfaces": [
        {
          "id": "i2c_master_0",
          "protocol": "i2c",
          "role": "master",
          "requires": [
            {
              "function": "i2c_sda",
              "count": 1
            },
            {
              "function": "i2c_scl",
              "count": 1
            }
          ],
          "exclusive": false,
          "protocol_max_freq_Hz": 400000,
          "pullups_on_master": true,
          "constraints": {
            "max_connections": 8,
            "requires_matching_voltage_domain": true
          },
          "description": "Qwiic bus on 3.3 V (I2C0)"
        },
        {
          "id": "i2c_master_1",
          "protocol": "i2c",
          "role": "master",
          "requires": [
            {
              "function": "i2c_sda",
              "count": 1
            },
            {
              "function": "i2c_scl",
              "count": 1
            }
          ],
          "exclusive": false,
          "protocol_max_freq_Hz": 400000,
          "pullups_on_master": true,
          "constraints": {
            "max_connections": 8,
            "requires_matching_voltage_domain": true
          },
          "description": "Qwiic bus on 3.3 V (I2C1)"
        },
        {
          "id": "servo_output",
          "protocol": "pwm",
          "role": "transmitter",
          "requires": [
            {
              "function": "servo_pwm",
              "count": 1
            },
            {
              "function": "power_output",
              "count": 1
            },
            {
              "function": "ground",
              "count": 1
            }
          ],
          "constraints": {
            "max_connections": 4,
            "requires_matching_voltage_domain": false
          },
          "description": "Four 3-pin servo headers. PWM signal is 3.3 V logic level."
        },
        {
          "id": "dc_motor_port",
          "protocol": "h_bridge_dc",
          "role": "actuator_port",
          "requires": [
            {
              "function": "motor_pos",
              "count": 1
            },
            {
              "function": "motor_neg",
              "count": 1
            },
            {
              "function": "encoder_a",
              "count": 1
            },
            {
              "function": "encoder_b",
              "count": 1
            },
            {
              "function": "power_output",
              "count": 1
            },
            {
              "function": "ground",
              "count": 1
            }
          ],
          "constraints": {
            "max_connections": 4,
            "requires_matching_voltage_domain": false
          },
          "description": "Four DC motor ports driven by two DRV8411A dual H-bridges with encoder inputs."
        },
        {
          "id": "usb_c_data",
          "protocol": "usb",
          "role": "data",
          "requires": [],
          "constraints": {
            "max_connections": 1,
            "requires_matching_voltage_domain": false
          },
          "description": "USB-C data interface to RP2350"
        }
      ],
      "supply_voltage_V": [
        5,
        11
      ],
      "power_consumption_mW": 250,
      "metadata": {
        "supports_usb": true,
        "supports_hot_plug": true,
        "package_type": "Controller PCB"
      }
    },
    {
      "domain": "mechanical",
      "resources": [],
      "interfaces": [],
      "metadata": {
        "enclosure_type": "open_pcb"
      }
    }
  ],
  "design_rules": [
    "VIN via barrel jack must be 5–11 V",
    "All logic I/O are 3.3 V; do not apply 5 V to GPIO",
    "Servo signal is 3.3 V logic; servo power is 5 V from board",
    "Motor voltage is 5 V from on-board buck and DRV8411A VM; do not feed external motor voltage into motor ports",
    "I2C pull-ups are on-board; open jumpers to disable if needed",
    "Observe current limits and thermal rise on motor drivers"
  ],
  "validation_requirements": [
    "Confirm power source within 5–11 V when using barrel jack",
    "Verify motor stall current within DRV8411A and board thermal capacity",
    "Verify encoder voltage compatibility with 3.3 V supply on motor ports",
    "Confirm Qwiic devices are 3.3 V logic",
    "Check servo current budget against 5 V rail capability"
  ],
  "usage_notes": "Use USB-C for programming. For battery operation, use the barrel jack with 4×AA or equivalent 5–11 V source. Two DRV8411A drivers power up to four DC motors with quadrature encoders. Two Qwiic connectors expose I2C at 3.3 V.",
  "application_examples": [
    "FIRST XRP kit robots",
    "Education robotics labs",
    "General-purpose small mobile robots"
  ],
  "compatibility_notes": "Qwiic is 3.3 V only. Motor ports supply 5 V to both motors and encoders. Wireless via Raspberry Pi RM2 supports 2.4 GHz Wi-Fi 4 and Bluetooth 5.2.",
  "warnings": [
    "Do not exceed 11 V on VIN",
    "Avoid shorting motor outputs",
    "High motor currents can overheat the drivers"
  ]
}