molecule
AFS_Adom flight computer molecule
Public Unreviewedby ae007
Active fin stabilization flight computer for a sounding rocket, a clean-room AI redesign of the Rice Eclipse AFS board: RP2350B, ICM-45686, KX134-1211, MMC5983MA, MS5611, TMP117, INA219A, 8 servos, 2S LiPo, USB-C; 4-layer Adom molecule, designed end to end by Claude through KiCad and adom-aiflow
main
ae007
Project page: AFS_Adom rev A (Rice Eclipse AFS clean-room AI redesign): highlight reel and narrated process video with…
cbe460e
7d ago
"""Custom footprints for AFS_Adom.pretty (from datasheet land patterns)."""
import sys, uuid
sys.path.insert(0, '/tmp/claude-1001/-home-adom-project/8819fb5f-c2c6-4524-9528-99428cd6b88e/scratchpad/gen')
from kicad_gen import q, dump, fmt
U = lambda: ['uuid', q(str(uuid.uuid4()))]
def text(kind, s, x, y, layer, size=1.0, th=0.15, hide=False):
t = ['property', q(kind), q(s), ['at', fmt(x), fmt(y), '0'], ['layer', q(layer)]] + ([['hide', 'yes']] if hide else []) + [U(),
['effects', ['font', ['size', fmt(size), fmt(size)], ['thickness', fmt(th)]]]]
return t
def line(x1, y1, x2, y2, layer, w):
return ['fp_line', ['start', fmt(x1), fmt(y1)], ['end', fmt(x2), fmt(y2)], ['stroke', ['width', fmt(w)], ['type', 'solid']], ['layer', q(layer)], U()]
def rect(x1, y1, x2, y2, layer, w):
return ['fp_rect', ['start', fmt(x1), fmt(y1)], ['end', fmt(x2), fmt(y2)], ['stroke', ['width', fmt(w)], ['type', 'solid']], ['fill', 'no'], ['layer', q(layer)], U()]
def pad(n, x, y, w, h):
return ['pad', q(n), 'smd', 'roundrect', ['at', fmt(x), fmt(y)], ['size', fmt(w), fmt(h)], ['layers', q('F.Cu'), q('F.Paste'), q('F.Mask')],
['roundrect_rratio', '0.25'], U()]
# AOTA-B201610S: body 2.0 x 1.6 x 1.0 mm; land pattern 2 pads 1.00 x 1.60 mm, 1.00 mm gap (datasheet rev A p4)
name = 'L_0806_2016Metric_AOTA-B201610S'
fp = ['footprint', q(name), ['version', '20241229'], ['generator', q('AFS_Adom_mkfp')], ['generator_version', q('9.0')], ['layer', q('F.Cu')],
['descr', q('Abracon AOTA-B201610S 0806 (2016 metric) molded power inductor, 2.0x1.6x1.0 mm, land pattern 2x 1.00x1.60 mm pads 1.00 mm apart (datasheet rev A 9/13/2024). Pin 1 = terminal nearest the white polarity dot; orient per RP2350 datasheet Fig. 26/28.')],
['tags', q('inductor 0806 2016 AOTA polarity')],
text('Reference', 'REF**', 0, -1.8, 'F.SilkS', 0.8, 0.12), text('Value', name, 0, 1.9, 'F.Fab', 0.5, 0.08),
text('Datasheet', '', 0, 0, 'F.Fab', hide=True), text('Description', '', 0, 0, 'F.Fab', hide=True),
['attr', 'smd'],
rect(-1.0, -0.8, 1.0, 0.8, 'F.Fab', 0.1),
['fp_circle', ['center', '-1.3', '-1.2'], ['end', '-1.3', '-1.05'], ['stroke', ['width', '0.12'], ['type', 'solid']], ['fill', 'yes'], ['layer', q('F.SilkS')], U()],
['fp_circle', ['center', '-0.7', '-0.5'], ['end', '-0.7', '-0.4'], ['stroke', ['width', '0.1'], ['type', 'solid']], ['fill', 'no'], ['layer', q('F.Fab')], U()],
line(-0.4, -1.0, 0.4, -1.0, 'F.SilkS', 0.12), line(-0.4, 1.0, 0.4, 1.0, 'F.SilkS', 0.12),
rect(-1.75, -1.05, 1.75, 1.05, 'F.CrtYd', 0.05),
pad('1', -1.0, 0, 1.0, 1.6), pad('2', 1.0, 0, 1.0, 1.6),
['embedded_fonts', 'no']]
name2 = 'TestPoint_Pad_D0.5mm'
tp = ['footprint', q(name2), ['version', '20241229'], ['generator', q('AFS_Adom_mkfp')], ['generator_version', q('9.0')], ['layer', q('F.Cu')],
['descr', q('0.5 mm round exposed-copper test point, no paste, 1.1 mm courtyard (adom/testpoint-pad-0-5mm pattern for the Adom probing workcell)')],
['tags', q('test point probe pad')],
text('Reference', 'REF**', 0, -1.2, 'F.SilkS', 0.8, 0.12), text('Value', name2, 0, 1.2, 'F.Fab', 0.5, 0.08),
text('Datasheet', '', 0, 0, 'F.Fab', hide=True), text('Description', '', 0, 0, 'F.Fab', hide=True),
['attr', 'smd', 'exclude_from_pos_files', 'exclude_from_bom'],
['fp_circle', ['center', '0', '0'], ['end', '0.55', '0'], ['stroke', ['width', '0.05'], ['type', 'solid']], ['fill', 'no'], ['layer', q('F.CrtYd')], U()],
['pad', q('1'), 'smd', 'circle', ['at', '0', '0'], ['size', '0.5', '0.5'], ['layers', q('F.Cu'), q('F.Mask')], U()],
['embedded_fonts', 'no']]
open('/tmp/claude-1001/-home-adom-project/8819fb5f-c2c6-4524-9528-99428cd6b88e/scratchpad/AFS_Adom/lib/AFS_Adom.pretty/' + name2 + '.kicad_mod', 'w').write(dump(tp) + '\n')
out = '/tmp/claude-1001/-home-adom-project/8819fb5f-c2c6-4524-9528-99428cd6b88e/scratchpad/AFS_Adom/lib/AFS_Adom.pretty/' + name + '.kicad_mod'
open(out, 'w').write(dump(fp) + '\n')
print('wrote', out)