rushabhcodes/ESP32-E-Reader
A compact ESP32-C3 e-reader PCB integrating LiPo charging/protection, USB-C, 3.3 V regulation, e-paper display bias generation, microSD storage, and tactile controls.
- Version
- 1.0.85
- License
- unset
- Stars
- 3
schematic-layout.ts
import type { SchematicPinArrangement } from "@tscircuit/props";
// Coordinates are local to each sheet. Keep related components beside their
// circuit rather than assigning positions in reference-number order.
export type SchematicPlacement = {
schX: number;
schY: number;
schRotation?: number;
schWidth?: number;
schPinArrangement?: SchematicPinArrangement;
};
export const schematicGroups = [
{
name: "usb",
sheet: "battery_usb",
title: "USB-C input & ESD",
x: 3,
y: 15,
refs: ["J1", "U2", "R7", "R8", "C2", "C3", "C4", "C5", "TP3"],
},
{
name: "charger",
sheet: "battery_usb",
title: "Charging & system output",
x: 14,
y: 15,
refs: ["U1", "R5", "R9", "R31", "R32", "D1", "C34", "C35", "TP1"],
},
{
name: "protection",
sheet: "battery_usb",
title: "Battery protection",
x: 8,
y: 4,
refs: ["BT1", "U3", "Q1", "C6", "R14", "R15"],
},
{
name: "regulator",
sheet: "mcu_power",
title: "3.3 V buck-boost supply",
x: 6,
y: 17,
refs: [
"U5",
"L2",
"SW7",
"R29",
"C7",
"C8",
"C9",
"C10",
"C11",
"C12",
"C13",
"TP2",
],
},
{
name: "mcu",
sheet: "mcu_power",
title: "ESP32-C3 & SPI interface",
x: 8,
y: 7.4,
refs: ["U4", "C14", "C36", "C37", "C38", "R27", "R28", "R30", "JP1"],
},
{
name: "reset",
sheet: "mcu_power",
title: "Reset / enable",
x: 0,
y: 7,
refs: ["C1", "R4"],
},
{
name: "battery_adc",
sheet: "mcu_power",
title: "Battery voltage sense",
x: 18,
y: 7,
refs: ["R12", "R13", "TP6"],
},
{
name: "display_interface",
sheet: "display_power",
title: "E-paper FPC & logic",
x: 5,
y: 16,
refs: ["J2", "R18", "R19", "R21", "C15", "C19", "C20", "C21"],
},
{
name: "display_pump",
sheet: "display_power",
title: "Display charge pump",
x: 18,
y: 16,
refs: [
"L1",
"Q2",
"R16",
"R17",
"C16",
"D2",
"D3",
"D4",
"C17",
"C23",
"C32",
"TP4",
"TP5",
],
},
{
name: "display_bias",
sheet: "display_power",
title: "Panel bias decoupling",
x: 11,
y: -3,
refs: ["C22", "C25", "C27", "C28", "C29"],
},
{
name: "sd",
sheet: "storage",
title: "Micro SD / shared SPI bus",
x: 4,
y: 9,
refs: ["J4", "C24", "C30", "R20", "R23", "R24", "R25"],
},
{
name: "system_buttons",
sheet: "controls",
title: "Reset & wake buttons",
x: 2.5,
y: 7.5,
refs: ["S1", "S2", "R10"],
},
{
name: "navigation",
sheet: "controls",
title: "ADC navigation keys",
x: 12.5,
y: 7.5,
refs: ["SW2", "SW3", "SW4", "SW6", "R1", "R3", "R6", "R11"],
},
] as const;
export const schematicLayout: Record<string, SchematicPlacement> = {
// USB enters from the left; the charger and battery sit to its right.
J1: { schX: 0, schY: 10, schWidth: 1.385 },
U2: { schX: 5, schY: 9 },
R7: { schX: 2.5, schY: 6, schRotation: -90 },
R8: { schX: 5, schY: 6, schRotation: -90 },
C2: { schX: 0, schY: 13 },
C3: { schX: 2.5, schY: 13 },
C4: { schX: 5, schY: 13 },
C5: { schX: 7.5, schY: 13 },
TP3: { schX: 9, schY: 13.8 },
U1: {
schX: 14,
schY: 10,
schPinArrangement: {
leftSide: ["pin13", "pin6", "pin9", "pin7"],
rightSide: ["pin10", "pin11", "pin2", "pin3", "pin14"],
bottomSide: ["pin4", "pin5", "pin8", "pin15", "pin17", "pin1", "pin16", "pin12"],
},
},
D1: { schX: 10.5, schY: 13, schRotation: -90 },
R5: { schX: 10.5, schY: 11, schRotation: -90 },
R31: { schX: 12.5, schY: 5.5, schRotation: -90 },
R9: { schX: 15, schY: 5.5, schRotation: -90 },
R32: { schX: 17.5, schY: 5.5, schRotation: -90 },
C34: { schX: 20, schY: 9 },
C35: { schX: 20, schY: 12 },
TP1: { schX: 22, schY: 9.8 },
BT1: { schX: 0, schY: 0.5 },
R14: { schX: 4, schY: 1.5, schRotation: 90 },
C6: { schX: 4, schY: -1 },
U3: { schX: 7.2, schY: 0 },
Q1: { schX: 14, schY: 0 },
R15: { schX: 8, schY: -3, schRotation: 90 },
// The inductor bridges the switching pins, with input/output banks nearby.
U5: {
schX: 8,
schY: 12,
schPinArrangement: {
leftSide: ["pin1", "pin10", "pin11", "pin12"],
rightSide: ["pin4", "pin5", "pin3", "pin14"],
topSide: ["pin8", "pin9", "pin7", "pin6"],
bottomSide: ["pin2", "pin13", "pin15"],
},
},
L2: { schX: 8, schY: 15.3 },
C9: { schX: 0, schY: 12 },
C10: { schX: 2.5, schY: 12 },
C11: { schX: 5, schY: 12 },
C7: { schX: 12, schY: 12 },
C8: { schX: 14, schY: 12 },
C12: { schX: 16, schY: 12 },
C13: { schX: 17.5, schY: 12 },
TP2: { schX: 17.5, schY: 14.5 },
SW7: { schX: 2, schY: 8.5 },
R29: { schX: 5, schY: 8, schRotation: -90 },
U4: {
schX: 8,
schY: 2,
schPinArrangement: {
topSide: ["pin1"],
leftSide: [
"pin2",
"pin13",
"pin14",
"pin8",
"pin15",
"pin17",
"pin18",
"pin11",
],
rightSide: [
"pin3",
"pin4",
"pin5",
"pin12",
"pin7",
"pin10",
"pin6",
"pin16",
],
bottomSide: [
"pin9",
"pin19",
"pin20",
"pin21",
"pin22",
"pin23",
"pin24",
"pin25",
"pin26",
"pin27",
],
},
},
C14: { schX: 4, schY: 6.5 },
C36: { schX: 6.5, schY: 6.5 },
C37: { schX: 11, schY: 6.5 },
C38: { schX: 13.5, schY: 6.5 },
R4: { schX: 0, schY: 4.5, schRotation: 90 },
C1: { schX: 0, schY: 2 },
JP1: { schX: 3, schY: -1 },
R27: { schX: 13, schY: 1, schRotation: 180 },
R28: { schX: 13, schY: -1 },
R30: { schX: 16, schY: 2.5, schRotation: -90 },
R12: { schX: 20, schY: 3.5, schRotation: -90 },
R13: { schX: 20, schY: 0.5, schRotation: -90 },
TP6: { schX: 22, schY: 2 },
// Logic on the connector's left; analog bias outputs on its right.
J2: {
schX: 7,
schY: 8,
schPinArrangement: {
leftSide: [
"pin1",
"pin4",
"pin9",
"pin10",
"pin11",
"pin12",
"pin13",
"pin14",
"pin25",
"pin26",
],
rightSide: [
"pin2",
"pin3",
"pin5",
"pin18",
"pin19",
"pin20",
"pin21",
"pin22",
"pin23",
"pin24",
],
topSide: ["pin15", "pin16"],
bottomSide: ["pin6", "pin7", "pin8", "pin17"],
},
},
C15: { schX: 0, schY: 13 },
C19: { schX: 2.5, schY: 13 },
C20: { schX: 5, schY: 13 },
C21: { schX: 7.5, schY: 13, schRotation: 90 },
R19: { schX: 0, schY: 8, schRotation: 90 },
R21: { schX: 2.5, schY: 8, schRotation: 90 },
R18: { schX: 0, schY: 4.5, schRotation: 90 },
L1: { schX: 16, schY: 13 },
Q2: { schX: 16.1, schY: 8.1 },
R16: { schX: 12.5, schY: 7, schRotation: -90 },
R17: { schX: 16, schY: 5.5, schRotation: -90 },
D4: { schX: 20, schY: 11, schRotation: 180 },
C17: { schX: 23, schY: 11 },
TP5: { schX: 25, schY: 11.8 },
C16: { schX: 19.5, schY: 8, schRotation: -90 },
D3: { schX: 22, schY: 7, schRotation: 90 },
D2: { schX: 22, schY: 4 },
C23: { schX: 25, schY: 4, schRotation: 90 },
C32: { schX: 27.5, schY: 4 },
TP4: { schX: 29.5, schY: 4.8 },
C29: { schX: 5, schY: 0, schRotation: 90 },
C25: { schX: 8, schY: 0, schRotation: 90 },
C22: { schX: 11, schY: 0, schRotation: 90 },
C28: { schX: 14, schY: 0, schRotation: 90 },
C27: { schX: 17, schY: 0, schRotation: 90 },
J4: {
schX: 7,
schY: 2,
schPinArrangement: {
leftSide: ["pin2", "pin3", "pin5", "pin7"],
rightSide: [
"pin1",
"pin8",
"pin9",
"pin10",
"pin11",
"pin12",
"pin13",
"pin14",
],
topSide: ["pin4"],
bottomSide: ["pin6"],
},
},
C24: { schX: 0, schY: 6 },
C30: { schX: 2.5, schY: 6 },
R23: { schX: 0, schY: 2.5, schRotation: -90 },
R20: { schX: 3, schY: 2.5, schRotation: -90 },
R25: { schX: 11, schY: 4, schRotation: -90 },
R24: { schX: 14, schY: 4, schRotation: -90 },
S1: { schX: 0.5, schY: 3.2, schRotation: 90 },
S2: { schX: 3.5, schY: 3.2, schRotation: 90 },
R10: { schX: 3.5, schY: 5.6, schRotation: -90 },
R11: { schX: 12.5, schY: 5.6, schRotation: -90 },
SW2: { schX: 8, schY: 3.2, schRotation: 0 },
R1: { schX: 8, schY: 1, schRotation: -90 },
SW3: { schX: 11, schY: 3.2, schRotation: 0 },
R3: { schX: 11, schY: 1, schRotation: -90 },
SW4: { schX: 14, schY: 3.2, schRotation: 0 },
R6: { schX: 14, schY: 1, schRotation: -90 },
SW6: { schX: 17, schY: 3.2, schRotation: 0 },
};
export const controlButtonCaptions = [
{ reference: "S1", text: "Reset" },
{ reference: "S2", text: "Wake" },
{ reference: "SW2", text: "Back" },
{ reference: "SW3", text: "Confirm" },
{ reference: "SW4", text: "Left" },
{ reference: "SW6", text: "Right" },
] as const;