0hmX/ov7670-camera-module

This code defines the hardware layout and schematic connectivity for an OV7676 camera module featuring a CSP5 sensor package, power regulation, and interface connectors.

Version
1.2.0
License
unset
Stars
0

dist/index.js

import { jsx, jsxs } from 'react/jsx-runtime';
import { Fragment } from 'react';

/** Bare OmniVision OV7676, 20-ball CSP5 package. */
const pinLabels$4 = {
    pin1: ["XVCLK", "A1"],
    pin2: ["XSHUTDOWN", "A2"],
    pin3: ["VN", "A3"],
    pin4: ["AVDD", "A4"],
    pin5: ["AGND", "A5"],
    pin6: ["HREF", "B1"],
    pin7: ["VSYNC", "FSIN", "B2"],
    pin8: ["DOVDD", "B3"],
    pin9: ["DOGND", "B4"],
    pin10: ["D5", "SPI3", "B5"],
    pin11: ["SIOD", "C1"],
    pin12: ["D0", "SPIVIV0", "C2"],
    pin13: ["D2", "SPI0", "C3"],
    pin14: ["D3", "SPI1", "C4"],
    pin15: ["D6", "C5"],
    pin16: ["SIOC", "D1_BALL"],
    pin17: ["PCLK", "SPCLK", "D2_BALL"],
    pin18: ["D1", "SPIVIV1", "D3_BALL"],
    pin19: ["D4", "SPI2", "D4_BALL"],
    pin20: ["D7", "D5_BALL"],
};
// Manufacturer dimensions: 0.520 mm column and 0.480 mm row pitch.
const columns = [-1.04, -0.52, 0, 0.52, 1.04];
const rows = [0.72, 0.24, -0.24, -0.72];
const OV7676_CSP5 = (props) => (jsx("chip", { pinLabels: pinLabels$4, manufacturerPartNumber: "OV07676-H20A", supplierPartNumbers: { jlcpcb: ["C17317227"] }, datasheetUrl: "https://www.omnivision-group.com/files/pd/file/OV7676-PB-v1.5-WEB.pdf", footprint: jsxs("footprint", { children: [rows.flatMap((pcbY, rowIndex) => columns.map((pcbX, columnIndex) => {
                const pin = rowIndex * 5 + columnIndex + 1;
                return (jsx(Fragment, { children: jsx("smtpad", { portHints: [`pin${pin}`], pcbX: pcbX, pcbY: pcbY, shape: "circle", radius: "0.125mm" }) }, `ball-${pin}`));
            })), jsx("courtyardoutline", { outline: [
                    { x: -1.6, y: 1.45 },
                    { x: 1.6, y: 1.45 },
                    { x: 1.6, y: -1.45 },
                    { x: -1.6, y: -1.45 },
                    { x: -1.6, y: 1.45 },
                ] }), jsx("silkscreenpath", { route: [
                    { x: -1.6, y: 1.1 },
                    { x: -1.6, y: 1.45 },
                    { x: -1.25, y: 1.45 },
                ], strokeWidth: "0.15mm" }), jsx("silkscreencircle", { pcbX: -1.75, pcbY: 1.55, radius: "0.16mm", strokeWidth: "0.12mm" })] }), ...props }));

const pinLabels$3 = {
    pin1: ["3V3"],
    pin2: ["GND"],
    pin3: ["SIOC"],
    pin4: ["SIOD"],
    pin5: ["VSYNC"],
    pin6: ["HREF"],
    pin7: ["PCLK"],
    pin8: ["XCLK"],
    pin9: ["D7"],
    pin10: ["D6"],
    pin11: ["D5"],
    pin12: ["D4"],
    pin13: ["D3"],
    pin14: ["D2"],
    pin15: ["D1"],
    pin16: ["D0"],
    pin17: ["RESET_N", "RESET"],
    pin18: ["PWDN"]
};
const PZ254V_12_18P = (props) => {
    return (jsx("chip", { pinLabels: pinLabels$3, supplierPartNumbers: {
            "jlcpcb": [
                "C492426"
            ]
        }, manufacturerPartNumber: "PZ254V-12-18P", footprint: jsxs("footprint", { children: [jsx("platedhole", { portHints: ["pin1"], pcbX: "-10.16mm", pcbY: "-1.27mm", outerDiameter: "1.6999966mm", holeDiameter: "1.1000232mm", shape: "circle" }), jsx("platedhole", { portHints: ["pin2"], pcbX: "-10.16mm", pcbY: "1.27mm", outerDiameter: "1.6999966mm", holeDiameter: "1.1000232mm", shape: "circle" }), jsx("platedhole", { portHints: ["pin3"], pcbX: "-7.62mm", pcbY: "-1.27mm", outerDiameter: "1.6999966mm", holeDiameter: "1.1000232mm", shape: "circle" }), jsx("platedhole", { portHints: ["pin4"], pcbX: "-7.62mm", pcbY: "1.27mm", outerDiameter: "1.6999966mm", holeDiameter: "1.1000232mm", shape: "circle" }), jsx("platedhole", { portHints: ["pin5"], pcbX: "-5.08mm", pcbY: "-1.27mm", outerDiameter: "1.6999966mm", holeDiameter: "1.1000232mm", shape: "circle" }), jsx("platedhole", { portHints: ["pin6"], pcbX: "-5.08mm", pcbY: "1.27mm", outerDiameter: "1.6999966mm", holeDiameter: "1.1000232mm", shape: "circle" }), jsx("platedhole", { portHints: ["pin7"], pcbX: "-2.54mm", pcbY: "-1.27mm", outerDiameter: "1.6999966mm", holeDiameter: "1.1000232mm", shape: "circle" }), jsx("platedhole", { portHints: ["pin8"], pcbX: "-2.54mm", pcbY: "1.27mm", outerDiameter: "1.6999966mm", holeDiameter: "1.1000232mm", shape: "circle" }), jsx("platedhole", { portHints: ["pin9"], pcbX: "-0mm", pcbY: "-1.27mm", outerDiameter: "1.6999966mm", holeDiameter: "1.1000232mm", shape: "circle" }), jsx("platedhole", { portHints: ["pin10"], pcbX: "-0mm", pcbY: "1.27mm", outerDiameter: "1.6999966mm", holeDiameter: "1.1000232mm", shape: "circle" }), jsx("platedhole", { portHints: ["pin11"], pcbX: "2.54mm", pcbY: "-1.27mm", outerDiameter: "1.6999966mm", holeDiameter: "1.1000232mm", shape: "circle" }), jsx("platedhole", { portHints: ["pin12"], pcbX: "2.54mm", pcbY: "1.27mm", outerDiameter: "1.6999966mm", holeDiameter: "1.1000232mm", shape: "circle" }), jsx("platedhole", { portHints: ["pin13"], pcbX: "5.08mm", pcbY: "-1.27mm", outerDiameter: "1.6999966mm", holeDiameter: "1.1000232mm", shape: "circle" }), jsx("platedhole", { portHints: ["pin14"], pcbX: "5.08mm", pcbY: "1.27mm", outerDiameter: "1.6999966mm", holeDiameter: "1.1000232mm", shape: "circle" }), jsx("platedhole", { portHints: ["pin15"], pcbX: "7.62mm", pcbY: "-1.27mm", outerDiameter: "1.6999966mm", holeDiameter: "1.1000232mm", shape: "circle" }), jsx("platedhole", { portHints: ["pin16"], pcbX: "7.62mm", pcbY: "1.27mm", outerDiameter: "1.6999966mm", holeDiameter: "1.1000232mm", shape: "circle" }), jsx("platedhole", { portHints: ["pin17"], pcbX: "10.16mm", pcbY: "-1.27mm", outerDiameter: "1.6999966mm", holeDiameter: "1.1000232mm", shape: "circle" }), jsx("platedhole", { portHints: ["pin18"], pcbX: "10.16mm", pcbY: "1.27mm", outerDiameter: "1.6999966mm", holeDiameter: "1.1000232mm", shape: "circle" }), jsx("silkscreenpath", { route: [{ "x": -8.8900000000001, "y": 0.03997960000003786 }, { "x": -11.429974600000037, "y": 0.03997960000003786 }] }), jsx("silkscreenpath", { route: [{ "x": -8.8900000000001, "y": -2.4999950000000126 }, { "x": -8.8900000000001, "y": 0.03997960000003786 }] }), jsx("silkscreenpath", { route: [{ "x": -11.429974600000037, "y": -2.4999950000000126 }, { "x": 11.429974599999923, "y": -2.4999950000000126 }] }), jsx("silkscreenpath", { route: [{ "x": -11.429974600000037, "y": 2.4999950000001263 }, { "x": -11.429974600000037, "y": -2.4999950000000126 }] }), jsx("silkscreenpath", { route: [{ "x": 11.429974599999923, "y": 2.4999950000001263 }, { "x": -11.429974600000037, "y": 2.4999950000001263 }] }), jsx("silkscreenpath", { route: [{ "x": 11.429974599999923, "y": -2.4999950000000126 }, { "x": 11.429974599999923, "y": 2.4999950000001263 }] }), jsx("courtyardoutline", { outline: [{ "x": -11.705400000000054, "y": 2.7899999999999636 }, { "x": 11.679999999999836, "y": 2.7899999999999636 }, { "x": 11.679999999999836, "y": -2.7899999999999636 }, { "x": -11.705400000000054, "y": -2.7899999999999636 }, { "x": -11.705400000000054, "y": 2.7899999999999636 }] })] }), cadModel: {
            objUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C492426.obj?uuid=944d3afa7415492585fb90fdc37a5397",
            stepUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C492426.step?uuid=944d3afa7415492585fb90fdc37a5397",
            pcbRotationOffset: 0,
            modelOriginPosition: { x: 0, y: 0, z: -5999999999950489e-21 },
        }, ...props }));
};

const pinLabels$2 = {
    pin1: ["pin1"],
    pin2: ["A"],
    pin3: ["GND"],
    pin4: ["Y"],
    pin5: ["VCC"]
};
const SN74LVC1G17DBVR = (props) => {
    return (jsx("chip", { pinLabels: pinLabels$2, supplierPartNumbers: {
            "jlcpcb": [
                "C7836"
            ]
        }, manufacturerPartNumber: "SN74LVC1G17DBVR", footprint: jsxs("footprint", { children: [jsx("smtpad", { portHints: ["pin5"], pcbX: "-1.300099mm", pcbY: "-0.94996mm", width: "1.0999978mm", height: "0.5999988mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin4"], pcbX: "-1.300099mm", pcbY: "0.94996mm", width: "1.0999978mm", height: "0.5999988mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin3"], pcbX: "1.300099mm", pcbY: "0.94996mm", width: "1.0999978mm", height: "0.5999988mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin2"], pcbX: "1.300099mm", pcbY: "-0mm", width: "1.0999978mm", height: "0.5999988mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin1"], pcbX: "1.300099mm", pcbY: "-0.94996mm", width: "1.0999978mm", height: "0.5999988mm", shape: "rect" }), jsx("silkscreenpath", { route: [{ "x": 0.8999728000000005, "y": -1.404111999999941 }, { "x": 0.8999728000000005, "y": -1.5500604000000067 }] }), jsx("silkscreenpath", { route: [{ "x": 0.8999728000000005, "y": -0.45412660000010874 }, { "x": 0.8999728000000005, "y": -0.4958079999998972 }] }), jsx("silkscreenpath", { route: [{ "x": 0.8999728000000005, "y": 0.4958079999998972 }, { "x": 0.8999728000000005, "y": 0.45415200000002187 }] }), jsx("silkscreenpath", { route: [{ "x": 0.8999728000000005, "y": 1.5499587999998994 }, { "x": 0.8999728000000005, "y": 1.404111999999941 }] }), jsx("silkscreenpath", { route: [{ "x": -0.9000489999999672, "y": -1.404111999999941 }, { "x": -0.9000489999999672, "y": -1.5500604000000067 }] }), jsx("silkscreenpath", { route: [{ "x": -0.9000489999999672, "y": 0.4958079999998972 }, { "x": -0.9000489999999672, "y": -0.4958334000000377 }] }), jsx("silkscreenpath", { route: [{ "x": -0.9000489999999672, "y": 1.5499587999998994 }, { "x": -0.9000489999999672, "y": 1.4040866000000278 }] }), jsx("silkscreenpath", { route: [{ "x": -0.9000489999999672, "y": 1.5499587999998994 }, { "x": 0.8999728000000005, "y": 1.5499587999998994 }] }), jsx("silkscreenpath", { route: [{ "x": -0.9000489999999672, "y": -1.5500604000000067 }, { "x": 0.8999728000000005, "y": -1.5500604000000067 }] }), jsx("silkscreentext", { text: "{NAME}", pcbX: "0.012319mm", pcbY: "2.562354mm", anchorAlignment: "center", fontSize: "1mm" }), jsx("courtyardoutline", { outline: [{ "x": -2.091880999999944, "y": 1.8123540000000276 }, { "x": 2.1165190000000393, "y": 1.8123540000000276 }, { "x": 2.1165190000000393, "y": -1.786446000000069 }, { "x": -2.091880999999944, "y": -1.786446000000069 }, { "x": -2.091880999999944, "y": 1.8123540000000276 }] })] }), cadModel: {
            objUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C7836.obj?uuid=460193f9bf2d42e58cf3c2f675b07dc6",
            stepUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C7836.step?uuid=460193f9bf2d42e58cf3c2f675b07dc6",
            pcbRotationOffset: 180,
            modelOriginPosition: { x: 0, y: -12700000070253736e-21, z: -0.049083 },
        }, ...props }));
};

const pinLabels$1 = {
    pin1: ["1A"],
    pin2: ["1B"],
    pin3: ["2Y"],
    pin4: ["GND"],
    pin5: ["2A"],
    pin6: ["2B"],
    pin7: ["1Y"],
    pin8: ["VCC"]
};
const SN74LVC2G02DCTR = (props) => {
    return (jsx("chip", { pinLabels: pinLabels$1, supplierPartNumbers: {
            "jlcpcb": [
                "C94600"
            ]
        }, manufacturerPartNumber: "SN74LVC2G02DCTR", footprint: jsxs("footprint", { children: [jsx("smtpad", { portHints: ["pin1"], pcbX: "1.99249665mm", pcbY: "-0.974852mm", width: "0.729996mm", height: "0.3999992mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin2"], pcbX: "1.99249665mm", pcbY: "-0.324866mm", width: "0.729996mm", height: "0.3999992mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin3"], pcbX: "1.99249665mm", pcbY: "0.32512mm", width: "0.729996mm", height: "0.3999992mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin4"], pcbX: "1.99249665mm", pcbY: "0.975106mm", width: "0.729996mm", height: "0.3999992mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin5"], pcbX: "-2.00749535mm", pcbY: "0.97536mm", width: "0.6999986mm", height: "0.3999992mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin6"], pcbX: "-2.00749535mm", pcbY: "0.32512mm", width: "0.6999986mm", height: "0.3999992mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin7"], pcbX: "-2.00749535mm", pcbY: "-0.32512mm", width: "0.6999986mm", height: "0.3999992mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin8"], pcbX: "-2.00749535mm", pcbY: "-0.97536mm", width: "0.6999986mm", height: "0.3999992mm", shape: "rect" }), jsx("silkscreenpath", { route: [{ "x": 1.4924214499999948, "y": -1.384477799999992 }, { "x": 1.4924214499999948, "y": -1.499920799999991 }, { "x": -1.5075725500000203, "y": -1.499920799999991 }] }), jsx("silkscreenpath", { route: [{ "x": -1.5075725500000203, "y": 1.3851128000000017 }, { "x": -1.5075725500000203, "y": 1.5000732000000099 }, { "x": 1.4924214499999948, "y": 1.5000732000000099 }, { "x": 1.4924214499999948, "y": 1.384884200000002 }] }), jsx("silkscreenpath", { route: [{ "x": -1.5075725500000203, "y": -1.499920799999991 }, { "x": -1.5075725500000203, "y": -1.384960399999997 }] }), jsx("silkscreenpath", { route: [{ "x": 1.2193206500000144, "y": -0.9999979999999908 }, { "x": 1.214993229938699, "y": -1.032868018728017 }, { "x": 1.202305876280633, "y": -1.0634979999999956 }, { "x": 1.1821232112106657, "y": -1.0898005612106871 }, { "x": 1.1558206500000097, "y": -1.1099832262806117 }, { "x": 1.1251906687280098, "y": -1.1226705799387062 }, { "x": 1.092320650000005, "y": -1.1269979999999933 }, { "x": 1.0594506312719716, "y": -1.1226705799387062 }, { "x": 1.0288206500000001, "y": -1.1099832262806117 }, { "x": 1.0025180887893157, "y": -1.0898005612106871 }, { "x": 0.9823354237193769, "y": -1.0634979999999956 }, { "x": 0.9696480700612824, "y": -1.032868018728017 }, { "x": 0.9653206499999953, "y": -0.9999979999999908 }, { "x": 0.9696480700612824, "y": -0.9671279812719717 }, { "x": 0.9823354237193769, "y": -0.9364979999999932 }, { "x": 1.0025180887893157, "y": -0.9101954387893016 }, { "x": 1.0288206500000001, "y": -0.8900127737193699 }, { "x": 1.0594506312719716, "y": -0.8773254200612755 }, { "x": 1.092320650000005, "y": -0.8729979999999955 }, { "x": 1.1251906687280098, "y": -0.8773254200612755 }, { "x": 1.1558206500000097, "y": -0.8900127737193699 }, { "x": 1.1821232112106657, "y": -0.9101954387893016 }, { "x": 1.202305876280633, "y": -0.9364979999999932 }, { "x": 1.214993229938699, "y": -0.9671279812719717 }, { "x": 1.2193206500000144, "y": -0.9999979999999908 }] }), jsx("silkscreentext", { text: "{NAME}", pcbX: "0.02552065mm", pcbY: "2.50114mm", anchorAlignment: "center", fontSize: "1mm" }), jsx("courtyardoutline", { outline: [{ "x": -2.599379350000021, "y": 1.7511400000000066 }, { "x": 2.650420650000001, "y": 1.7511400000000066 }, { "x": 2.650420650000001, "y": -1.7460599999999928 }, { "x": -2.599379350000021, "y": -1.7460599999999928 }, { "x": -2.599379350000021, "y": 1.7511400000000066 }] })] }), cadModel: {
            objUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C94600.obj?uuid=a20ad6d9a7994f0eb3ef7aa133f0e895",
            stepUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C94600.step?uuid=a20ad6d9a7994f0eb3ef7aa133f0e895",
            pcbRotationOffset: 0,
            modelOriginPosition: { x: 0.007575549999984332, y: -6350000000310274e-20, z: -0.0275 },
        }, ...props }));
};

const pinLabels = {
    pin1: ["VSS"],
    pin2: ["VOUT"],
    pin3: ["VIN"]
};
const XC6206P282MR = (props) => {
    return (jsx("chip", { pinLabels: pinLabels, supplierPartNumbers: {
            "jlcpcb": [
                "C347374"
            ]
        }, manufacturerPartNumber: "XC6206P282MR", footprint: jsxs("footprint", { children: [jsx("smtpad", { portHints: ["pin1"], pcbX: "1.101344mm", pcbY: "-0.94996mm", width: "1.0374884mm", height: "0.532003mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin2"], pcbX: "1.101344mm", pcbY: "0.94996mm", width: "1.0374884mm", height: "0.532003mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin3"], pcbX: "-1.101344mm", pcbY: "0mm", width: "1.0374884mm", height: "0.532003mm", shape: "rect" }), jsx("silkscreenpath", { route: [{ "x": 0.8586978000000727, "y": 1.5262098000000606 }, { "x": -0.8586978000000727, "y": 1.5262098000000606 }, { "x": -0.8586978000000727, "y": 0.49458879999997407 }] }), jsx("silkscreenpath", { route: [{ "x": 0.8586978000000727, "y": -1.5262097999999469 }, { "x": -0.8586978000000727, "y": -1.5262097999999469 }, { "x": -0.8586978000000727, "y": -0.49458879999997407 }] }), jsx("silkscreenpath", { route: [{ "x": 0.8586978000000727, "y": 0.45539659999997184 }, { "x": 0.8586978000000727, "y": -0.45539659999985815 }] }), jsx("silkscreentext", { text: "{NAME}", pcbX: "0.0635mm", pcbY: "2.524mm", anchorAlignment: "center", fontSize: "1mm" }), jsx("courtyardoutline", { outline: [{ "x": -1.8756000000000768, "y": 1.774000000000001 }, { "x": 2.0026000000000295, "y": 1.774000000000001 }, { "x": 2.0026000000000295, "y": -1.774000000000001 }, { "x": -1.8756000000000768, "y": -1.774000000000001 }, { "x": -1.8756000000000768, "y": 1.774000000000001 }] })] }), cadModel: {
            objUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C347374.obj?uuid=cefd4596db214da394d9632b2b88f8f2",
            stepUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C347374.step?uuid=cefd4596db214da394d9632b2b88f8f2",
            pcbRotationOffset: 90,
            modelOriginPosition: { x: -12700000070253736e-21, y: 0, z: 0 },
        }, ...props }));
};

const POWER = "power";
const SENSOR = "sensor";
const CONTROL = "control";
const INTERFACE = "interface";
const headerLabels = [
    "3V3", "GND", "SIOC", "SIOD", "VSYNC", "HREF", "PCLK", "XCLK",
    "D7", "D6", "D5", "D4", "D3", "D2", "D1", "D0", "RESET", "PWDN",
];
const signalConnections = [
    ["SIOC", "SIOC"], ["SIOD", "SIOD"], ["VSYNC", "VSYNC"],
    ["HREF", "HREF"], ["PCLK", "PCLK"], ["D7", "D7"], ["D6", "D6"],
    ["D5", "D5"], ["D4", "D4"], ["D3", "D3"], ["D2", "D2"],
    ["D1", "D1"], ["D0", "D0"],
];
const sensorBreakoutPoints = [
    { pin: "pin1", x: 5, y: -5.9999 },
    { pin: "pin2", x: 3, y: -5.9999 },
    { pin: "pin8", x: 1, y: -5.9999 },
    { pin: "pin3", x: -1, y: -5.9999 },
    { pin: "pin4", x: -3, y: -5.9999 },
    { pin: "pin5", x: -5, y: -5.9999 },
    { pin: "pin6", x: 6.9999, y: -3 },
    { pin: "pin7", x: 6.9999, y: -1 },
    { pin: "pin12", x: 6.9999, y: 1 },
    { pin: "pin11", x: 6.9999, y: 3 },
    { pin: "pin16", x: 5, y: 5.9999 },
    { pin: "pin17", x: 3, y: 5.9999 },
    { pin: "pin13", x: 1, y: 5.9999 },
    { pin: "pin18", x: -1, y: 5.9999 },
    { pin: "pin19", x: -3, y: 5.9999 },
    { pin: "pin20", x: -5, y: 5.9999 },
    { pin: "pin10", x: -6.9999, y: -3 },
    { pin: "pin9", x: -6.9999, y: -1 },
    { pin: "pin14", x: -6.9999, y: 1 },
    { pin: "pin15", x: -6.9999, y: 3 },
];
const parts = {
    c1u: { jlcpcb: ["C15849"], mpn: "CL10A105KB8NNNC" },
    c100n: { jlcpcb: ["C14663"], mpn: "CC0603KRX7R9BB104" },
    r4k7: { jlcpcb: ["C23162"], mpn: "0603WAF4701T5E" },
    r10k: { jlcpcb: ["C2906982"], mpn: "FRC0603F1002TS" },
};
function NamedTrace({ from, to }) {
    const clean = (value) => value.replace(/[^a-zA-Z0-9]+/g, "_");
    return jsx("trace", { name: `${clean(from)}_TO_${clean(to)}`, from: from, to: to });
}
function BareOV7676CameraModule() {
    return (jsxs("board", { name: "OV7676_BARE_SENSOR_MODULE", width: "28mm", height: "28mm", borderRadius: "0.5mm", thickness: "1.6mm", layers: 4, solderMaskColor: "black", silkscreenColor: "white", doubleSidedAssembly: true, minBoardEdgeClearance: "0.2mm", autorouter: "auto", autorouterVersion: "beta_pipeline1", autorouterEffortLevel: "10x", minTraceWidth: "0.08mm", defaultTraceWidth: "0.08mm", minTraceToPadEdgeClearance: "0.07mm", minViaEdgeToPadEdgeClearance: "0.08mm", minViaHoleDiameter: "0.2mm", minViaPadDiameter: "0.45mm", children: [[
                "V3V3", "V2V8", "GND", "SIOC", "SIOD", "VSYNC", "HREF", "PCLK",
                "XCLK_HEADER", "XCLK_2V8", "D7", "D6", "D5", "D4", "D3", "D2",
                "D1", "D0", "RESET", "RESET_INV", "PWDN", "XSHUTDOWN", "VN",
            ].map((name) => (jsx(Fragment, { children: jsx("net", { name: name }) }, name))), jsx("schematicsection", { name: POWER, displayName: "3.3 V to 2.8 V power" }), jsx("schematicsection", { name: SENSOR, displayName: "Bare OV7676 CSP sensor" }), jsx("schematicsection", { name: CONTROL, displayName: "Clock and shutdown control" }), jsx("schematicsection", { name: INTERFACE, displayName: "18-pin module interface" }), jsx(PZ254V_12_18P, { name: "P1", displayName: "2x9 CAMERA HEADER", pinAttributes: {
                    pin1: { requiresPower: true, includeInBoardPinout: true },
                    pin2: { requiresGround: true, includeInBoardPinout: true },
                    pin3: { includeInBoardPinout: true }, pin4: { includeInBoardPinout: true },
                    pin5: { includeInBoardPinout: true }, pin6: { includeInBoardPinout: true },
                    pin7: { includeInBoardPinout: true }, pin8: { includeInBoardPinout: true },
                    pin9: { includeInBoardPinout: true }, pin10: { includeInBoardPinout: true },
                    pin11: { includeInBoardPinout: true }, pin12: { includeInBoardPinout: true },
                    pin13: { includeInBoardPinout: true }, pin14: { includeInBoardPinout: true },
                    pin15: { includeInBoardPinout: true }, pin16: { includeInBoardPinout: true },
                    pin17: { includeInBoardPinout: true }, pin18: { includeInBoardPinout: true },
                }, schSectionName: INTERFACE, schX: 15, schY: 0, schWidth: 2.2, pcbX: 0, pcbY: 10.5 }), jsx(XC6206P282MR, { name: "U2", displayName: "2.8 V LDO", pinAttributes: {
                    VSS: { mustBeConnected: true, requiresGround: true },
                    VOUT: { mustBeConnected: true, requiresPower: true, requiresVoltage: "2.8V" },
                    VIN: { mustBeConnected: true, requiresPower: true, requiresVoltage: "3.3V" },
                }, schSectionName: POWER, schX: -15, schY: 2, schWidth: 1.6, schHeight: 0.4, pcbX: -10, pcbY: -9, pcbRotation: 90 }), jsx("capacitor", { name: "C1", displayName: "1uF IN", capacitance: "1uF", footprint: "0603", supplierPartNumbers: { jlcpcb: parts.c1u.jlcpcb }, manufacturerPartNumber: parts.c1u.mpn, schSectionName: POWER, schX: -17, schY: -1, schOrientation: "vertical", pcbX: -12.6, pcbY: -9, pcbRotation: 90 }), jsx("capacitor", { name: "C2", displayName: "1uF OUT", capacitance: "1uF", footprint: "0603", supplierPartNumbers: { jlcpcb: parts.c1u.jlcpcb }, manufacturerPartNumber: parts.c1u.mpn, schSectionName: POWER, schX: -13, schY: -1, schOrientation: "vertical", pcbX: -7.4, pcbY: -9, pcbRotation: 90 }), jsxs("breakout", { name: "SENSOR_BREAKOUT", pcbX: 0, pcbY: -2, width: "14mm", height: "12mm", children: [jsx(OV7676_CSP5, { name: "U1", displayName: "OV7676-H20A (CSP5-20)", schSectionName: SENSOR, schX: -5, schY: 1, schWidth: 2.53, schHeight: 2.2, schPinArrangement: {
                            leftSide: {
                                pins: ["AVDD", "DOVDD", "VN", "AGND", "DOGND", "XVCLK", "XSHUTDOWN", "SIOC", "SIOD", "HREF"],
                                direction: "top-to-bottom",
                            },
                            rightSide: {
                                pins: ["PCLK", "VSYNC", "D7", "D6", "D5", "D4", "D3", "D2", "D1", "D0"],
                                direction: "top-to-bottom",
                            },
                        }, pinAttributes: {
                            AVDD: { mustBeConnected: true, requiresPower: true, requiresVoltage: "2.8V" },
                            DOVDD: { mustBeConnected: true, requiresPower: true, requiresVoltage: "2.8V" },
                            VN: { mustBeConnected: true },
                            AGND: { mustBeConnected: true, requiresGround: true },
                            DOGND: { mustBeConnected: true, requiresGround: true },
                            XVCLK: { mustBeConnected: true }, XSHUTDOWN: { mustBeConnected: true },
                            SIOC: { mustBeConnected: true }, SIOD: { mustBeConnected: true },
                            PCLK: { mustBeConnected: true }, VSYNC: { mustBeConnected: true },
                            HREF: { mustBeConnected: true }, D7: { mustBeConnected: true },
                            D6: { mustBeConnected: true }, D5: { mustBeConnected: true },
                            D4: { mustBeConnected: true }, D3: { mustBeConnected: true },
                            D2: { mustBeConnected: true }, D1: { mustBeConnected: true },
                            D0: { mustBeConnected: true },
                        }, pcbX: 0, pcbY: 0, pcbRotation: 180 }), sensorBreakoutPoints.map(({ pin, x, y }) => (jsx(Fragment, { children: jsx("breakoutpoint", { connection: `.U1 > .${pin}`, pcbX: x, pcbY: y }) }, `breakout-${pin}`)))] }), jsx("capacitor", { name: "C3", displayName: "1uF AVDD", capacitance: "1uF", footprint: "0603", supplierPartNumbers: { jlcpcb: parts.c1u.jlcpcb }, manufacturerPartNumber: parts.c1u.mpn, schSectionName: SENSOR, schX: -8, schY: -3, schOrientation: "vertical", layer: "bottom", pcbX: -2.2, pcbY: -2, pcbRotation: 90 }), jsx("capacitor", { name: "C4", displayName: "100nF DOVDD", capacitance: "100nF", footprint: "0603", supplierPartNumbers: { jlcpcb: parts.c100n.jlcpcb }, manufacturerPartNumber: parts.c100n.mpn, schSectionName: SENSOR, schX: -5, schY: -3, schOrientation: "vertical", layer: "bottom", pcbX: 2.2, pcbY: -2, pcbRotation: 90 }), jsx("capacitor", { name: "C5", displayName: "1uF VN", capacitance: "1uF", footprint: "0603", supplierPartNumbers: { jlcpcb: parts.c1u.jlcpcb }, manufacturerPartNumber: parts.c1u.mpn, schSectionName: SENSOR, schX: -2, schY: -3, schOrientation: "vertical", layer: "bottom", pcbX: 0, pcbY: -4.6 }), jsx("resistor", { name: "R1", displayName: "4k7 SIOC", resistance: "4.7kohm", footprint: "0603", supplierPartNumbers: { jlcpcb: parts.r4k7.jlcpcb }, manufacturerPartNumber: parts.r4k7.mpn, schSectionName: SENSOR, schX: -8, schY: 5, schRotation: 90, pcbX: 5, pcbY: 1, pcbRotation: 90 }), jsx("resistor", { name: "R2", displayName: "4k7 SIOD", resistance: "4.7kohm", footprint: "0603", supplierPartNumbers: { jlcpcb: parts.r4k7.jlcpcb }, manufacturerPartNumber: parts.r4k7.mpn, schSectionName: SENSOR, schX: -5, schY: 5, schRotation: 90, pcbX: 7, pcbY: 1, pcbRotation: 90 }), jsx(SN74LVC2G02DCTR, { name: "U3", displayName: "RESET_N / PWDN LOGIC", pinAttributes: {
                    "1A": { mustBeConnected: true }, "1B": { mustBeConnected: true },
                    "1Y": { mustBeConnected: true }, "2A": { mustBeConnected: true },
                    "2B": { mustBeConnected: true }, "2Y": { mustBeConnected: true },
                    GND: { mustBeConnected: true, requiresGround: true },
                    VCC: { mustBeConnected: true, requiresPower: true, requiresVoltage: "2.8V" },
                }, schPinArrangement: {
                    leftSide: { pins: ["1A", "1B", "2A", "2B"], direction: "top-to-bottom" },
                    rightSide: { pins: ["VCC", "1Y", "2Y", "GND"], direction: "top-to-bottom" },
                }, schSectionName: CONTROL, schX: 5, schY: 0, schWidth: 1.675, schHeight: 1, pcbX: 9.5, pcbY: -9, pcbRotation: 90 }), jsx("capacitor", { name: "C6", displayName: "100nF CTRL", capacitance: "100nF", footprint: "0603", supplierPartNumbers: { jlcpcb: parts.c100n.jlcpcb }, manufacturerPartNumber: parts.c100n.mpn, schSectionName: CONTROL, schX: 8, schY: -1, schOrientation: "vertical", pcbX: 12.5, pcbY: -9, pcbRotation: 90 }), jsx("resistor", { name: "R3", displayName: "10k RESET_N PU", resistance: "10kohm", footprint: "0603", supplierPartNumbers: { jlcpcb: parts.r10k.jlcpcb }, manufacturerPartNumber: parts.r10k.mpn, schSectionName: CONTROL, schX: 3, schY: -4, schRotation: 90, pcbX: 8, pcbY: -4.3, pcbRotation: 90 }), jsx("resistor", { name: "R4", displayName: "10k PWDN PD", resistance: "10kohm", footprint: "0603", supplierPartNumbers: { jlcpcb: parts.r10k.jlcpcb }, manufacturerPartNumber: parts.r10k.mpn, schSectionName: CONTROL, schX: 6, schY: -4, schRotation: 90, pcbX: 11, pcbY: -4.3, pcbRotation: 90 }), jsx(SN74LVC1G17DBVR, { name: "U4", displayName: "2.8 V XCLK BUFFER", noConnect: ["pin1"], pinAttributes: {
                    pin1: { doNotConnect: true }, A: { mustBeConnected: true },
                    GND: { mustBeConnected: true, requiresGround: true },
                    Y: { mustBeConnected: true },
                    VCC: { mustBeConnected: true, requiresPower: true, requiresVoltage: "2.8V" },
                }, schSectionName: CONTROL, schX: 4, schY: 4, schWidth: 1.7, schHeight: 0.6, pcbX: 4, pcbY: -9, pcbRotation: 90 }), jsx("capacitor", { name: "C7", displayName: "100nF XCLK", capacitance: "100nF", footprint: "0603", supplierPartNumbers: { jlcpcb: parts.c100n.jlcpcb }, manufacturerPartNumber: parts.c100n.mpn, schSectionName: CONTROL, schX: 7, schY: 4, schOrientation: "vertical", pcbX: 1, pcbY: -9, pcbRotation: 90 }), jsx(NamedTrace, { from: "P1.pin1", to: "net.V3V3" }), jsx(NamedTrace, { from: "P1.pin2", to: "net.GND" }), headerLabels.slice(2).map((label, index) => (jsx(Fragment, { children: jsx(NamedTrace, { from: `P1.pin${index + 3}`, to: `net.${label === "XCLK" ? "XCLK_HEADER" : label}` }) }, `header-${label}`))), jsx(NamedTrace, { from: "U2.VIN", to: "net.V3V3" }), jsx(NamedTrace, { from: "U2.VSS", to: "net.GND" }), jsx(NamedTrace, { from: "U2.VOUT", to: "net.V2V8" }), jsx(NamedTrace, { from: "C1.pin1", to: "net.V3V3" }), jsx(NamedTrace, { from: "C1.pin2", to: "net.GND" }), jsx(NamedTrace, { from: "C2.pin1", to: "net.V2V8" }), jsx(NamedTrace, { from: "C2.pin2", to: "net.GND" }), jsx(NamedTrace, { from: "U1.AVDD", to: "net.V2V8" }), jsx(NamedTrace, { from: "U1.DOVDD", to: "net.V2V8" }), jsx(NamedTrace, { from: "U1.AGND", to: "net.GND" }), jsx(NamedTrace, { from: "U1.DOGND", to: "net.GND" }), jsx(NamedTrace, { from: "U1.VN", to: "net.VN" }), jsx(NamedTrace, { from: "C3.pin1", to: "net.V2V8" }), jsx(NamedTrace, { from: "C3.pin2", to: "net.GND" }), jsx(NamedTrace, { from: "C4.pin1", to: "net.V2V8" }), jsx(NamedTrace, { from: "C4.pin2", to: "net.GND" }), jsx(NamedTrace, { from: "C5.pin1", to: "net.VN" }), jsx(NamedTrace, { from: "C5.pin2", to: "net.GND" }), jsx(NamedTrace, { from: "R1.pin1", to: "net.V2V8" }), jsx(NamedTrace, { from: "R1.pin2", to: "net.SIOC" }), jsx(NamedTrace, { from: "R2.pin1", to: "net.V2V8" }), jsx(NamedTrace, { from: "R2.pin2", to: "net.SIOD" }), signalConnections.map(([pin, net]) => (jsx(Fragment, { children: jsx(NamedTrace, { from: `U1.${pin}`, to: `net.${net}` }) }, `sensor-${pin}`))), jsx(NamedTrace, { from: "U4.A", to: "net.XCLK_HEADER" }), jsx(NamedTrace, { from: "U4.Y", to: "net.XCLK_2V8" }), jsx(NamedTrace, { from: "U4.VCC", to: "net.V2V8" }), jsx(NamedTrace, { from: "U4.GND", to: "net.GND" }), jsx(NamedTrace, { from: "C7.pin1", to: "net.V2V8" }), jsx(NamedTrace, { from: "C7.pin2", to: "net.GND" }), jsx(NamedTrace, { from: "U1.XVCLK", to: "net.XCLK_2V8" }), jsx(NamedTrace, { from: "U3.1A", to: "net.RESET" }), jsx(NamedTrace, { from: "U3.1B", to: "net.RESET" }), jsx(NamedTrace, { from: "U3.1Y", to: "net.RESET_INV" }), jsx(NamedTrace, { from: "U3.2A", to: "net.RESET_INV" }), jsx(NamedTrace, { from: "U3.2B", to: "net.PWDN" }), jsx(NamedTrace, { from: "U3.2Y", to: "net.XSHUTDOWN" }), jsx(NamedTrace, { from: "U3.VCC", to: "net.V2V8" }), jsx(NamedTrace, { from: "U3.GND", to: "net.GND" }), jsx(NamedTrace, { from: "U1.XSHUTDOWN", to: "net.XSHUTDOWN" }), jsx(NamedTrace, { from: "R3.pin1", to: "net.RESET" }), jsx(NamedTrace, { from: "R3.pin2", to: "net.V3V3" }), jsx(NamedTrace, { from: "R4.pin1", to: "net.PWDN" }), jsx(NamedTrace, { from: "R4.pin2", to: "net.GND" }), jsx(NamedTrace, { from: "C6.pin1", to: "net.V2V8" }), jsx(NamedTrace, { from: "C6.pin2", to: "net.GND" }), jsx("silkscreencircle", { pcbX: 0, pcbY: -2, radius: "4.5mm", strokeWidth: "0.2mm" }), jsx("silkscreentext", { text: "BARE OV7676 CSP / LENS KEEP-OUT", pcbX: 0, pcbY: -12.8, fontSize: "0.55mm", anchorAlignment: "center" }), jsx("silkscreentext", { text: "A1", pcbX: 2.7, pcbY: -4, fontSize: "0.45mm", anchorAlignment: "center" }), jsx("silkscreentext", { text: "P1", pcbX: 12.6, pcbY: 10.5, fontSize: "0.55mm", anchorAlignment: "center" }), jsx("silkscreentext", { text: "1", pcbX: -12.2, pcbY: 9.2, fontSize: "0.6mm", anchorAlignment: "center" }), headerLabels.map((label, index) => {
                const pair = Math.floor(index / 2);
                const pcbX = -10.16 + pair * 2.54;
                const pcbY = index % 2 === 0 ? 7.2 : 13.2;
                return (jsx(Fragment, { children: jsx("silkscreentext", { text: label, pcbX: pcbX, pcbY: pcbY, fontSize: "0.42mm", anchorAlignment: "center" }) }, `label-${label}`));
            })] }));
}

export { BareOV7676CameraModule as default };