gokul/lora-device

A compact LoRa/GNSS device PCB integrating an SX1262 radio, GNSS module, USB/UART interface, 1.5 µH inductor, LiPo battery connector with NTC, and supporting passives.

Version
0.1.6
License
unset
Stars
0

validation/reproductions/core-reproductions.tsx.txt

import { Circuit, getSimpleRouteJsonFromCircuitJson } from '@tscircuit/core'

async function schematicGrid(generic:boolean) {
 const circuit=new Circuit();circuit.pcbDisabled=true
 circuit.add(<board><schematicsheet name="Main"><group schGrid {...(generic?{gridCols:1,gridGap:5}:{schGridCols:1,schGridGap:5})}><resistor name="R1" resistance="1k" footprint="0603" /><resistor name="R2" resistance="1k" footprint="0603" /></group></schematicsheet></board>)
 await circuit.renderUntilSettled()
 return circuit.getCircuitJson().filter(e=>e.type==='schematic_component').map(e=>e.center)
}
console.log('grid-prefixed',await schematicGrid(false))
console.log('grid-generic',await schematicGrid(true))
const plane=new Circuit();plane.schematicDisabled=true;plane.pcbRoutingDisabled=true
plane.add(<board width={30} height={20} layers={4}><net name="GND"/><group name="Small"><resistor name="R1" resistance="1k" footprint="0603" pcbX={-3} pcbY={0} connections={{pin1:'net.GND',pin2:'net.SIGNAL'}}/><resistor name="R2" resistance="1k" footprint="0603" pcbX={3} pcbY={0} connections={{pin1:'net.SIGNAL',pin2:'net.GND'}}/></group><copperpour layer="inner1" connectsTo="net.GND" unbroken /></board>)
await plane.renderUntilSettled()
const root=plane.firstChild!
const {simpleRouteJson}=getSimpleRouteJsonFromCircuitJson({db:plane.db,subcircuit_id:root.subcircuit_id,subcircuitComponent:root})
console.log('plane-board',simpleRouteJson.bounds,'plane-obstacles',simpleRouteJson.obstacles.filter(o=>o.isCopperPour).map(o=>({width:o.width,height:o.height,center:o.center})))
const annotation=new Circuit();annotation.pcbDisabled=true
annotation.add(<board><schematicsheet name="Main"><group schGrid gridCols={2} gridGap={4}><chip name="U1" footprint="soic8" pinLabels={{pin1:'A',pin2:'B',pin3:'C',pin4:'D',pin5:'E',pin6:'F',pin7:'G',pin8:'H'}}/><chip name="U2" footprint="soic8" pinLabels={{pin1:'A',pin2:'B',pin3:'C',pin4:'D',pin5:'E',pin6:'F',pin7:'G',pin8:'H'}}/></group><schematicbox overlay={['.U2 > .pin1','.U2 > .pin8']} padding={.2} title="U2 annotation" /></schematicsheet></board>)
await annotation.renderUntilSettled()
const entries=annotation.getCircuitJson()
const u2=entries.find(e=>e.type==='source_component'&&e.name==='U2')!
const component=entries.find(e=>e.type==='schematic_component'&&e.source_component_id===u2.source_component_id)!
console.log('overlay-final-component',component.center,'annotation',entries.filter(e=>e.type==='schematic_box'||e.type==='schematic_text'&&e.text==='U2 annotation'))
await Bun.write('work/repros/overlay.circuit.json',JSON.stringify(entries,null,2))