shibosoftwaredev/f1c100s-linux-nema17-stepper-controller
Compact four-layer NEMA 17 carrier PCB combining an F1C100S Linux SoC, USB-C PD power and buck regulation, W5500 10/100 Ethernet, STM32 safety/motion control, and DRV8825 stepper-driver hardware with protection, sensing, connectors, and dual-sided SMT assembly.
- Version
- 0.4.15
- License
- unset
- Stars
- 0
modules/f1c100s/src/profiles.ts
export const LAYOUT_PROFILES = [
"native",
"lcd_top_storage_right",
"lcd_right_storage_bottom",
"lcd_top_storage_bottom",
"lcd_right_storage_left",
] as const;
export type LayoutProfile = (typeof LAYOUT_PROFILES)[number];
export type Side = "top" | "right" | "bottom" | "left";
export const PROFILE_LAYOUTS: Record<
LayoutProfile,
{ rotation: number; lcd?: Side; storage?: Side }
> = {
native: { rotation: -90 },
lcd_top_storage_right: { rotation: 180, lcd: "top", storage: "right" },
lcd_right_storage_bottom: { rotation: 90, lcd: "right", storage: "bottom" },
lcd_top_storage_bottom: { rotation: 180, lcd: "top", storage: "bottom" },
lcd_right_storage_left: { rotation: 90, lcd: "right", storage: "left" },
};
export function assertLayoutProfile(
value: string,
): asserts value is LayoutProfile {
if (!(LAYOUT_PROFILES as readonly string[]).includes(value))
throw new Error(
`Unsupported F1C100S layoutProfile '${value}'. Expected ${LAYOUT_PROFILES.join(", ")}`,
);
}
export const MODULE_SIZE = 28;
export const TERMINAL_EDGE = 13.2;
export const EXIT_DIAMETER = 0.45;
export const EXIT_DRILL = 0.3;
export const RULES = {
traceWidth: 0.12,
clearance: 0.1,
viaDiameter: 0.45,
viaDrill: 0.3,
layers: 4,
} as const;