dualbeeper.fp \
vqfn-48.fp \
miniso8.fp \
- PDFN33.fp
+ PDFN33.fp \
+ rpsma-th.fp \
+ NINA-W131.fp
.5c.fp:
nickle $*.5c -o $@
--- /dev/null
+#!/usr/bin/python3
+# Copyright 2022 by Bdale Garbee <bdale@gag.com>. GPLv3
+#
+# Program to emit PCB footprint for U-Blox NINA-W131 WIFI module
+#
+
+# dimensions in mm from:
+# NINA_W13_Datasheet_UBX_17006694-2324218.pdf
+
+BodyLength = 10.6 # (A)
+BodyWidth = 10.0 # (B)
+
+KerfTab = 0.10 # (G) depanelizing residual
+
+OuterPitch = 1.00 # (H) lateral and antenna row pin pitch
+OuterWidth = 0.70 # (I)
+OuterHeight = 1.15 # (J)
+OuterEdge2pin1 = 0.45 # (D)
+
+InnerPitch = 1.15 # (P) central area pin pitch
+InnerSize = 0.70 # (O)
+
+import sys
+
+# we're going to use the 1/100 of a mil fundamental unit form
+def mm2mils100( mm ):
+ return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 )
+
+print('# author: Bdale Garbee')
+print('# email: bdale@gag.com')
+print('# dist-license: GPL 3')
+print('# use-license: unlimited')
+
+print('Element[0x0 "NINA-W131" "" "" 0 0 11000 0 0 100 0x0]')
+print("(")
+
+#rows = ['A','B','C','D','E','F','G','H','J']
+#for row in rows:
+# rownum = rows.index(row) # rownum will run 0..8
+# for col in range (1,10): # col wil run 1..9
+# ThisPin = row+str(col)
+# if ThisPin in ValidPin:
+# print(' Pad[',\
+# mm2mils100((col-5) * PadSpacing), \
+# mm2mils100((rownum-4) * PadSpacing), \
+# mm2mils100((col-5) * PadSpacing), \
+# mm2mils100((rownum-4) * PadSpacing), \
+# mm2mils100(PadDiam), \
+# mm2mils100(Clearance), \
+# mm2mils100(Mask), \
+# '"%s"' % ThisPin, '"%s"' % ThisPin, '""]')
+
+print(' ElementLine[',\
+ mm2mils100(-BodyLength/2), \
+ mm2mils100(-BodyWidth/2), \
+ mm2mils100(-BodyLength/2), \
+ mm2mils100( BodyWidth/2), \
+ '1000 ]')
+
+print(' ElementLine[',\
+ mm2mils100(-BodyLength/2), \
+ mm2mils100( BodyWidth/2), \
+ mm2mils100( BodyLength/2), \
+ mm2mils100( BodyWidth/2), \
+ '1000 ]')
+
+print(' ElementLine[',\
+ mm2mils100( BodyLength/2), \
+ mm2mils100( BodyWidth/2), \
+ mm2mils100( BodyLength/2), \
+ mm2mils100(-BodyWidth/2), \
+ '1000 ]')
+
+print(' ElementLine[',\
+ mm2mils100( BodyLength/2), \
+ mm2mils100(-BodyWidth/2), \
+ mm2mils100(-BodyLength/2), \
+ mm2mils100(-BodyWidth/2), \
+ '1000 ]')
+
+# depanelization residuals
+print(' ElementLine[',\
+ mm2mils100(-BodyLength/2-KerfTab), \
+ mm2mils100(-BodyWidth/2), \
+ mm2mils100(-BodyLength/2-KerfTab), \
+ mm2mils100(-BodyWidth/2+OuterHeight), \
+ '1000 ]')
+
+print(' ElementLine[',\
+ mm2mils100(-BodyLength/2-KerfTab), \
+ mm2mils100(BodyWidth/2), \
+ mm2mils100(-BodyLength/2-KerfTab), \
+ mm2mils100(BodyWidth/2-OuterHeight), \
+ '1000 ]')
+
+#print(' ElementArc[',\
+# mm2mils100(-5 * PadSpacing), \
+# mm2mils100(-5 * PadSpacing), \
+# '500 500 0 360 1000 ]')
+
+print(")")
--- /dev/null
+#!/usr/bin/python3
+# Copyright 2022 by Bdale Garbee <bdale@gag.com>. GPLv3
+#
+# Program to emit PCB footprint for
+# Molex 0732519761, RP-SMA Connector Jack, Male Pin Through Hole Solder
+#
+# dimensions in mm from molex/732519760.pdf
+
+PinDiam = 1.27
+PinSpacing = 2.54
+
+MntDiam = 1.59
+MntSpacing = 5.08
+
+SilkDiam = 9.00
+
+LineWidth = 600
+ThicknessDelta = 1.0
+Clearance = .32
+MaskDelta = 0.32
+
+import sys
+
+# we're going to use the 1/100 of a mil fundamental unit form
+def mm2mils100( mm ):
+ return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 )
+
+print('# author: Bdale Garbee')
+print('# email: bdale@gag.com')
+print('# dist-license: GPL 2+')
+print('# use-license: unlimited')
+
+print('Element[0x0 "RP-SMA" "" "" 0 0 0 0 0 100 0x0]')
+print("(")
+
+print(' Pin[', \
+ 0, \
+ 0, \
+ mm2mils100(PinDiam+ThicknessDelta), \
+ mm2mils100(Clearance), \
+ mm2mils100(PinDiam+ThicknessDelta+MaskDelta), \
+ mm2mils100(PinDiam), \
+ '"1"', \
+ '"1"', \
+ "0x0001", ']')
+
+print(' Pin[', \
+ mm2mils100(MntSpacing/2), \
+ mm2mils100(MntSpacing/2), \
+ mm2mils100(MntDiam+ThicknessDelta), \
+ mm2mils100(Clearance), \
+ mm2mils100(MntDiam+ThicknessDelta+MaskDelta), \
+ mm2mils100(MntDiam), \
+ '"GND"', \
+ '"2"', \
+ "0x0001", ']')
+
+print(' Pin[', \
+ mm2mils100(-MntSpacing/2), \
+ mm2mils100(MntSpacing/2), \
+ mm2mils100(MntDiam+ThicknessDelta), \
+ mm2mils100(Clearance), \
+ mm2mils100(MntDiam+ThicknessDelta+MaskDelta), \
+ mm2mils100(MntDiam), \
+ '"GND"', \
+ '"2"', \
+ "0x0001", ']')
+
+print(' Pin[', \
+ mm2mils100(MntSpacing/2), \
+ mm2mils100(-MntSpacing/2), \
+ mm2mils100(MntDiam+ThicknessDelta), \
+ mm2mils100(Clearance), \
+ mm2mils100(MntDiam+ThicknessDelta+MaskDelta), \
+ mm2mils100(MntDiam), \
+ '"GND"', \
+ '"2"', \
+ "0x0001", ']')
+
+print(' Pin[', \
+ mm2mils100(-MntSpacing/2), \
+ mm2mils100(-MntSpacing/2), \
+ mm2mils100(MntDiam+ThicknessDelta), \
+ mm2mils100(Clearance), \
+ mm2mils100(MntDiam+ThicknessDelta+MaskDelta), \
+ mm2mils100(MntDiam), \
+ '"GND"', \
+ '"2"', \
+ "0x0001", ']')
+
+print(' ElementArc[',\
+ 0, \
+ 0, \
+ mm2mils100(SilkDiam/2), \
+ mm2mils100(SilkDiam/2), \
+ 0, \
+ 360, \
+ LineWidth, \
+ ']')
+
+print(")")
v 20220529 2
-P 2400 550 2100 550 1 0 0
+P 2400 500 2100 500 1 0 0
{
-T 2550 550 5 10 0 0 0 0 1
+T 2550 500 5 10 0 0 0 0 1
pintype=io
-T 2045 545 5 10 1 1 0 6 1
+T 2045 495 5 10 1 1 0 6 1
pinlabel=SIO2
-T 2195 595 5 10 1 1 0 0 1
+T 2195 545 5 10 1 1 0 0 1
pinnumber=3
}
-P 2400 950 2100 950 1 0 0
+P 2400 900 2100 900 1 0 0
{
-T 2550 950 5 10 0 0 0 0 1
+T 2550 900 5 10 0 0 0 0 1
pintype=io
-T 2045 945 5 10 1 1 0 6 1
+T 2045 895 5 10 1 1 0 6 1
pinlabel=SO/SIO1
-T 2195 995 5 10 1 1 0 0 1
+T 2195 945 5 10 1 1 0 0 1
pinnumber=2
}
-P 0 950 300 950 1 0 0
+P 0 900 300 900 1 0 0
{
-T -200 950 5 10 0 0 0 6 1
+T -200 900 5 10 0 0 0 6 1
pintype=in
-T 355 945 5 10 1 1 0 0 1
+T 355 895 5 10 1 1 0 0 1
pinlabel=CS#
-T 205 995 5 10 1 1 0 6 1
+T 205 945 5 10 1 1 0 6 1
pinnumber=1
}
-P 2400 150 2100 150 1 0 0
+P 2400 100 2100 100 1 0 0
{
-T 2550 150 5 10 0 0 0 0 1
+T 2550 100 5 10 0 0 0 0 1
pintype=io
-T 2045 145 5 10 1 1 0 6 1
+T 2045 95 5 10 1 1 0 6 1
pinlabel=SIO3
-T 2195 195 5 10 1 1 0 0 1
+T 2195 145 5 10 1 1 0 0 1
pinnumber=7
}
-P 2400 1350 2100 1350 1 0 0
+P 2400 1300 2100 1300 1 0 0
{
-T 2550 1350 5 10 0 0 0 0 1
+T 2550 1300 5 10 0 0 0 0 1
pintype=io
-T 2045 1345 5 10 1 1 0 6 1
+T 2045 1295 5 10 1 1 0 6 1
pinlabel=SI/SIO0
-T 2195 1395 5 10 1 1 0 0 1
+T 2195 1345 5 10 1 1 0 0 1
pinnumber=5
}
-P 0 550 300 550 1 0 0
+P 0 500 300 500 1 0 0
{
-T -200 550 5 10 0 0 0 6 1
+T -200 500 5 10 0 0 0 6 1
pintype=in
-T 355 545 5 10 1 1 0 0 1
+T 355 495 5 10 1 1 0 0 1
pinlabel=SCLK
-T 205 595 5 10 1 1 0 6 1
+T 205 545 5 10 1 1 0 6 1
pinnumber=6
}
-P 0 150 300 150 1 0 0
+P 0 100 300 100 1 0 0
{
-T -100 150 5 10 0 0 0 6 1
+T -100 100 5 10 0 0 0 6 1
pintype=pwr
-T 355 150 5 10 1 1 0 0 1
+T 355 100 5 10 1 1 0 0 1
pinlabel=GND
-T 205 200 5 10 1 1 0 6 1
+T 205 150 5 10 1 1 0 6 1
pinnumber=4
}
-P 0 1350 300 1350 1 0 0
+P 0 1300 300 1300 1 0 0
{
-T 355 1350 5 10 1 1 0 0 1
+T 355 1300 5 10 1 1 0 0 1
pinlabel=VCC
-T 205 1400 5 10 1 1 0 6 1
+T 205 1350 5 10 1 1 0 6 1
pinnumber=8
-T -200 1300 5 10 0 0 180 0 1
+T -200 1250 5 10 0 0 180 0 1
pintype=pwr
}
-B 300 0 1800 1650 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
-T 305 2000 8 10 0 0 0 0 1
+B 300 -50 1800 1675 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
+T 305 2050 8 10 0 0 0 0 1
device=IC
-T 295 2220 8 10 0 0 0 0 1
+T 295 2270 8 10 0 0 0 0 1
footprint=SOIJ8
-T 295 1745 8 10 1 1 0 0 1
+T 295 1695 8 10 1 1 0 0 1
refdes=U?
T 19845 14195 3 10 1 1 0 6 1
pinlabel=PC13/RTC_TAMP1/RTC_TS/RTC_OUT/WKUP2
}
-P 6400 20100 6400 19700 1 0 0
+P 6800 20100 6800 19700 1 0 0
{
-T 6350 19795 5 10 1 1 90 0 1
+T 6750 19795 5 10 1 1 90 0 1
pinnumber=6
-T 6400 19645 3 10 1 1 90 6 1
+T 6800 19645 3 10 1 1 90 6 1
pinlabel=VBAT
-T 6400 21350 5 10 0 0 270 2 1
+T 6800 21350 5 10 0 0 270 2 1
pintype=pwr
}
P 20300 4200 19900 4200 1 0 0
T 19845 13795 3 10 1 1 0 6 1
pinlabel=PC14/OSC32_IN
}
-P 6800 20100 6800 19700 1 0 0
+P 3200 20100 3200 19700 1 0 0
{
-T 6750 19795 5 10 1 1 90 0 1
+T 3150 19795 5 10 1 1 90 0 1
pinnumber=22
-T 6800 19645 3 10 1 1 90 6 1
+T 3200 19645 3 10 1 1 90 6 1
pinlabel=VDDA
-T 6800 21350 5 10 0 0 270 2 1
+T 3200 21350 5 10 0 0 270 2 1
pintype=pwr
}
P 0 13800 400 13800 1 0 0