{
  "metadata": {
    "id": "vl53l0x",
    "name": "ST VL53L0X Time-of-Flight Ranging Sensor",
    "type": "sensor",
    "description": "Single-zone 940 nm laser time-of-flight ranging sensor with embedded SPAD array, programmable I2C target interface, XSHUT hardware standby input, and GPIO1 interrupt output.",
    "manufacturer": "STMicroelectronics",
    "part_number": "VL53L0X",
    "datasheet_url": "https://www.st.com/resource/en/datasheet/vl53l0x.pdf",
    "tags": [
      "vl53l0x",
      "tof",
      "distance",
      "ranging",
      "i2c",
      "0x29",
      "xshut",
      "gpio1",
      "laser",
      "stmicroelectronics"
    ],
    "schema_version": "1.4.0",
    "version": "1.0",
    "taxonomy": [
      "sensor.distance"
    ]
  },
  "domains": [
    {
      "domain": "electrical",
      "power_domains": [
        {
          "id": "avdd_main",
          "name": "Main supply",
          "nominal_voltage_V": 2.8,
          "voltage_range_V": [
            2.6,
            3.5
          ],
          "isolation_type": "non_isolated",
          "ground_reference": "common",
          "description": "Single external supply feeding both AVDD and AVDDVCSEL."
        }
      ],
      "resources": [
        {
          "id": "pin1_avddvcsel",
          "name": "AVDDVCSEL",
          "description": "VCSEL supply pin connected to the main supply.",
          "functions": [
            {
              "name": "power_in",
              "direction": "sink",
              "signal_class": "power"
            }
          ],
          "power_domain_id": "avdd_main",
          "connector_type": "surface_pad"
        },
        {
          "id": "pin2_avssvcsel",
          "name": "AVSSVCSEL",
          "description": "VCSEL ground return.",
          "functions": [
            {
              "name": "ground",
              "direction": "sink",
              "signal_class": "ground"
            }
          ],
          "power_domain_id": "avdd_main",
          "connector_type": "surface_pad"
        },
        {
          "id": "pin3_gnd",
          "name": "GND",
          "description": "Main ground.",
          "functions": [
            {
              "name": "ground",
              "direction": "sink",
              "signal_class": "ground"
            }
          ],
          "power_domain_id": "avdd_main",
          "connector_type": "surface_pad"
        },
        {
          "id": "pin4_gnd2",
          "name": "GND2",
          "description": "Ground.",
          "functions": [
            {
              "name": "ground",
              "direction": "sink",
              "signal_class": "ground"
            }
          ],
          "power_domain_id": "avdd_main",
          "connector_type": "surface_pad"
        },
        {
          "id": "pin5_xshut",
          "name": "XSHUT",
          "description": "Active-low hardware shutdown input.",
          "functions": [
            {
              "name": "shutdown_ctrl",
              "direction": "input",
              "signal_class": "data"
            }
          ],
          "connector_type": "surface_pad"
        },
        {
          "id": "pin6_gnd3",
          "name": "GND3",
          "description": "Ground.",
          "functions": [
            {
              "name": "ground",
              "direction": "sink",
              "signal_class": "ground"
            }
          ],
          "power_domain_id": "avdd_main",
          "connector_type": "surface_pad"
        },
        {
          "id": "pin7_gpio1",
          "name": "GPIO1",
          "description": "Open-drain interrupt output.",
          "functions": [
            {
              "name": "interrupt",
              "direction": "output",
              "signal_class": "data"
            }
          ],
          "connector_type": "surface_pad"
        },
        {
          "id": "pin9_sda",
          "name": "SDA",
          "description": "I2C serial data.",
          "functions": [
            {
              "name": "i2c_sda",
              "direction": "bidirectional",
              "signal_class": "data"
            }
          ],
          "connector_type": "surface_pad"
        },
        {
          "id": "pin10_scl",
          "name": "SCL",
          "description": "I2C serial clock input.",
          "functions": [
            {
              "name": "i2c_scl",
              "direction": "input",
              "signal_class": "clock"
            }
          ],
          "connector_type": "surface_pad"
        },
        {
          "id": "pin11_avdd",
          "name": "AVDD",
          "description": "Main supply input.",
          "functions": [
            {
              "name": "power_in",
              "direction": "sink",
              "signal_class": "power"
            }
          ],
          "power_domain_id": "avdd_main",
          "connector_type": "surface_pad"
        },
        {
          "id": "pin12_gnd4",
          "name": "GND4",
          "description": "Ground.",
          "functions": [
            {
              "name": "ground",
              "direction": "sink",
              "signal_class": "ground"
            }
          ],
          "power_domain_id": "avdd_main",
          "connector_type": "surface_pad"
        }
      ],
      "interfaces": [
        {
          "id": "i2c_target",
          "name": "I2C target interface",
          "protocol": {
            "type": "i2c",
            "role": "target"
          },
          "requires": [
            {
              "function": "i2c_sda",
              "count": 1,
              "shareable_with": [
                "i2c_scl"
              ]
            },
            {
              "function": "i2c_scl",
              "count": 1,
              "shareable_with": [
                "i2c_sda"
              ]
            }
          ],
          "timing": {
            "max_i2c_freq_hz": 400000
          },
          "description": "Programmable I2C address; default 7-bit address 0x29."
        },
        {
          "id": "interrupt_out",
          "name": "Interrupt output",
          "protocol": {
            "type": "gpio_interrupt",
            "role": "source"
          },
          "requires": [
            {
              "function": "interrupt",
              "count": 1
            }
          ],
          "description": "GPIO1 open-drain interrupt output."
        },
        {
          "id": "shutdown_in",
          "name": "Hardware standby control",
          "protocol": {
            "type": "gpio_control",
            "role": "sink"
          },
          "requires": [
            {
              "function": "shutdown_ctrl",
              "count": 1
            }
          ],
          "description": "Drive XSHUT low for hardware standby; I2C is unavailable while held low."
        }
      ],
      "supply_voltage_V": [
        2.6,
        3.5
      ],
      "pin_count": 12,
      "metadata": {
        "package_type": "Optical LGA-12",
        "i2c_address_7bit": "0x29",
        "i2c_address_8bit_write": "0x52",
        "i2c_max_frequency_hz": 400000,
        "field_of_view_deg": 25,
        "laser_wavelength_nm": 940,
        "maximum_ranging_distance_cm": 200,
        "typical_profile_distance_cm": 120
      }
    },
    {
      "domain": "mechanical",
      "resources": [],
      "interfaces": [],
      "package_type": "Optical LGA-12",
      "dimensions_mm": {
        "length": 4.4,
        "width": 2.4,
        "height": 1
      },
      "metadata": {
        "mounting_method": "surface_mount"
      }
    },
    {
      "domain": "thermal",
      "resources": [],
      "interfaces": [],
      "operating_temperature_C": [
        -20,
        70
      ],
      "metadata": {
        "requires_thermal_management": false
      }
    }
  ],
  "design_rules": [
    "Power AVDD and AVDDVCSEL from the same 2.6 V to 3.5 V supply and connect AVSSVCSEL plus all GND pins to the main ground.",
    "Place 100 nF and 4.7 uF decoupling capacitors as close as possible to the AVDDVCSEL/AVSSVCSEL and AVDD pins.",
    "Use external I2C pull-ups only once per bus; ST recommends 1.5 kOhm to 2 kOhm pull-ups for 2.8 V operation at 400 kHz.",
    "Drive XSHUT at all times to avoid leakage current; add a pull-up if the host state during reset is not guaranteed.",
    "Leave DNC pin 8 floating and leave GPIO1 unconnected if interrupt signaling is not used."
  ],
  "usage_notes": "The VL53L0X is a PCB-integration sensor module rather than a ready-to-wire breakout. It exposes a programmable I2C target interface plus XSHUT and GPIO1 for system control. Multi-sensor arrays on one bus are typically managed by holding devices in hardware standby through XSHUT, then assigning unique addresses during initialization.",
  "application_examples": [
    "Wall tracking and collision avoidance for robotics.",
    "Access control and presence detection.",
    "Liquid level and inventory sensing."
  ],
  "compatibility_notes": "ST documents the default I2C address as 0x52 in 8-bit form, which corresponds to 7-bit address 0x29 used by most host SDKs. GPIO1 is open-drain and requires a pull-up if used. Maximum usable range depends strongly on target reflectance and ambient infrared conditions.",
  "warnings": [
    "Class 1 laser device compliant with IEC 60825-1:2014; do not modify the optics or aperture geometry.",
    "The advertised 2 m maximum range requires favorable target reflectance and indoor conditions; darker targets and outdoor IR reduce practical range significantly.",
    "Holding XSHUT low forces hardware standby and disables I2C communication."
  ]
}