muse/book-reading-clip-lamp

A Wi‑Fi/USB‑C ESP32‑S3 reading lamp with OV5640 camera, microphone, speaker amplifier, rechargeable Li‑Po power management, six-LED boost light, USB protection/charging detection, and a clip/gooseneck enclosure with external FlexPIFA antenna.

Version
0.4.3
License
unset
Stars
0

mechanical/geometry-checks.json

{
  "dimensions": {
    "outerDiameter": 72,
    "cavityDiameter": 62.4,
    "frontZ": -17.2,
    "rearZ": 15.5,
    "rearCeilingZ": 13.5,
    "harnessPocket": {
      "center": [
        0,
        -20.3
      ],
      "outerSize": [
        26,
        10.8
      ],
      "innerSize": [
        23.4,
        8.2
      ],
      "roofZ": 15.5,
      "ceilingZ": 13.5
    },
    "pcbRadius": 30,
    "pcbThickness": 1.6,
    "lensCenter": [
      0,
      3.5
    ],
    "boardMounts": [
      [
        -21,
        -16
      ],
      [
        -20,
        19
      ],
      [
        21,
        -16
      ],
      [
        20,
        19
      ]
    ],
    "boardFastener": {
      "centers": [
        [
          -21,
          -16
        ],
        [
          -20,
          19
        ],
        [
          21,
          -16
        ],
        [
          20,
          19
        ]
      ],
      "clearanceDiameter": 3.2,
      "surfaceKeepoutRadius": 3,
      "bossRadius": 2.8,
      "pilotDiameter": 2.5,
      "pilotEndZ": 6.8,
      "screwDiameter": 3,
      "screwLength": 6,
      "screwHeadDiameter": 5.7,
      "screwHeadHeight": 1.65
    },
    "caseMounts": [
      [
        2.0206672185931327e-15,
        33
      ],
      [
        -28.578838324886473,
        -16.500000000000004
      ],
      [
        28.578838324886465,
        -16.500000000000014
      ]
    ],
    "caseFastener": {
      "nominalDiameter": 2,
      "nominalLength": 16,
      "headDiameter": 4,
      "headHeight": 1.6,
      "clearanceDiameter": 2.3,
      "counterboreDiameter": 4.4,
      "seatZ": 8.2,
      "pilotDiameter": 1.7,
      "pilotBottomZ": -9.2,
      "bossTopZ": -3,
      "bossRadius": 2.5
    },
    "buttonCenters": [
      [
        24,
        -8
      ]
    ],
    "microphonePcbPort": [
      20.7314605,
      0
    ],
    "microphoneFacePort": [
      19,
      0
    ],
    "neckBore": 6.5,
    "neckCenterZ": 3,
    "neckEndY": -43
  },
  "baseDimensions": {
    "baseSize": [
      58,
      92,
      26
    ],
    "baseCenter": [
      0,
      -158,
      -176
    ],
    "batteryEnvelope": [
      40,
      50,
      8
    ],
    "batteryCenter": [
      0,
      -163,
      -181
    ],
    "speakerEnvelope": [
      35,
      25,
      7.7
    ],
    "speakerCenter": [
      0,
      -178,
      -169
    ],
    "neckOuterDiameter": 6,
    "neckClearBore": 4,
    "bendRadius": 60,
    "neckCenterlineLength": 244.2477796076938,
    "neckBaseAxis": [
      0,
      -130
    ],
    "hingeCenter": [
      0,
      -181,
      -197
    ],
    "harnessPinOrder": [
      "VBAT",
      "GND",
      "NTC",
      "NTC_RETURN",
      "SPK_P",
      "SPK_N",
      "ASK_REMOTE",
      "PWR_REMOTE"
    ],
    "chatSwitchCenter": [
      -15,
      -128
    ],
    "powerSwitchCenter": [
      16,
      -125
    ]
  },
  "cameraFit": {
    "dimensions": {
      "sku": "114993115",
      "revision": "MJY5OAF-F3M-V1 / 2023-06-20",
      "source": "https://files.seeedstudio.com/wiki/OV5640_for_ESP32S3_sense/OV5640_Datasheet.pdf",
      "productSource": "https://www.seeedstudio.com/OV5640-Camera-for-XIAO-ESP32S3-Sense-With-Heat-Sink-p-5739.html",
      "overallFlatLength": 70.5,
      "overallLengthTolerance": 0.2,
      "bodyWidth": 8.5,
      "bodyHeight": 5.4,
      "bodyTolerance": 0.2,
      "flexWidth": 6,
      "flexThickness": 0.12,
      "flexThicknessTolerance": 0.03,
      "tailWidth": 12.5,
      "tailLength": 4,
      "tailThickness": 0.3,
      "tailThicknessTolerance": 0.03,
      "contactCount": 24,
      "contactPitch": 0.5,
      "contactLength": 2.5,
      "heatSinkSize": [
        7,
        6,
        7
      ],
      "adhesiveAllowance": 0.15,
      "lensCenter": [
        0,
        3.5
      ],
      "lensFrontZ": -16.7,
      "moduleRearZ": -11.3,
      "flexCenterZ": -11.56,
      "connectorMouthY": -7.61101965,
      "connectorTipY": -10.1,
      "connectorFlexZ": -1.9,
      "returnBendY": -4.6,
      "minimumBendRadiusAssumed": 2.4
    },
    "fold": {
      "freeFlexLength": 62,
      "centerlineLength": 62.00000000000001,
      "bendRadius": 2.415,
      "innerRadiusAtMaxThickness": 2.34,
      "foldCount": 2,
      "tailStraightLength": 4,
      "lowerTurnY": -23.33805374158065,
      "lowestY": -25.75305374158065,
      "stiffenerStartY": -6.1,
      "nominalInsertionDepth": 2.4889803499999994,
      "endpoint": [
        0,
        -10.1,
        -1.9
      ],
      "contactFace": "+Z (toward PCB); pin-1 orientation requires sample confirmation"
    },
    "connectorReview": {
      "status": "DO NOT RELEASE: current J2 tail geometry is not a documented match",
      "connector": "FH12-24S-0.5SH(55)",
      "source": "https://www.hirose.com/en/product/series/FH12/documents?path=/api/v1/series/FH12/documents/product_series_catalog/content?lang%3DEN",
      "sourcePage": 10,
      "recommendedContactLengthMin": 3.5,
      "seeedContactLength": 2.5,
      "recommendedStiffenerLengthMin": 4.5,
      "seeedStiffenerLength": 4,
      "recommendedTailWidthTolerance": 0.07,
      "seeedTailWidthTolerance": 0.1,
      "action": "Select a connector documented for this shorter camera tail (or get explicit manufacturer approval), then recheck insertion height, contact side, pin 1 and folded route. The displayed J2 insertion is a packaging placeholder, not proof of mating."
    },
    "readyForManufacture": false,
    "shellDepthMm": 32.7,
    "previousFit": {
      "shellDepthMm": 22,
      "suppliedHeatSinkPcbIntersectionMm3": 30.720000000000002,
      "suppliedHeatSinkRetainerIntersectionMm3": 12.287999999999998,
      "result": "Does not fit: supplied 7 mm heatsink crosses PCB and original retaining strap"
    },
    "matingOverlaps": [
      {
        "part": "wifi-antenna-coax",
        "component": "U1",
        "volumeMm3": 9.348509830698148,
        "note": "U.FL plug and feed within the upper-right socket recess only; sample engagement required"
      },
      {
        "part": "head-harness-plug",
        "component": "J3",
        "volumeMm3": 386.07473008495697,
        "note": "XHP-8 inserted housing in B8B-XH socket envelope; dimensioned reference, sample fit required"
      },
      {
        "part": "camera-flex",
        "component": "J2",
        "volumeMm3": 9.468081251399976,
        "note": "Inserted tongue inside connector bounding envelope; physical slot and pin-1 need sample confirmation"
      }
    ],
    "clearances": [
      {
        "candidate": "flex-max-tolerance",
        "target": "front-bezel",
        "gapMm": 0.4500000000000002,
        "overlapMm3": 0
      },
      {
        "candidate": "flex-max-tolerance",
        "target": "camera-retainer",
        "gapMm": 0.395885084057814,
        "overlapMm3": 0
      },
      {
        "candidate": "flex-max-tolerance",
        "target": "PCB substrate",
        "gapMm": 0.9349999999999998,
        "overlapMm3": 0
      },
      {
        "candidate": "flex-max-tolerance",
        "target": "U14",
        "gapMm": 2.946208539474154,
        "overlapMm3": 0
      },
      {
        "candidate": "flex-max-tolerance",
        "target": "U15",
        "gapMm": 2.5349999999999997,
        "overlapMm3": 0
      },
      {
        "candidate": "flex-max-tolerance",
        "target": "U16",
        "gapMm": 2.535,
        "overlapMm3": 0
      },
      {
        "candidate": "flex-max-tolerance",
        "target": "U17",
        "gapMm": 2.5349999999999997,
        "overlapMm3": 0
      },
      {
        "candidate": "flex-max-tolerance",
        "target": "R39",
        "gapMm": 2.6272271052698994,
        "overlapMm3": 0
      },
      {
        "candidate": "flex-max-tolerance",
        "target": "R40",
        "gapMm": 2.535,
        "overlapMm3": 0
      },
      {
        "candidate": "flex-max-tolerance",
        "target": "R41",
        "gapMm": 2.5350000000000006,
        "overlapMm3": 0
      },
      {
        "candidate": "flex-max-tolerance",
        "target": "C40",
        "gapMm": 2.535,
        "overlapMm3": 0
      },
      {
        "candidate": "flex-max-tolerance",
        "target": "U3",
        "gapMm": 2.5437011122860316,
        "overlapMm3": 0
      },
      {
        "candidate": "flex-max-tolerance",
        "target": "R25",
        "gapMm": 2.535,
        "overlapMm3": 0
      },
      {
        "candidate": "flex-max-tolerance",
        "target": "C4",
        "gapMm": 2.6769852452206835,
        "overlapMm3": 0
      },
      {
        "candidate": "flex-max-tolerance",
        "target": "C5",
        "gapMm": 2.535,
        "overlapMm3": 0
      },
      {
        "candidate": "flex-max-tolerance",
        "target": "J2",
        "gapMm": 0.011019650000005043,
        "overlapMm3": 0,
        "note": "Expected inserted contact tongue excluded"
      },
      {
        "candidate": "flex-max-tolerance",
        "target": "L1",
        "gapMm": 2.53512327116454,
        "overlapMm3": 0
      },
      {
        "candidate": "heatsink-full-envelope",
        "target": "front-bezel",
        "gapMm": 1.1101801655587256,
        "overlapMm3": 0
      },
      {
        "candidate": "heatsink-full-envelope",
        "target": "camera-retainer",
        "gapMm": 0.3999999999999999,
        "overlapMm3": 0
      }
    ],
    "conclusion": "Enclosure space passes, but current J2 mating geometry is not a documented match. Bend radius, adhesive, shipped revision, insertion/pin-1 and thermal performance require physical qualification."
  },
  "antennaFit": {
    "dimensions": {
      "manufacturer": "Ezurio",
      "partNumber": "001-0014",
      "reference": "ANT1",
      "source": "https://www.ezurio.com/documentation/datasheet-24-ghz-flexpifa",
      "purchase": "https://www.digikey.com/en/products/detail/ezurio/001-0014/4732758",
      "frequencyMHz": [
        2400,
        2480
      ],
      "impedanceOhm": 50,
      "peakGainDbi": 2,
      "bodyLength": 40.12,
      "width": 11,
      "height": 2.5,
      "overallWidthWithCable": 41.25,
      "nominalAssemblyLength": 100,
      "assemblyLengthTolerancePlus": 5,
      "nominalExposedCablePath": 89,
      "cableDiameterAssumed": 1.13,
      "cableBendRadiusAssumed": 3,
      "center": [
        0,
        8.5
      ],
      "adhesivePlaneZ": 7,
      "mainElementTopZ": 9.5,
      "trayBottomZ": 5.5,
      "trayThickness": 1.5,
      "pocketRoofZ": 15.5,
      "pocketCeilingZ": 13.5,
      "pocketInnerSize": [
        48,
        15.6
      ],
      "plasticTopClearance": 3,
      "plasticSideClearance": 2,
      "plasticGroundWallClearance": 1,
      "metalTopClearance": 10,
      "metalSideClearance": 5,
      "socketCenter": [
        6,
        19.785,
        1.6
      ],
      "connectorMatedTopZ": 4.1,
      "orientation": "Adhesive ground face toward PCB (-Z); main element faces rear (+Z); feed/ground wall at +X"
    },
    "cableModeledLengthMm": 88.99999999999997,
    "clearanceViolations": [],
    "plasticRoofGapMm": 4,
    "pcbCopperChangeRequired": false,
    "rfPerformanceValidated": false,
    "note": "Exact supplier antenna and mounting clearance modeled. Cable OD/bend and connector seating are packaging assumptions; Wi-Fi range, final gain and tuning require a physical assembly."
  },
  "bezelStudy": {
    "previousFrontZ": -18,
    "frontZ": -17.2,
    "reductionMm": 0.8000000000000007,
    "cupDepthMm": 14,
    "previousCupDepthMm": 14.8,
    "printedPartHeightMm": 16.099999999999998,
    "previousPrintedPartHeightMm": 16.9,
    "bodyShellDepthMm": 32.7,
    "maximumHeadDepthMm": 32.7,
    "lensRecessNominalMm": 0.5,
    "lensRecessWorstBodyToleranceMm": 0.3000000000000007,
    "cameraRearZ": -11.3,
    "cameraFoldRadiusMm": 2.415,
    "note": "Camera, supplied heatsink and flex stay fixed. More than 0.8 mm reduction needs a revised camera/flex/thermal stack or an exposed/protruding lens."
  },
  "parts": [
    {
      "id": "rear-housing",
      "printable": true,
      "connectedSolids": 1,
      "volumeMm3": 25511.721228383238,
      "bounds": [
        [
          -36,
          -43,
          -3.000000000000001
        ],
        [
          36,
          36,
          15.5
        ]
      ],
      "triangles": 11062,
      "nonManifoldEdges": 0
    },
    {
      "id": "front-bezel",
      "printable": true,
      "connectedSolids": 1,
      "volumeMm3": 20494.196894436463,
      "bounds": [
        [
          -36,
          -36,
          -17.2
        ],
        [
          36,
          36,
          -1.1
        ]
      ],
      "triangles": 10088,
      "nonManifoldEdges": 0
    },
    {
      "id": "head-case-screw-1",
      "printable": false,
      "connectedSolids": 1,
      "volumeMm3": 63.72164739738485,
      "bounds": [
        [
          -1.999999999999998,
          31,
          -7.800000000000001
        ],
        [
          2.000000000000002,
          35,
          9.8
        ]
      ],
      "triangles": 1198,
      "nonManifoldEdges": 0
    },
    {
      "id": "head-case-screw-2",
      "printable": false,
      "connectedSolids": 1,
      "volumeMm3": 63.721647397384835,
      "bounds": [
        [
          -30.578838324886473,
          -18.500000000000004,
          -7.800000000000001
        ],
        [
          -26.578838324886473,
          -14.500000000000004,
          9.8
        ]
      ],
      "triangles": 1198,
      "nonManifoldEdges": 0
    },
    {
      "id": "head-case-screw-3",
      "printable": false,
      "connectedSolids": 1,
      "volumeMm3": 63.721647397384835,
      "bounds": [
        [
          26.578838324886465,
          -18.500000000000014,
          -7.800000000000001
        ],
        [
          30.578838324886465,
          -14.500000000000014,
          9.8
        ]
      ],
      "triangles": 1198,
      "nonManifoldEdges": 0
    },
    {
      "id": "pcb-mount-screw-1",
      "printable": false,
      "connectedSolids": 1,
      "volumeMm3": 70.441132274741,
      "bounds": [
        [
          -23.85,
          -18.85,
          -2.45
        ],
        [
          -18.15,
          -13.15,
          5.2
        ]
      ],
      "triangles": 1532,
      "nonManifoldEdges": 0
    },
    {
      "id": "pcb-mount-screw-2",
      "printable": false,
      "connectedSolids": 1,
      "volumeMm3": 70.441132274741,
      "bounds": [
        [
          -22.85,
          16.15,
          -2.45
        ],
        [
          -17.15,
          21.85,
          5.2
        ]
      ],
      "triangles": 1532,
      "nonManifoldEdges": 0
    },
    {
      "id": "pcb-mount-screw-3",
      "printable": false,
      "connectedSolids": 1,
      "volumeMm3": 70.441132274741,
      "bounds": [
        [
          18.15,
          -18.85,
          -2.45
        ],
        [
          23.85,
          -13.15,
          5.2
        ]
      ],
      "triangles": 1532,
      "nonManifoldEdges": 0
    },
    {
      "id": "pcb-mount-screw-4",
      "printable": false,
      "connectedSolids": 1,
      "volumeMm3": 70.441132274741,
      "bounds": [
        [
          17.15,
          16.15,
          -2.45
        ],
        [
          22.85,
          21.85,
          5.2
        ]
      ],
      "triangles": 1532,
      "nonManifoldEdges": 0
    },
    {
      "id": "camera-retainer",
      "printable": true,
      "connectedSolids": 1,
      "volumeMm3": 63.4902180069013,
      "bounds": [
        [
          -10.5,
          -1.5999999999999996,
          -11.3
        ],
        [
          10.5,
          8.6,
          -10.5
        ]
      ],
      "triangles": 868,
      "nonManifoldEdges": 0
    },
    {
      "id": "light-cap",
      "printable": true,
      "connectedSolids": 1,
      "volumeMm3": 170.2166445462191,
      "bounds": [
        [
          20.2,
          -11.8,
          4.799999999999999
        ],
        [
          27.8,
          -4.2,
          17
        ]
      ],
      "triangles": 2428,
      "nonManifoldEdges": 0
    },
    {
      "id": "diffuser-1",
      "printable": true,
      "connectedSolids": 1,
      "volumeMm3": 89.27695055270988,
      "bounds": [
        [
          21.8,
          -4.7,
          -17.2
        ],
        [
          28.2,
          4.7,
          -14.799999999999999
        ]
      ],
      "triangles": 780,
      "nonManifoldEdges": 0
    },
    {
      "id": "diffuser-2",
      "printable": true,
      "connectedSolids": 1,
      "volumeMm3": 89.27695055270986,
      "bounds": [
        [
          8.000961894323346,
          17.700635094610966,
          -17.2
        ],
        [
          16.99903810567666,
          25.600635094610965,
          -14.799999999999999
        ]
      ],
      "triangles": 780,
      "nonManifoldEdges": 0
    },
    {
      "id": "diffuser-3",
      "printable": true,
      "connectedSolids": 1,
      "volumeMm3": 89.27695055270985,
      "bounds": [
        [
          -16.999038105676654,
          17.70063509461097,
          -17.2
        ],
        [
          -8.00096189432334,
          25.60063509461097,
          -14.799999999999999
        ]
      ],
      "triangles": 780,
      "nonManifoldEdges": 0
    },
    {
      "id": "diffuser-4",
      "printable": true,
      "connectedSolids": 1,
      "volumeMm3": 89.27695055270988,
      "bounds": [
        [
          -28.2,
          -4.6999999999999975,
          -17.2
        ],
        [
          -21.8,
          4.700000000000003,
          -14.799999999999999
        ]
      ],
      "triangles": 780,
      "nonManifoldEdges": 0
    },
    {
      "id": "diffuser-5",
      "printable": true,
      "connectedSolids": 1,
      "volumeMm3": 89.27695055270983,
      "bounds": [
        [
          -16.999038105676668,
          -25.600635094610958,
          -17.2
        ],
        [
          -8.000961894323353,
          -17.70063509461096,
          -14.799999999999999
        ]
      ],
      "triangles": 780,
      "nonManifoldEdges": 0
    },
    {
      "id": "diffuser-6",
      "printable": true,
      "connectedSolids": 1,
      "volumeMm3": 89.27695055270985,
      "bounds": [
        [
          8.000961894323346,
          -25.600635094610965,
          -17.2
        ],
        [
          16.99903810567666,
          -17.700635094610966,
          -14.799999999999999
        ]
      ],
      "triangles": 780,
      "nonManifoldEdges": 0
    },
    {
      "id": "indicator-pipe-1",
      "printable": true,
      "connectedSolids": 1,
      "volumeMm3": 44.50068154696471,
      "bounds": [
        [
          11.35,
          17.35,
          2.200000000000001
        ],
        [
          14.65,
          20.65,
          15.6
        ]
      ],
      "triangles": 1148,
      "nonManifoldEdges": 0
    },
    {
      "id": "indicator-pipe-2",
      "printable": true,
      "connectedSolids": 1,
      "volumeMm3": 44.50068154696471,
      "bounds": [
        [
          -25.65,
          -11.65,
          2.200000000000001
        ],
        [
          -22.35,
          -8.35,
          15.6
        ]
      ],
      "triangles": 1148,
      "nonManifoldEdges": 0
    },
    {
      "id": "camera-reference",
      "printable": false,
      "connectedSolids": 1,
      "volumeMm3": 347.70846124415425,
      "bounds": [
        [
          -4.25,
          -0.75,
          -16.705
        ],
        [
          4.25,
          7.75,
          -11.3
        ]
      ],
      "triangles": 796,
      "nonManifoldEdges": 0
    },
    {
      "id": "camera-heatsink",
      "printable": false,
      "connectedSolids": 1,
      "volumeMm3": 157.2,
      "bounds": [
        [
          -3.5,
          0.5,
          -11.15
        ],
        [
          3.5,
          6.5,
          -4.15
        ]
      ],
      "triangles": 76,
      "nonManifoldEdges": 0
    },
    {
      "id": "camera-thermal-pad",
      "printable": false,
      "connectedSolids": 1,
      "volumeMm3": 6.299999999999947,
      "bounds": [
        [
          -3.5,
          0.5,
          -11.3
        ],
        [
          3.5,
          6.5,
          -11.150000000000002
        ]
      ],
      "triangles": 12,
      "nonManifoldEdges": 0
    },
    {
      "id": "camera-flex",
      "printable": false,
      "connectedSolids": 1,
      "volumeMm3": 56.893049391528336,
      "bounds": [
        [
          -6.25,
          -25.813053742051125,
          -11.619999997317791
        ],
        [
          6.25,
          -0.75,
          -1.7425
        ]
      ],
      "triangles": 1976,
      "nonManifoldEdges": 0
    },
    {
      "id": "antenna-tray",
      "printable": true,
      "connectedSolids": 1,
      "volumeMm3": 1126.371379006596,
      "bounds": [
        [
          -27,
          1.5,
          5.5
        ],
        [
          27,
          15.5,
          7
        ]
      ],
      "triangles": 788,
      "nonManifoldEdges": 0
    },
    {
      "id": "antenna-tray-screw-1",
      "printable": false,
      "connectedSolids": 1,
      "volumeMm3": 12.554501897784041,
      "bounds": [
        [
          -27.5,
          7,
          4.300000000000001
        ],
        [
          -24.5,
          10,
          8.5
        ]
      ],
      "triangles": 1202,
      "nonManifoldEdges": 0
    },
    {
      "id": "antenna-tray-screw-2",
      "printable": false,
      "connectedSolids": 1,
      "volumeMm3": 12.554501897784041,
      "bounds": [
        [
          24.5,
          7,
          4.300000000000001
        ],
        [
          27.5,
          10,
          8.5
        ]
      ],
      "triangles": 1202,
      "nonManifoldEdges": 0
    },
    {
      "id": "wifi-antenna",
      "printable": false,
      "connectedSolids": 1,
      "volumeMm3": 122.83590000000076,
      "bounds": [
        [
          -20.06,
          3,
          7
        ],
        [
          20.06,
          14,
          9.5
        ]
      ],
      "triangles": 42,
      "nonManifoldEdges": 0
    },
    {
      "id": "wifi-antenna-coax",
      "printable": false,
      "connectedSolids": 1,
      "volumeMm3": 92.68728263212266,
      "bounds": [
        [
          -12.565,
          -6.1958102811791935,
          2.75
        ],
        [
          21.265011658935755,
          25.065,
          8.815049754142082
        ]
      ],
      "triangles": 11824,
      "nonManifoldEdges": 14
    },
    {
      "id": "head-harness-plug",
      "printable": false,
      "connectedSolids": 1,
      "volumeMm3": 725.5738934585573,
      "bounds": [
        [
          -11.15,
          -23.6,
          3.0999999999999996
        ],
        [
          11.15,
          -17.85,
          10.6
        ]
      ],
      "triangles": 3136,
      "nonManifoldEdges": 0
    },
    {
      "id": "gooseneck",
      "printable": false,
      "connectedSolids": 1,
      "volumeMm3": 2985.289501793091,
      "bounds": [
        [
          -3,
          -133,
          -169.07999999999998
        ],
        [
          3,
          -32.05,
          6
        ]
      ],
      "triangles": 25682,
      "nonManifoldEdges": 32
    },
    {
      "id": "clip-base-tray",
      "printable": true,
      "connectedSolids": 1,
      "volumeMm3": 31478.272079071092,
      "bounds": [
        [
          -29,
          -204,
          -202
        ],
        [
          29,
          -112,
          -165.2
        ]
      ],
      "triangles": 4406,
      "nonManifoldEdges": 0
    },
    {
      "id": "clip-base-lid",
      "printable": true,
      "connectedSolids": 1,
      "volumeMm3": 11635.797332501557,
      "bounds": [
        [
          -29,
          -204,
          -172
        ],
        [
          29,
          -112,
          -153
        ]
      ],
      "triangles": 9912,
      "nonManifoldEdges": 0
    },
    {
      "id": "clip-lower-jaw",
      "printable": true,
      "connectedSolids": 1,
      "volumeMm3": 14586.03659810045,
      "bounds": [
        [
          -26,
          -201,
          -207
        ],
        [
          26,
          -115,
          -192.2
        ]
      ],
      "triangles": 932,
      "nonManifoldEdges": 0
    },
    {
      "id": "clip-upper-pad",
      "printable": false,
      "connectedSolids": 1,
      "volumeMm3": 1903.4755238984867,
      "bounds": [
        [
          -20,
          -163,
          -190.2
        ],
        [
          20,
          -123,
          -189
        ]
      ],
      "triangles": 428,
      "nonManifoldEdges": 0
    },
    {
      "id": "clip-lower-pad",
      "printable": false,
      "connectedSolids": 1,
      "volumeMm3": 1903.4755238984803,
      "bounds": [
        [
          -20,
          -163,
          -204
        ],
        [
          20,
          -123,
          -202.8
        ]
      ],
      "triangles": 428,
      "nonManifoldEdges": 0
    },
    {
      "id": "clip-hinge-pin",
      "printable": false,
      "connectedSolids": 1,
      "volumeMm3": 567.5466843102563,
      "bounds": [
        [
          -28.2,
          -182.8,
          -198.8
        ],
        [
          28.2,
          -179.2,
          -195.2
        ]
      ],
      "triangles": 92,
      "nonManifoldEdges": 0
    },
    {
      "id": "clip-torsion-spring",
      "printable": false,
      "connectedSolids": 1,
      "volumeMm3": 49.86489300837146,
      "bounds": [
        [
          -5.460003315819925,
          -184.65808586042024,
          -202.95614206936776
        ],
        [
          5.4605510420708,
          -168.6274763692852,
          -190.25215820263065
        ]
      ],
      "triangles": 6212,
      "nonManifoldEdges": 0
    },
    {
      "id": "base-battery-pack",
      "printable": false,
      "connectedSolids": 4,
      "volumeMm3": 16871.549011183753,
      "bounds": [
        [
          -20,
          -188,
          -185
        ],
        [
          20,
          -134.29999999999998,
          -176.84
        ]
      ],
      "triangles": 540,
      "nonManifoldEdges": 0
    },
    {
      "id": "base-speaker",
      "printable": false,
      "connectedSolids": 1,
      "volumeMm3": 6725.254054226273,
      "bounds": [
        [
          -17.5,
          -190.5,
          -172.85
        ],
        [
          17.5,
          -165.5,
          -165.08
        ]
      ],
      "triangles": 1202,
      "nonManifoldEdges": 0
    },
    {
      "id": "battery-temperature-sensor",
      "printable": false,
      "connectedSolids": 1,
      "volumeMm3": 6.100453439543496,
      "bounds": [
        [
          -13.2,
          -156.5,
          -176.85
        ],
        [
          -10.8,
          -153.5,
          -175.95000000000002
        ]
      ],
      "triangles": 522,
      "nonManifoldEdges": 0
    },
    {
      "id": "base-chat-switch",
      "printable": false,
      "connectedSolids": 2,
      "volumeMm3": 2714.9162346046505,
      "bounds": [
        [
          -23.75,
          -136.75,
          -175.8
        ],
        [
          -6.25,
          -119.25,
          -156
        ]
      ],
      "triangles": 1948,
      "nonManifoldEdges": 0
    },
    {
      "id": "base-power-switch",
      "printable": false,
      "connectedSolids": 6,
      "volumeMm3": 1253.0183767530073,
      "bounds": [
        [
          11.3,
          -131.35,
          -179.85
        ],
        [
          20.7,
          -118.65,
          -147.70760326502779
        ]
      ],
      "triangles": 2068,
      "nonManifoldEdges": 0
    },
    {
      "id": "harness-wire-1",
      "printable": false,
      "connectedSolids": 1,
      "volumeMm3": 255.87494183444178,
      "bounds": [
        [
          -9.3,
          -136.11742589854515,
          -176.78068618861744
        ],
        [
          -0.19999999999999996,
          -19.75,
          11.950181019606122
        ]
      ],
      "triangles": 3066,
      "nonManifoldEdges": 40
    },
    {
      "id": "harness-wire-2",
      "printable": false,
      "connectedSolids": 1,
      "volumeMm3": 264.1368690598779,
      "bounds": [
        [
          -12.11593930637804,
          -135.9846252489448,
          -180.5791305096113
        ],
        [
          16.152470328950546,
          -19.75,
          11.950173178813776
        ]
      ],
      "triangles": 3570,
      "nonManifoldEdges": 40
    },
    {
      "id": "harness-wire-3",
      "printable": false,
      "connectedSolids": 1,
      "volumeMm3": 180.4702819780106,
      "bounds": [
        [
          -13.004531968570198,
          -153.22711950723397,
          -176.84829507222486
        ],
        [
          -0.55,
          -19.85,
          11.84995740965828
        ]
      ],
      "triangles": 3242,
      "nonManifoldEdges": 38
    },
    {
      "id": "harness-wire-4",
      "printable": false,
      "connectedSolids": 1,
      "volumeMm3": 180.84200702674877,
      "bounds": [
        [
          -12.538428967430573,
          -153.35930900429204,
          -176.69429793387735
        ],
        [
          -0.55,
          -19.85,
          11.849955724645096
        ]
      ],
      "triangles": 3828,
      "nonManifoldEdges": 40
    },
    {
      "id": "harness-wire-5",
      "printable": false,
      "connectedSolids": 1,
      "volumeMm3": 187.15942573950352,
      "bounds": [
        [
          -6.4431071804575275,
          -165.1346370034955,
          -173.69888696417812
        ],
        [
          1.7,
          -19.85,
          12.572598592491085
        ]
      ],
      "triangles": 3640,
      "nonManifoldEdges": 40
    },
    {
      "id": "harness-wire-6",
      "printable": false,
      "connectedSolids": 1,
      "volumeMm3": 190.20245264386014,
      "bounds": [
        [
          -2.574107420851913,
          -165.11824447680655,
          -175.325
        ],
        [
          6.446691825894314,
          -19.85,
          13.075
        ]
      ],
      "triangles": 4146,
      "nonManifoldEdges": 34
    },
    {
      "id": "harness-wire-7",
      "printable": false,
      "connectedSolids": 1,
      "volumeMm3": 185.09359599480717,
      "bounds": [
        [
          -18.298515538931383,
          -131.5752498506067,
          -176.8250946560703
        ],
        [
          6.7,
          -19.79983106639226,
          13.20000110619333
        ]
      ],
      "triangles": 5056,
      "nonManifoldEdges": 38
    },
    {
      "id": "harness-wire-8",
      "printable": false,
      "connectedSolids": 1,
      "volumeMm3": 182.78154472356434,
      "bounds": [
        [
          0.55,
          -129.3252498506067,
          -180.8501857666765
        ],
        [
          16.088773454102952,
          -16.55,
          11.849696563072822
        ]
      ],
      "triangles": 3658,
      "nonManifoldEdges": 40
    }
  ],
  "rearRoofChecks": {
    "outerPlaneZ": 15.5,
    "innerPlaneZ": 13.5,
    "thicknessMm": 2,
    "continuousRoof": true,
    "noRaisedPockets": true
  },
  "headFastenerChecks": [
    {
      "center": [
        2.0206672185931327e-15,
        33
      ],
      "entry": "rear (+Z)",
      "rearAccessClear": true,
      "headCounterboreClear": true,
      "headSeatSupported": true,
      "frontFaceClosed": true,
      "blindPilotClear": true,
      "frontFloorMm": 8,
      "engagementMm": 4.800000000000001,
      "tipClearanceMm": 1.3999999999999986,
      "headRecessMm": 5.700000000000001
    },
    {
      "center": [
        -28.578838324886473,
        -16.500000000000004
      ],
      "entry": "rear (+Z)",
      "rearAccessClear": true,
      "headCounterboreClear": true,
      "headSeatSupported": true,
      "frontFaceClosed": true,
      "blindPilotClear": true,
      "frontFloorMm": 8,
      "engagementMm": 4.800000000000001,
      "tipClearanceMm": 1.3999999999999986,
      "headRecessMm": 5.700000000000001
    },
    {
      "center": [
        28.578838324886465,
        -16.500000000000014
      ],
      "entry": "rear (+Z)",
      "rearAccessClear": true,
      "headCounterboreClear": true,
      "headSeatSupported": true,
      "frontFaceClosed": true,
      "blindPilotClear": true,
      "frontFloorMm": 8,
      "engagementMm": 4.800000000000001,
      "tipClearanceMm": 1.3999999999999986,
      "headRecessMm": 5.700000000000001
    }
  ],
  "boardFastenerChecks": [
    {
      "center": [
        -21,
        -16
      ],
      "clearanceDiameterMm": 3.2,
      "screw": "M3 x 6 button head",
      "supportIntact": true,
      "pilotClear": true,
      "bezelHeadClear": true,
      "engagementMm": 4.4,
      "tipClearanceMm": 1.5999999999999996,
      "note": "Tap printed pilots M3; install internally before bezel. Printed threads and torque need sample qualification."
    },
    {
      "center": [
        -20,
        19
      ],
      "clearanceDiameterMm": 3.2,
      "screw": "M3 x 6 button head",
      "supportIntact": true,
      "pilotClear": true,
      "bezelHeadClear": true,
      "engagementMm": 4.4,
      "tipClearanceMm": 1.5999999999999996,
      "note": "Tap printed pilots M3; install internally before bezel. Printed threads and torque need sample qualification."
    },
    {
      "center": [
        21,
        -16
      ],
      "clearanceDiameterMm": 3.2,
      "screw": "M3 x 6 button head",
      "supportIntact": true,
      "pilotClear": true,
      "bezelHeadClear": true,
      "engagementMm": 4.4,
      "tipClearanceMm": 1.5999999999999996,
      "note": "Tap printed pilots M3; install internally before bezel. Printed threads and torque need sample qualification."
    },
    {
      "center": [
        20,
        19
      ],
      "clearanceDiameterMm": 3.2,
      "screw": "M3 x 6 button head",
      "supportIntact": true,
      "pilotClear": true,
      "bezelHeadClear": true,
      "engagementMm": 4.4,
      "tipClearanceMm": 1.5999999999999996,
      "note": "Tap printed pilots M3; install internally before bezel. Printed threads and torque need sample qualification."
    }
  ],
  "intersections": [],
  "boardIntersections": []
}