Compare commits
40
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
dcb8e2b31d | ||
|
|
e13db46dfa | ||
|
|
7c06256bee | ||
|
|
030f219700 | ||
|
|
e7454999c2 | ||
|
|
26b6ac1597 | ||
|
|
76392cb7a6 | ||
|
|
8a375a46c8 | ||
|
|
20c6c8a610 | ||
|
|
cf7629d7a6 | ||
|
|
9037cfc2a7 | ||
|
|
bd4680f740 | ||
|
|
b92ad097d2 | ||
|
|
f9446e4236 | ||
|
|
94b2302b00 | ||
|
|
dd4d6c6502 | ||
|
|
d46039e482 | ||
|
|
a0cc62e802 | ||
|
|
a8293c6d9c | ||
|
|
c55cf89237 | ||
|
|
c815ba7648 | ||
|
|
64be488d0b | ||
|
|
8debc2fcf5 | ||
|
|
bf2116394c | ||
|
|
cc785a58ec | ||
|
|
e50fa06fea | ||
|
|
7fcb1c5379 | ||
|
|
9f820c0d3e | ||
|
|
4d3879d36e | ||
|
|
3d0cfd6a85 | ||
|
|
dca4998b7b | ||
|
|
e8c26e0b21 | ||
|
|
da33466269 | ||
|
|
9ae0118685 | ||
|
|
3368f362ab | ||
|
|
18c353f25c | ||
|
|
b8b7f18827 | ||
|
|
40a29fef72 | ||
|
|
b9fad5d481 | ||
|
|
32f50cb1fc |
No files matched your search
@@ -6,9 +6,149 @@ on:
|
||||
types: [ published ]
|
||||
|
||||
jobs:
|
||||
|
||||
export-ecad:
|
||||
name: Export ECAD
|
||||
runs-on: ubuntu-latest
|
||||
container: setsoft/kicad_auto:ki7
|
||||
|
||||
steps:
|
||||
|
||||
- name: Generate Short SHA Environment Variable
|
||||
run: echo "SHORT_SHA=`echo ${GITHUB_SHA} | cut -c1-8`" >> $GITHUB_ENV
|
||||
|
||||
- name: Update system repositories, Install Required Libraries and Initialize git-lfs
|
||||
run: |
|
||||
apt update
|
||||
apt -y install git git-lfs zip librsvg2-bin imagemagick
|
||||
git lfs install
|
||||
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
lfs: true
|
||||
|
||||
- name: Extract branch name
|
||||
shell: bash
|
||||
run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})"
|
||||
id: extract_branch
|
||||
|
||||
- name: Update the PCBs with on default branch with git hash
|
||||
if: github.event_name == 'release' || steps.extract_branch.outputs.branch == env.main_branch
|
||||
run: |
|
||||
export COMMIT=$(git rev-parse --short HEAD)
|
||||
echo "COMMIT = ${COMMIT}"
|
||||
echo "ref: ${{ github.ref }}"
|
||||
echo "default: ${{ env.default }}"
|
||||
sed -i "s!<<hash>>!${COMMIT}!" pcb/mobo/mobo.kicad_pcb
|
||||
sed -i "s!<<hash>>!${COMMIT}!" pcb/feederFloor/feederFloor.kicad_pcb
|
||||
sed -i "s!<<hash>>!${COMMIT}!" pcb/indexingWheel/indexingWheel.kicad_pcb
|
||||
sed -i "s!<<hash>>!${COMMIT}!" pcb/light-diffusion/light-diffusion.kicad_pcb
|
||||
sed -i "s!<<hash>>!${COMMIT}!" pcb/photon-8mm-fid/photon-8mm-fid.kicad_pcb
|
||||
|
||||
- name: Update the PCBs with the git hash and BETA.
|
||||
if: steps.extract_branch.outputs.branch != env.main_branch
|
||||
run: |
|
||||
export COMMIT=$(git rev-parse --short HEAD)
|
||||
echo "COMMIT = ${COMMIT}"
|
||||
sed -i "s!<<hash>>!BETA-${COMMIT}!" pcb/mobo/mobo.kicad_pcb
|
||||
sed -i "s!<<hash>>!BETA-${COMMIT}!" pcb/feederFloor/feederFloor.kicad_pcb
|
||||
sed -i "s!<<hash>>!BETA-${COMMIT}!" pcb/indexingWheel/indexingWheel.kicad_pcb
|
||||
sed -i "s!<<hash>>!BETA-${COMMIT}!" pcb/light-diffusion/light-diffusion.kicad_pcb
|
||||
sed -i "s!<<hash>>!BETA-${COMMIT}!" pcb/photon-8mm-fid/fiducialBoard.kicad_pcb
|
||||
|
||||
- name: Generate Mobo Export Files
|
||||
run: |
|
||||
cd pcb/mobo
|
||||
rm -rf mobo/
|
||||
kibot -c ../../.github/workflows/scripts/kibot/config-2layer.kibot.yaml -e mobo.kicad_sch -b mobo.kicad_pcb -d mobo
|
||||
zip -r -j mobo.zip mobo/
|
||||
|
||||
- name: Generate Slot Export Files
|
||||
run: |
|
||||
cd pcb/feederFloor
|
||||
rm -rf feeder-floor/
|
||||
kibot -c ../../.github/workflows/scripts/kibot/config-2layer.kibot.yaml -e feederFloor.kicad_sch -b feederFloor.kicad_pcb -d slot
|
||||
zip -r -j slot.zip slot/
|
||||
|
||||
- name: Generate Indexing Wheel Export Files
|
||||
run: |
|
||||
cd pcb/indexingWheel
|
||||
rm -rf indexing-wheel/
|
||||
kibot -c ../../.github/workflows/scripts/kibot/config-2layer.kibot.yaml -e indexingWheel.kicad_sch -b indexingWheel.kicad_pcb -d indexing-wheel
|
||||
zip -r -j indexing-wheel.zip indexing-wheel/
|
||||
|
||||
- name: Generate Light Diffusion Export Files
|
||||
run: |
|
||||
cd pcb/light-diffusion
|
||||
rm -rf light-diffusion/
|
||||
kibot -c ../../.github/workflows/scripts/kibot/config-2layer.kibot.yaml -e light-diffusion.kicad_sch -b light-diffusion.kicad_pcb -d light-diffusion
|
||||
zip -r -j light-diffusion.zip light-diffusion/
|
||||
|
||||
- name: Generate Photon 8mm Fiducial Export Files
|
||||
run: |
|
||||
cd pcb/photon-8mm-fid
|
||||
rm -rf photon-8mm-fid/
|
||||
kibot -c ../../.github/workflows/scripts/kibot/config-2layer.kibot.yaml -e fiducialBoard.kicad_sch -b fiducialBoard.kicad_pcb -d photon-8mm-fid
|
||||
zip -r -j photon-8mm-fid.zip photon-8mm-fid/
|
||||
|
||||
- name: Generate Photon 12mm Fiducial Export Files
|
||||
run: |
|
||||
cd pcb/photon-12mm-fid
|
||||
rm -rf photon-12mm-fid/
|
||||
kibot -c ../../.github/workflows/scripts/kibot/config-2layer.kibot.yaml -e fiducialBoard.kicad_sch -b fiducialBoard.kicad_pcb -d photon-12mm-fid
|
||||
zip -r -j photon-12mm-fid.zip photon-12mm-fid/
|
||||
|
||||
- name: Generate Photon 16mm Fiducial Export Files
|
||||
run: |
|
||||
cd pcb/photon-16mm-fid
|
||||
rm -rf photon-16mm-fid/
|
||||
kibot -c ../../.github/workflows/scripts/kibot/config-2layer.kibot.yaml -e fiducialBoard.kicad_sch -b fiducialBoard.kicad_pcb -d photon-16mm-fid
|
||||
zip -r -j photon-16mm-fid.zip photon-16mm-fid/
|
||||
|
||||
- name: Generate Photon 24mm Fiducial Export Files
|
||||
run: |
|
||||
cd pcb/photon-24mm-fid
|
||||
rm -rf photon-24mm-fid/
|
||||
kibot -c ../../.github/workflows/scripts/kibot/config-2layer.kibot.yaml -e fiducialBoard.kicad_sch -b fiducialBoard.kicad_pcb -d photon-24mm-fid
|
||||
zip -r -j photon-24mm-fid.zip photon-24mm-fid/
|
||||
|
||||
- name: Zip PCB Export Files for Artifacts
|
||||
run: |
|
||||
cd pcb/
|
||||
zip -r -j Feeder-PCBs.zip photon-8mm-fid/photon-8mm-fid.zip photon-12mm-fid/photon-12mm-fid.zip photon-16mm-fid/photon-16mm-fid.zip photon-24mm-fid/photon-24mm-fid.zip light-diffusion/light-diffusion.zip indexingWheel/indexing-wheel.zip feederFloor/slot.zip mobo/mobo.zip
|
||||
|
||||
- name: Zip PCB Export Files for Release
|
||||
run: |
|
||||
cd pcb/
|
||||
zip -r -j Feeder-PCBs-${{ github.event.release.tag_name }}.zip photon-8mm-fid/photon-8mm-fid.zip photon-12mm-fid/photon-12mm-fid.zip photon-16mm-fid/photon-16mm-fid.zip photon-24mm-fid/photon-24mm-fid.zip light-diffusion/light-diffusion.zip indexingWheel/indexing-wheel.zip feederFloor/slot.zip mobo/mobo.zip
|
||||
|
||||
- name: Zip Top Images for BOM
|
||||
run: |
|
||||
mkdir pcb-images
|
||||
cp pcb/mobo/mobo/mobo-top.png pcb-images/mobo.png
|
||||
cp pcb/feederFloor/slot/feederFloor-top.png pcb-images/slot.png
|
||||
cp pcb/indexingWheel/indexing-wheel/indexingWheel-top.png pcb-images/drive-wheel.png
|
||||
cp pcb/light-diffusion/light-diffusion/light-diffusion-top.png pcb-images/light-diffusion.png
|
||||
cp pcb/photon-8mm-fid/photon-8mm-fid/fiducialBoard-top.png pcb-images/photon-8mm-fid.png
|
||||
cp pcb/photon-12mm-fid/photon-12mm-fid/fiducialBoard-top.png pcb-images/photon-12mm-fid.png
|
||||
cp pcb/photon-16mm-fid/photon-16mm-fid/fiducialBoard-top.png pcb-images/photon-16mm-fid.png
|
||||
cp pcb/photon-24mm-fid/photon-24mm-fid/fiducialBoard-top.png pcb-images/photon-24mm-fid.png
|
||||
zip -r -j pcb-images.zip pcb-images/
|
||||
|
||||
- name: Upload PCB Images as Artifacts
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: pcb-images
|
||||
path: pcb-images/
|
||||
if-no-files-found: error
|
||||
retention-days: 60
|
||||
|
||||
generate-bom:
|
||||
name: Generate BOM
|
||||
runs-on: ubuntu-20.04
|
||||
needs:
|
||||
export-ecad
|
||||
steps:
|
||||
- name: Generate Short SHA Environment Variable
|
||||
run: echo "SHORT_SHA=`echo ${GITHUB_SHA} | cut -c1-8`" >> $GITHUB_ENV
|
||||
@@ -28,8 +168,8 @@ jobs:
|
||||
- name: Generate BOM HTML Page for Workflow Dispatch
|
||||
if: github.event_name != 'release'
|
||||
run: |
|
||||
python3 .github/workflows/scripts/export-bom.py ${SHORT_SHA}
|
||||
|
||||
python3 .github/workflows/scripts/export-bom.py ${SHORT_SHA}
|
||||
|
||||
- name: Install FreeCAD Python library
|
||||
run: |
|
||||
sudo apt -qq update
|
||||
@@ -75,7 +215,6 @@ jobs:
|
||||
export DISPLAY=:5
|
||||
python3 .github/workflows/scripts/generate-stl-img.py ${{ github.event.release.tag_name }}
|
||||
|
||||
|
||||
- name: Generate STL Images for Workflow Dispatch
|
||||
if: github.event_name != 'release'
|
||||
run: |
|
||||
@@ -83,11 +222,43 @@ jobs:
|
||||
Xvfb :5 -screen 0 800x600x24 &
|
||||
export DISPLAY=:5
|
||||
python3 .github/workflows/scripts/generate-stl-img.py ${SHORT_SHA}
|
||||
|
||||
- name: Make folder to Host PCB Images
|
||||
run: |
|
||||
mkdir pcb-images
|
||||
ls -al
|
||||
cd pcb-images
|
||||
ls -al
|
||||
|
||||
- name: Download PCB Images
|
||||
if: github.event_name != 'release'
|
||||
uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: pcb-images
|
||||
path: pcb-images/
|
||||
|
||||
- name: Move PCB Images for Workflow Dispatch
|
||||
if: github.event_name != 'release'
|
||||
run: |
|
||||
ls -al
|
||||
ls -al pcb-images
|
||||
mv pcb-images/*.png Feeder-${SHORT_SHA}/img/
|
||||
ls -al Feeder-${SHORT_SHA}/img/
|
||||
|
||||
- name: Move PCB Images for Release
|
||||
if: github.event_name == 'release'
|
||||
run: |
|
||||
ls -al
|
||||
ls -al pcb-images
|
||||
mv pcb-images/* Feeder-${{ github.event.release.tag_name }}/img/
|
||||
ls -al Feeder-${{ github.event.release.tag_name }}/img/
|
||||
|
||||
|
||||
- name: Zip BOM Directory for Workflow Dispatch
|
||||
if: github.event_name != 'release'
|
||||
run: |
|
||||
zip -r Feeder-BOM.zip Feeder-${SHORT_SHA} Feeder-${SHORT_SHA}/img
|
||||
ls -al
|
||||
zip -r Feeder-BOM.zip Feeder-${SHORT_SHA} Feeder-${SHORT_SHA}/img
|
||||
ls -al
|
||||
|
||||
- name: Zip BOM Directory for Release
|
||||
@@ -95,7 +266,7 @@ jobs:
|
||||
run: |
|
||||
zip -r Feeder-BOM-${{ github.event.release.tag_name }}.zip Feeder-${{ github.event.release.tag_name }} Feeder-${{ github.event.release.tag_name }}/img
|
||||
|
||||
- name: upload BOM results
|
||||
- name: Upload BOM results
|
||||
if: github.event_name != 'release'
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
|
||||
@@ -43,6 +43,9 @@ jobs:
|
||||
sed -i "s!<<hash>>!${COMMIT}!" pcb/indexingWheel/indexingWheel.kicad_pcb
|
||||
sed -i "s!<<hash>>!${COMMIT}!" pcb/light-diffusion/light-diffusion.kicad_pcb
|
||||
sed -i "s!<<hash>>!${COMMIT}!" pcb/photon-8mm-fid/photon-8mm-fid.kicad_pcb
|
||||
sed -i "s!<<hash>>!${COMMIT}!" pcb/photon-8mm-fid/photon-12mm-fid.kicad_pcb
|
||||
sed -i "s!<<hash>>!${COMMIT}!" pcb/photon-8mm-fid/photon-16mm-fid.kicad_pcb
|
||||
sed -i "s!<<hash>>!${COMMIT}!" pcb/photon-8mm-fid/photon-24mm-fid.kicad_pcb
|
||||
|
||||
- name: Update the PCBs with the git hash and BETA.
|
||||
if: steps.extract_branch.outputs.branch != env.main_branch
|
||||
@@ -54,6 +57,9 @@ jobs:
|
||||
sed -i "s!<<hash>>!BETA-${COMMIT}!" pcb/indexingWheel/indexingWheel.kicad_pcb
|
||||
sed -i "s!<<hash>>!BETA-${COMMIT}!" pcb/light-diffusion/light-diffusion.kicad_pcb
|
||||
sed -i "s!<<hash>>!BETA-${COMMIT}!" pcb/photon-8mm-fid/fiducialBoard.kicad_pcb
|
||||
sed -i "s!<<hash>>!BETA-${COMMIT}!" pcb/photon-12mm-fid/fiducialBoard.kicad_pcb
|
||||
sed -i "s!<<hash>>!BETA-${COMMIT}!" pcb/photon-16mm-fid/fiducialBoard.kicad_pcb
|
||||
sed -i "s!<<hash>>!BETA-${COMMIT}!" pcb/photon-24mm-fid/fiducialBoard.kicad_pcb
|
||||
|
||||
- name: Generate Mobo Export Files
|
||||
run: |
|
||||
@@ -90,15 +96,36 @@ jobs:
|
||||
kibot -c ../../.github/workflows/scripts/kibot/config-2layer.kibot.yaml -e fiducialBoard.kicad_sch -b fiducialBoard.kicad_pcb -d photon-8mm-fid
|
||||
zip -r -j photon-8mm-fid.zip photon-8mm-fid/
|
||||
|
||||
- name: Generate Photon 12mm Fiducial Export Files
|
||||
run: |
|
||||
cd pcb/photon-12mm-fid
|
||||
rm -rf photon-12mm-fid/
|
||||
kibot -c ../../.github/workflows/scripts/kibot/config-2layer.kibot.yaml -e fiducialBoard.kicad_sch -b fiducialBoard.kicad_pcb -d photon-12mm-fid
|
||||
zip -r -j photon-12mm-fid.zip photon-12mm-fid/
|
||||
|
||||
- name: Generate Photon 16mm Fiducial Export Files
|
||||
run: |
|
||||
cd pcb/photon-16mm-fid
|
||||
rm -rf photon-16mm-fid/
|
||||
kibot -c ../../.github/workflows/scripts/kibot/config-2layer.kibot.yaml -e fiducialBoard.kicad_sch -b fiducialBoard.kicad_pcb -d photon-16mm-fid
|
||||
zip -r -j photon-16mm-fid.zip photon-16mm-fid/
|
||||
|
||||
- name: Generate Photon 24mm Fiducial Export Files
|
||||
run: |
|
||||
cd pcb/photon-24mm-fid
|
||||
rm -rf photon-24mm-fid/
|
||||
kibot -c ../../.github/workflows/scripts/kibot/config-2layer.kibot.yaml -e fiducialBoard.kicad_sch -b fiducialBoard.kicad_pcb -d photon-24mm-fid
|
||||
zip -r -j photon-24mm-fid.zip photon-24mm-fid/
|
||||
|
||||
- name: Zip PCB Export Files for Artifacts
|
||||
run: |
|
||||
cd pcb/
|
||||
zip -r -j Feeder-PCBs.zip photon-8mm-fid/photon-8mm-fid.zip light-diffusion/light-diffusion.zip indexingWheel/indexing-wheel.zip feederFloor/slot.zip mobo/mobo.zip
|
||||
zip -r -j Feeder-PCBs.zip photon-8mm-fid/photon-8mm-fid.zip photon-12mm-fid/photon-12mm-fid.zip photon-16mm-fid/photon-16mm-fid.zip photon-24mm-fid/photon-24mm-fid.zip light-diffusion/light-diffusion.zip indexingWheel/indexing-wheel.zip feederFloor/slot.zip mobo/mobo.zip
|
||||
|
||||
- name: Zip PCB Export Files for Release
|
||||
run: |
|
||||
cd pcb/
|
||||
zip -r -j Feeder-PCBs-${{ github.event.release.tag_name }}.zip photon-8mm-fid/photon-8mm-fid.zip light-diffusion/light-diffusion.zip indexingWheel/indexing-wheel.zip feederFloor/slot.zip mobo/mobo.zip
|
||||
zip -r -j Feeder-PCBs-${{ github.event.release.tag_name }}.zip photon-8mm-fid/photon-8mm-fid.zip photon-12mm-fid/photon-12mm-fid.zip photon-16mm-fid/photon-16mm-fid.zip photon-24mm-fid/photon-24mm-fid.zip light-diffusion/light-diffusion.zip indexingWheel/indexing-wheel.zip feederFloor/slot.zip mobo/mobo.zip
|
||||
|
||||
- name: Upload PCB Export Files as Artifacts
|
||||
uses: actions/upload-artifact@v2
|
||||
|
||||
@@ -13,108 +13,114 @@ if not os.path.exists(dirName):
|
||||
else:
|
||||
print("Directory " , dirName , " already exists")
|
||||
|
||||
versions = [
|
||||
["8mm", "bom-8.csv"],
|
||||
["12mm", "bom-12.csv"],
|
||||
["16mm", "bom-16.csv"],
|
||||
["24mm", "bom-24.csv"]
|
||||
]
|
||||
|
||||
# make html file that will become our BOM
|
||||
f = open(dirName + "/bom_" + sys.argv[1] + ".html", "w")
|
||||
f.write("""
|
||||
<!DOCTYPE html>
|
||||
<head>
|
||||
<style>
|
||||
body {
|
||||
background-color: #222;
|
||||
padding: 30px;
|
||||
font-family: helvetica;
|
||||
color: #fff
|
||||
}
|
||||
table {
|
||||
width: 100%;
|
||||
position: relative;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
h1 {
|
||||
color:white;
|
||||
}
|
||||
.optional {
|
||||
background-color: #430;
|
||||
}
|
||||
tr.titlerow th {
|
||||
background-color: goldenrod;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
}
|
||||
for version in versions:
|
||||
|
||||
th, td {
|
||||
padding: 10px;
|
||||
text-align: left;
|
||||
border-bottom: 2px solid #fff
|
||||
}
|
||||
a {
|
||||
color:goldenrod;
|
||||
}
|
||||
# make html file that will become our BOM
|
||||
f = open(dirName + "/" + version[0] + "_feeder_bom_" + sys.argv[1] + ".html", "w")
|
||||
f.write("""
|
||||
<!DOCTYPE html>
|
||||
<head>
|
||||
<style>
|
||||
body {
|
||||
background-color: #222;
|
||||
padding: 30px;
|
||||
font-family: helvetica;
|
||||
color: #fff
|
||||
}
|
||||
table {
|
||||
width: 100%;
|
||||
position: relative;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
h1 {
|
||||
color:white;
|
||||
}
|
||||
.optional {
|
||||
background-color: #430;
|
||||
}
|
||||
tr.titlerow th {
|
||||
background-color: goldenrod;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
img {
|
||||
width: 150px;
|
||||
}
|
||||
th, td {
|
||||
padding: 10px;
|
||||
text-align: left;
|
||||
border-bottom: 2px solid #fff
|
||||
}
|
||||
a {
|
||||
color:goldenrod;
|
||||
}
|
||||
|
||||
#logo {
|
||||
width: 250px;
|
||||
position: absolute;
|
||||
top: 30px;
|
||||
right: 50px;
|
||||
}
|
||||
img {
|
||||
width: 150px;
|
||||
}
|
||||
|
||||
tr:hover {
|
||||
background-color: #444;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>
|
||||
""")
|
||||
#logo {
|
||||
width: 250px;
|
||||
position: absolute;
|
||||
top: 30px;
|
||||
right: 50px;
|
||||
}
|
||||
|
||||
#write page title based on script
|
||||
f.write("LumenPnP Feeder BOM " + sys.argv[1])
|
||||
tr:hover {
|
||||
background-color: #444;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>
|
||||
""")
|
||||
|
||||
#write the beginning of table, and row for header
|
||||
f.write("</h1><a href='https://www.github.com/opulo-inc/feeder/releases/' target='_blank' rel='noopener noreferrer'><h2>Download the Source Here</h2></a><a href='https://www.opulo.io/' target='_blank' rel='noopener noreferrer'><img src='https://cdn.shopify.com/s/files/1/0570/4256/7355/files/opulo-white-alpha_1200x1200.png?v=1644515300' id='logo'/></a><table>")
|
||||
#write page title based on script
|
||||
f.write("LumenPnP " + version[0] + " Feeder BOM " + sys.argv[1])
|
||||
|
||||
with open('bom.csv') as bom:
|
||||
csv_reader = csv.reader(bom, delimiter=',')
|
||||
line_count = 0
|
||||
|
||||
for row in csv_reader:
|
||||
column = 0
|
||||
#write the beginning of table, and row for header
|
||||
f.write("</h1><a href='https://www.github.com/opulo-inc/feeder/releases/' target='_blank' rel='noopener noreferrer'><h2>Download the Source Here</h2></a><a href='https://www.opulo.io/' target='_blank' rel='noopener noreferrer'><img src='https://cdn.shopify.com/s/files/1/0570/4256/7355/files/opulo-white-alpha_1200x1200.png?v=1644515300' id='logo'/></a><table>")
|
||||
|
||||
if line_count == 0: #if header row, just print what's there
|
||||
f.write("<tr class='titlerow'>")
|
||||
while column < len(row):
|
||||
f.write("<th style='color:black;'>" + row[column] + "</th>")
|
||||
column += 1
|
||||
else: #if content row
|
||||
if row[6] != "":
|
||||
f.write("<tr class='optional'>")
|
||||
else:
|
||||
f.write("<tr>")
|
||||
with open(version[1]) as bom:
|
||||
csv_reader = csv.reader(bom, delimiter=',')
|
||||
line_count = 0
|
||||
|
||||
for row in csv_reader:
|
||||
column = 0
|
||||
|
||||
while column < len(row):
|
||||
|
||||
# handling images
|
||||
if column == 1 and row[3] != "FDM":
|
||||
f.write("<th><img src='" + row[column] + "' /></th>")
|
||||
elif column == 1 and row[3] == "FDM":
|
||||
f.write("<th><img src='img/" + row[0] + ".png' /></th>")
|
||||
|
||||
# handling links
|
||||
elif (column == 4 or column == 5) and row[3] != "FDM" and row[column] != "":
|
||||
f.write("<th><a href='" + row[column] + "' target='_blank' rel='noopener noreferrer'/>Link</a></th>")
|
||||
# all other cells
|
||||
if line_count == 0: #if header row, just print what's there
|
||||
f.write("<tr class='titlerow'>")
|
||||
while column < len(row):
|
||||
f.write("<th style='color:black;'>" + row[column] + "</th>")
|
||||
column += 1
|
||||
else: #if content row
|
||||
if row[6] != "":
|
||||
f.write("<tr class='optional'>")
|
||||
else:
|
||||
f.write("<th>" + row[column] + "</th>")
|
||||
column += 1
|
||||
f.write("</tr>")
|
||||
line_count += 1
|
||||
f.write("<tr>")
|
||||
|
||||
f.write("</table></body></html>")
|
||||
while column < len(row):
|
||||
|
||||
# handling images
|
||||
if column == 1 and row[3] != "FDM" and row[3] != "PCB" and row[3] != "PCA":
|
||||
f.write("<th><img src='" + row[column] + "' /></th>")
|
||||
elif column == 1 and (row[3] == "FDM" or row[3] == "PCB" or row[3] == "PCA"):
|
||||
f.write("<th><img src='img/" + row[0] + ".png' /></th>")
|
||||
|
||||
f.close()
|
||||
# handling links
|
||||
elif (column == 4 or column == 5) and row[3] != "FDM" and row[column] != "":
|
||||
f.write("<th><a href='" + row[column] + "' target='_blank' rel='noopener noreferrer'/>Link</a></th>")
|
||||
# all other cells
|
||||
else:
|
||||
f.write("<th>" + row[column] + "</th>")
|
||||
column += 1
|
||||
f.write("</tr>")
|
||||
line_count += 1
|
||||
|
||||
f.write("</table></body></html>")
|
||||
f.close()
|
||||
@@ -41,29 +41,7 @@ def process_file(cad_file: Path):
|
||||
|
||||
doc = FreeCAD.open(str(cad_file.absolute()))
|
||||
|
||||
bom = open("../../../bom.csv")
|
||||
|
||||
csv_reader = csv.reader(bom, delimiter=',')
|
||||
count = 0
|
||||
flag = False
|
||||
for row in csv_reader:
|
||||
if row[0] == cad_file.name[:-6]:
|
||||
print("found a part!")
|
||||
print(row[0])
|
||||
count = row[2]
|
||||
print(count)
|
||||
if count != "-" and count != "":
|
||||
flag = True
|
||||
break
|
||||
|
||||
#generates name with quantity
|
||||
if flag:
|
||||
name = cad_file.name[:-6] + "_" + count + "x"
|
||||
print("making count name")
|
||||
else:
|
||||
name = cad_file.name[:-6]
|
||||
print("making no count name")
|
||||
|
||||
name = cad_file.name[:-6]
|
||||
|
||||
# # Getting file name from part number emboss
|
||||
# name_options = [obj.String for obj in doc.Objects if
|
||||
|
||||
@@ -146,21 +146,3 @@ An STM32F031C6T6 was chosen for the feeder's microcontroller. There were a few r
|
||||
As a bonus, the chip's sibling, the STM32F031K6U6, has the same die as the C6T6 but with a smaller package. This means that by using the smaller chip's GPIO count as a constraint, we have a binary-compatible drop in replacement part to help alleviate availability issues.
|
||||
|
||||
Although a separate EEPROM chip or a software-defined UUID could solve the same problem as having a factory-burned UUID, having it in the chip prevents UUID erasure upon reprogramming, and fewer parts in the BOM.
|
||||
|
||||
## ID Fiducial Board
|
||||
|
||||
There's a small board on the nose of the feeder with three fiducials on it. The center one is for identifying location, and the other, smaller fiducials on either side identify what type of feeder it is.
|
||||
|
||||
**This is not currently used. This board was shipped with all feeder hardware to support potential future features.**
|
||||
|
||||
### Can it be used for setting pick position?
|
||||
|
||||
It could be used for *generalized* pick position. In general, there's too much variability in the precise placement of the PCB in the print from human error and print defects. If OpenPnP can scan for the fiducial and then apply a general offset to find the broad pick position, computer vision can find the precise pick position, provided it's paper tape. Plastic tape would likely need the precise pick position set manually.
|
||||
|
||||
### Can it be used for identifying feeder width?
|
||||
|
||||
Absolutely! The distance the two smaller fiducials are away from the larger centered one encodes what feeder type, or width, it is. Ideally the firmware image is the same across feeder widths, and it can't hurt to have the fiducial encode that information. OpenPnP doesn't actually care that much what width a feeder is if the fiducial <-> pick position offset is set correctly.
|
||||
|
||||
### Can it be used for setting slot location?
|
||||
|
||||
It can, but it might not be useful in most circumstances. In a world where slots are always mounted in the same location, OpenPnP could always know where the slot locations are on a LumenPnP. However, if builders have a different slot setup, or folks trying to squeeze out every last mm of feeder space are adjusting their slot locations to accommodate wider feeders, it could be useful. OpenPnP could use vision across a given Y position and in conjunction with the slot addresses of the feeders it found over RS485, automatically set slot positions.
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
Part Name,Image,Quantity,Part Type,Source 1,Source 2,Optional,Note
|
||||
frame-12,,1,FDM,Download all 3D printed parts at the link at the top of the page.,,,
|
||||
drive-motor-bracket,,1,FDM,Download all 3D printed parts at the link at the top of the page.,,,
|
||||
drive-motor-cover,,1,FDM,Download all 3D printed parts at the link at the top of the page.,,,
|
||||
peel-gear-frame-1u,,1,FDM,Download all 3D printed parts at the link at the top of the page.,,,
|
||||
peel-gear-1u,,2,FDM,Download all 3D printed parts at the link at the top of the page.,,,
|
||||
peel-worm-gear,,1,FDM,Download all 3D printed parts at the link at the top of the page.,,,
|
||||
release-lever-1u,,1,FDM,Download all 3D printed parts at the link at the top of the page.,,,
|
||||
slot-bracket,,1,FDM,Download all 3D printed parts at the link at the top of the page.,,,
|
||||
tape-guide-1u,,1,FDM,Download all 3D printed parts at the link at the top of the page.,,,Used to guide tape into feeder for spools mounted beneath the machine.
|
||||
"PLA-filament ",https://cdn.shopify.com/s/files/1/0570/4256/7355/files/filament.png?v=1686314492,1.2,FIL,https://www.microcenter.com/product/611532/inland-175mm-black-pla-3d-printer-filament-1kg-spool-(22-lbs),,,Units in kg. Print both nozzle-rack and 2x z-gantry in a black color. Print top-light-mount and bottom-light-mount in a white color.
|
||||
M5-t-slot-nut,https://cdn.shopify.com/s/files/1/0570/4256/7355/files/M5-tslot-nut.jpg?v=1686314676,1,FST,https://www.amazon.com/Fastener-Nickel-Plated-Sliding-Aluminum-Profile/dp/B086MKNYDS/ref=sxin_16_pa_sp_search_thematic_sspa,,,
|
||||
M3x14mm-flat-head,https://cdn.shopify.com/s/files/1/0570/4256/7355/files/M3x14mm.png?v=1686314903,3,FST,https://www.mcmaster.com/92095A168/,,,
|
||||
M5x10mm-socket-head,https://cdn.shopify.com/s/files/1/0570/4256/7355/files/M5x10mm.png?v=1686314995,1,FST,https://www.mcmaster.com/90128A234/,,,ISO4762
|
||||
M3x8mm-self-tapping-flat-head,https://cdn.shopify.com/s/files/1/0570/4256/7355/files/M3x8mm-self-tapping-flat-head.png?v=1686314923,1,FST,https://www.mcmaster.com/95893A189/,,,
|
||||
M3x12mm-self-tapping-flat-head,https://cdn.shopify.com/s/files/1/0570/4256/7355/files/M3x12-self-tapping-flat-head.png?v=1686314903,11,FST,https://www.mcmaster.com/95893A403/,,,
|
||||
mobo,,1,PCA,,,,Click link above to download source
|
||||
slot,,1,PCA,,,,Click link above to download source
|
||||
drive-wheel,,1,PCB,,,,Click link above to download source
|
||||
light-diffusion,,1,PCB,,,,Click link above to download source
|
||||
photon-12mm-fid,,1,PCB,,,,Click link above to download source
|
||||
slot-harness,,1,CHA,,,,Click link above to download source
|
||||
n20-motor,https://cdn.shopify.com/s/files/1/0570/4256/7355/files/n20.jpg?v=1686329653,4,MISC,https://www.servocity.com/110-rpm-micro-gear-motor/,,,1:210 gear ratio.
|
||||
right-angle-n20,https://cdn.shopify.com/s/files/1/0570/4256/7355/files/right-angle-n20.jpg?v=1686329653,2,MISC,https://www.aliexpress.com/w/wholesale-worm-n20-encoder.html?catId=0&initiative_id=SB_20230324123628&SearchText=worm+n20+encoder,,,14-tick per revolution encoder. 1:1030 gear ratio gearbox.
|
||||
shaft-collar,https://cdn.shopify.com/s/files/1/0570/4256/7355/files/shaft-collar.jpg?v=1686329653,2,MISC,https://www.amazon.com/gp/product/B01EA912P8/ref=ppx_yo_dt_b_asin_title_o09_s00?ie=UTF8,,,
|
||||
|
+25
@@ -0,0 +1,25 @@
|
||||
Part Name,Image,Quantity,Part Type,Source 1,Source 2,Optional,Note
|
||||
frame-16,,1,FDM,Download all 3D printed parts at the link at the top of the page.,,,
|
||||
drive-motor-bracket,,1,FDM,Download all 3D printed parts at the link at the top of the page.,,,
|
||||
drive-motor-cover,,1,FDM,Download all 3D printed parts at the link at the top of the page.,,,
|
||||
peel-gear-frame-2u,,1,FDM,Download all 3D printed parts at the link at the top of the page.,,,
|
||||
peel-gear-2u,,2,FDM,Download all 3D printed parts at the link at the top of the page.,,,
|
||||
peel-worm-gear,,1,FDM,Download all 3D printed parts at the link at the top of the page.,,,
|
||||
release-lever-2u,,1,FDM,Download all 3D printed parts at the link at the top of the page.,,,
|
||||
slot-bracket,,1,FDM,Download all 3D printed parts at the link at the top of the page.,,,
|
||||
tape-guide-2u,,1,FDM,Download all 3D printed parts at the link at the top of the page.,,,Used to guide tape into feeder for spools mounted beneath the machine.
|
||||
"PLA-filament ",https://cdn.shopify.com/s/files/1/0570/4256/7355/files/filament.png?v=1686314492,1.2,FIL,https://www.microcenter.com/product/611532/inland-175mm-black-pla-3d-printer-filament-1kg-spool-(22-lbs),,,Units in kg. Print both nozzle-rack and 2x z-gantry in a black color. Print top-light-mount and bottom-light-mount in a white color.
|
||||
M5-t-slot-nut,https://cdn.shopify.com/s/files/1/0570/4256/7355/files/M5-tslot-nut.jpg?v=1686314676,1,FST,https://www.amazon.com/Fastener-Nickel-Plated-Sliding-Aluminum-Profile/dp/B086MKNYDS/ref=sxin_16_pa_sp_search_thematic_sspa,,,
|
||||
M3x25mm-flat-head,https://cdn.shopify.com/s/files/1/0570/4256/7355/files/M3x18mm.png?v=1686314956,3,FST,https://www.mcmaster.com/91294A138/,,,
|
||||
M5x10mm-socket-head,https://cdn.shopify.com/s/files/1/0570/4256/7355/files/M5x10mm.png?v=1686314995,1,FST,https://www.mcmaster.com/90128A234/,,,ISO4762
|
||||
M3x8mm-self-tapping-flat-head,https://cdn.shopify.com/s/files/1/0570/4256/7355/files/M3x8mm-self-tapping-flat-head.png?v=1686314923,1,FST,https://www.mcmaster.com/95893A189/,,,
|
||||
M3x12mm-self-tapping-flat-head,https://cdn.shopify.com/s/files/1/0570/4256/7355/files/M3x12-self-tapping-flat-head.png?v=1686314903,11,FST,https://www.mcmaster.com/95893A403/,,,
|
||||
mobo,,1,PCA,,,,Click link above to download source
|
||||
slot,,1,PCA,,,,Click link above to download source
|
||||
drive-wheel,,1,PCB,,,,Click link above to download source
|
||||
light-diffusion,,1,PCB,,,,Click link above to download source
|
||||
photon-16mm-fid,,1,PCB,,,,Click link above to download source
|
||||
slot-harness,,1,CHA,,,,Click link above to download source
|
||||
n20-motor,https://cdn.shopify.com/s/files/1/0570/4256/7355/files/n20.jpg?v=1686329653,4,MISC,https://www.servocity.com/110-rpm-micro-gear-motor/,,,1:210 gear ratio.
|
||||
right-angle-n20,https://cdn.shopify.com/s/files/1/0570/4256/7355/files/right-angle-n20.jpg?v=1686329653,2,MISC,https://www.aliexpress.com/w/wholesale-worm-n20-encoder.html?catId=0&initiative_id=SB_20230324123628&SearchText=worm+n20+encoder,,,14-tick per revolution encoder. 1:1030 gear ratio gearbox.
|
||||
shaft-collar,https://cdn.shopify.com/s/files/1/0570/4256/7355/files/shaft-collar.jpg?v=1686329653,2,MISC,https://www.amazon.com/gp/product/B01EA912P8/ref=ppx_yo_dt_b_asin_title_o09_s00?ie=UTF8,,,
|
||||
|
+25
@@ -0,0 +1,25 @@
|
||||
Part Name,Image,Quantity,Part Type,Source 1,Source 2,Optional,Note
|
||||
frame-24,,1,FDM,Download all 3D printed parts at the link at the top of the page.,,,
|
||||
drive-motor-bracket,,1,FDM,Download all 3D printed parts at the link at the top of the page.,,,
|
||||
drive-motor-cover,,1,FDM,Download all 3D printed parts at the link at the top of the page.,,,
|
||||
peel-gear-frame-2u,,1,FDM,Download all 3D printed parts at the link at the top of the page.,,,
|
||||
peel-gear-2u,,2,FDM,Download all 3D printed parts at the link at the top of the page.,,,
|
||||
peel-worm-gear,,1,FDM,Download all 3D printed parts at the link at the top of the page.,,,
|
||||
release-lever-2u,,1,FDM,Download all 3D printed parts at the link at the top of the page.,,,
|
||||
slot-bracket,,1,FDM,Download all 3D printed parts at the link at the top of the page.,,,
|
||||
tape-guide-2u,,1,FDM,Download all 3D printed parts at the link at the top of the page.,,,Used to guide tape into feeder for spools mounted beneath the machine.
|
||||
"PLA-filament ",https://cdn.shopify.com/s/files/1/0570/4256/7355/files/filament.png?v=1686314492,1.2,FIL,https://www.microcenter.com/product/611532/inland-175mm-black-pla-3d-printer-filament-1kg-spool-(22-lbs),,,Units in kg. Print both nozzle-rack and 2x z-gantry in a black color. Print top-light-mount and bottom-light-mount in a white color.
|
||||
M5-t-slot-nut,https://cdn.shopify.com/s/files/1/0570/4256/7355/files/M5-tslot-nut.jpg?v=1686314676,1,FST,https://www.amazon.com/Fastener-Nickel-Plated-Sliding-Aluminum-Profile/dp/B086MKNYDS/ref=sxin_16_pa_sp_search_thematic_sspa,,,
|
||||
M3x25mm-flat-head,https://cdn.shopify.com/s/files/1/0570/4256/7355/files/M3x18mm.png?v=1686314956,3,FST,https://www.mcmaster.com/91294A138/,,,
|
||||
M5x10mm-socket-head,https://cdn.shopify.com/s/files/1/0570/4256/7355/files/M5x10mm.png?v=1686314995,1,FST,https://www.mcmaster.com/90128A234/,,,ISO4762
|
||||
M3x8mm-self-tapping-flat-head,https://cdn.shopify.com/s/files/1/0570/4256/7355/files/M3x8mm-self-tapping-flat-head.png?v=1686314923,1,FST,https://www.mcmaster.com/95893A189/,,,
|
||||
M3x12mm-self-tapping-flat-head,https://cdn.shopify.com/s/files/1/0570/4256/7355/files/M3x12-self-tapping-flat-head.png?v=1686314903,11,FST,https://www.mcmaster.com/95893A403/,,,
|
||||
mobo,,1,PCA,,,,Click link above to download source
|
||||
slot,,1,PCA,,,,Click link above to download source
|
||||
drive-wheel,,1,PCB,,,,Click link above to download source
|
||||
light-diffusion,,1,PCB,,,,Click link above to download source
|
||||
photon-24mm-fid,,1,PCB,,,,Click link above to download source
|
||||
slot-harness,,1,CHA,,,,Click link above to download source
|
||||
n20-motor,https://cdn.shopify.com/s/files/1/0570/4256/7355/files/n20.jpg?v=1686329653,1,MISC,https://www.servocity.com/110-rpm-micro-gear-motor/,,,1:210 gear ratio.
|
||||
right-angle-n20,https://cdn.shopify.com/s/files/1/0570/4256/7355/files/right-angle-n20.jpg?v=1686329653,1,MISC,https://www.aliexpress.com/w/wholesale-worm-n20-encoder.html?catId=0&initiative_id=SB_20230324123628&SearchText=worm+n20+encoder,,,14-tick per revolution encoder. 1:1030 gear ratio gearbox.
|
||||
shaft-collar,https://cdn.shopify.com/s/files/1/0570/4256/7355/files/shaft-collar.jpg?v=1686329653,1,MISC,https://www.amazon.com/gp/product/B01EA912P8/ref=ppx_yo_dt_b_asin_title_o09_s00?ie=UTF8,,,
|
||||
|
+6
-7
@@ -1,22 +1,21 @@
|
||||
Part Name,Image,Quantity,Part Type,Source 1,Source 2,Optional,Note
|
||||
frame,,1,FDM,Download all 3D printed parts at the link at the top of the page.,,,
|
||||
frame-8,,1,FDM,Download all 3D printed parts at the link at the top of the page.,,,
|
||||
drive-motor-bracket,,1,FDM,Download all 3D printed parts at the link at the top of the page.,,,
|
||||
drive-motor-cover,,1,FDM,Download all 3D printed parts at the link at the top of the page.,,,
|
||||
peel-gear-frame,,1,FDM,Download all 3D printed parts at the link at the top of the page.,,,
|
||||
peel-gear,,2,FDM,Download all 3D printed parts at the link at the top of the page.,,,
|
||||
peel-gear-frame-1u,,1,FDM,Download all 3D printed parts at the link at the top of the page.,,,
|
||||
peel-gear-1u,,2,FDM,Download all 3D printed parts at the link at the top of the page.,,,
|
||||
peel-worm-gear,,1,FDM,Download all 3D printed parts at the link at the top of the page.,,,
|
||||
release-lever,,1,FDM,Download all 3D printed parts at the link at the top of the page.,,,
|
||||
release-lever-1u,,1,FDM,Download all 3D printed parts at the link at the top of the page.,,,
|
||||
spool-holder,,1,FDM,Download all 3D printed parts at the link at the top of the page.,,,
|
||||
thimble,,1,FDM,Download all 3D printed parts at the link at the top of the page.,,,
|
||||
slot-bracket,,1,FDM,Download all 3D printed parts at the link at the top of the page.,,,
|
||||
tape-guide,,1,FDM,Download all 3D printed parts at the link at the top of the page.,,Yes,Replaces the spool arm and thimble. Used to guide tape into feeder for spools mounted beneath the machine.
|
||||
PLA-filament ,https://cdn.shopify.com/s/files/1/0570/4256/7355/files/filament.png?v=1686314492,1.2,FIL,https://www.microcenter.com/product/611532/inland-175mm-black-pla-3d-printer-filament-1kg-spool-(22-lbs),,,Units in kg. Print both nozzle-rack and 2x z-gantry in a black color. Print top-light-mount and bottom-light-mount in a white color.
|
||||
tape-guide-1u,,1,FDM,Download all 3D printed parts at the link at the top of the page.,,Yes,Replaces the spool arm and thimble. Used to guide tape into feeder for spools mounted beneath the machine.
|
||||
"PLA-filament ",https://cdn.shopify.com/s/files/1/0570/4256/7355/files/filament.png?v=1686314492,1.2,FIL,https://www.microcenter.com/product/611532/inland-175mm-black-pla-3d-printer-filament-1kg-spool-(22-lbs),,,Units in kg. Print both nozzle-rack and 2x z-gantry in a black color. Print top-light-mount and bottom-light-mount in a white color.
|
||||
M5-t-slot-nut,https://cdn.shopify.com/s/files/1/0570/4256/7355/files/M5-tslot-nut.jpg?v=1686314676,1,FST,https://www.amazon.com/Fastener-Nickel-Plated-Sliding-Aluminum-Profile/dp/B086MKNYDS/ref=sxin_16_pa_sp_search_thematic_sspa,,,
|
||||
M3x14mm-flat-head,https://cdn.shopify.com/s/files/1/0570/4256/7355/files/M3x14mm.png?v=1686314903,3,FST,https://www.mcmaster.com/91294A133/,,,
|
||||
M5x10mm-socket-head,https://cdn.shopify.com/s/files/1/0570/4256/7355/files/M5x10mm.png?v=1686314995,1,FST,https://www.mcmaster.com/90128A234/,,,ISO4762
|
||||
M3x8mm-self-tapping-flat-head,https://cdn.shopify.com/s/files/1/0570/4256/7355/files/M3x8mm-self-tapping-flat-head.png?v=1686314923,1,FST,https://www.mcmaster.com/95893A189/,,,
|
||||
M3x12mm-self-tapping-flat-head,https://cdn.shopify.com/s/files/1/0570/4256/7355/files/M3x12-self-tapping-flat-head.png?v=1686314903,11,FST,https://www.mcmaster.com/95893A403/,,,
|
||||
feeder-compression-spring,https://cdn.shopify.com/s/files/1/0570/4256/7355/files/feeder-compression-spring.png?v=1691004799,1,MISC,https://www.leespring.com/compression-springs?search=LC026C06M,,,
|
||||
mobo,,1,PCA,,,,Click link above to download source
|
||||
slot,,1,PCA,,,,Click link above to download source
|
||||
drive-wheel,,1,PCB,,,,Click link above to download source
|
||||
|
500 Internal Server Error
An error occurred: An error occurred Gitea Version: 28.2.0 |