imrishabh18/pedometer

This code defines and assembles a simple radio receiver hardware circuit using specific imported capacitors, inductors, RF connectors, and oscillator components with precise footprints and schematic attributes.

Version
1.1.3
License
unset
Stars
0

schematic-layout.tsx

import { Fragment } from "react";
import type { SchematicPinStyle } from "@tscircuit/props";

/** Schematic coordinates are independent of every PCB placement. */
const rows: [string,string,string,number,number][] = [
 ["U2","power","charger",-6.5,3.5], ["J2","usb","usb_input",-6,2],
 ["R12","usb","usb_input",0,0], ["R13","usb","usb_input",4,0], ["D1","usb","usb_input",9,4],
 ["C3","power","decoupling",-12,-4.5], ["C4","power","decoupling",-8.5,-4.5],
 ["C5","power","decoupling",-5,-4.5], ["C6","power","decoupling",-12,-7],
 ["C13","power","decoupling",-5,-7], ["C16","power","decoupling",-8.5,-7],
 ["R3","power","charger",-11.5,0], ["R4","power","charger",-11.5,3],
 ["SW1","power","charger",-6.5,-0.5],
 ["U3","power","gauge",9,3], ["J1","power","gauge",8,5.7],
 ["C7","power","gauge",5,0], ["C8","power","gauge",13,0],
 ["R5","power","gauge",9,-1], ["R8","power","gauge",13,6.5],
 ["U4","power","regulator",9,-5.5], ["C9","power","regulator",5,-5],
 ["C10","power","regulator",13,-5], ["C17","power","regulator",5,-7.5],
 ["U1","logic","mcu",-6,1.5], ["C1","radio","radio_power",-12,-4.5], ["C2","radio","radio_power",-9,-4.5],
 ["R1","logic","mcu",-12,6], ["R2","logic","mcu",-9.5,6],
 ["R6","logic","sensor",5,0], ["R7","logic","sensor",9,0],
 ["J4","radio","reset",9,-5.2],
 ["U5","logic","sensor",9,3.5], ["C11","logic","sensor",5,6],
 ["C12","logic","sensor",13,6], ["R9","logic","sensor",13,0],
 ["Y1","logic","clock",9,-5], ["C14","logic","clock",6,-7.5], ["C15","logic","clock",12,-7.5],
 ["U6","display","translator",-6,2],
 ["Q1","display","isolation",9,1], ["R10","display","isolation",6,5],
 ["C18","display","isolation",13,5], ["R11","display","isolation",6,-1.5],
 ["J3","display","connector",-6,-5.5],
 ["Y2","radio","hf_clock",10,4],
 ["ANT1","radio","rf",1.5,5.5], ["L2","radio","rf",-9.5,4.5],
 ["C26","radio","rf",-12,2.5], ["C27","radio","rf",-7,2.5],
 ["C28","radio","rf",-4.5,4.5], ["L3","radio","rf",-2,2.5], ["L4","radio","rf",0,4.5],
 ["L1","radio","radio_power",-10,-1], ["C21","radio","radio_power",-6,-1.5],
 ["C22","radio","radio_power",-3,-1.5], ["C25","radio","radio_power",0,-1.5],
 ["C19","radio","radio_power",-6,-4.5], ["C20","radio","radio_power",-3,-4.5],
 ["C23","radio","radio_power",0,-4.5], ["R14","radio","reset",6,-1.5], ["C24","radio","reset",6,-4],

];
export const schematic: Record<string,{schSheetName:string;schSectionName:string;schX:number;schY:number}> =
 Object.fromEntries(rows.map(([ref,schSheetName,schSectionName,schX,schY])=>[ref,{schSheetName,schSectionName,schX,schY}]));
export const spacedPins=(count:number):SchematicPinStyle=>Object.fromEntries(
 Array.from({length:count},(_,i)=>[`pin${i+1}`,{marginTop:0.12,marginBottom:0.04}])
);

const headings:Record<string,[number,number]>={rf:[-13,7.3],hf_clock:[6,7.3],radio_power:[-13,0.2],reset:[5,0.2],usb_input:[-12,6.65],charger:[-13,7.4],decoupling:[-13,-3.25],gauge:[4.2,7.4],regulator:[4.2,-3.25],mcu:[-13,7.4],debug:[-13,-3.25],sensor:[4.2,7.4],clock:[4.2,-3.25],translator:[-12,6.65],isolation:[4.6,6.65],connector:[-12,-3.5]};
const sheets=[
 {name:"power",title:"01 / POWER, CHARGING & BATTERY",subtitle:"5 V input | Protected 100 mAh cell | Always-on 2.5 V rail",sections:[
  ["charger","CHARGER & POWER PATH / BQ25150"],["decoupling","POWER-RAIL DECOUPLING"],["gauge","BATTERY & FUEL GAUGE / BQ27427"],["regulator","MAIN 2.5 V REGULATOR"]]},
 {name:"logic",title:"02 / BLUETOOTH & STEP COUNTING",subtitle:"Bare CC2340R5 QFN24 | Shared 2.5 V I2C | Hardware step counter",sections:[
  ["mcu","BLUETOOTH MCU / CC2340R52E0RGER"],["sensor","ACCELEROMETER / BMA400"],["clock","32.768 kHz CLOCK"]]},
 {name:"display",title:"03 / DISPLAY & BUS ISOLATION",subtitle:"SSD1306 OLED / 0x3C | Switched 3.3 V | Reset-safe I2C isolation",sections:[
  ["translator","I2C LEVEL TRANSLATION / PCA9306"],["isolation","BIAS & RESET ISOLATION"],["connector","OLED CONNECTOR / JST-SH"]]},
 {name:"usb",title:"04 / USB-C CHARGING INPUT",subtitle:"5 V sink only | Separate CC pull-downs | VBUS transient protection",sections:[["usb_input","USB-C RECEPTACLE & INPUT PROTECTION"]]},
 {name:"radio",title:"05 / RADIO, MCU SUPPLIES & RESET",subtitle:"TI RGE reference filter | 48 MHz crystal | Corner antenna; tune on assembled hardware",sections:[
 ["rf","2.4 GHz FILTER & ANTENNA MATCH"],["hf_clock","48 MHz RADIO REFERENCE"],["radio_power","INTERNAL DC/DC & DECOUPLING"],["reset","RESET & SWD PROGRAMMING"]]},
];
export function SchematicSheets(){return <>{sheets.map((s,i)=><Fragment key={s.name}><schematicsheet name={s.name} displayName={s.title} sheetIndex={i} sheetSize="A4">
 <schematictext schX={-14} schY={9} anchor="left" text={s.title} fontSize={0.48}/>
 <schematictext schX={-14} schY={8.25} anchor="left" text={s.subtitle} fontSize={0.22}/>
 {s.sections.map(([name,displayName])=><Fragment key={name}><schematicsection name={name} /><schematictext schX={headings[name][0]} schY={headings[name][1]} anchor="left" text={displayName} fontSize={0.24}/></Fragment>)}
 <schematictext schX={-14} schY={-9.2} anchor="left" text={`STRIDE REV B | Engineering prototype | Sheet ${i+1} of ${sheets.length} | 2026-09-04`} fontSize={0.2}/>
 {i===0&&<schematictext schX={-12} schY={-8.6} anchor="left" text="J1 NTC: 10k at cell; R4 is the required parallel bias." fontSize={0.18}/>}
 {i===1&&<schematictext schX={-12} schY={-6.5} anchor="left" text="VTREF = 2.5 V. MR reaches MCU only through PMIC PG." fontSize={0.18}/>}
 {i===3&&<>
  <schematictext schX={9} schY={4.6} text="D1 / ESD5Z5.0T1G" fontSize={0.22}/>
  <schematictext schX={-12} schY={-5} anchor="left" text="CC1 and CC2 each have a separate 5.1k, 1% pull-down." fontSize={0.22}/>
  <schematictext schX={-12} schY={-6} anchor="left" text="VBUS feeds BQ25150 IN on sheet 1. Default 100mA input limit." fontSize={0.22}/>
  <schematictext schX={-12} schY={-7} anchor="left" text="Charging only: no USB data, no PD, no SWD over this port." fontSize={0.22}/>
 </>}
 {i===4&&<>
  <schematictext schX={0} schY={6.4} text="ANT1 / 2450AT18A100E" fontSize={0.22}/>
  <schematictext schX={10} schY={2.2} text="Set CL = 8 pF in TI SysConfig; characterize on PCB." fontSize={0.18}/>
 </>}
 {i===2&&<>
  <schematictext schX={5} schY={-4.6} anchor="left" text="POWER SEQUENCE" fontSize={0.26}/>
  <schematictext schX={5} schY={-5.4} anchor="left" text="1. Hold DISPLAY_ISOLATE high." fontSize={0.2}/>
  <schematictext schX={5} schY={-6.1} anchor="left" text="2. Set LSLDO to 3.3 V; enable and wait." fontSize={0.2}/>
  <schematictext schX={5} schY={-6.8} anchor="left" text="3. Drive isolation low; initialize OLED." fontSize={0.2}/>
  <schematictext schX={5} schY={-7.5} anchor="left" text="Power-off: isolate first, then disable LDO." fontSize={0.2}/>
 </>}
 </schematicsheet></Fragment>)}</>;}