{
  "meta": {
    "title": "I2C Sensor Hub",
    "version": "1.0"
  },
  "symbols": {
    "mcu": {
      "symbol_id": "mcu",
      "category": "microcontroller",
      "body": { "width": 180, "height": 220 },
      "pins": [
        { "name": "3V3", "number": "1", "side": "left", "offset": 24, "type": "power_in" },
        { "name": "GND", "number": "2", "side": "left", "offset": 56, "type": "ground" },
        { "name": "SCL", "number": "3", "side": "right", "offset": 48, "type": "bidirectional" },
        { "name": "SDA", "number": "4", "side": "right", "offset": 78, "type": "bidirectional" },
        { "name": "INT1", "number": "5", "side": "right", "offset": 122, "type": "input" },
        { "name": "INT2", "number": "6", "side": "right", "offset": 152, "type": "input" }
      ]
    },
    "i2c_sensor": {
      "symbol_id": "i2c_sensor",
      "category": "sensor",
      "body": { "width": 140, "height": 120 },
      "pins": [
        { "name": "3V3", "number": "1", "side": "left", "offset": 18, "type": "power_in" },
        { "name": "GND", "number": "2", "side": "left", "offset": 44, "type": "ground" },
        { "name": "SCL", "number": "3", "side": "left", "offset": 70, "type": "bidirectional" },
        { "name": "SDA", "number": "4", "side": "left", "offset": 96, "type": "bidirectional" },
        { "name": "INT", "number": "5", "side": "right", "offset": 58, "type": "output" }
      ]
    },
    "power_source": {
      "symbol_id": "power_source",
      "category": "power",
      "body": { "width": 130, "height": 90 },
      "pins": [
        { "name": "3V3", "number": "1", "side": "right", "offset": 26, "type": "power_out" },
        { "name": "GND", "number": "2", "side": "right", "offset": 56, "type": "ground" }
      ]
    }
  },
  "instances": [
    { "ref": "U1", "symbol": "mcu", "properties": { "value": "ESP32-S3" }, "placement": { "x": null, "y": null, "rotation": 0, "locked": false } },
    { "ref": "U2", "symbol": "i2c_sensor", "properties": { "value": "IMU" }, "placement": { "x": null, "y": null, "rotation": 0, "locked": false } },
    { "ref": "U3", "symbol": "i2c_sensor", "properties": { "value": "BME280" }, "placement": { "x": null, "y": null, "rotation": 0, "locked": false } },
    { "ref": "U4", "symbol": "i2c_sensor", "properties": { "value": "Mag" }, "placement": { "x": null, "y": null, "rotation": 0, "locked": false } },
    { "ref": "R1", "part": "resistor", "properties": { "value": "4.7k" }, "placement": { "x": null, "y": null, "rotation": 0, "locked": false } },
    { "ref": "R2", "part": "resistor", "properties": { "value": "4.7k" }, "placement": { "x": null, "y": null, "rotation": 0, "locked": false } },
    { "ref": "V1", "symbol": "power_source", "properties": { "value": "3V3/GND source" }, "placement": { "x": null, "y": null, "rotation": 0, "locked": false } }
  ],
  "nets": [
    { "name": "3V3", "class": "power", "nodes": [
      { "ref": "V1", "pin": "3V3" }, { "ref": "U1", "pin": "3V3" }, { "ref": "U2", "pin": "3V3" },
      { "ref": "U3", "pin": "3V3" }, { "ref": "U4", "pin": "3V3" }, { "ref": "R1", "pin": "1" }, { "ref": "R2", "pin": "1" }
    ] },
    { "name": "GND", "class": "ground", "nodes": [
      { "ref": "V1", "pin": "GND" }, { "ref": "U1", "pin": "GND" }, { "ref": "U2", "pin": "GND" },
      { "ref": "U3", "pin": "GND" }, { "ref": "U4", "pin": "GND" }
    ] },
    { "name": "I2C_SCL", "class": "clock", "nodes": [
      { "ref": "U1", "pin": "SCL" }, { "ref": "U2", "pin": "SCL" }, { "ref": "U3", "pin": "SCL" },
      { "ref": "U4", "pin": "SCL" }, { "ref": "R1", "pin": "2" }
    ] },
    { "name": "I2C_SDA", "class": "signal", "nodes": [
      { "ref": "U1", "pin": "SDA" }, { "ref": "U2", "pin": "SDA" }, { "ref": "U3", "pin": "SDA" },
      { "ref": "U4", "pin": "SDA" }, { "ref": "R2", "pin": "2" }
    ] },
    { "name": "INT1", "class": "signal", "nodes": [ { "ref": "U2", "pin": "INT" }, { "ref": "U1", "pin": "INT1" } ] },
    { "name": "INT2", "class": "signal", "nodes": [ { "ref": "U3", "pin": "INT" }, { "ref": "U1", "pin": "INT2" } ] }
  ],
  "constraints": {
    "groups": [
      { "name": "controller", "members": ["U1"], "layout": "cluster" },
      { "name": "sensors", "members": ["U2", "U3", "U4"], "layout": "cluster" },
      { "name": "pullups", "members": ["R1", "R2"], "layout": "cluster" }
    ]
  },
  "annotations": [
    { "text": "Shared I2C bus with pull-ups and interrupt lines.", "x": 24, "y": 24 }
  ]
}
