diff --git a/pkg/schema/schema.py b/pkg/schema/schema.py new file mode 100644 index 0000000..3212e97 --- /dev/null +++ b/pkg/schema/schema.py @@ -0,0 +1,202 @@ +import skidl +from skidl import * + +def init(): + _ = skidl.\ + X +def main(): + vin = Net("3.3в") + gnd = Net("GND") + xl4016_fb = Net("XL4016 fb pin") + vkl = Net("Вкл") + vfb = Net("Обратная связь") + mk_onoff = Net("МК OnOff") + Nets = Interface(vin=vin,gnd=gnd,xl4016_fb=xl4016_fb,vkl=vkl,vfb=vfb,mk_onoff=mk_onoff) + n = Nets + ESP32 = Part("RF_Module","ESP32-WROOM-32",TEMPLATE,footprint="RF_Module:ESP32-WROOM-32") + Клема = Part("Connector_Generic","Conn_01x01",TEMPLATE,footprint="Connector_PinHeader_2.54mm:PinHeader_1x01_P2.54mm_Vertical") + tr_fet = Part("Transistor_FET","BSS138",TEMPLATE,footprint="SOT-23_Handsoldering") + r = Part("Device","R",TEMPLATE,footprint="Resistor_SMD:R_0805_2012Metric") + r_jmp = Part("Device","R",TEMPLATE,footprint="Resistor_SMD:R_1206_3216Metric") + r_jmp_big = Part("Device","R",TEMPLATE,footprint="Resistor_SMD:R_1812_4532Metric") + diode = Part("Diode","1N4001",TEMPLATE,footprint="Diode_SMD:D_0805_2012Metric") + stabilitron = Part("Device","D_Zener",TEMPLATE,footprint="Diode_SMD:D_0805_2012Metric") + condensator = Part("Device","C",TEMPLATE,footprint="Capacitor_SMD:C_0805_2012Metric") + conn2 = Part("Connector_Generic","Conn_01x02",TEMPLATE,footprint="Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical") + conn3 = Part("Connector_Generic","Conn_01x03",TEMPLATE,footprint="Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical") + conn3_big = Part("Connector_Generic","Conn_01x03",TEMPLATE,footprint="Package_TO_SOT_THT:TO-3P-3_Vertical") + conn4 = Part("Connector_Generic","Conn_01x04",TEMPLATE,footprint="Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical") + Parts = Interface(ESP32=ESP32,Клема=Клема,tr_fet=tr_fet,r=r,r_jmp=r_jmp,r_jmp_big=r_jmp_big,condensator=condensator,diode=diode,stabilitron=stabilitron,conn2=conn2,conn3=conn3,conn3_big=conn3_big,conn4=conn4) + p = Parts + dcdc_3_3_v(Nets,Parts) + n.\ + gnd & p.\ + r_jmp_big(ref="main_gnd",value="0") & n.\ + gnd + esp32 = NewESP32(Nets,Parts) + xl4016_driver(Nets,Parts,mk_vkl_net=esp32["IO18"],mk_yark_net=esp32["IO19"]) + z1 = NewPinZaschita(name="z1",n=n,p=p) + dvizh_verh = NewDvizh(name="dvizh_verh",n=n,p=p) + dvizh_verh.\ + out & z1.\ + i + z1.\ + o & esp32["IO4"] + z1.\ + g & n.\ + gnd + z2 = NewPinZaschita(name="z2",n=n,p=p) + dvizh_niz = NewDvizh(name="dvizh_niz",n=n,p=p) + dvizh_niz.\ + out & z2.\ + i + z2.\ + o & esp32["IO16"] + z2.\ + g & n.\ + gnd + generate_netlist() +@subcircuit +def NewESP32(n,p): + esp32 = p.\ + ESP32(ref="ESP32",value=" ") + lgnd = n.\ + gnd + lvin = n.\ + vin + esp32["GND"] += lgnd + lgnd & n.\ + gnd + esp32["VDD"] += lvin + lvin & n.\ + vin + esp32["VDD"] & p.\ + r(ref="r_esp32_en",value="10k") & esp32["EN"] + z1 = NewPinZaschita(name="esp32_z1",n=n,p=p) + z2 = NewPinZaschita(name="esp32_z2",n=n,p=p) + z3 = NewPinZaschita(name="esp32_z3",n=n,p=p) + z4 = NewPinZaschita(name="esp32_z4",n=n,p=p) + rxtx = p.\ + conn4(ref="rxtx",value=" ") + rxtx[1] & z1.\ + i + z1.\ + o & esp32["RXD0/IO3"] + z1.\ + g & lgnd + rxtx[2] & z2.\ + i + z2.\ + o & esp32["TXD0/IO1"] + z2.\ + g & lgnd + rxtx[3] & z3.\ + i + z3.\ + o & esp32["EN"] + z3.\ + g & lgnd + rxtx[4] & z4.\ + i + z4.\ + o & esp32["IO0"] + z4.\ + g & lgnd + vin_gnd = p.\ + conn2(ref="vin_gnd",value=" ") + vin_gnd[1] & lvin + vin_gnd[2] & lgnd + return esp32 +@subcircuit +def xl4016_driver(n,p,mk_vkl_net,mk_yark_net): + tr_mk = p.\ + tr_fet(ref="tr_mk",value="тр МК") + tr_yark = p.\ + tr_fet(ref="tr_yark",value="тр ярк P-тип") + d_vkl = p.\ + diode(ref="d_vkl",value="диод вкл") + k_vfb = p.\ + Клема(ref="k_vfb",value=" ") + k_xl4016_fb = p.\ + Клема(ref="k_xl4016_fb",value=" ") + k_xl4016_fb & tr_mk["S"] + k_vfb & n.\ + vfb + vkl_iface = p.\ + conn2(ref="vkl_iface",value="Вкл") + n.\ + vkl & vkl_iface & n.\ + vin + r_fb = p.\ + r(ref="r_fb",value="100k") + r_mk = p.\ + r(ref="r_mk",value="10k") + n.\ + vin & r_fb & tr_mk["S"] + n.\ + xl4016_fb & tr_mk["S"] + tr_mk["D"] & n.\ + vfb + tr_mk["G"] & r_mk & n.\ + gnd + tr_mk["G"] & mk_vkl_net + n.\ + vkl & d_vkl & tr_mk["G"] + tr_yark["G"] & n.\ + vkl + mk_yark_net & tr_yark["S"] + r_diode = p.\ + r(ref="r_yark_pre_diode",value="100") + diode = p.\ + diode(ref="yark_diode",value=" ") + tr_yark["D"] & r_diode & diode & n.\ + vfb + r_tr_g_yark = p.\ + r(ref="r_tr_g_yark",value="10k") + n.\ + vkl & r_tr_g_yark & n.\ + gnd +@subcircuit +def dcdc_3_3_v(n,p): + high_vin = p.\ + conn2(ref="high_vin",value="24В") + lgnd = n.\ + gnd + dcdc = p.\ + conn4(ref="dcdc",value="3.3В") + dcdc[1] & n.\ + vin + dcdc[2] & lgnd & n.\ + gnd + dcdc[3] & high_vin & lgnd +@package +def NewDvizh(out,name,n,p): + d = p.\ + conn3_big(ref=name,value=" ") + d[1] & n.\ + vin + d[2] & out + d[3] & n.\ + gnd +@package +def NewPinZaschita(i,o,g,name,n,p): + r = p.\ + r(ref=name + "_r_in",value="1k") + d_vin = p.\ + diode(ref=name + "_d_vin",value=" ") + d_gnd = p.\ + diode(ref=name + "_d_gnd",value=" ") + stabil = p.\ + stabilitron(ref=name + "_stabil",value=" ") + cond = p.\ + condensator(ref=name + "_cond",value=" ") + i & p.\ + r_jmp_big(ref=name + "_rj1",value="0") & r + r & d_vin & n.\ + vin + r & d_gnd & g + r & stabil & g + r & cond & g + r & p.\ + r_jmp_big(ref=name + "_rj2",value="0") & o +main()