From 2c01a5220d32f77314b79ad5394da2c13b4cceeb Mon Sep 17 00:00:00 2001
From: Neil Gershenfeld <gersh@cba.mit.edu>
Date: Sat, 20 Apr 2019 18:52:16 -0400
Subject: [PATCH] wip

---
 python/pcb.py | 229 +++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 228 insertions(+), 1 deletion(-)

diff --git a/python/pcb.py b/python/pcb.py
index 2475dd9..d277226 100755
--- a/python/pcb.py
+++ b/python/pcb.py
@@ -2066,10 +2066,237 @@ class HCSR501(part):
       self.pad.append(point(0,-.1,0))
       self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'GND'))
 
+pad_RN4871_left = cube(-0.5/25.4,1/25.4,-0.7/2/25.4,0.7/2/25.4,0,0)
+pad_RN4871_right = cube(-1/25.4,0.5/25.4,-0.7/2/25.4,0.7/2/25.4,0,0)
+pad_RN4871_bot = cube(-0.7/2/25.4,0.7/2/25.4,-0.5/25.4,1/25.4,0,0)
+
+class RN4871(part):
+   #
+   # RN4871
+   #
+   def __init__(self,value=''):
+      self.value = value
+      self.pad = [point(0,0,0)]
+      self.labels = []
+      width = 9/25.4
+      height = 7.5/25.4
+      bottom = 1.9/25.4
+      left = 1.5/25.4
+      pitch = 1.2/25.4
+      size = .004
+      #
+      # pin 1:
+      #
+      self.shape = translate(pad_RN4871_left,-width/2.0,-height+bottom+4*pitch,0)
+      self.pad.append(point(-width/2.0,-height+bottom+4*pitch,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'BT_RF',line=size))
+      #
+      # pin 2: 
+      #
+      self.shape = add(self.shape,translate(pad_RN4871_left,-width/2.0,-height+bottom+3*pitch,0))
+      self.pad.append(point(-width/2.0,-height+bottom+3*pitch,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'GND',line=size))
+      #
+      # pin 3: 
+      #
+      self.shape = add(self.shape,translate(pad_RN4871_left,-width/2.0,-height+bottom+2*pitch,0))
+      self.pad.append(point(-width/2.0,-height+bottom+2*pitch,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'P1_2',line=size))
+      #
+      # pin 4: 
+      #
+      self.shape = add(self.shape,translate(pad_RN4871_left,-width/2.0,-height+bottom+1*pitch,0))
+      self.pad.append(point(-width/2.0,-height+bottom+1*pitch,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'P1_3',line=size))
+      #
+      # pin 5: 
+      #
+      self.shape = add(self.shape,translate(pad_RN4871_left,-width/2.0,-height+bottom+0*pitch,0))
+      self.pad.append(point(-width/2.0,-height+bottom+0*pitch,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'P1_7',line=size))
+      #
+      # pin 6: 
+      #
+      self.shape = add(self.shape,translate(pad_RN4871_bot,-width/2.0+left+0*pitch,-height,0))
+      self.pad.append(point(-width/2.0+left+0*pitch,-height,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'P1_6',line=size,angle=90))
+      #
+      # pin 7: 
+      #
+      self.shape = add(self.shape,translate(pad_RN4871_bot,-width/2.0+left+1*pitch,-height,0))
+      self.pad.append(point(-width/2.0+left+1*pitch,-height,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'RX',line=size,angle=90))
+      #
+      # pin 8: 
+      #
+      self.shape = add(self.shape,translate(pad_RN4871_bot,-width/2.0+left+2*pitch,-height,0))
+      self.pad.append(point(-width/2.0+left+2*pitch,-height,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'TX',line=size,angle=90))
+      #
+      # pin 9: 
+      #
+      self.shape = add(self.shape,translate(pad_RN4871_bot,-width/2.0+left+3*pitch,-height,0))
+      self.pad.append(point(-width/2.0+left+3*pitch,-height,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'P3_6',line=size,angle=90))
+      #
+      # pin 10: 
+      #
+      self.shape = add(self.shape,translate(pad_RN4871_bot,-width/2.0+left+4*pitch,-height,0))
+      self.pad.append(point(-width/2.0+left+4*pitch,-height,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'RST_N',line=size,angle=90))
+      #
+      # pin 11: 
+      #
+      self.shape = add(self.shape,translate(pad_RN4871_bot,-width/2.0+left+5*pitch,-height,0))
+      self.pad.append(point(-width/2.0+left+5*pitch,-height,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'P0_0',line=size,angle=90))
+      #
+      # pin 12:
+      #
+      self.shape = add(self.shape,translate(pad_RN4871_right,width/2.0,-height+bottom+0*pitch,0))
+      self.pad.append(point(width/2.0,-height+bottom+0*pitch,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'P0_2',line=size))
+      #
+      # pin 13:
+      #
+      self.shape = add(self.shape,translate(pad_RN4871_right,width/2.0,-height+bottom+1*pitch,0))
+      self.pad.append(point(width/2.0,-height+bottom+1*pitch,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'GND',line=size))
+      #
+      # pin 14:
+      #
+      self.shape = add(self.shape,translate(pad_RN4871_right,width/2.0,-height+bottom+2*pitch,0))
+      self.pad.append(point(width/2.0,-height+bottom+2*pitch,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'VBAT',line=size))
+      #
+      # pin 15:
+      #
+      self.shape = add(self.shape,translate(pad_RN4871_right,width/2.0,-height+bottom+3*pitch,0))
+      self.pad.append(point(width/2.0,-height+bottom+3*pitch,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'P2_7',line=size))
+      #
+      # pin 16:
+      #
+      self.shape = add(self.shape,translate(pad_RN4871_right,width/2.0,-height+bottom+4*pitch,0))
+      self.pad.append(point(width/2.0,-height+bottom+4*pitch,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'P2_0',line=size))
+
+pad_HM11 = cube(-.047,.047,-.0177,.0177,0,0)
+
+class HM11(part):
+   #
+   # HM-11
+   #
+   def __init__(self,value=''):
+      self.value = value
+      self.pad = [point(0,0,0)]
+      self.labels = []
+      height = 18.5/25.4 
+      width = 13.5/25.4
+      pitch = 1.5/25.4
+      bottom = 1/25.4
+      offset = 0
+      size = .004
+      #
+      # pin 1:
+      #
+      self.shape = translate(pad_HM11,-width/2.0+offset,-height/2.0+bottom+7*pitch,0)
+      self.pad.append(point(-width/2.0+offset,-height/2.0+bottom+7*pitch,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'RTS',line=size))
+      #
+      # pin 2: 
+      #
+      self.shape = add(self.shape,translate(pad_HM11,-width/2.0+offset,-height/2.0+bottom+6*pitch,0))
+      self.pad.append(point(-width/2.0+offset,-height/2.0+bottom+6*pitch,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'TX',line=size))
+      #
+      # pin 3: 
+      #
+      self.shape = add(self.shape,translate(pad_HM11,-width/2.0+offset,-height/2.0+bottom+5*pitch,0))
+      self.pad.append(point(-width/2.0+offset,-height/2.0+bottom+5*pitch,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'CTS',line=size))
+      #
+      # pin 4: 
+      #
+      self.shape = add(self.shape,translate(pad_HM11,-width/2.0+offset,-height/2.0+bottom+4*pitch,0))
+      self.pad.append(point(-width/2.0+offset,-height/2.0+bottom+4*pitch,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'RX',line=size))
+      #
+      # pin 5: 
+      #
+      self.shape = add(self.shape,translate(pad_HM11,-width/2.0+offset,-height/2.0+bottom+3*pitch,0))
+      self.pad.append(point(-width/2.0+offset,-height/2.0+bottom+3*pitch,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'NC',line=size))
+      #
+      # pin 6: 
+      #
+      self.shape = add(self.shape,translate(pad_HM11,-width/2.0+offset,-height/2.0+bottom+2*pitch,0))
+      self.pad.append(point(-width/2.0+offset,-height/2.0+bottom+2*pitch,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'NC',line=size))
+      #
+      # pin 7: 
+      #
+      self.shape = add(self.shape,translate(pad_HM11,-width/2.0+offset,-height/2.0+bottom+1*pitch,0))
+      self.pad.append(point(-width/2.0+offset,-height/2.0+bottom+1*pitch,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'NC',line=size))
+      #
+      # pin 8:
+      #
+      self.shape = add(self.shape,translate(pad_HM11,-width/2.0+offset,-height/2.0+bottom+0*pitch,0))
+      self.pad.append(point(-width/2.0+offset,-height/2.0+bottom+0*pitch,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'NC',line=size))
+      #
+      # pin 9:
+      #
+      self.shape = add(self.shape,translate(pad_HM11,width/2.0-offset,-height/2.0+bottom+0*pitch,0))
+      self.pad.append(point(width/2.0-offset,-height/2.0+bottom+0*pitch,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'VCC',line=size))
+      #
+      # pin 10:
+      #
+      self.shape = add(self.shape,translate(pad_HM11,width/2.0-offset,-height/2.0+bottom+1*pitch,0))
+      self.pad.append(point(width/2.0-offset,-height/2.0+bottom+1*pitch,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'NC',line=size))
+      #
+      # pin 11:
+      #
+      self.shape = add(self.shape,translate(pad_HM11,width/2.0-offset,-height/2.0+bottom+2*pitch,0))
+      self.pad.append(point(width/2.0-offset,-height/2.0+bottom+2*pitch,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'RST',line=size))
+      #
+      # pin 12:
+      #
+      self.shape = add(self.shape,translate(pad_HM11,width/2.0-offset,-height/2.0+bottom+3*pitch,0))
+      self.pad.append(point(width/2.0-offset,-height/2.0+bottom+3*pitch,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'GND',line=size))
+      #
+      # pin 13:
+      #
+      self.shape = add(self.shape,translate(pad_HM11,width/2.0-offset,-height/2.0+bottom+4*pitch,0))
+      self.pad.append(point(width/2.0-offset,-height/2.0+bottom+4*pitch,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IO3',line=size))
+      #
+      # pin 14:
+      #
+      self.shape = add(self.shape,translate(pad_HM11,width/2.0-offset,-height/2.0+bottom+5*pitch,0))
+      self.pad.append(point(width/2.0-offset,-height/2.0+bottom+5*pitch,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IO2',line=size))
+      #
+      # pin 15:
+      #
+      self.shape = add(self.shape,translate(pad_HM11,width/2.0-offset,-height/2.0+bottom+6*pitch,0))
+      self.pad.append(point(width/2.0-offset,-height/2.0+bottom+6*pitch,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IO1',line=size))
+      #
+      # pin 16:
+      #
+      self.shape = add(self.shape,translate(pad_HM11,width/2.0-offset,-height/2.0+bottom+7*pitch,0))
+      self.pad.append(point(width/2.0-offset,-height/2.0+bottom+7*pitch,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IO0',line=size))
+
 pad_ESP8266 = cube(-.0493,.0493,-.0197,.0197,0,0)
 pad_ESP8266_bot = cube(-.0197,.0197,-.0415,.0415,0,0)
 
-
 class ESP8266_12E(part):
    #
    # ESP8266 12E
-- 
GitLab