gokul/usb3-sd-hub
Engineering draft: four-layer, computer-powered USB 3 hub with one USB-C host socket, two USB-C and two USB-A accessory sockets, and a full-size SD slot. Board and three schematic previews are available. Routing and production checks are incomplete; not fabrication ready.
- Version
- 0.1.5
- License
- MIT
- Stars
- 0
components/GroundVias.tsx
import { Fragment } from "react";
import { placementFor, coordinatesFor } from "../design/placement";
export const GroundVias = () => (
<>
{[
[-5.7, 11.6],
[-25.8, 8.7],
[-22, 8.2],
[-2.1, 14.2],
[-4.7, 13.8],
[-7.9, 8.5],
[27.6, 1.5],
[31.2, 1.4],
[-10, 6.1],
[-9.6, 3.8],
[1.8, -7.5],
[5.4, -8.5],
[28.8, -15.8],
[30.6, -16.3],
[31.8, -15.5],
].map(([x, y], index) => (
<Fragment key={`return-${index}`}>
<via
name={`V_RETURN_${index + 1}`}
pcbX={x}
pcbY={y}
outerDiameter={0.6}
holeDiameter={0.3}
layers={["top", "inner1", "inner2", "bottom"]}
connectsTo="net.GND"
tented="both_sides"
/>
</Fragment>
))}
<via
name="V_RETURN_CENTRE"
pcbX={29.5}
pcbY={0.8}
outerDiameter={0.45}
holeDiameter={0.2}
layers={["top", "inner1", "inner2", "bottom"]}
connectsTo="net.GND"
tented="both_sides"
/>
<via
name="V_RETURN_C4_CENTRE"
pcbX={3.6}
pcbY={-9.6}
outerDiameter={0.45}
holeDiameter={0.2}
layers={["top", "inner1", "inner2", "bottom"]}
connectsTo="net.GND"
tented="both_sides"
/>
{Array.from({ length: 36 }, (_, index) => (
<Fragment key={index}>
<via
name={`V_HUB_${index + 1}`}
pcbX={coordinatesFor("U_HUB")[0] + ((index % 6) - 2.5) * 1.2}
pcbY={
coordinatesFor("U_HUB")[1] + (Math.floor(index / 6) - 2.5) * 1.2
}
outerDiameter={0.6}
holeDiameter={0.33}
layers={["top", "inner1", "inner2", "bottom"]}
connectsTo="net.GND"
tented="bottom_tented"
/>
</Fragment>
))}
{Array.from({ length: 16 }, (_, index) => (
<Fragment key={index}>
<via
name={`V_SD_${index + 1}`}
pcbX={coordinatesFor("U_SD")[0] + ((index % 4) - 1.5) * 1.2}
pcbY={coordinatesFor("U_SD")[1] + (Math.floor(index / 4) - 1.5) * 1.2}
outerDiameter={0.6}
holeDiameter={0.33}
layers={["top", "inner1", "inner2", "bottom"]}
connectsTo="net.GND"
tented="bottom_tented"
/>
</Fragment>
))}
{["U_UP_MUX", "U_C1_MUX", "U_C4_MUX", "U_CORE_REG", "U_33_REG"].map(
(name, index) => (
<Fragment key={name}>
<via
name={`V_THERMAL_${index + 1}`}
{...placementFor(name)}
outerDiameter={0.6}
holeDiameter={0.3}
layers={["top", "inner1", "inner2", "bottom"]}
connectsTo="net.GND"
tented="bottom_tented"
/>
</Fragment>
),
)}
</>
);