From 24ac3883de475c0fff898d426794a6730291effe Mon Sep 17 00:00:00 2001 From: Neil Gershenfeld <gersh@cba.mit.edu> Date: Tue, 12 Nov 2019 14:52:32 -0500 Subject: [PATCH] wip --- python/pcb.py | 145 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 144 insertions(+), 1 deletion(-) diff --git a/python/pcb.py b/python/pcb.py index 582bfa1..4fd97ca 100755 --- a/python/pcb.py +++ b/python/pcb.py @@ -2454,6 +2454,116 @@ class HM11(part): 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)) +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')) + + pad_ESP8266 = cube(-.0493,.0493,-.0197,.0197,0,0) pad_ESP8266_bot = cube(-.0197,.0197,-.0415,.0415,0,0) @@ -3132,7 +3242,39 @@ class Molex_serial(part): # switches # -pad_button_6mm = cube(-.04,.04,-.03,.03,0,0) +class slide_switch(part): + # + # slide switch + # C&K AYZ0102AGRLC + # + def __init__(self,value=''): + self.value = value + self.pad = [point(0,0,0)] + self.labels = [] + pad = cube(-.039/2,.039/2,-.047/2,.047/2,0,0) + # + # pad 1 + # + self.shape = translate(pad,-.098,.1,0) + self.pad.append(point(-.098,.1,0)) + self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'')) + # + # pad 2 + # + self.shape = add(self.shape,translate(pad,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,'')) + # + # pad 3 + # + self.shape = add(self.shape,translate(pad,.098,.1,0)) + self.pad.append(point(.098,.1,0)) + self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'')) + # + # holes + # + self.holes = cylinder(-.118/2,0,zb,zt,.034/2) + self.holes = add(self.holes,cylinder(.118/2,0,zb,zt,.034/2)) class button_6mm(part): # @@ -3143,6 +3285,7 @@ class button_6mm(part): self.value = value self.pad = [point(0,0,0)] self.labels = [] + pad_button_6mm = cube(-.04,.04,-.03,.03,0,0) # # left 1 # -- GitLab