diff --git a/.github/workflows/design.yml b/.github/workflows/design.yml index d50bb8e..f570755 100644 --- a/.github/workflows/design.yml +++ b/.github/workflows/design.yml @@ -4,15 +4,18 @@ on: push: branches: - main + paths: + - hardware/** pull_request: branches: - main + paths: + - hardware/** env: workflow_project_dir: hardware kicad_project_name: lemon-pepper - jobs: buildfiles: name: Design check & documentation build @@ -43,4 +46,4 @@ jobs: if: always() with: name: design-artifacts - path: hardware/outputs + path: hardware/outputs \ No newline at end of file diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml index 047a9c5..d407485 100644 --- a/.github/workflows/documentation.yml +++ b/.github/workflows/documentation.yml @@ -32,13 +32,17 @@ jobs: - name: Export assembly documentation run: | kicad-cli sch export bom -o ${workflow_project_dir}/outputs/raw-BOM.csv --fields "Reference,Value,Footprint,LCSC ID" --exclude-dnp --group-by "Val" --sort-asc ${workflow_project_dir}/${kicad_project_name}.kicad_sch - kicad-cli pcb export pos -o ${workflow_project_dir}/outputs/raw-CPL.csv --side front --format csv --use-drill-file-origin --exclude-dnp --units mm ${workflow_project_dir}/${kicad_project_name}.kicad_pcb + kicad-cli pcb export pos -o ${workflow_project_dir}/outputs/raw-CPL.csv --side both --format csv --use-drill-file-origin --exclude-dnp --units mm ${workflow_project_dir}/${kicad_project_name}.kicad_pcb + kicad-cli pcb export pos -o ${workflow_project_dir}/outputs/raw-CPL-top.csv --side front --format csv --use-drill-file-origin --exclude-dnp --units mm ${workflow_project_dir}/${kicad_project_name}.kicad_pcb + kicad-cli pcb export pos -o ${workflow_project_dir}/outputs/raw-CPL-bot.csv --side back --format csv --use-drill-file-origin --exclude-dnp --units mm ${workflow_project_dir}/${kicad_project_name}.kicad_pcb - name: Convert BOM & CPL to JLC format run: | python3 scripts/jlc_bom_formatter.py ${workflow_project_dir}/outputs/raw-BOM.csv ${workflow_project_dir}/outputs/${kicad_project_name}-BOM.csv python3 scripts/jlc_cpl_formatter.py ${workflow_project_dir}/outputs/raw-CPL.csv ${workflow_project_dir}/outputs/${kicad_project_name}-CPL.csv - sudo rm ${workflow_project_dir}/outputs/raw-BOM.csv ${workflow_project_dir}/outputs/raw-CPL.csv + python3 scripts/jlc_cpl_formatter.py ${workflow_project_dir}/outputs/raw-CPL-top.csv ${workflow_project_dir}/outputs/${kicad_project_name}-CPL-top.csv + python3 scripts/jlc_cpl_formatter.py ${workflow_project_dir}/outputs/raw-CPL-bot.csv ${workflow_project_dir}/outputs/${kicad_project_name}-CPL-bot.csv + sudo rm ${workflow_project_dir}/outputs/raw-BOM.csv ${workflow_project_dir}/outputs/raw-CPL.csv ${workflow_project_dir}/outputs/raw-CPL-top.csv ${workflow_project_dir}/outputs/raw-CPL-bot.csv - name: Export mechanical files run: | @@ -63,4 +67,4 @@ jobs: if: always() with: name: documentation-artifacts - path: hardware/outputs + path: hardware/outputs \ No newline at end of file diff --git a/hardware/lemon-pepper-pcb-back.pdf b/hardware/lemon-pepper-pcb-back.pdf deleted file mode 100644 index 5806fb4..0000000 Binary files a/hardware/lemon-pepper-pcb-back.pdf and /dev/null differ diff --git a/hardware/lemon-pepper-pcb-front.pdf b/hardware/lemon-pepper-pcb-front.pdf deleted file mode 100644 index 7fd1675..0000000 Binary files a/hardware/lemon-pepper-pcb-front.pdf and /dev/null differ diff --git a/hardware/lemon-pepper-sch.pdf b/hardware/lemon-pepper-sch.pdf deleted file mode 100644 index 3091695..0000000 Binary files a/hardware/lemon-pepper-sch.pdf and /dev/null differ diff --git a/scripts/dependencies.sh b/scripts/dependencies.sh index 4e6a4a7..c47da14 100755 --- a/scripts/dependencies.sh +++ b/scripts/dependencies.sh @@ -4,7 +4,7 @@ set -v DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" -sudo add-apt-repository --yes ppa:kicad/kicad-8.0-releases +sudo add-apt-repository --yes ppa:kicad/kicad-9.0-releases sudo apt-get update -qq sudo DEBIAN_FRONTEND=noninteractive apt install --install-recommends kicad kicad-packages3d- kicad-demos- sudo DEBIAN_FRONTEND=noninteractive apt install python3 pip diff --git a/scripts/jlc_bom_formatter.py b/scripts/jlc_bom_formatter.py index ccf89f5..7d6a937 100644 --- a/scripts/jlc_bom_formatter.py +++ b/scripts/jlc_bom_formatter.py @@ -10,11 +10,14 @@ def footprintFix(fpName): return propertiesList[1][-1] + propertiesList[2] # Strip out library name from FP. - return fpName.split(":")[-1] + if isinstance(fpName, float): + print("Malformed BOM, check you are not missing footprint assignments.") + else: + return fpName.split(":")[-1] bom_file = pd.read_csv(sys.argv[1]) bom_file.columns = ['Designator', 'Value', 'Footprint', 'JLCPCB Part #'] bom_file['Footprint'] = bom_file['Footprint'].apply(lambda x: footprintFix(x)) -bom_file.to_csv(sys.argv[2], index=False) +bom_file.to_csv(sys.argv[2], index=False) \ No newline at end of file diff --git a/scripts/jlc_cpl_formatter.py b/scripts/jlc_cpl_formatter.py index ab3cb60..8a09e34 100644 --- a/scripts/jlc_cpl_formatter.py +++ b/scripts/jlc_cpl_formatter.py @@ -1,11 +1,26 @@ import pandas as pd import os, sys, csv -cpl_file = pd.read_csv(sys.argv[1]) +def reduce_layer(layername): + if 'top' in layername: + return 'T' + elif 'bottom' in layername: + return 'B' + else: + return '' -cpl_file.columns = ['Designator', 'Val', 'Package', 'Mid X', 'Mid Y', 'Rotation', 'Layer'] -cpl_file = cpl_file.reindex(columns=['Designator', 'Mid X', 'Mid Y', 'Layer', 'Rotation']) -cpl_file.drop([0,1,2,3,4,5]) -cpl_file['Layer'] = "T" +if __name__ == "__main__": + cpl_file = pd.read_csv(sys.argv[1]) -cpl_file.to_csv(sys.argv[2], index=False) + # Remove header rows from table + cpl_file.drop([0,1,2,3,4,5]) + + # Assign names and sort rows to match JLC format + cpl_file.columns = ['Designator', 'Val', 'Package', 'Mid X', 'Mid Y', 'Rotation', 'Layer'] + cpl_file = cpl_file.reindex(columns=['Designator', 'Mid X', 'Mid Y', 'Layer', 'Rotation']) + + # Change top/bottom to T/B + cpl_file['Layer'] = cpl_file['Layer'].apply(reduce_layer) + + # Write file to disk + cpl_file.to_csv(sys.argv[2], index=False) \ No newline at end of file