[
  {
    "source": "robot_rpi5",
    "target": "robot_esp32",
    "type": "data",
    "label": "High-Level Commands",
    "protocol": "UART"
  },
  {
    "source": "robot_rpi5",
    "target": "robot_lidar",
    "type": "data",
    "label": "LiDAR Data",
    "protocol": "USB"
  },
  {
    "source": "robot_esp32",
    "target": "robot_wheel_encoder",
    "type": "data",
    "label": "Encoder Pulses",
    "protocol": "GPIO"
  },
  {
    "source": "robot_rpi5",
    "target": "robot_tof_sensor",
    "type": "power",
    "label": "5V Power",
    "sourcePin": "5V",
    "targetPin": "VIN",
    "voltage": "5V"
  },
  {
    "source": "robot_rpi5",
    "target": "robot_tof_sensor",
    "type": "data",
    "label": "I2C",
    "sourcePin": "SDA",
    "targetPin": "SDA",
    "voltage": "3.3V"
  },
  {
    "source": "robot_rpi5",
    "target": "robot_tof_sensor",
    "type": "data",
    "label": "I2C",
    "sourcePin": "SCL",
    "targetPin": "SCL",
    "voltage": "3.3V"
  },
  {
    "source": "robot_watchdog",
    "target": "robot_rpi5",
    "type": "data",
    "label": "Reset Signal",
    "sourcePin": "RESET",
    "targetPin": "RUN",
    "voltage": "3.3V"
  },
  {
    "source": "robot_rpi5",
    "target": "robot_logging_storage",
    "type": "power",
    "label": "5V Power",
    "sourcePin": "5V",
    "targetPin": "VCC",
    "voltage": "5V"
  },
  {
    "source": "robot_rpi5",
    "target": "robot_logging_storage",
    "type": "data",
    "label": "SPI",
    "sourcePin": "MOSI",
    "targetPin": "MOSI",
    "voltage": "3.3V"
  },
  {
    "source": "robot_rpi5",
    "target": "robot_logging_storage",
    "type": "data",
    "label": "SPI",
    "sourcePin": "MISO",
    "targetPin": "MISO",
    "voltage": "3.3V"
  },
  {
    "source": "robot_rpi5",
    "target": "robot_logging_storage",
    "type": "data",
    "label": "SPI",
    "sourcePin": "SCLK",
    "targetPin": "SCK",
    "voltage": "3.3V"
  },
  {
    "source": "robot_rpi5",
    "target": "robot_logging_storage",
    "type": "data",
    "label": "SPI",
    "sourcePin": "CE0",
    "targetPin": "CS",
    "voltage": "3.3V"
  },
  {
    "source": "robot_rpi5",
    "target": "robot_esp32",
    "type": "data",
    "label": "Hardware Time Sync Pulse",
    "protocol": "GPIO",
    "sourcePin": "GPIO_Sync_Out",
    "targetPin": "GPIO_Sync_In"
  },
  {
    "source": "robot_battery_3s_lipo",
    "target": "robot_estop_button",
    "type": "power",
    "label": "Battery Power In",
    "sourcePin": "V+",
    "targetPin": "NC_IN",
    "voltage": "11.1V"
  },
  {
    "source": "robot_motor_power_regulator",
    "target": "robot_motor_driver_high_power",
    "type": "power",
    "label": "Motor Driver Power",
    "sourcePin": "VOUT",
    "targetPin": "VIN",
    "voltage": "12V"
  },
  {
    "source": "robot_esp32",
    "target": "robot_motor_driver_high_power",
    "type": "data",
    "label": "Motor Control",
    "protocol": "PWM"
  },
  {
    "source": "robot_esp32",
    "target": "robot_lora_radio_900mhz",
    "type": "data",
    "label": "LoRa SPI",
    "protocol": "SPI"
  },
  {
    "source": "robot_ubec_power_converter_high_capacity",
    "target": "robot_rpi5",
    "type": "power",
    "label": "RPi 5V Power",
    "voltage": "5V"
  },
  {
    "source": "robot_motor_driver_high_power",
    "target": "robot_left_motor_high_torque",
    "type": "power",
    "label": "Left Motor Power"
  },
  {
    "source": "robot_motor_driver_high_power",
    "target": "robot_right_motor_high_torque",
    "type": "power",
    "label": "Right Motor Power"
  },
  {
    "source": "robot_watchdog",
    "target": "robot_motor_driver_high_power",
    "type": "data",
    "label": "Watchdog Motor Disable",
    "sourcePin": "DRV/DONE",
    "targetPin": "ENABLE"
  },
  {
    "source": "robot_ubec_power_converter_high_capacity",
    "target": "robot_esp32",
    "type": "power",
    "voltage": "5V"
  },
  {
    "source": "robot_rpi5",
    "target": "robot_lora_radio_900mhz",
    "type": "power",
    "voltage": "3.3V"
  },
  {
    "source": "robot_rpi5",
    "target": "robot_watchdog",
    "type": "power",
    "voltage": "3.3V"
  },
  {
    "source": "robot_rpi5",
    "target": "robot_lora_radio_900mhz",
    "type": "data",
    "protocol": "SPI",
    "sourcePin": "MOSI",
    "targetPin": "MOSI"
  },
  {
    "source": "robot_rpi5",
    "target": "robot_lora_radio_900mhz",
    "type": "data",
    "protocol": "SPI",
    "sourcePin": "MISO",
    "targetPin": "MISO"
  },
  {
    "source": "robot_rpi5",
    "target": "robot_lora_radio_900mhz",
    "type": "data",
    "protocol": "SPI",
    "sourcePin": "SCLK",
    "targetPin": "SCK"
  },
  {
    "source": "robot_rpi5",
    "target": "robot_lora_radio_900mhz",
    "type": "data",
    "protocol": "SPI",
    "sourcePin": "CS",
    "targetPin": "CS"
  },
  {
    "source": "robot_rpi5",
    "target": "robot_lora_radio_900mhz",
    "type": "data",
    "protocol": "GPIO",
    "sourcePin": "GPIO",
    "targetPin": "CE"
  },
  {
    "source": "robot_rpi5",
    "target": "robot_lora_radio_900mhz",
    "type": "data",
    "protocol": "GPIO",
    "sourcePin": "GPIO",
    "targetPin": "IRQ"
  },
  {
    "source": "robot_estop_button",
    "target": "robot_motor_power_regulator",
    "type": "power",
    "label": "E-Stop to Motor Regulator",
    "sourcePin": "NC_OUT",
    "targetPin": "VIN",
    "voltage": "11.1V"
  },
  {
    "source": "robot_battery_3s_lipo",
    "target": "robot_ubec_power_converter_high_capacity",
    "type": "power",
    "label": "Battery to UBEC",
    "sourcePin": "V+",
    "targetPin": "VIN+",
    "voltage": "11.1V"
  },
  {
    "source": "robot_esp32",
    "target": "robot_wheel_encoder",
    "type": "power",
    "label": "Encoder Power",
    "sourcePin": "3.3V",
    "targetPin": "VCC",
    "voltage": "3.3V"
  },
  {
    "source": "robot_esp32",
    "target": "robot_watchdog",
    "type": "data",
    "label": "Watchdog Heartbeat",
    "sourcePin": "GPIO",
    "targetPin": "WDI"
  },
  {
    "source": "robot_rpi5",
    "target": "robot_secure_element",
    "type": "data",
    "protocol": "I2C",
    "sourcePin": "SDA",
    "targetPin": "SDA"
  },
  {
    "source": "robot_rpi5",
    "target": "robot_secure_element",
    "type": "data",
    "protocol": "I2C",
    "sourcePin": "SCL",
    "targetPin": "SCL"
  },
  {
    "source": "robot_rpi5",
    "target": "robot_secure_element",
    "type": "power",
    "voltage": "3.3V"
  },
  {
    "source": "robot_ubec_power_converter_high_capacity",
    "target": "robot_imu_upgrade",
    "type": "power",
    "voltage": "5V"
  },
  {
    "source": "robot_ubec_power_converter_high_capacity",
    "target": "robot_camera_upgrade",
    "type": "power",
    "voltage": "5V"
  },
  {
    "source": "robot_rpi5",
    "target": "robot_imu_upgrade",
    "type": "data",
    "label": "I2C SDA",
    "protocol": "I2C",
    "sourcePin": "SDA",
    "targetPin": "SDA"
  },
  {
    "source": "robot_rpi5",
    "target": "robot_imu_upgrade",
    "type": "data",
    "label": "I2C SCL",
    "protocol": "I2C",
    "sourcePin": "SCL",
    "targetPin": "SCL"
  },
  {
    "source": "robot_rpi5",
    "target": "robot_camera_upgrade",
    "type": "data",
    "label": "Video Data",
    "protocol": "CSI",
    "sourcePin": "CSI Port",
    "targetPin": "CSI Port"
  },
  {
    "source": "robot_battery_3s_lipo",
    "target": "robot_estop_button",
    "type": "power",
    "label": "Motor Power In",
    "sourcePin": "V+",
    "targetPin": "NC_IN",
    "voltage": "11.1V"
  },
  {
    "source": "robot_estop_button",
    "target": "robot_motor_power_regulator",
    "type": "power",
    "label": "Motor Power Switched",
    "sourcePin": "NC_OUT",
    "targetPin": "VIN",
    "voltage": "11.1V"
  },
  {
    "source": "robot_motor_power_regulator",
    "target": "robot_motor_driver_high_power",
    "type": "power",
    "label": "Regulated Motor Power",
    "sourcePin": "VOUT",
    "targetPin": "VIN",
    "voltage": "12V"
  },
  {
    "source": "robot_motor_driver_high_power",
    "target": "robot_left_motor_high_torque",
    "type": "power",
    "label": "Left Motor Power"
  },
  {
    "source": "robot_motor_driver_high_power",
    "target": "robot_right_motor_high_torque",
    "type": "power",
    "label": "Right Motor Power"
  },
  {
    "source": "robot_battery_3s_lipo",
    "target": "robot_ubec_power_converter_high_capacity",
    "type": "power",
    "label": "System Power In",
    "sourcePin": "V+",
    "targetPin": "VIN+",
    "voltage": "11.1V"
  },
  {
    "source": "robot_ubec_power_converter_high_capacity",
    "target": "robot_rpi5",
    "type": "power",
    "label": "RPi 5V Power",
    "sourcePin": "5V OUT",
    "targetPin": "5V",
    "voltage": "5V"
  },
  {
    "source": "robot_ubec_power_converter_high_capacity",
    "target": "robot_esp32",
    "type": "power",
    "label": "ESP32 5V Power",
    "sourcePin": "5V OUT",
    "targetPin": "5V",
    "voltage": "5V"
  },
  {
    "source": "robot_ubec_power_converter_high_capacity",
    "target": "robot_imu_upgrade",
    "type": "power",
    "label": "IMU 5V Power",
    "sourcePin": "5V OUT",
    "targetPin": "VIN",
    "voltage": "5V"
  },
  {
    "source": "robot_ubec_power_converter_high_capacity",
    "target": "robot_camera_upgrade",
    "type": "power",
    "label": "Camera 5V Power",
    "sourcePin": "5V OUT",
    "targetPin": "5V",
    "voltage": "5V"
  },
  {
    "source": "robot_rpi5",
    "target": "robot_tof_sensor",
    "type": "power",
    "label": "ToF 5V Power",
    "sourcePin": "5V",
    "targetPin": "VIN",
    "voltage": "5V"
  },
  {
    "source": "robot_rpi5",
    "target": "robot_logging_storage",
    "type": "power",
    "label": "Logger 5V Power",
    "sourcePin": "5V",
    "targetPin": "VCC",
    "voltage": "5V"
  },
  {
    "source": "robot_rpi5",
    "target": "robot_lora_radio_900mhz",
    "type": "power",
    "label": "LoRa 3.3V Power",
    "sourcePin": "3.3V",
    "targetPin": "VIN",
    "voltage": "3.3V"
  },
  {
    "source": "robot_rpi5",
    "target": "robot_watchdog",
    "type": "power",
    "label": "Watchdog 3.3V Power",
    "sourcePin": "3.3V",
    "targetPin": "VIN",
    "voltage": "3.3V"
  },
  {
    "source": "robot_rpi5",
    "target": "robot_secure_element",
    "type": "power",
    "label": "Secure Element 3.3V Power",
    "sourcePin": "3.3V",
    "targetPin": "VCC",
    "voltage": "3.3V"
  },
  {
    "source": "robot_esp32",
    "target": "robot_wheel_encoder",
    "type": "power",
    "label": "Encoder 3.3V Power",
    "sourcePin": "3.3V",
    "targetPin": "VCC",
    "voltage": "3.3V"
  },
  {
    "source": "robot_rpi5",
    "target": "robot_esp32",
    "type": "data",
    "label": "Command Packets",
    "protocol": "UART"
  },
  {
    "source": "robot_rpi5",
    "target": "robot_esp32",
    "type": "data",
    "label": "Time Sync",
    "sourcePin": "GPIO_Sync",
    "targetPin": "GPIO_Sync_In"
  },
  {
    "source": "robot_rpi5",
    "target": "robot_lidar",
    "type": "data",
    "label": "LiDAR Data",
    "protocol": "USB"
  },
  {
    "source": "robot_rpi5",
    "target": "robot_tof_sensor",
    "type": "data",
    "label": "ToF Data",
    "protocol": "I2C",
    "sourcePin": "SDA/SCL",
    "targetPin": "SDA/SCL"
  },
  {
    "source": "robot_rpi5",
    "target": "robot_imu_upgrade",
    "type": "data",
    "label": "IMU Data",
    "protocol": "I2C",
    "sourcePin": "SDA/SCL",
    "targetPin": "SDA/SCL"
  },
  {
    "source": "robot_rpi5",
    "target": "robot_secure_element",
    "type": "data",
    "label": "Secure Element Data",
    "protocol": "I2C",
    "sourcePin": "SDA/SCL",
    "targetPin": "SDA/SCL"
  },
  {
    "source": "robot_rpi5",
    "target": "robot_camera_upgrade",
    "type": "data",
    "label": "Camera Data",
    "protocol": "CSI"
  },
  {
    "source": "robot_rpi5",
    "target": "robot_logging_storage",
    "type": "data",
    "label": "Logging Data",
    "protocol": "SPI",
    "sourcePin": "MOSI, MISO, SCK, CS"
  },
  {
    "source": "robot_rpi5",
    "target": "robot_lora_radio_900mhz",
    "type": "data",
    "label": "LoRa Data",
    "protocol": "SPI",
    "sourcePin": "MOSI, MISO, SCK, CS"
  },
  {
    "source": "robot_rpi5",
    "target": "robot_lora_radio_900mhz",
    "type": "data",
    "label": "LoRa Control",
    "sourcePin": "GPIO",
    "targetPin": "CE, IRQ"
  },
  {
    "source": "robot_esp32",
    "target": "robot_imu_upgrade",
    "type": "data",
    "label": "IMU Secondary Access",
    "protocol": "I2C"
  },
  {
    "source": "robot_esp32",
    "target": "robot_camera_upgrade",
    "type": "data",
    "label": "Camera Secondary Access",
    "protocol": "DVP"
  },
  {
    "source": "robot_esp32",
    "target": "robot_wheel_encoder",
    "type": "data",
    "label": "Encoder Pulses",
    "sourcePin": "GPIO"
  },
  {
    "source": "robot_esp32",
    "target": "robot_motor_driver_high_power",
    "type": "data",
    "label": "Motor Speed/Direction",
    "protocol": "PWM"
  },
  {
    "source": "robot_esp32",
    "target": "robot_lora_radio_900mhz",
    "type": "data",
    "label": "LoRa Secondary Access",
    "protocol": "SPI"
  },
  {
    "source": "robot_esp32",
    "target": "robot_watchdog",
    "type": "data",
    "label": "Watchdog Heartbeat",
    "sourcePin": "GPIO",
    "targetPin": "WDI"
  },
  {
    "source": "robot_watchdog",
    "target": "robot_motor_driver_high_power",
    "type": "data",
    "label": "Motor Driver Enable",
    "sourcePin": "DRV/DONE",
    "targetPin": "ENABLE"
  },
  {
    "source": "robot_watchdog",
    "target": "robot_rpi5",
    "type": "data",
    "label": "System Reset",
    "sourcePin": "RESET",
    "targetPin": "RUN"
  }
]