ShiboSoftwareDev/muse-m5stack-sticks3-replacement

A 4-layer ESP32-S3 carrier board with USB-C 5V input, AMS1117 3.3V regulation, FFC interface, reset/boot/user buttons, status LED, and passives for compact display/control applications.

Version
0.0.1
License
unset
Stars
0

src/variants.ts

export type GadgetVariant = {
  slug: string
  boardName: string
  title: string
  role: string
  width: number
  height: number
  userButtons: 0 | 1 | 2
  interfaceKind: "status" | "spi-display" | "epaper" | "voice" | "watch"
}

export const variants = [
  { slug: "esp32-c5-devkit-replacement", boardName: "MUSE_DEVKIT", title: "Muse DevKit replacement", role: "Status RGB and BOOT control", width: 46, height: 42, userButtons: 0, interfaceKind: "status" },
  { slug: "ideaspark-1p9-replacement", boardName: "MUSE_IDEASPARK_1P9", title: "Muse 1.9 inch display carrier", role: "SPI display and image endpoint", width: 70, height: 55, userButtons: 1, interfaceKind: "spi-display" },
  { slug: "sensecap-indicator-replacement", boardName: "MUSE_INDICATOR", title: "Muse 4 inch indicator carrier", role: "SPI display, touch and sensor endpoint", width: 90, height: 70, userButtons: 1, interfaceKind: "spi-display" },
  { slug: "reterminal-e1001-replacement", boardName: "MUSE_EPAPER", title: "Muse e-paper carrier", role: "7.5 inch e-paper control interface", width: 100, height: 70, userButtons: 1, interfaceKind: "epaper" },
  { slug: "home-assistant-voice-replacement", boardName: "MUSE_VOICE", title: "Muse voice carrier", role: "I2S audio, PTT and rotary-control interface", width: 85, height: 65, userButtons: 1, interfaceKind: "voice" },
  { slug: "waveshare-s3-amoled-1p75-replacement", boardName: "MUSE_ROUND_AMOLED", title: "Muse round AMOLED carrier", role: "Round AMOLED, touch and push-to-talk", width: 72, height: 60, userButtons: 1, interfaceKind: "watch" },
  { slug: "aipi-lite-replacement", boardName: "MUSE_AIPI_LITE", title: "Muse AIPI Lite carrier", role: "Display and two-button menu", width: 75, height: 58, userButtons: 2, interfaceKind: "spi-display" },
  { slug: "waveshare-c6-amoled-1p8-replacement", boardName: "MUSE_AMOLED_1P8", title: "Muse 1.8 inch AMOLED carrier", role: "AMOLED, touch, PTT and text replies", width: 72, height: 60, userButtons: 1, interfaceKind: "watch" },
  { slug: "sensecap-watcher-replacement", boardName: "MUSE_WATCHER", title: "Muse Watcher carrier", role: "Display, touch, image and PTT interface", width: 90, height: 65, userButtons: 1, interfaceKind: "watch" },
  { slug: "m5stack-sticks3-replacement", boardName: "MUSE_STICKS3", title: "Muse StickS3-format carrier", role: "Compact display and two-button menu", width: 72, height: 50, userButtons: 2, interfaceKind: "watch" },
  { slug: "m5stack-stickc-plus2-replacement", boardName: "MUSE_STICKC_PLUS2", title: "Muse StickC Plus2-format carrier", role: "Compact display and two-button menu", width: 72, height: 50, userButtons: 2, interfaceKind: "watch" }
] as const satisfies readonly GadgetVariant[]

export const variantBySlug = Object.fromEntries(
  variants.map((variant) => [variant.slug, variant]),
) as Record<string, GadgetVariant>