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>
			),
		)}
	</>
);