MustafaMulla29/stride-pedometer
This code defines schematic symbols and 3D footprints for various hardware components such as antennas, sensors, regulators, and connectors used in electronic circuit design.
- Version
- 1.0.4
- License
- unset
- Stars
- 0
index.circuit.tsx
PCB
Schematic
import { DFE201610E_100M_P2 } from './imports/DFE201610E_100M_P2'
import { CC2340R52E0RKPR } from './imports/CC2340R52E0RKPR'
import { BQ25150YFPR } from './imports/BQ25150YFPR'
import { BQ27427YZFR } from './imports/BQ27427YZFR'
import { BMA400 } from './imports/BMA400'
import { TPS7A0230PDBVR } from './imports/TPS7A0230PDBVR'
import { TPS61046YFFR } from './imports/TPS61046YFFR'
import { A_2450AT18A100E } from './imports/A_2450AT18A100E'
import { SC_32S32_768kHz20PPM7pF } from './imports/SC_32S32_768kHz20PPM7pF'
import { TS_1088_AR02016 } from './imports/TS_1088_AR02016'
import { TPD1E10B06DPYR } from './imports/TPD1E10B06DPYR'
import { Crystal48, OLED, WirePads } from './lib/footprints'
const n = (s:string)=>`net.${s}`
// Every entry is [reference,value,footprint,LCSC,x,y,rotation,net1,net2].
const capacitors:any[] = [
['C1','4.7uF','0603','C19666',10.88,3.47,90,'VIN5','GND'],
['C2','10uF','0805','C15850',8.8,5.2,90,'PMID','GND'],
['C3','1uF','0402','C52923',10,10.15,0,'BAT_SYS','GND'],
['C4','4.7uF','0603','C19666',12.3706,4.8484,90,'CHG_VDD','GND'],
['C5','1uF','0402','C52923',14.6,8.9,0,'PMID','GND'],
['C6','4.7uF','0603','C19666',14.96,11,0,'OLED_3V','GND'],
['C7','100nF','0402','C1525',12.91,12.25,0,'V3','GND'],
['C8','1uF','0402','C52923',9.09,14,0,'PACK_P','GND'],
['C9','2.2uF','0402','C12530',4.3853,13.8,0,'GAUGE_VDD','GND'],
['C10','4.7uF','0603','C19666',6.3436,6.93,90,'PMID','GND'],
['C11','4.7uF','0603','C19666',-0.9756,6.8,90,'V3','GND'],
['C12','100nF','0402','C1525',-4.45,-0.4924,0,'V3','GND'],
['C13','100nF','0402','C1525',-2.6,-5.6,90,'V3','GND'],
['C14','100nF','0402','C1525',-12.73,-0.13,0,'V3','GND'],
['C15','100nF','0402','C1525',-12,-3.3,180,'V3','GND'],
['C16','10uF','0805','C15850',-3.488,1.97,0,'V3','GND'],
['C17','10uF','0805','C15850',-11.6,5.03,0,'VDDR','GND'],
['C18','100nF','0402','C1525',-11.8,-1.8,180,'VDDR','GND'],
['C19','100nF','0402','C1525',-7.5,-8.2,180,'VDDR','GND'],
['C20','1uF','0402','C52923',-8.87,0,0,'VDDD','GND'],
['C21','100nF','0402','C1525',-5.9,.5,90,'RESETN','GND'],
['C22','10pF','0402','C1545',-9.2,6.5,0,'X32P','GND'],
['C23','10pF','0402','C1545',-5.8,6.5,0,'X32N','GND'],
['C24','1.5pF','0402','C1552',-17.7,-1.1,90,'X48P','GND',true],
['C25','1.5pF','0402','C1552',-17.7,-3.3,90,'X48N','GND',true],
['C26','1.5pF','0402','C1552',-11.8,-6,270,'RF_RAW','GND'],
['C27','1.5pF','0402','C1552',-14.9,-6,270,'RF_FILTER','GND'],
['C28','15pF','0402','C1548',-16.5,-5.49,180,'RF_FILTER','RF_50'],
['C29','1pF','0402','',-17.59,-7,0,'RF_50','GND',true],
['C30','1pF','0402','',-16.6,-10.6,0,'RF_ANT','GND',true],
['C31','100nF','0402','C1525',-1.3,-1.3047,0,'V3','GND'],
['C32','100nF','0402','C1525',1.2,3.1,0,'V3','GND'],
['C33','2.2uF','0603','C23630',6.75,-3.5,180,'PMID','GND'],
['C34','4.7uF','0603','C19666',11.78,-2.0,0,'OLED_HV','GND'],
['C35','100nF','0402','C1525',11.8,-0.25,0,'OLED_HV','GND'],
['C36','2.2uF','0603','C23630',3.45,-1.75,90,'OLED_VCOM','GND'],
['C37','100nF','0402','C1525',2.2,-5.65,0,'OLED_3V','GND'],
['C38','4.7uF','0603','C19666',3.9,-6.9,90,'OLED_3V','GND'],
]
const resistors:any[] = [
['R1','560','0402','C25126',12.4,10.4,0,'IMAX','GND'],
['R2','10k','0402','C25744',14.4,13.24,0,'TS','GND'],
['R3','10k','0402','C25744',7.8,11.5,0,'BIN','GND'],
['R4','10k','0402','C25744',4.3,10.4,0,'GAUGE_IRQ','V3'],
['R5','10k','0402','C25744',8.9,8.7,90,'CHG_CE','V3'],
['R6','100k','0402','C25741',7.7,8.1,90,'CHG_IRQ','V3'],
['R7','100k','0402','C25741',16.7,9.2,90,'PG_BUTTON','V3'],
['R8','100k','0402','C25741',-3.89,4.1,0,'RESETN','V3'],
['R9','10k','0402','C25744',-0.09,4.8,0,'I2C_SDA','V3'],
['R10','10k','0402','C25744',-2,4.8,0,'I2C_SCL','V3'],
['R11','4.7k','0402','C25900',.0,-6.4,0,'OLED_SCL','OLED_3V'],
['R12','4.7k','0402','C25900',.0,-8,0,'OLED_SDA','OLED_3V'],
['R13','100k','0402','C25741',2,-8.8,0,'OLED_RST','OLED_3V'],
['R14','560k','0402','C132339',4.7,-3,90,'OLED_IREF','GND'],
['R15','82k','0402','C4142',9.5,-5.39,90,'OLED_HV','BOOST_FB'],
['R16','10k','0402','C25744',9.61,-7.3,90,'BOOST_FB','GND'],
['R17','100k','0402','C25741',7.7,-7.5,0,'BOOST_EN','GND'],
['R18','0','0402','C17168',-18.1,-10.3,270,'RF_50','RF_ANT'],
]
const inductors:any[] = [
['L1','10uH','0805','C162582',-10.8,1.5578,90,'DCDC','VDDR'],
['L2','2.8nH','0402','C6584793',-13.4,-5.49,180,'RF_RAW','RF_FILTER'],
['L3','10uH','0806','C426327',8,-1.0736,0,'PMID','BOOST_SW']
]
const all=[...capacitors,...resistors,...inductors]
export default function Pedometer(){
return <board width={40} height={35} thickness={.8} layers={4} title="Stride BLE pedometer - Rev A engineering prototype" solderMaskColor="green"
schTraceAutoLabelEnabled schMaxTraceDistance={2}
autorouter="auto" isViaInPadAllowed
minTraceWidth={.09} minTraceToPadEdgeClearance={.09} minPadEdgeToPadEdgeClearance={.09}
minViaHoleDiameter={.15} minViaPadDiameter={.25} minViaHoleEdgeToViaHoleEdgeClearance={.2}
minBoardEdgeClearance={.3}>
{['V3','PMID','PACK_P','BAT_SYS','VIN5','OLED_3V','OLED_HV','CHG_VDD','GAUGE_VDD','VDDR','VDDD'].map(s=><net name={s} isPowerNet nominalTraceWidth={.15}/>)}
{["CHG_CE","CHG_LP","CHG_IRQ","IMAX"].map(name=><net name={name} routingPhaseIndex={0}/>)}
<autoroutingphase phaseIndex={0} name="U2_inner_signals" autorouter={{allowViaInPad:true}}/>
<autoroutingphase name="remaining_board"/>
<net name="GND" isGroundNet nominalTraceWidth={.15}/>
<CC2340R52E0RKPR name="U1" schHeight={4.2} pcbX={-7.8} pcbY={-4.2} schX={0} schY={0}
connections={{VDDS1:n('V3'),VDDS2:n('V3'),VDDS3:n('V3'),VDDS4:n('V3'),VDDR1:n('VDDR'),VDDR2:n('VDDR'),VDDD:n('VDDD'),DCDC:n('DCDC'),EP:n('GND'),RFGND:n('GND'),ANT:n('RF_RAW'),X48P:n('X48P'),X48N:n('X48N'),DIO3_X32P:n('X32P'),DIO4_X32N:n('X32N'),RSTN:n('RESETN'),DIO16_SWDIO:n('SWDIO'),DIO17_SWDCK:n('SWCLK'),DIO8:n('I2C_SDA'),DIO6_A1:n('I2C_SCL'),DIO9:n('ACC_INT1'),DIO10:n('ACC_INT2'),DIO11:n('CHG_LP'),DIO12:n('CHG_CE'),DIO13:n('CHG_IRQ'),DIO14:n('GAUGE_IRQ'),DIO15:n('PG_BUTTON'),DIO18:n('OLED_SCL'),DIO19:n('OLED_SDA'),DIO20_A11:n('OLED_RST'),DIO21_A10:n('BOOST_EN')}}
noConnect={['NC','DIO22_A9','DIO23_A8','DIO24_A7','DIO25_A6','DIO0_A5','DIO1_A4','DIO2_A3','DIO5_A2','DIO7_A0']}/>
<BQ25150YFPR name="U2" pcbX={11.7} pcbY={8.2} pcbRotation={0} schX={13} schY={2}
connections={{IN:n('VIN5'),PMID1:n('PMID'),PMID2:n('PMID'),BAT1:n('BAT_SYS'),BAT2:n('BAT_SYS'),GND:n('GND'),N_PG:n('PG_BUTTON'),TS:n('TS'),N_MR:n('MRN'),N_CE:n('CHG_CE'),IMAX:n('IMAX'),ADCIN:n('GND'),VDD:n('CHG_VDD'),N_INT:n('CHG_IRQ'),N_LP:n('CHG_LP'),LSLDO:n('OLED_3V'),VIO:n('V3'),SDA:n('I2C_SDA'),SCL:n('I2C_SCL'),VINLS:n('PMID')}}/>
<BQ27427YZFR name="U3" schHeight={1} pcbX={7} pcbY={14} schX={24} schY={2}
connections={{GPOUT:n('GAUGE_IRQ'),BIN:n('BIN'),VSS1:n('GND'),VSS2:n('GND'),SRX:n('BAT_SYS'),BAT:n('PACK_P'),VDD:n('GAUGE_VDD'),SDA:n('I2C_SDA'),SCL:n('I2C_SCL')}}/>
<BMA400 name="U4" pcbX={0} pcbY={1} schX={24} schY={-7}
connections={{SDO:n('GND'),SDX:n('I2C_SDA'),SCX:n('I2C_SCL'),VDD:n('V3'),VDDIO:n('V3'),GND:n('GND'),GNDIO:n('GND'),CSB:n('V3'),INT1:n('ACC_INT1'),INT2:n('ACC_INT2')}}/>
<TPS7A0230PDBVR name="U5" schHeight={.6} pcbX={2.4} pcbY={7.1} schX={13} schY={-7}
connections={{IN:n('PMID'),EN:n('PMID'),GND:n('GND'),OUT:n('V3')}}/>
<TPS61046YFFR name="U6" pcbX={9.3} pcbY={-3.3} schX={35} schY={2}
connections={{VIN:n('PMID'),GND:n('GND'),SW:n('BOOST_SW'),VOUT:n('OLED_HV'),FB:n('BOOST_FB'),EN:n('BOOST_EN')}}/>
<OLED name="DS1" pcbX={5} pcbY={-11.4} schX={35} schY={-7}
connections={{VBAT:n('OLED_3V'),VDD:n('OLED_3V'),VSS:n('GND'),RESN:n('OLED_RST'),SCL:n('OLED_SCL'),SDA:n('OLED_SDA'),IREF:n('OLED_IREF'),VCOMH:n('OLED_VCOM'),VCC:n('OLED_HV')}}/>
<Crystal48 name="Y1" pcbX={-14.7} pcbY={-2.8} pcbRotation={270} schX={-10} schY={2}
connections={{X1:n('X48P'),X2:n('X48N'),GND1:n('GND'),GND2:n('GND')}}/>
<SC_32S32_768kHz20PPM7pF name="Y2" pcbX={-7.5} pcbY={3.9} schX={-10} schY={-2} connections={{pin1:n('X32P'),pin2:n('X32N')}}/>
<A_2450AT18A100E name="ANT1" pcbX={-18.1} pcbY={-14.7} pcbRotation={270} schX={-10} schY={-6} noConnect={['pin2']} connections={{ANT:n('RF_ANT')}}/>
<TS_1088_AR02016 name="SW1" pcbX={15.7} pcbY={1.9} pcbRotation={90} schX={13} schY={-12} connections={{pin1:n('MRN'),pin2:n('GND')}}/>
<TPD1E10B06DPYR name="D1" pcbX={15} pcbY={-9.8} schX={24} schY={-12} connections={{pin1:n('VIN5'),pin2:n('GND')}}/>
<WirePads name="J1" count={2} pcbX={15} pcbY={-14.7} pcbRotation={180} schX={35} schY={-13} connections={{pin1:n('VIN5'),pin2:n('GND')}}/>
<WirePads name="J2" count={3} pcbX={14.5} pcbY={15} schX={24} schY={8} connections={{pin1:n('PACK_P'),pin2:n('GND'),pin3:n('TS')}}/>
{all.map((p,i)=>{
const [name,value,footprint,id,x,y,rotation,a,b,dnp]=p;
const common={name,footprint,supplierPartNumbers:id?{jlcpcb:[id]}:undefined,pcbX:x,pcbY:y,pcbRotation:rotation,schX:-12+(i%9)*6,schY:(name==='R3'?-35.46:-20-Math.floor(i/9)*4),doNotPlace:!!dnp,connections:{pin1:n(a),pin2:n(b)}};
if(name==='L3'){const {footprint,...q}=common;return <DFE201610E_100M_P2 {...q}/>}
if(name.startsWith('C'))return <capacitor schOrientation="vertical" {...common} capacitance={value}/>
if(name.startsWith('L'))return <inductor {...common} inductance={value}/>
return <resistor {...common} resistance={value}/>
})}
{/* Explicit short top-layer RF links; final 50-ohm width follows fabricator stackup. */}
{[
['U1.ANT','C26.pin1'],['C26.pin1','L2.pin1'],['L2.pin2','C27.pin1'],
['C27.pin1','C28.pin1'],['C28.pin2','C29.pin1'],['C29.pin1','R18.pin1'],
['R18.pin2','ANT1.ANT'],['R18.pin2','C30.pin1']
].map(([a,b],i)=><trace from={a} to={b} pcbStraightLine thickness={.18}/>)}
{/* Antenna corner has no ground, signals, battery or display above/below it. */}
<keepout shape="rect" pcbX={-16.75} pcbY={-14.25} width={6.5} height={6.5} layers={['inner1','inner2','bottom']}/>
<keepout shape="rect" pcbX={-16.75} pcbY={-14.25} width={6.5} height={6.5} layers={['top']} excludeRefs={['.ANT1','.R18','.C30']}/>
<copperpour name="GND_L2" layer="inner1" connectsTo="net.GND" clearance={.15} boardEdgeMargin={.3}/>
{['V3','GND','SWDIO','SWCLK','RESETN'].map((s,i)=><testpoint name={`TP${i+1}`} pcbX={-9+i*2.5} pcbY={-14.5} padDiameter={1.2} schX={-10+i*6} schY={i===4?-26.919:-52} connections={{pin1:n(s)}}/>)}
<silkscreentext text="STRIDE / A" pcbX={-10} pcbY={13.5} fontSize={1.2}/>
<silkscreentext text="CC2340 + BMA400" pcbX={-9.5} pcbY={11.5} fontSize={.8}/>
<silkscreentext text="GND 5V" pcbX={15} pcbY={-12.8} fontSize={.65}/>
<silkscreentext text="B+ B- NTC" pcbX={14.5} pcbY={16.6} fontSize={.6}/>
<silkscreentext text="3V GND DIO CLK RST" pcbX={-4} pcbY={-16} fontSize={.6}/>
<silkscreentext text="NO METAL" pcbX={-16.5} pcbY={-12.4} fontSize={.55}/>
</board>
}