Skip to content
Snippets Groups Projects
Commit 0063f9a5 authored by Jingyan Ling's avatar Jingyan Ling
Browse files

script of schematic design

parent e7fbbfc7
No related merge requests found
...@@ -334,4 +334,16 @@ ...@@ -334,4 +334,16 @@
- Export - Export
- ![](journal_media/attempt5_2d.png) - ![](journal_media/attempt5_2d.png)
- ![](journal_media/attempt5_3d.png) - ![](journal_media/attempt5_3d.png)
- ![](journal_media/attempt5_router.png) - ![](journal_media/attempt5_router.png)
\ No newline at end of file
- Consider success when export for auto-routing manually. Huge challenge expected when doing it from script.
- Work on script doing schematic design
- *Assume symbol and footprint downloaded*
- Package Using: [skidl](https://xesscorp.github.io/skidl/docs/_site/)
- Record of Tips:
- Add custom library path that contains all symbols of electrical devices needed (`NodeMCU`)
- Use attribute `footprint` to add footprint for such symbol
- footprint syntax: 'footprint= libname.pretty: foot_print_name
- footprint directory should be under the same directory where `.lib` file is.
-
\ No newline at end of file
WARNING: Could not open directory ''
WARNING: Could not open directory ''
WARNING: Could not open directory ''
ERROR: Unable to find part NodeMCU_1.0 in library ESP8266.
ERROR: Can't open file: linear.
WARNING: Could not load KiCad schematic library "linear", falling back to backup library.
ERROR: Unable to find part NodeMCU_1.0 in library ESP8266.lib.
ERROR: Can't open file: /home/jingyan/kicad/libraries/kicad-ESP8266.
WARNING: Could not load KiCad schematic library "/home/jingyan/kicad/libraries/kicad-ESP8266", falling back to backup library.
WARNING: Could not open directory ''
ERROR: Unable to find part NodeMCU_1.0_(ESP-12E) in library ESP8266.
WARNING: Could not open directory ''
WARNING: Could not open directory ''
ERROR: Unable to find part NodeMCU_1.0_ in library ESP8266.
WARNING: Could not open directory ''
WARNING: Could not open directory ''
WARNING: Could not open directory ''
WARNING: Could not open directory ''
journal_media/dotnetfile.png

3.62 KiB

journal_media/sample_routed.png

15.3 KiB

journal_media/schematic_script.png

96.1 KiB

ERC ERROR: Pin conflict on net 3v3: POWER-OUT pin 25/3.3V of NodeMCU_1.0_/U1 <==> POWER-OUT pin 11/3.3V of NodeMCU_1.0_/U1
ERC ERROR: Pin conflict on net 3v3: POWER-OUT pin 25/3.3V of NodeMCU_1.0_/U1 <==> POWER-OUT pin 16/3.3V of NodeMCU_1.0_/U1
ERC ERROR: Pin conflict on net 3v3: POWER-OUT pin 11/3.3V of NodeMCU_1.0_/U1 <==> POWER-OUT pin 16/3.3V of NodeMCU_1.0_/U1
ERC WARNING: Only one pin (POWER-IN pin 15/VIN of NodeMCU_1.0_/U1) attached to net VIN.
ERC WARNING: No drivers for net VIN
ERC WARNING: Insufficient drive current on net VIN for pin POWER-IN pin 15/VIN of NodeMCU_1.0_/U1
ERC WARNING: Insufficient drive current on net GND for pin POWER-IN pin 17/GND of NodeMCU_1.0_/U1
ERC WARNING: Insufficient drive current on net GND for pin POWER-IN pin 14/GND of NodeMCU_1.0_/U1
ERC WARNING: Insufficient drive current on net GND for pin POWER-IN pin 24/GND of NodeMCU_1.0_/U1
ERC WARNING: Unconnected pin: INPUT pin 1/A0(ADC0) of NodeMCU_1.0_/U1.
ERC WARNING: Unconnected pin: INPUT pin 12/EN of NodeMCU_1.0_/U1.
ERC WARNING: Unconnected pin: INPUT pin 13/RST of NodeMCU_1.0_/U1.
ERC WARNING: Unconnected pin: BIDIRECTIONAL pin 18/TX(GPIO1) of NodeMCU_1.0_/U1.
ERC WARNING: Unconnected pin: BIDIRECTIONAL pin 19/RX(DPIO3) of NodeMCU_1.0_/U1.
ERC WARNING: Unconnected pin: INPUT pin 2/RSV of NodeMCU_1.0_/U1.
ERC WARNING: Unconnected pin: BIDIRECTIONAL pin 20/D8(GPIO15) of NodeMCU_1.0_/U1.
ERC WARNING: Unconnected pin: BIDIRECTIONAL pin 21/D7(GPIO13) of NodeMCU_1.0_/U1.
ERC WARNING: Unconnected pin: BIDIRECTIONAL pin 26/D4(GPIO2) of NodeMCU_1.0_/U1.
ERC WARNING: Unconnected pin: BIDIRECTIONAL pin 27/D3(GPIO0) of NodeMCU_1.0_/U1.
ERC WARNING: Unconnected pin: BIDIRECTIONAL pin 28/D2(GPIO4) of NodeMCU_1.0_/U1.
ERC WARNING: Unconnected pin: BIDIRECTIONAL pin 29/D1(GPIO5) of NodeMCU_1.0_/U1.
ERC WARNING: Unconnected pin: INPUT pin 3/RSV of NodeMCU_1.0_/U1.
ERC WARNING: Unconnected pin: BIDIRECTIONAL pin 30/D0(GPIO16) of NodeMCU_1.0_/U1.
ERC WARNING: Unconnected pin: BIDIRECTIONAL pin 4/SD3(GPIO10) of NodeMCU_1.0_/U1.
ERC WARNING: Unconnected pin: BIDIRECTIONAL pin 5/SD2(GPIO9) of NodeMCU_1.0_/U1.
ERC WARNING: Unconnected pin: BIDIRECTIONAL pin 6/SD1(MOSI) of NodeMCU_1.0_/U1.
ERC WARNING: Unconnected pin: BIDIRECTIONAL pin 7/CMD(CS) of NodeMCU_1.0_/U1.
ERC WARNING: Unconnected pin: BIDIRECTIONAL pin 8/SDO(MISO) of NodeMCU_1.0_/U1.
ERC WARNING: Unconnected pin: BIDIRECTIONAL pin 9/CLK(SCLK) of NodeMCU_1.0_/U1.
ERC WARNING: Unconnected pin: PASSIVE pin 10/FSYNC of MPU-9250/J1.
ERC WARNING: Unconnected pin: PASSIVE pin 5/EDA of MPU-9250/J1.
ERC WARNING: Unconnected pin: PASSIVE pin 6/ECL of MPU-9250/J1.
ERC WARNING: Unconnected pin: PASSIVE pin 7/ADO of MPU-9250/J1.
ERC WARNING: Unconnected pin: PASSIVE pin 8/INT of MPU-9250/J1.
ERC WARNING: Unconnected pin: PASSIVE pin 9/NCS of MPU-9250/J1.
(export (version D)
(design
(source "/home/jingyan/Documents/summer_intern_lemur/roco_electrical/kicad_python.py")
(date "07/16/2019 04:59 PM")
(tool "SKiDL (0.0.26)"))
(components
(comp (ref J1)
(value MPU-9250)
(footprint node_mcu:mpu-9250)
(fields
(field (name keywords) connector))
(libsource (lib ESP8266) (part MPU-9250))
(sheetpath (names /top/9860840872559336476) (tstamps /top/9860840872559336476)))
(comp (ref R1)
(value 1K)
(footprint Resistor_SMD:R_0402_1005Metric)
(fields
(field (name keywords) "R res resistor")
(field (name description) Resistor))
(libsource (lib ESP8266) (part 1000))
(sheetpath (names /top/5624726637527145165) (tstamps /top/5624726637527145165)))
(comp (ref R2)
(value 1K)
(footprint Resistor_SMD:R_0402_1005Metric)
(fields
(field (name keywords) "R res resistor")
(field (name description) Resistor))
(libsource (lib ESP8266) (part 1000))
(sheetpath (names /top/17050391654246193540) (tstamps /top/17050391654246193540)))
(comp (ref U1)
(value NodeMCU_1.0_)
(footprint node_mcu:ESP12F-Devkit-V3)
(libsource (lib ESP8266) (part NodeMCU_1.0_))
(sheetpath (names /top/8700831890441039016) (tstamps /top/8700831890441039016))))
(nets
(net (code 0) (name 3v3)
(node (ref J1) (pin 1))
(node (ref R1) (pin 1))
(node (ref R2) (pin 1))
(node (ref U1) (pin 11))
(node (ref U1) (pin 16))
(node (ref U1) (pin 25)))
(net (code 1) (name GND)
(node (ref J1) (pin 2))
(node (ref U1) (pin 10))
(node (ref U1) (pin 14))
(node (ref U1) (pin 17))
(node (ref U1) (pin 24)))
(net (code 2) (name N$1)
(node (ref J1) (pin 4))
(node (ref R1) (pin 2))
(node (ref U1) (pin 23)))
(net (code 3) (name N$2)
(node (ref J1) (pin 3))
(node (ref R2) (pin 2))
(node (ref U1) (pin 22)))
(net (code 4) (name VIN)
(node (ref U1) (pin 15))))
)
#!/usr/bin/env python3
"""
python 3.6.8
"""
import pcbnew
import skidl
import csv
class schematic():
def __init__(self,lib_path):
skidl.lib_search_paths['kicad'].append(lib_path)
## load symbol of all parts
self.esp8826=skidl.Part('ESP8266','NodeMCU_1.0_',footprint='ESP8266.pretty:ESP12F-Devkit-V3')
self.mpu9250=skidl.Part('ESP8266','MPU-9250',footprint='ESP8266.pretty:mpu-9250')
self.resistor1=skidl.Part('ESP8266','1000',value='1K',footprint='Resistor_SMD.pretty:R_0402_1005Metric',ref='R1')
self.resistor2=skidl.Part('ESP8266','1000',value='1K',footprint='Resistor_SMD.pretty:R_0402_1005Metric',ref='R2')
self.connect_pins()
skidl.generate_netlist()
def connect_pins(self):
v33=skidl.Net('3v3')
v5=skidl.Net('VIN')
gnd=skidl.Net('GND')
self.resistor1[1]+=v33
self.resistor2[1]+=v33
v5+=self.esp8826['VIN']
v33+=self.esp8826['3.3v']
gnd+=self.esp8826['GND']
self.esp8826['D5']+=self.resistor1[2]
self.esp8826['D6']+=self.resistor2[2]
self.mpu9250['SDA']+=self.resistor1[2]
self.mpu9250['SCL']+=self.resistor2[2]
self.mpu9250['GND']+=gnd
self.mpu9250['VCC']+=v33
skidl.ERC()
lib_path='/home/jingyan/kicad/libraries/kicad-ESP8266'
net_generator=schematic(lib_path)
from skidl import Pin, Part, SchLib, SKIDL, TEMPLATE
SKIDL_lib_version = '0.0.1'
kicad_python_lib = SchLib(tool=SKIDL).add_parts(*[
Part(name='NodeMCU_1.0_',dest=TEMPLATE,tool=SKIDL,ref_prefix='U',num_units=1,do_erc=True,footprint='node_mcu:ESP12F-Devkit-V3',pins=[
Pin(num='1',name='A0(ADC0)',do_erc=True),
Pin(num='10',name='GND',do_erc=True),
Pin(num='11',name='3.3V',func=Pin.PWROUT,do_erc=True),
Pin(num='12',name='EN',do_erc=True),
Pin(num='13',name='RST',do_erc=True),
Pin(num='14',name='GND',func=Pin.PWRIN,do_erc=True),
Pin(num='15',name='VIN',func=Pin.PWRIN,do_erc=True),
Pin(num='16',name='3.3V',func=Pin.PWROUT,do_erc=True),
Pin(num='17',name='GND',func=Pin.PWRIN,do_erc=True),
Pin(num='18',name='TX(GPIO1)',func=Pin.BIDIR,do_erc=True),
Pin(num='19',name='RX(DPIO3)',func=Pin.BIDIR,do_erc=True),
Pin(num='2',name='RSV',do_erc=True),
Pin(num='20',name='D8(GPIO15)',func=Pin.BIDIR,do_erc=True),
Pin(num='21',name='D7(GPIO13)',func=Pin.BIDIR,do_erc=True),
Pin(num='22',name='D6(GPIO12)',func=Pin.BIDIR,do_erc=True),
Pin(num='23',name='D5(GPIO14)',func=Pin.BIDIR,do_erc=True),
Pin(num='24',name='GND',func=Pin.PWRIN,do_erc=True),
Pin(num='25',name='3.3V',func=Pin.PWROUT,do_erc=True),
Pin(num='26',name='D4(GPIO2)',func=Pin.BIDIR,do_erc=True),
Pin(num='27',name='D3(GPIO0)',func=Pin.BIDIR,do_erc=True),
Pin(num='28',name='D2(GPIO4)',func=Pin.BIDIR,do_erc=True),
Pin(num='29',name='D1(GPIO5)',func=Pin.BIDIR,do_erc=True),
Pin(num='3',name='RSV',do_erc=True),
Pin(num='30',name='D0(GPIO16)',func=Pin.BIDIR,do_erc=True),
Pin(num='4',name='SD3(GPIO10)',func=Pin.BIDIR,do_erc=True),
Pin(num='5',name='SD2(GPIO9)',func=Pin.BIDIR,do_erc=True),
Pin(num='6',name='SD1(MOSI)',func=Pin.BIDIR,do_erc=True),
Pin(num='7',name='CMD(CS)',func=Pin.BIDIR,do_erc=True),
Pin(num='8',name='SDO(MISO)',func=Pin.BIDIR,do_erc=True),
Pin(num='9',name='CLK(SCLK)',func=Pin.BIDIR,do_erc=True)]),
Part(name='MPU-9250',dest=TEMPLATE,tool=SKIDL,keywords='connector',ref_prefix='J',num_units=1,fplist=['Connector*:*_1x??_*'],do_erc=True,footprint='node_mcu:mpu-9250',pins=[
Pin(num='1',name='VCC',func=Pin.PWRIN,do_erc=True),
Pin(num='10',name='FSYNC',func=Pin.PASSIVE,do_erc=True),
Pin(num='2',name='GND',func=Pin.PASSIVE,do_erc=True),
Pin(num='3',name='SCL',func=Pin.PASSIVE,do_erc=True),
Pin(num='4',name='SDA',func=Pin.PASSIVE,do_erc=True),
Pin(num='5',name='EDA',func=Pin.PASSIVE,do_erc=True),
Pin(num='6',name='ECL',func=Pin.PASSIVE,do_erc=True),
Pin(num='7',name='ADO',func=Pin.PASSIVE,do_erc=True),
Pin(num='8',name='INT',func=Pin.PASSIVE,do_erc=True),
Pin(num='9',name='NCS',func=Pin.PASSIVE,do_erc=True)]),
Part(name='1000',dest=TEMPLATE,tool=SKIDL,keywords='R res resistor',description='Resistor',ref_prefix='R',num_units=1,fplist=['R_*'],do_erc=True,footprint='Resistor_SMD:R_0402_1005Metric',pins=[
Pin(num='1',name='~',func=Pin.PASSIVE,do_erc=True),
Pin(num='2',name='~',func=Pin.PASSIVE,do_erc=True)])])
\ No newline at end of file
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment