From b5b26bb632e6d4cc698a83da4fe8a99bdf58f437 Mon Sep 17 00:00:00 2001 From: Bdale Garbee Date: Thu, 1 Dec 2016 01:18:47 -0700 Subject: [PATCH] first cut at footprint for the BTle module --- packages/BM70BLES1FC2.py | 171 +++++++++++++++++++++++++++++++++++++++ packages/Makefile | 3 +- 2 files changed, 173 insertions(+), 1 deletion(-) create mode 100755 packages/BM70BLES1FC2.py diff --git a/packages/BM70BLES1FC2.py b/packages/BM70BLES1FC2.py new file mode 100755 index 0000000..1676de3 --- /dev/null +++ b/packages/BM70BLES1FC2.py @@ -0,0 +1,171 @@ +#!/usr/bin/python +# Copyright 2016 by Bdale Garbee . GPLv3+ +# +# Program to emit PCB footprint for Microchip BM70BLES1FC2 Bluetooth LE module +# + +# dimensions in mm from BM70/71 Data Sheet + +BodyWidth = 12.00 +BodyHeight = 22.00 + +GndEdgeLine = 18.00 + +PinWidth = 0.7 +PinHeight = 1.5 +PinSpacing = 1.1 +PinOffset = 0.5 + +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 "BM70BLES1FC2" "" "" 0 0 -10161 -12011 0 100 0x0]' +print "(" +print ' Pad[',\ + mm2mils100(BodyHeight - 21.2), \ + mm2mils100(BodyWidth + PinOffset - PinWidth/2), \ + mm2mils100(BodyHeight - 21.2), \ + mm2mils100(BodyWidth + PinOffset - PinHeight + PinWidth/2), \ + mm2mils100(PinWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(PinWidth)+600, \ + '"pin1" "1" 0x0100]' + +print ' Pad[',\ + mm2mils100(BodyHeight - 21.2), \ + mm2mils100(-PinOffset + PinWidth/2), \ + mm2mils100(BodyHeight - 21.2), \ + mm2mils100(-PinOffset + PinHeight - PinWidth/2), \ + mm2mils100(PinWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(PinWidth)+600, \ + '"pin33" "33" 0x0100]' + +print ' Pad[',\ + mm2mils100(BodyHeight - 20.1), \ + mm2mils100(BodyWidth + PinOffset - PinWidth/2), \ + mm2mils100(BodyHeight - 20.1), \ + mm2mils100(BodyWidth + PinOffset - PinHeight + PinWidth/2), \ + mm2mils100(PinWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(PinWidth)+600, \ + '"pin2" "2" 0x0100]' + +print ' Pad[',\ + mm2mils100(BodyHeight - 20.1), \ + mm2mils100(-PinOffset + PinWidth/2), \ + mm2mils100(BodyHeight - 20.1), \ + mm2mils100(-PinOffset + PinHeight - PinWidth/2), \ + mm2mils100(PinWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(PinWidth)+600, \ + '"pin32" "32" 0x0100]' + +print ' Pad[',\ + mm2mils100(BodyHeight - 13.9), \ + mm2mils100(BodyWidth + PinOffset - PinWidth/2), \ + mm2mils100(BodyHeight - 13.9), \ + mm2mils100(BodyWidth + PinOffset - PinHeight + PinWidth/2), \ + mm2mils100(PinWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(PinWidth)+600, \ + '"pin3" "3" 0x0100]' + +print ' Pad[',\ + mm2mils100(BodyHeight - 12.8), \ + mm2mils100(BodyWidth + PinOffset - PinWidth/2), \ + mm2mils100(BodyHeight - 12.8), \ + mm2mils100(BodyWidth + PinOffset - PinHeight + PinWidth/2), \ + mm2mils100(PinWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(PinWidth)+600, \ + '"pin4" "4" 0x0100]' + +for pin in range (5,15): + print ' Pad[',\ + mm2mils100(BodyHeight - 11.7 + ((pin - 5) * PinSpacing)), \ + mm2mils100(BodyWidth + PinOffset - PinWidth/2), \ + mm2mils100(BodyHeight - 11.7 + ((pin - 5) * PinSpacing)), \ + mm2mils100(BodyWidth + PinOffset - PinHeight + PinWidth/2), \ + mm2mils100(PinWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(PinWidth)+600, \ + '"pin%i"' % pin, '"%i"' % pin, '0x0100]' + + print ' Pad[',\ + mm2mils100(BodyHeight - 11.7 + ((pin - 5) * PinSpacing)), \ + mm2mils100(- PinOffset + PinWidth/2), \ + mm2mils100(BodyHeight - 11.7 + ((pin - 5) * PinSpacing)), \ + mm2mils100(- PinOffset + PinHeight - PinWidth/2), \ + mm2mils100(PinWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(PinWidth)+600, \ + '"pin%i"' % (36 - pin), '"%i"' % (36 - pin), '0x0100]' + +for pin in range (15,22): + print ' Pad[',\ + mm2mils100(BodyHeight + PinOffset - PinWidth/2), \ + mm2mils100(BodyWidth - 2.7 + (-(pin - 15) * PinSpacing)), \ + mm2mils100(BodyHeight - PinHeight + PinOffset + PinWidth/2), \ + mm2mils100(BodyWidth - 2.7 + (-(pin - 15) * PinSpacing)), \ + mm2mils100(PinWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(PinWidth)+600, \ + '"pin%i"' % pin, '"%i"' % pin, '0x0100]' + + +# body outline + +print ' ElementLine[',\ + 0, \ + 0, \ + 0, \ + mm2mils100(BodyWidth), \ + '1000 ]' + +print ' ElementLine[',\ + 0, \ + mm2mils100(BodyWidth), \ + mm2mils100(BodyHeight), \ + mm2mils100(BodyWidth), \ + '1000 ]' + +print ' ElementLine[',\ + mm2mils100(BodyHeight), \ + mm2mils100(BodyWidth), \ + mm2mils100(BodyHeight), \ + 0, \ + '1000 ]' + +print ' ElementLine[',\ + mm2mils100(BodyHeight), \ + 0, \ + 0, \ + 0, \ + '1000 ]' + +# hash marks where gnd plane should end + +print ' ElementLine[',\ + mm2mils100(BodyHeight-GndEdgeLine), \ + mm2mils100(BodyWidth-1), \ + mm2mils100(BodyHeight-GndEdgeLine), \ + mm2mils100(BodyWidth-3), \ + '1000 ]' + +print ' ElementLine[',\ + mm2mils100(BodyHeight-GndEdgeLine), \ + mm2mils100(1), \ + mm2mils100(BodyHeight-GndEdgeLine), \ + mm2mils100(3), \ + '1000 ]' + +print ")" diff --git a/packages/Makefile b/packages/Makefile index 395f394..df928e5 100644 --- a/packages/Makefile +++ b/packages/Makefile @@ -106,7 +106,8 @@ FOOTPRINTS= \ CAP_FC8.fp \ 3568.fp \ ABM12.fp \ - MD-60S.fp + MD-60S.fp \ + BM70BLES1FC2.fp .5c.fp: nickle $*.5c -o $@ -- 2.30.2