Skip to content
Snippets Groups Projects
pcb.py 300 KiB
Newer Older
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
   #
   # nRF24L01 module header
   #
   def __init__(self,value=''):
      self.value = value
      self.pad = [point(0,0,0)]
      self.labels = []
      #
      # pin 1:
      #
      self.shape = translate(pad_header,.107,-.15,0)
      self.shape = add(self.shape,cylinder(.157,-.15,0,0,.025))
      self.pad.append(point(.107,-.15,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'GND'))
      #
      # pin 2:
      #
      self.shape = add(self.shape,translate(pad_header,-.107,-.15,0))
      self.pad.append(point(-.107,-.15,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'VCC'))
      #
      # pin 3:
      #
      self.shape = add(self.shape,translate(pad_header,.107,-.05,0))
      self.pad.append(point(.107,-.05,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'CE'))
      #
      # pin 4:
      #
      self.shape = add(self.shape,translate(pad_header,-.107,-.05,0))
      self.pad.append(point(-.107,-.05,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'CS'))
      #
      # pin 5:
      #
      self.shape = add(self.shape,translate(pad_header,.107,.05,0))
      self.pad.append(point(.107,.05,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'SCK'))
      #
      # pin 6:
      #
      self.shape = add(self.shape,translate(pad_header,-.107,.05,0))
      self.pad.append(point(-.107,.05,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'MOSI'))
      #
      # pin 7:
      #
      self.shape = add(self.shape,translate(pad_header,.107,.15,0))
      self.pad.append(point(.107,.15,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'MISO'))
      #
      # pin 8:
      #
      self.shape = add(self.shape,translate(pad_header,-.107,.15,0))
      self.pad.append(point(-.107,.15,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IRQ'))

Neil Gershenfeld (test)'s avatar
wip
Neil Gershenfeld (test) committed
class header_servo(part):
   #
   # servo motor header
   # FCI 95278-101A06LF Bergstik 2x3x0.1"
   #
   def __init__(self,value=''):
      self.value = value
      self.pad = [point(0,0,0)]
      self.labels = []
      #
      # pin 1: ground
      #
      self.shape = translate(pad_header,.107,-.1,0)
      self.shape = add(self.shape,cylinder(.157,-.1,0,0,.025))
      self.pad.append(point(.107,-.1,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'G/blk'))
      #
      # pin 2: ground
      #
      self.shape = add(self.shape,translate(pad_header,-.107,-.1,0))
      self.pad.append(point(-.107,-.1,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'G/blk'))
      #
      # pin 3: power
      #
      self.shape = add(self.shape,translate(pad_header,.107,0,0))
      self.pad.append(point(.107,0,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'V/red'))
      #
      # pin 4: power
      #
      self.shape = add(self.shape,translate(pad_header,-.107,0,0))
      self.pad.append(point(-.107,0,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'V/red'))
      #
      # pin 5: signal 0
      #
      self.shape = add(self.shape,translate(pad_header,.107,.1,0))
      self.pad.append(point(.107,.1,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'S0/wht'))
      #
      # pin 6: signal 1
      #
      self.shape = add(self.shape,translate(pad_header,-.107,.1,0))
      self.pad.append(point(-.107,.1,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'S1/wht'))

class header_unipolar_stepper(part):
   #
   # unipolar stepper header
   # FCI 95278-101A06LF Bergstik 2x3x0.1"
   #
   def __init__(self,value=''):
      self.value = value
      self.pad = [point(0,0,0)]
      self.labels = []
      #
      # pin 1
      #
      self.shape = translate(pad_header,.107,-.1,0)
      self.shape = add(self.shape,cylinder(.157,-.1,0,0,.025))
      self.pad.append(point(.107,-.1,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'red'))
      #
      # pin 2
      #
      self.shape = add(self.shape,translate(pad_header,-.107,-.1,0))
      self.pad.append(point(-.107,-.1,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'green'))
      #
      # pin 3
      #
      self.shape = add(self.shape,translate(pad_header,.107,0,0))
      self.pad.append(point(.107,0,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'black'))
      #
      # pin 4
      #
      self.shape = add(self.shape,translate(pad_header,-.107,0,0))
      self.pad.append(point(-.107,0,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'brown'))
      #
      # pin 5
      #
      self.shape = add(self.shape,translate(pad_header,.107,.1,0))
      self.pad.append(point(.107,.1,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'orange'))
      #
      # pin 6
      #
      self.shape = add(self.shape,translate(pad_header,-.107,.1,0))
      self.pad.append(point(-.107,.1,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'yellow'))

class header_LCD(part):
   #
   # LCD interface header
   # FCI 95278-101A10LF Bergstik 2x3x0.1"
   #
   def __init__(self,value=''):
      self.value = value
      self.pad = [point(0,0,0)]
      self.labels = []
      #
      # pin 1:
      #
      self.shape = translate(pad_header,.107,-.2,0)
      self.shape = add(self.shape,cylinder(.157,-.2,0,0,.025))
      self.pad.append(point(.107,-.2,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'DB7\n14'))
      #
      # pin 2:
      #
      self.shape = add(self.shape,translate(pad_header,-.107,-.2,0))
      self.pad.append(point(-.107,-.2,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'DB6\n13'))
      #
      # pin 3:
      #
      self.shape = add(self.shape,translate(pad_header,.107,-.1,0))
      self.pad.append(point(.107,-.1,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'DB5\n12'))
      #
      # pin 4:
      #
      self.shape = add(self.shape,translate(pad_header,-.107,-.1,0))
      self.pad.append(point(-.107,-.1,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'DB4\n11'))
      #
      # pin 5:
      #
      self.shape = add(self.shape,translate(pad_header,.107,0,0))
      self.pad.append(point(.107,0,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'E\n6'))
      #
      # pin 6:
      #
      self.shape = add(self.shape,translate(pad_header,-.107,0,0))
      self.pad.append(point(-.107,0,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'R/W\n5'))
      #
      # pin 7:
      #
      self.shape = add(self.shape,translate(pad_header,.107,.1,0))
      self.pad.append(point(.107,.1,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'RS\n4'))
      #
      # pin 8:
      #
      self.shape = add(self.shape,translate(pad_header,-.107,.1,0))
      self.pad.append(point(-.107,.1,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'Vee\n3'))
      #
      # pin 9:
      #
      self.shape = add(self.shape,translate(pad_header,.107,.2,0))
      self.pad.append(point(.107,.2,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'Vcc\n2'))
      #
      # pin 10:
      #
      self.shape = add(self.shape,translate(pad_header,-.107,.2,0))
      self.pad.append(point(-.107,.2,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'GND\n1'))

Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
class header_serial_reverse(part):
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
   #
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
   # serial cable header, reverse for female connector
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
   #    GCT BG300-06-A-L-A	
   #
   def __init__(self,value=''):
      self.value = value
      self.pad = [point(0,0,0)]
      self.labels = []
      #
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
      # pin 1: GND
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
      #
      self.shape = translate(pad_header,0,-.25,0)
      self.shape = add(self.shape,cylinder(-.05,-.25,0,0,.025))
      self.pad.append(point(0,-.25,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'GND'))
      #
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
      # pin 2: CTS (brown)
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
      #
      self.shape = add(self.shape,translate(pad_header,0,-.15,0))
      self.pad.append(point(0,-.15,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'CTS'))
      #
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
      # pin 3: VCC (red)
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
      #
      self.shape = add(self.shape,translate(pad_header,0,-.05,0))
      self.pad.append(point(0,-.05,0))
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'VCC'))
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
      #
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
      # pin 4: Tx (orange)
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
      #
      self.shape = add(self.shape,translate(pad_header,0,0.05,0))
      self.pad.append(point(0,.05,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'Tx'))
      #
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
      # pin 5: Rx (yellow)
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
      #
      self.shape = add(self.shape,translate(pad_header,0,.15,0))
      self.pad.append(point(0,.15,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'Rx'))
      #
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
      # pin 6: RTS (green)
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
      #
      self.shape = add(self.shape,translate(pad_header,0,.25,0))
      self.pad.append(point(0,.25,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'RTS'))

Neil Gershenfeld (test)'s avatar
wip
Neil Gershenfeld (test) committed
class header_FTDI(part):
   #
   # FTDI cable header
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
   #    Sullins GEC36SBSN-M89	
Neil Gershenfeld (test)'s avatar
wip
Neil Gershenfeld (test) committed
   #
   def __init__(self,value=''):
      self.value = value
      self.pad = [point(0,0,0)]
      self.labels = []
      #
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
      # pin 1: GND
Neil Gershenfeld (test)'s avatar
wip
Neil Gershenfeld (test) committed
      #
      self.shape = translate(pad_header,0,.25,0)
      self.shape = add(self.shape,cylinder(-.05,.25,0,0,.025))
      self.pad.append(point(0,.25,0))
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'GND'))
Neil Gershenfeld (test)'s avatar
wip
Neil Gershenfeld (test) committed
      #
      # pin 2: CTS (brown)
      #
      self.shape = add(self.shape,translate(pad_header,0,.15,0))
      self.pad.append(point(0,.15,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'CTS'))
      #
      # pin 3: VCC (red)
      #
      self.shape = add(self.shape,translate(pad_header,0,.05,0))
      self.pad.append(point(0,.05,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'VCC'))
      #
      # pin 4: Tx (orange)
      #
      self.shape = add(self.shape,translate(pad_header,0,-0.05,0))
      self.pad.append(point(0,-.05,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'Tx'))
      #
      # pin 5: Rx (yellow)
      #
      self.shape = add(self.shape,translate(pad_header,0,-.15,0))
      self.pad.append(point(0,-.15,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'Rx'))
      #
      # pin 6: RTS (green)
      #
      self.shape = add(self.shape,translate(pad_header,0,-.25,0))
      self.pad.append(point(0,-.25,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'RTS'))

class HCSR04(part):
   #
   # HC-SR04 sonar header
   #
   def __init__(self,value=''):
      self.value = value
      self.pad = [point(0,0,0)]
      self.labels = []
      #
      # pin 1: GND
      #
      self.shape = translate(pad_header,0,.15,0)
      self.shape = add(self.shape,cylinder(-.05,.15,0,0,.025))
      self.pad.append(point(0,.15,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'GND'))
      #
      # pin 2: echo
      #
      self.shape = add(self.shape,translate(pad_header,0,.05,0))
      self.pad.append(point(0,.05,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'echo'))
      #
      # pin 3: trig
      #
      self.shape = add(self.shape,translate(pad_header,0,-.05,0))
      self.pad.append(point(0,-.05,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'trig'))
      #
      # pin 4: Vcc
      #
      self.shape = add(self.shape,translate(pad_header,0,-0.15,0))
      self.pad.append(point(0,-.15,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'Vcc'))

class HCSR501(part):
   #
   # HC-SR501 motion detector header
   #
   def __init__(self,value=''):
      self.value = value
      self.pad = [point(0,0,0)]
      self.labels = []
      #
      # pin 1: Vcc
      #
      self.shape = translate(pad_header,0,.1,0)
      self.shape = add(self.shape,cylinder(-.05,.1,0,0,.025))
      self.pad.append(point(0,.1,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'Vcc'))
      #
      # pin 2: out
      #
      self.shape = add(self.shape,translate(pad_header,0,0,0))
      self.pad.append(point(0,0,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'out'))
      #
      # pin 3: GND
      #
      self.shape = add(self.shape,translate(pad_header,0,-.1,0))
      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'))

Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
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))

Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
class ESP32_WROOM(part):
   #
   # ESP32-WROOM
   #
   def __init__(self,value=''):
      self.value = value
      self.pad = [point(0,0,0)]
      self.labels = []
      pad = cube(-1/25.4,1/25.4,-.4/25.4,.4/25.4,0,0)
      padb = cube(-.4/25.4,.4/25.4,-1/25.4,1/25.4,0,0)
      width = 17/25.4
      height = 25.5/25.4
      pitch = 1.27/25.4
      #
      # pin 1
      #
      self.shape = translate(pad,-width/2,6*pitch,0)
      self.pad.append(point(-width/2,6*pitch,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'GND'))
      #
      # pin 2
      #
      self.shape = add(self.shape,translate(pad,-width/2,5*pitch,0))
      self.pad.append(point(-width/2,5*pitch,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'3V3'))
      #
      # pin 3
      #
      self.shape = add(self.shape,translate(pad,-width/2,4*pitch,0))
      self.pad.append(point(-width/2,4*pitch,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'EN'))
      #
      # pin 4
      #
      self.shape = add(self.shape,translate(pad,-width/2,3*pitch,0))
      self.pad.append(point(-width/2,3*pitch,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'VP'))
      #
      # pin 5
      #
      self.shape = add(self.shape,translate(pad,-width/2,2*pitch,0))
      self.pad.append(point(-width/2,2*pitch,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'VN'))
      #
      # pin 6
      #
      self.shape = add(self.shape,translate(pad,-width/2,1*pitch,0))
      self.pad.append(point(-width/2,1*pitch,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IO34'))
      #
      # pin 7
      #
      self.shape = add(self.shape,translate(pad,-width/2,0*pitch,0))
      self.pad.append(point(-width/2,0*pitch,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IO35'))
      #
      # pin 8
      #
      self.shape = add(self.shape,translate(pad,-width/2,-1*pitch,0))
      self.pad.append(point(-width/2,-1*pitch,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IO32'))
      #
      # pin 9
      #
      self.shape = add(self.shape,translate(pad,-width/2,-2*pitch,0))
      self.pad.append(point(-width/2,-2*pitch,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IO33'))
      #
      # pin 10
      #
      self.shape = add(self.shape,translate(pad,-width/2,-3*pitch,0))
      self.pad.append(point(-width/2,-3*pitch,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IO25'))
      #
      # pin 11
      #
      self.shape = add(self.shape,translate(pad,-width/2,-4*pitch,0))
      self.pad.append(point(-width/2,-4*pitch,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IO26'))
      #
      # pin 12
      #
      self.shape = add(self.shape,translate(pad,-width/2,-5*pitch,0))
      self.pad.append(point(-width/2,-5*pitch,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IO27'))
      #
      # pin 13
      #
      self.shape = add(self.shape,translate(pad,-width/2,-6*pitch,0))
      self.pad.append(point(-width/2,-6*pitch,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IO14'))
      #
      # pin 14
      #
      self.shape = add(self.shape,translate(pad,-width/2,-7*pitch,0))
      self.pad.append(point(-width/2,-7*pitch,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IO12'))
      #
      # pin 15
      #
      self.shape = add(self.shape,translate(padb,-4.5*pitch,-7*pitch-1/25.4,0))
      self.pad.append(point(-4.5*pitch,-7*pitch-1/25.4,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'GND',angle=90))
      #
      # pin 16
      #
      self.shape = add(self.shape,translate(padb,-3.5*pitch,-7*pitch-1/25.4,0))
      self.pad.append(point(-3.5*pitch,-7*pitch-1/25.4,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IO13',angle=90))
      #
      # pin 17
      #
      self.shape = add(self.shape,translate(padb,-2.5*pitch,-7*pitch-1/25.4,0))
      self.pad.append(point(-2.5*pitch,-7*pitch-1/25.4,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'SHD',angle=90))
      #
      # pin 18
      #
      self.shape = add(self.shape,translate(padb,-1.5*pitch,-7*pitch-1/25.4,0))
      self.pad.append(point(-1.5*pitch,-7*pitch-1/25.4,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'SWP',angle=90))
      #
      # pin 19
      #
      self.shape = add(self.shape,translate(padb,-0.5*pitch,-7*pitch-1/25.4,0))
      self.pad.append(point(-0.5*pitch,-7*pitch-1/25.4,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'SCS',angle=90))
      #
      # pin 20
      #
      self.shape = add(self.shape,translate(padb,0.5*pitch,-7*pitch-1/25.4,0))
      self.pad.append(point(0.5*pitch,-7*pitch-1/25.4,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'SCK',angle=90))
      #
      # pin 21
      #
      self.shape = add(self.shape,translate(padb,1.5*pitch,-7*pitch-1/25.4,0))
      self.pad.append(point(1.5*pitch,-7*pitch-1/25.4,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'SDO',angle=90))
      #
      # pin 22
      #
      self.shape = add(self.shape,translate(padb,2.5*pitch,-7*pitch-1/25.4,0))
      self.pad.append(point(2.5*pitch,-7*pitch-1/25.4,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'SDI',angle=90))
      #
      # pin 23
      #
      self.shape = add(self.shape,translate(padb,3.5*pitch,-7*pitch-1/25.4,0))
      self.pad.append(point(3.5*pitch,-7*pitch-1/25.4,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IO15',angle=90))
      #
      # pin 24
      #
      self.shape = add(self.shape,translate(padb,4.5*pitch,-7*pitch-1/25.4,0))
      self.pad.append(point(4.5*pitch,-7*pitch-1/25.4,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IO2',angle=90))
      #
      # pin 25
      #
      self.shape = add(self.shape,translate(pad,width/2,-7*pitch,0))
      self.pad.append(point(width/2,-7*pitch,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IO0'))
      #
      # pin 26
      #
      self.shape = add(self.shape,translate(pad,width/2,-6*pitch,0))
      self.pad.append(point(width/2,-6*pitch,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IO4'))
      #
      # pin 27
      #
      self.shape = add(self.shape,translate(pad,width/2,-5*pitch,0))
      self.pad.append(point(width/2,-5*pitch,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IO16'))
      #
      # pin 28
      #
      self.shape = add(self.shape,translate(pad,width/2,-4*pitch,0))
      self.pad.append(point(width/2,-4*pitch,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IO17'))
      #
      # pin 29
      #
      self.shape = add(self.shape,translate(pad,width/2,-3*pitch,0))
      self.pad.append(point(width/2,-3*pitch,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IO5'))
      #
      # pin 30
      #
      self.shape = add(self.shape,translate(pad,width/2,-2*pitch,0))
      self.pad.append(point(width/2,-2*pitch,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IO18'))
      #
      # pin 31
      #
      self.shape = add(self.shape,translate(pad,width/2,-1*pitch,0))
      self.pad.append(point(width/2,-1*pitch,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IO19'))
      #
      # pin 32
      #
      self.shape = add(self.shape,translate(pad,width/2,0*pitch,0))
      self.pad.append(point(width/2,0*pitch,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'NC'))
      #
      # pin 33
      #
      self.shape = add(self.shape,translate(pad,width/2,1*pitch,0))
      self.pad.append(point(width/2,1*pitch,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IO21'))
      #
      # pin 34
      #
      self.shape = add(self.shape,translate(pad,width/2,2*pitch,0))
      self.pad.append(point(width/2,2*pitch,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'RX0'))
      #
      # pin 35
      #
      self.shape = add(self.shape,translate(pad,width/2,3*pitch,0))
      self.pad.append(point(width/2,3*pitch,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'TX0'))
      #
      # pin 36
      #
      self.shape = add(self.shape,translate(pad,width/2,4*pitch,0))
      self.pad.append(point(width/2,4*pitch,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IO22'))
      #
      # pin 37
      #
      self.shape = add(self.shape,translate(pad,width/2,5*pitch,0))
      self.pad.append(point(width/2,5*pitch,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IO23'))
      #
      # pin 38
      #
      self.shape = add(self.shape,translate(pad,width/2,6*pitch,0))
      self.pad.append(point(width/2,6*pitch,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'GND'))

Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
class ESP32_CAM(part):
   #
   # ESP32-CAM
   # Sullins S5635-ND
   #
   def __init__(self,value=''):
      pad_header = cube(-.079/2,.079/2,-.039/2,.039/2,0,0)
      d = .209/2-.079/2
      w = 0.9
      self.value = value
      self.pad = [point(0,0,0)]
      self.labels = []
      #
      # pin 1
      #
      self.shape = translate(pad_header,+d-w/2,.35,0)
      self.pad.append(point(+d-w/2,.35,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'+5V'))
      #
      # pin 2
      #
      self.shape = add(self.shape,translate(pad_header,-d-w/2,.25,0))
      self.pad.append(point(-d-w/2,.25,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'GND'))
      #
      # pin 3
      #
      self.shape = add(self.shape,translate(pad_header,+d-w/2,.15,0))
      self.pad.append(point(+d-w/2,.15,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IO12'))
      #
      # pin 4
      #
      self.shape = add(self.shape,translate(pad_header,-d-w/2,.05,0))
      self.pad.append(point(-d-w/2,.05,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IO13'))
      #
      # pin 5
      #
      self.shape = add(self.shape,translate(pad_header,+d-w/2,-.05,0))
      self.pad.append(point(+d-w/2,-.05,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IO15'))
      #
      # pin 6
      #
      self.shape = add(self.shape,translate(pad_header,-d-w/2,-.15,0))
      self.pad.append(point(-d-w/2,-.15,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IO14'))
      #
      # pin 7
      #
      self.shape = add(self.shape,translate(pad_header,+d-w/2,-.25,0))
      self.pad.append(point(+d-w/2,-.25,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IO2'))
      #
      # pin 8
      #
      self.shape = add(self.shape,translate(pad_header,-d-w/2,-.35,0))
      self.pad.append(point(-d-w/2,-.35,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IO4'))
      #
      # pin 9
      #
      self.shape = add(self.shape,translate(pad_header,-d+w/2,-.35,0))
      self.pad.append(point(-d+w/2,-.35,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'GND'))
      #
      # pin 10
      #
      self.shape = add(self.shape,translate(pad_header,+d+w/2,-.25,0))
      self.pad.append(point(+d+w/2,-.25,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'U0T'))
      #
      # pin 11
      #
      self.shape = add(self.shape,translate(pad_header,-d+w/2,-.15,0))
      self.pad.append(point(-d+w/2,-.15,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'U0R'))
      #
      # pin 12
      #
      self.shape = add(self.shape,translate(pad_header,+d+w/2,-.05,0))
      self.pad.append(point(+d+w/2,-.05,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'VCC'))
      #
      # pin 13
      #
      self.shape = add(self.shape,translate(pad_header,-d+w/2,.05,0))
      self.pad.append(point(-d+w/2,.05,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'GND'))
      #
      # pin 14
      #
      self.shape = add(self.shape,translate(pad_header,+d+w/2,.15,0))
      self.pad.append(point(+d+w/2,.15,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IO0'))
      #
      # pin 15
      #
      self.shape = add(self.shape,translate(pad_header,-d+w/2,.25,0))
      self.pad.append(point(-d+w/2,.25,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IO16'))
      #
      # pin 16
      #
      self.shape = add(self.shape,translate(pad_header,+d+w/2,.35,0))
      self.pad.append(point(+d+w/2,.35,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'3V3'))


Neil Gershenfeld (test)'s avatar
wip
Neil Gershenfeld (test) committed
class ESP8266_12E(part):
   #
   # ESP8266 12E
   #
   def __init__(self,value=''):
      self.value = value
      self.pad = [point(0,0,0)]
      self.labels = []
      height = 24/25.4 
      width = 16/25.4
      pitch = 2/25.4
      bottom = 1.8/25.4
      left = 3/25.4
      offset = .4/25.4 - .01
      size = .004
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
      pad_ESP8266 = cube(-.0493,.0493,-.0197,.0197,0,0)
      pad_ESP8266_bot = cube(-.0197,.0197,-.0415,.0415,0,0)
Neil Gershenfeld (test)'s avatar
wip
Neil Gershenfeld (test) committed
      #
      # pin 1:
      #
      self.shape = translate(pad_ESP8266,-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,'RST',line=size))
      #
      # pin 2: 
      #
      self.shape = add(self.shape,translate(pad_ESP8266,-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,'ADC',line=size))
      #
      # pin 3: 
      #
      self.shape = add(self.shape,translate(pad_ESP8266,-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,'EN',line=size))
      #
      # pin 4: 
      #
      self.shape = add(self.shape,translate(pad_ESP8266,-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,'GPIO16',line=size))
      #