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
index.circuit.tsx
PCB
Schematic
import { A_0402WGF1002TCE } from "./imports/A_0402WGF1002TCE";
import { Fragment } from "react";
import { bgaAutorouter, clockAutorouter, rfAutorouter } from "./bga-autorouter";
import { schematic, spacedPins, SchematicSheets } from "./schematic-layout";
import { CC2340R52E0RGER } from "./imports/CC2340R52E0RGER";
import { BareRadioParts, phaseForNet } from "./bare-radio";
import { BQ25150YFPR } from "./imports/BQ25150YFPR";
import { BQ27427YZFR } from "./imports/BQ27427YZFR";
import { TPS7A0225PDBVR } from "./imports/TPS7A0225PDBVR";
import { BMA400 } from "./imports/BMA400";
import { PCA9306DCTR } from "./imports/PCA9306DCTR";
import { BSS138LT1G } from "./imports/BSS138LT1G";
import { ABS07_32_768KHZ_7_T } from "./imports/ABS07_32_768KHZ_7_T";
import { TS_1088_AR02016 } from "./imports/TS_1088_AR02016";
import { BM04B_SRSS_TB_LF__SN_ } from "./imports/BM04B_SRSS_TB_LF__SN_";
import { TYPE_C_6P } from "./imports/TYPE_C_6P";
import { ESD5Z5_0T1G } from "./imports/ESD5Z5_0T1G";
import { BM03B_SRSS_TB_LF__SN_ } from "./imports/BM03B_SRSS_TB_LF__SN_";
import { BM05B_SRSS_TB_LF__SN_ } from "./imports/BM05B_SRSS_TB_LF__SN_";
import { nets } from "./net-map";
import { pinSpecs } from "./pin-specs";
import { passiveParts } from "./passive-parts";
// reference, value, footprint, PCB x,y, schematic x,y, rotation
const capacitors = [
["C1","100nF","0402",-12.4,4.8,-4,11,180], ["C2","10uF","0603",-16,5.6,-1,11,0],
["C3","4.7uF","0603",-15.8,-0.3,-27,9,90], ["C4","10uF","0805",-15,-4.5,-24,9,0],
["C5","4.7uF","0603",-6.2,-6.5,-21,9,90], ["C6","1uF","0603",-13.5,-9.5,-27,6,90],
["C7","1uF","0603",-4.8,-13,-26,-7,90], ["C8","2.2uF","0603",-4.8,-9.8,-23,-7,90],
["C9","1uF","0603",-0.8,-8.5,-4,-8,90], ["C10","4.7uF","0603",5.5,-6.1,-1,-8,90],
["C11","100nF","0402",4.7,1,17,7,90], ["C12","100nF","0402",7.8,6.9,20,7,90],
["C13","4.7uF","0603",-1.4,-5.5,-24,6,90], ["C14","12pF","0402",-6.4,5.25,2,5,0],
["C15","15pF","0402",-2.65,9.5,5,5,0], ["C16","4.7uF","0603",-2,0,-21,6,90],
["C17","100nF","0402",0.3,-2.4,-4,-11,90], ["C18","100pF","0402",16,-4,17,-8,90],
] as const;
const resistors = [
["R1","10k",1,3,-4,7,90], ["R2","10k",-1,3,-1,7,90],
["R3","499",-4.2,-6.8,-27,2,270], ["R4","10k",-9.3,0,-24,2,0],
["R5","10k",-11.5,-11,-26,-11,0], ["R6","100k",8.5,10,7,11,90],
["R7","100k",-13.3,-1.5,10,11,0], ["R8","100k",-16.5,3.5,-26,-14,90],
["R9","100k",9.5,1.7,17,3,90], ["R10","200k",7.2,-4.5,20,-8,90],
["R11","100k",16.5,5,23,-8,90],
] as const;
export default function Pedometer() {
return <board title="Stride / bare CC2340R5 pedometer Rev B" width={40} height={38} thickness={1}
partsEngine={{findPart:({sourceComponent})=>"supplier_part_numbers" in sourceComponent ? sourceComponent.supplier_part_numbers ?? {} : {}}}
layers={4} schMaxTraceDistance={2} schStyle={{defaultPassiveSize:"md",defaultCapacitorOrientation:"vertical"}} borderRadius={2} solderMaskColor="green" autorouter={{local:true,algorithmFn:bgaAutorouter,traceClearance:0.075,allowViaInPad:true}}
minTraceWidth={0.1} defaultTraceWidth={0.1} minViaHoleDiameter={0.15} minViaPadDiameter={0.3} minTraceToPadEdgeClearance={0.075} minPadEdgeToPadEdgeClearance={0.075}
minViaEdgeToPadEdgeClearance={0.075} minBoardEdgeClearance={0.3}
pcbStyle={{viaHoleDiameter:0.15,viaPadDiameter:0.3,silkscreenFontSize:0.7}}>
<autoroutingphase name="rf" phaseIndex={0} autorouter={{local:true,algorithmFn:rfAutorouter}} />
{["HF_P","HF_N","LF_P","LF_N"].map((name,i)=><Fragment key={name}><autoroutingphase name={`route_${name}`} phaseIndex={i+1} autorouter={{local:true,algorithmFn:clockAutorouter}} /></Fragment>)}
<autoroutingphase name="programming_clock" phaseIndex={5} autorouter={{local:true,algorithmFn:clockAutorouter}} />
<autoroutingphase name="remaining" phaseIndex={6} autorouter={{local:true,allowViaInPad:true,algorithmFn:bgaAutorouter}} />
<SchematicSheets/>
<CC2340R52E0RGER name="U1" {...schematic.U1} pinAttributes={pinSpecs.U1} pcbX={-11.25} pcbY={8.5} schWidth={4} schPinStyle={spacedPins(25)}
schPinArrangement={{leftSide:["DIO6_A1","DIO8","DIO12","DIO21_A10","DIO13","DIO24_A7","DIO11","DIO20_A11"],rightSide:["ANT","X48P","X48N","DIO3_X32P","DIO4_X32N","DIO16_SWDIO","DIO17_SWDCK","RSTN"],topSide:["VDDS1","VDDS2","VDDS3","VDDR1","VDDR2","VDDD","DCDC"],bottomSide:["GND","EP"]}} />
<BareRadioParts />
<BQ25150YFPR schPinArrangement={{leftSide:["IN","BAT_A","BAT_B","TS","IMAX","MR_N","CE_N","ADCIN"],rightSide:["PMID_A","PMID_B","VINLS","LSLDO","VDD","VIO","SDA","SCL","LP_N","INT_N","PG_N"],bottomSide:["GND"]}} name="U2" {...schematic.U2} pinAttributes={pinSpecs.U2} pcbX={-7.8} pcbY={-3} schWidth={3.2} schPinStyle={spacedPins(20)} />
<BQ27427YZFR schPinArrangement={{leftSide:["BAT","BIN","SDA","SCL"],rightSide:["SRX","VDD","GPOUT"],bottomSide:["VSS_C1","VSS_B2"]}} name="U3" {...schematic.U3} pinAttributes={pinSpecs.U3} pcbX={-7.8} pcbY={-10} schWidth={2.8} schPinStyle={spacedPins(9)} />
<TPS7A0225PDBVR schPinStyle={spacedPins(5)} schPinArrangement={{leftSide:["IN","EN"],rightSide:["OUT","NC"],bottomSide:["GND"]}} name="U4" {...schematic.U4} pinAttributes={pinSpecs.U4} pcbX={2} pcbY={-6} schWidth={3} noConnect={["NC"]} />
<BMA400 schPinArrangement={{leftSide:["SCX","SDX","SDO","CSB"],rightSide:["INT1","INT2","NC1","NC2"],topSide:["VDD","VDDIO"],bottomSide:["GND","GNDIO"]}} name="U5" {...schematic.U5} pinAttributes={pinSpecs.U5} pcbX={6} pcbY={4} schWidth={2.8} schPinStyle={spacedPins(12)} noConnect={["NC1","NC2","INT2"]} />
<PCA9306DCTR schPinArrangement={{leftSide:["VREF1","SCL1","SDA1"],rightSide:["VREF2","EN","SCL2","SDA2"],bottomSide:["GND"]}} name="U6" {...schematic.U6} pinAttributes={pinSpecs.U6} pcbX={10.5} pcbY={-4} schWidth={3.2} schPinStyle={spacedPins(8)} />
<BSS138LT1G pinAttributes={pinSpecs.Q1} name="Q1" {...schematic.Q1} pcbX={14} pcbY={2.3} />
<ABS07_32_768KHZ_7_T name="Y1" {...schematic.Y1} pcbX={-5.8} pcbY={7.2} pcbRotation={0} schWidth={3} />
<TS_1088_AR02016 name="SW1" {...schematic.SW1} pcbX={14} pcbY={10} schWidth={3} />
<BM03B_SRSS_TB_LF__SN_ name="J1" {...schematic.J1} pinAttributes={pinSpecs.J1} pcbX={-9.3} pcbY={-15.2} schWidth={3} schPinStyle={spacedPins(5)} schPinArrangement={{leftSide:[1,3],rightSide:[2,4,5]}} />
<TYPE_C_6P name="J2" {...schematic.J2} pinAttributes={pinSpecs.J2} pcbX={4} pcbY={15.2} pcbRotation={180} schWidth={3.2} schHeight={3.2} schPinArrangement={{leftSide:[1,2,3,4],rightSide:[9,12,10,11],bottomSide:[8,13]}} />
<resistor name="R12" resistance="5.1k" tolerance="1%" footprint="0402" manufacturerPartNumber="0402WGF5101TCE" supplierPartNumbers={{jlcpcb:["C25905"]}} pcbX={3.7} pcbY={9.3} pcbRotation={90} {...schematic.R12} schRotation={270} />
<resistor name="R13" resistance="5.1k" tolerance="1%" footprint="0402" manufacturerPartNumber="0402WGF5101TCE" supplierPartNumbers={{jlcpcb:["C25905"]}} pcbX={5.6} pcbY={9.3} pcbRotation={90} {...schematic.R13} schRotation={270} />
<ESD5Z5_0T1G name="D1" {...schematic.D1} pcbX={3} pcbY={6.7} pcbRotation={90} schRotation={270} />
<BM04B_SRSS_TB_LF__SN_ schPinArrangement={{leftSide:[2,3,4],rightSide:[1,5,6]}} schPinStyle={spacedPins(6)} name="J3" {...schematic.J3} pcbRotation={180} pcbX={13} pcbY={-10.5} schWidth={3} />
<BM05B_SRSS_TB_LF__SN_ name="J4" {...schematic.J4} pinAttributes={pinSpecs.J4} pcbX={2.6} pcbY={-15.4} schWidth={3} schPinStyle={spacedPins(7)} schPinArrangement={{leftSide:[1,2,3],rightSide:[5,4,6,7]}} />
{capacitors.map(([name,capacitance,footprint,pcbX,pcbY,schX,schY,rot])=><capacitor key={name} name={name}
{...passiveParts[name]} capacitance={capacitance} footprint={footprint} pcbX={pcbX} pcbY={pcbY} {...schematic[name]} pcbRotation={rot} schRotation={270} maxVoltageRating={name==="C3"||name==="C4"?25:16} />)}
{resistors.map(([name,resistance,pcbX,pcbY,schX,schY,rot])=>name==="R4" ?
<A_0402WGF1002TCE key={name} name={name} tolerance="1%" pcbX={pcbX} pcbY={pcbY} {...schematic[name]} pcbRotation={rot} schRotation={270} /> :
<resistor key={name} name={name}
{...passiveParts[name]} resistance={resistance} tolerance="1%" footprint="0402" pcbX={pcbX} pcbY={pcbY} {...schematic[name]} pcbRotation={rot} schRotation={270} />)}
{Object.keys(nets).map(name=><Fragment key={name}><net name={name} routingPhaseIndex={phaseForNet(name)} isGroundNet={name==="GND"} /></Fragment>)}
{Object.entries(nets).flatMap(([net,pins])=>pins.map(pin=>{
const [ref,num]=pin.split("."); return <Fragment key={`${net}-${pin}`}><trace routingPhaseIndex={phaseForNet(net)} thickness={net.startsWith("RF_")?0.2:undefined} maxViaCount={phaseForNet(net)<6?0:undefined} from={`.${ref} > .pin${num}`} to={`net.${net}`} schDisplayLabel={net} /></Fragment>;
}))}
<copperpour layer="top" connectsTo="net.GND" clearance={0.15} useThermalReliefs={false} outline={[{x:-19.65,y:4.8},{x:-5.5,y:4.8},{x:-5.5,y:15.8},{x:-19.65,y:15.8}]} />
<copperpour layer="inner1" connectsTo="net.GND" clearance={0.15} boardEdgeMargin={0.35} />
<copperpour layer="bottom" connectsTo="net.GND" clearance={0.15} boardEdgeMargin={0.35} />
<keepout shape="rect" pcbX={-16.75} pcbY={15.75} width={6.5} height={6.5} layers={["top","inner1","inner2","bottom"]} excludeRefs={[".ANT1",".L4",".C28"]} />
<silkscreentext text="ANT / KEEP CLEAR" pcbX={-15} pcbY={15.7} pcbRotation={90} fontSize={0.6} />
<silkscreentext text="STRIDE / REV B" pcbX={-18} pcbY={-4.5} pcbRotation={90} fontSize={0.8} />
<silkscreentext text="WAKE" pcbX={13.1} pcbY={7.4} fontSize={0.65} />
<silkscreentext text="BATTERY" pcbX={-9.3} pcbY={-16.15} fontSize={0.5} />
<silkscreentext text="SWD" pcbX={2.6} pcbY={-16.4} fontSize={0.55} />
<silkscreentext text="USB-C 5V" pcbX={4} pcbY={12.5} fontSize={0.6} />
<silkscreentext text="OLED" pcbX={13} pcbY={-13.1} fontSize={0.65} />
<hole name="H1" diameter={2.2} pcbX={17.3} pcbY={16.3} />
<hole name="H2" diameter={2.2} pcbX={-17.3} pcbY={-16.3} />
</board>;
}