Showing preview only (3,603K chars total). Download the full file or copy to clipboard to get everything.
Repository: scottbez1/smartknob
Branch: master
Commit: 4eb988399c3f
Files: 215
Total size: 3.4 MB
Directory structure:
gitextract_8y110f7p/
├── .github/
│ ├── FUNDING.yml
│ └── workflows/
│ ├── electronics.yml
│ ├── js.yml
│ └── pio.yml
├── .gitignore
├── .gitmodules
├── .vscode/
│ ├── extensions.json
│ └── settings.json
├── LICENSE.txt
├── README.md
├── __init__.py
├── cad/
│ └── README.md
├── electronics/
│ ├── BM28B0.6-24DSBreakout/
│ │ ├── BM28B0.6-24DSBreakout-cache.lib
│ │ ├── BM28B0.6-24DSBreakout.kicad_pcb
│ │ ├── BM28B0.6-24DSBreakout.pro
│ │ ├── BM28B0.6-24DSBreakout.sch
│ │ └── fp-lib-table
│ ├── LevelShifterBreakout/
│ │ ├── LevelShifterBreakout-cache.lib
│ │ ├── LevelShifterBreakout.kicad_pcb
│ │ ├── LevelShifterBreakout.pro
│ │ ├── LevelShifterBreakout.sch
│ │ ├── fp-lib-table
│ │ └── sym-lib-table
│ ├── lib/
│ │ ├── BM28.pretty/
│ │ │ └── BM28B0.6-24DS.kicad_mod
│ │ ├── BOM_Only.pretty/
│ │ │ └── bom_only_no_pin.kicad_mod
│ │ ├── GCT_USB.3dshapes/
│ │ │ └── proprietary/
│ │ │ └── README.txt
│ │ ├── GCT_USB.pretty/
│ │ │ ├── USB4510.kicad_mod
│ │ │ └── USB4510_NoPaste.kicad_mod
│ │ ├── Holes.pretty/
│ │ │ ├── AlignmentHole_1.6.kicad_mod
│ │ │ ├── MountingHole_2.2mm_M2_ISO7380_Pad_NonVirtual.kicad_mod
│ │ │ └── MountingHole_M1.6.kicad_mod
│ │ ├── LCD_GC9A01.3dshapes/
│ │ │ └── TFT-Round-1.28.step
│ │ ├── LCD_GC9A01.pretty/
│ │ │ └── GC9A01Round1.28.kicad_mod
│ │ ├── MagnTek.dcm
│ │ ├── MagnTek.lib
│ │ ├── Modified.pretty/
│ │ │ ├── CP_Radial_D5.0mm_P2.00mm_HorizontalCutout.kicad_mod
│ │ │ ├── QFN-20-1EP_3x3mm_P0.4mm_EP1.65x1.65mm_ThermalVias_LargerViaHoles.kicad_mod
│ │ │ ├── SOT-223-3_TabPin2_GndOutIn.kicad_mod
│ │ │ ├── SOT-223-3_TabPin2_InGndOut.kicad_mod
│ │ │ └── TestPoint_Pad_D2.0mm_ValueSilk.kicad_mod
│ │ ├── Molex.3dshapes/
│ │ │ └── 532610371.stp
│ │ ├── Molex.pretty/
│ │ │ └── 532610371.kicad_mod
│ │ ├── SK6812.dcm
│ │ ├── SK6812.lib
│ │ ├── SN74AVC4T774.dcm
│ │ ├── SN74AVC4T774.lib
│ │ ├── SN74AVC4T774.models/
│ │ │ └── Texas_Instruments_-_SN74AVC4T774RSVR.step
│ │ ├── SN74AVC4T774.pretty/
│ │ │ └── Texas_Instruments-RSV_R-PUQFN-N16-0-0-0.kicad_mod
│ │ ├── SolderPads.pretty/
│ │ │ ├── SolderPads_2mm_3.kicad_mod
│ │ │ ├── SolderPads_2mm_3_STRAIN.kicad_mod
│ │ │ ├── SolderPads_2mm_4.kicad_mod
│ │ │ └── SolderPads_2mm_8.kicad_mod
│ │ ├── Trinamic.dcm
│ │ ├── Trinamic.lib
│ │ ├── VEML7700.3dshapes/
│ │ │ └── 84592VEML7700.stp
│ │ ├── VEML7700.dcm
│ │ ├── VEML7700.lib
│ │ ├── VEML7700.pretty/
│ │ │ └── VEML7700-TOP.kicad_mod
│ │ ├── lilygo_micro32.3dshapes/
│ │ │ └── ap-700.stp
│ │ ├── lilygo_micro32.dcm
│ │ ├── lilygo_micro32.lib
│ │ ├── lilygo_micro32.pretty/
│ │ │ └── T-Micro32.kicad_mod
│ │ ├── no_pin.dcm
│ │ ├── no_pin.lib
│ │ ├── sk6812.3dshapes/
│ │ │ └── SK6812-SIDE-A.step
│ │ ├── sk6812.pretty/
│ │ │ └── SK6812-SIDE-A.kicad_mod
│ │ ├── strain.dcm
│ │ ├── strain.lib
│ │ └── strain.pretty/
│ │ └── BF350-3AA.kicad_mod
│ ├── scripts/
│ │ ├── __init__.py
│ │ ├── config/
│ │ │ ├── eeschema
│ │ │ ├── pcbnew
│ │ │ └── policy.xml
│ │ ├── dependencies.sh
│ │ ├── export_jlcpcb.py
│ │ ├── export_util.py
│ │ ├── generate_pdf.py
│ │ └── pcb_util.py
│ ├── view_base/
│ │ ├── fp-lib-table
│ │ ├── lib/
│ │ │ ├── view_custom.3dshapes/
│ │ │ │ └── ViewKeepouts3d.step
│ │ │ └── view_custom.pretty/
│ │ │ └── ViewKeepouts3d.kicad_mod
│ │ ├── sym-lib-table
│ │ ├── view_base-cache.lib
│ │ ├── view_base.kibot.yml
│ │ ├── view_base.kicad_pcb
│ │ ├── view_base.kicad_pro
│ │ └── view_base.kicad_sch
│ └── view_screen/
│ ├── fp-lib-table
│ ├── sym-lib-table
│ ├── view_screen-cache.lib
│ ├── view_screen.kibot.yml
│ ├── view_screen.kicad_pcb
│ ├── view_screen.kicad_pro
│ └── view_screen.kicad_sch
├── firmware/
│ ├── .gitignore
│ ├── .vscode/
│ │ ├── extensions.json
│ │ └── settings.json
│ ├── include/
│ │ └── README
│ ├── lib/
│ │ ├── README
│ │ └── tlv/
│ │ ├── .piopm
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── library.json
│ │ ├── library.properties
│ │ └── src/
│ │ ├── Tlv493d.cpp
│ │ ├── Tlv493d.h
│ │ └── util/
│ │ ├── BusInterface.cpp
│ │ ├── BusInterface.h
│ │ ├── BusInterface2.h
│ │ ├── RegMask.cpp
│ │ ├── RegMask.h
│ │ └── Tlv493d_conf.h
│ ├── partitions-4MB-fat.csv
│ ├── src/
│ │ ├── configuration.cpp
│ │ ├── configuration.h
│ │ ├── display_task.cpp
│ │ ├── display_task.h
│ │ ├── font/
│ │ │ └── roboto_light_60.h
│ │ ├── interface_callbacks.h
│ │ ├── interface_task.cpp
│ │ ├── interface_task.h
│ │ ├── logger.h
│ │ ├── main.cpp
│ │ ├── maq430_sensor.h
│ │ ├── motor_task.cpp
│ │ ├── motor_task.h
│ │ ├── motors/
│ │ │ ├── mad2804.h
│ │ │ ├── motor_config.h
│ │ │ └── wanzhida_once_top.h
│ │ ├── mt6701_sensor.cpp
│ │ ├── mt6701_sensor.h
│ │ ├── proto_gen/
│ │ │ ├── smartknob.pb.c
│ │ │ └── smartknob.pb.h
│ │ ├── semaphore_guard.h
│ │ ├── serial/
│ │ │ ├── crc32.cpp
│ │ │ ├── crc32.h
│ │ │ ├── proto_helpers.h
│ │ │ ├── serial_protocol.h
│ │ │ ├── serial_protocol_plaintext.cpp
│ │ │ ├── serial_protocol_plaintext.h
│ │ │ ├── serial_protocol_protobuf.cpp
│ │ │ ├── serial_protocol_protobuf.h
│ │ │ ├── uart_stream.cpp
│ │ │ └── uart_stream.h
│ │ ├── task.h
│ │ ├── tlv_sensor.cpp
│ │ ├── tlv_sensor.h
│ │ ├── util.cpp
│ │ └── util.h
│ └── test/
│ └── README
├── platformio.ini
├── proto/
│ ├── Pipfile
│ ├── generate_protobuf.py
│ └── smartknob.proto
├── scripts/
│ └── annotate_image.sh
├── software/
│ ├── js/
│ │ ├── .gitignore
│ │ ├── .npmrc
│ │ ├── README.md
│ │ ├── package.json
│ │ └── packages/
│ │ ├── example-cli/
│ │ │ ├── .eslintrc
│ │ │ ├── .prettierrc
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ └── index.ts
│ │ │ └── tsconfig.json
│ │ ├── example-webserial-basic/
│ │ │ ├── .eslintrc
│ │ │ ├── .gitignore
│ │ │ ├── .prettierrc
│ │ │ ├── README.md
│ │ │ ├── package.json
│ │ │ ├── public/
│ │ │ │ ├── index.html
│ │ │ │ └── robots.txt
│ │ │ ├── src/
│ │ │ │ ├── App.tsx
│ │ │ │ ├── index.tsx
│ │ │ │ ├── react-app-env.d.ts
│ │ │ │ └── util.ts
│ │ │ └── tsconfig.json
│ │ ├── example-webserial-timeline/
│ │ │ ├── .eslintrc
│ │ │ ├── .gitignore
│ │ │ ├── .prettierrc
│ │ │ ├── README.md
│ │ │ ├── package.json
│ │ │ ├── public/
│ │ │ │ ├── index.html
│ │ │ │ └── robots.txt
│ │ │ ├── src/
│ │ │ │ ├── App.tsx
│ │ │ │ ├── index.tsx
│ │ │ │ ├── react-app-env.d.ts
│ │ │ │ ├── types.tsx
│ │ │ │ └── util.ts
│ │ │ └── tsconfig.json
│ │ ├── smartknobjs-core/
│ │ │ ├── .eslintrc
│ │ │ ├── .prettierrc
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ ├── cobs.ts
│ │ │ │ └── index.ts
│ │ │ └── tsconfig.json
│ │ ├── smartknobjs-node/
│ │ │ ├── .eslintrc
│ │ │ ├── .prettierrc
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ └── index.ts
│ │ │ └── tsconfig.json
│ │ ├── smartknobjs-proto/
│ │ │ └── package.json
│ │ └── smartknobjs-webserial/
│ │ ├── .eslintrc
│ │ ├── .prettierrc
│ │ ├── package.json
│ │ ├── src/
│ │ │ └── index.ts
│ │ └── tsconfig.json
│ └── python/
│ ├── Pipfile
│ ├── proto_gen/
│ │ ├── README
│ │ ├── nanopb_pb2.py
│ │ └── smartknob_pb2.py
│ ├── simple_example.py
│ └── smartknob_io.py
└── util/
├── __init__.py
├── file_util.py
└── rev_info.py
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/FUNDING.yml
================================================
# These are supported funding model platforms
github: scottbez1
================================================
FILE: .github/workflows/electronics.yml
================================================
name: Export Electronics
on:
push:
paths:
- 'electronics/**'
- 'util/**'
- 'scripts/**'
- '.github/workflows/electronics.yml'
pull_request:
paths:
- 'electronics/**'
- 'util/**'
- 'scripts/**'
- '.github/workflows/electronics.yml'
jobs:
export-electronics:
name: Export Electronics
runs-on: ubuntu-22.04
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up outputs directory
run: mkdir -p electronics/build/outputs
- name: Install dependencies
run: ./electronics/scripts/dependencies.sh
- name: Export JLCPCB fabrication files [view_base]
run: |
./electronics/scripts/export_jlcpcb.py --release-prefix releases/view_base/ electronics/view_base/view_base.kicad_pcb
cp -r electronics/build/view_base-jlc electronics/build/outputs
- name: Export PCB overview PDF [view_base]
run: |
./electronics/scripts/generate_pdf.py --release-prefix releases/view_base/ electronics/view_base/view_base.kicad_pcb
cp electronics/build/view_base-pcb-packet.pdf electronics/build/outputs
env:
PYTHONUNBUFFERED: 1
- name: Export JLCPCB fabrication files [view_screen]
run: |
./electronics/scripts/export_jlcpcb.py --release-prefix releases/view_screen/ electronics/view_screen/view_screen.kicad_pcb
cp -r electronics/build/view_screen-jlc electronics/build/outputs
- name: Export PCB overview PDF [view_screen]
run: |
./electronics/scripts/generate_pdf.py --release-prefix releases/view_screen/ electronics/view_screen/view_screen.kicad_pcb
cp electronics/build/view_screen-pcb-packet.pdf electronics/build/outputs
env:
PYTHONUNBUFFERED: 1
- name: Export artifacts (KiBot) [view_base]
uses: INTI-CMNB/KiBot@db2185ac51d83f729e632c38e23b2d9df7ccd460
with:
config: electronics/view_base/view_base.kibot.yml
dir: electronics/build/outputs
schema: 'electronics/view_base/view_base.kicad_sch'
board: 'electronics/view_base/view_base.kicad_pcb'
- name: Export artifacts (KiBot) [view_screen]
uses: INTI-CMNB/KiBot@db2185ac51d83f729e632c38e23b2d9df7ccd460
with:
config: electronics/view_screen/view_screen.kibot.yml
dir: electronics/build/outputs
schema: 'electronics/view_screen/view_screen.kicad_sch'
board: 'electronics/view_screen/view_screen.kicad_pcb'
- name: Update 3D artifacts [view_base]
# Need to chown files back to runner, as ownership gets set to root by the KiBot Actions
run: |
sudo chown runner:docker electronics/build/outputs/*
mv electronics/build/outputs/view_base-3D_top.png electronics/build/outputs/view_base-front-3d.png
./scripts/annotate_image.sh electronics/build/outputs/view_base-front-3d.png
mv electronics/build/outputs/view_base-3D_bottom.png electronics/build/outputs/view_base-back-3d.png
./scripts/annotate_image.sh electronics/build/outputs/view_base-back-3d.png
env:
PYTHONUNBUFFERED: 1
- name: Update 3D artifacts [view_screen]
# Need to chown files back to runner, as ownership gets set to root by the KiBot Actions
run: |
sudo chown runner:docker electronics/build/outputs/*
mv electronics/build/outputs/view_screen-3D_top.png electronics/build/outputs/view_screen-front-3d.png
./scripts/annotate_image.sh electronics/build/outputs/view_screen-front-3d.png
mv electronics/build/outputs/view_screen-3D_bottom.png electronics/build/outputs/view_screen-back-3d.png
./scripts/annotate_image.sh electronics/build/outputs/view_screen-back-3d.png
env:
PYTHONUNBUFFERED: 1
- name: Archive artifacts
uses: actions/upload-artifact@v2
if: always()
with:
name: electronics
path: |
electronics/build
- name: Configure AWS Credentials
if: github.event_name == 'push' && github.repository_owner == 'scottbez1'
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-east-1
- name: Sync artifacts to S3
if: github.event_name == 'push' && github.repository_owner == 'scottbez1'
run: |
aws s3 sync electronics/build/outputs s3://smartknob-artifacts/${GITHUB_REF#refs/heads/}/electronics --delete --cache-control max-age=0,no-cache
================================================
FILE: .github/workflows/js.yml
================================================
name: JS
on:
push:
paths:
- 'software/js/**'
- 'proto/**'
- '.github/workflows/js.yml'
pull_request:
paths:
- 'software/js/**'
- 'proto/**'
- '.github/workflows/js.yml'
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
# Build job
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up Node
uses: actions/setup-node@v3
with:
node-version: 18
- name: Install dependencies
working-directory: software/js
run: npm ci
- name: Build
working-directory: software/js
run: PUBLIC_URL="/smartknob" npm run build
- name: Setup Pages
uses: actions/configure-pages@v3
- name: Upload artifact
uses: actions/upload-pages-artifact@v1
with:
path: './software/js/packages/example-webserial-timeline/build'
# Deployment job
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
if: github.repository == 'scottbez1/smartknob' && github.ref == 'refs/heads/master'
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v2
================================================
FILE: .github/workflows/pio.yml
================================================
name: PlatformIO CI
on:
push:
paths:
- 'firmware/**'
- 'proto/**'
- 'thirdparty/nanopb/**'
- 'platformio.ini'
- '.github/workflows/pio.yml'
pull_request:
paths:
- 'firmware/**'
- 'proto/**'
- 'thirdparty/nanopb/**'
- 'platformio.ini'
- '.github/workflows/pio.yml'
jobs:
pio-build:
runs-on: ubuntu-20.04
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Cache pip
uses: actions/cache@v2
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Cache PlatformIO
uses: actions/cache@v2
with:
path: ~/.platformio
key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }}
- name: Set up Python
uses: actions/setup-python@v2
- name: Install PlatformIO
id: pio_install
run: |
python -m pip install --upgrade pip
pip install --upgrade platformio
- name: Build Firmware (view)
# Run regardless of other build step failures, as long as setup steps completed
if: always() && steps.pio_install.outcome == 'success'
run: |
pio run \
-e view
- name: Build Firmware (nanofoc)
# Run regardless of other build step failures, as long as setup steps completed
if: always() && steps.pio_install.outcome == 'success'
run: |
pio run \
-e nanofoc
- name: Build Firmware (brushknight_esp32s3)
# Run regardless of other build step failures, as long as setup steps completed
if: always() && steps.pio_install.outcome == 'success'
run: |
pio run \
-e brushknight_esp32s3
================================================
FILE: .gitignore
================================================
# KiCAD files
*.000
*.bak
*.bck
*.kicad_pcb-bak
*.sch-bak
*.net
*.dsn
fp-info-cache
_autosave*.kicad_pcb
*.kicad_prl
electronics/*/*backups
# Proprietary 3d model (for KiCAD)
**/proprietary/*.stp
**/proprietary/*.step
# PlatformIO
.pio/
# General build outputs
build/
# Apple/Macintosh
.DS_Store
# VSCode
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
#!.vscode/launch.json
!.vscode/extensions.json
!.vscode/*.code-snippets
__pycache__
================================================
FILE: .gitmodules
================================================
[submodule "thirdparty/nanopb"]
path = thirdparty/nanopb
url = git@github.com:nanopb/nanopb.git
================================================
FILE: .vscode/extensions.json
================================================
{
// See http://go.microsoft.com/fwlink/?LinkId=827846
// for the documentation about the extensions.json format
"recommendations": [
"dbaeumer.vscode-eslint",
"platformio.platformio-ide",
"rvest.vs-code-prettier-eslint"
],
"unwantedRecommendations": [
"ms-vscode.cpptools-extension-pack"
]
}
================================================
FILE: .vscode/settings.json
================================================
{
"eslint.workingDirectories": [
"./software/js/packages/example",
"./software/js/packages/smartknobjs",
"./software/js"
],
"editor.defaultFormatter": "rvest.vs-code-prettier-eslint",
"editor.formatOnPaste": false,
"editor.formatOnType": false,
"editor.formatOnSave": true,
"editor.formatOnSaveMode": "file",
"files.associations": {
"cstddef": "cpp",
"limits": "cpp"
},
}
================================================
FILE: LICENSE.txt
================================================
smartknob - Copyright 2022 Scott Bezek
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
----
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "{}"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright {yyyy} {name of copyright owner}
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: README.md
================================================
# SmartKnob
SmartKnob is an open-source input device with software-configurable endstops and virtual detents.
A brushless gimbal motor is paired with a magnetic encoder to provide closed-loop torque feedback control, making it
possible to dynamically create and adjust the feel of detents and endstops.
Join the [Discord community](https://discord.gg/5jyhjcbTnR) to discuss the project with others, show off your build, or help answer each others' questions!
[](https://github.com/scottbez1/smartknob/actions/workflows/electronics.yml)
[](https://github.com/scottbez1/smartknob/actions/workflows/pio.yml)
# Designs
## SmartKnob View
The "SmartKnob View" is the premium SmartKnob experience with an integrated display shown in my [demo video](https://www.youtube.com/watch?v=ip641WmY4pA). Under active development.
🎉 **Motors are [now available](https://www.sparkfun.com/products/20441)!** If you've been following this project,
you'll know that the recommended motors went out of stock nearly immediately after it was published.
Thanks to [the community](https://github.com/scottbez1/smartknob/issues/16#issuecomment-1094482805%5D), we were able to
identify the likely original manufacturer, and recently SparkFun Electronics has been getting them produced and regularly
[stocking them](https://www.sparkfun.com/products/20441)! (However, they've been selling out quickly each time they restock, so definitely sign up for backorder notifications if they're out of stock when you check). Thanks to everyone who helped search and investigate different
motor options along the way!
Features:
- 240x240 round LCD ("GC9A01"), protected by 39.5mm watch glass on rotor
- BLDC gimbal motor, with a hollow shaft for mechanically & electrically connecting the LCD
- Powered by ESP32-PICO-V3-02 (Lilygo TMicro32 Plus module)
- PCB flexure and SMD resistors used as strain gauges for press detection (haptic feedback provided via the motor)
- 8 side-firing RGB LEDs (SK6812-SIDE-A) illuminate ring around the knob
- USB-C (2.0) connector for 5V power and serial data/programming (CH340)
- VEML7700 ambient light sensor for automatic backlight & LED intensity adjustment
- Versatile back plate for mounting - use either 4x screws, or 2x 3M medium Command strips (with cutouts for accessing removal tabs after installation)
- Front cover snaps on for easy access to the PCB
**Current status:** Not recommended for general use, but may be a fun project for an advanced electronics hobbyist.
### Demo video
<a href="https://www.youtube.com/watch?v=ip641WmY4pA">
<img src="https://img.youtube.com/vi/ip641WmY4pA/maxresdefault.jpg" width="480" />
</a>
### How it works
<a href="https://www.youtube.com/watch?v=Q76dMggUH1M">
<img src="https://img.youtube.com/vi/Q76dMggUH1M/maxresdefault.jpg" width="480" />
</a>
### 3D CAD

Latest Fusion 360 Model: https://a360.co/3BzkU0n
#### DEMO: video editor timeline control
If you edit audio/video, imagine having a jog wheel where you could _feel_ the clip boundaries as you scrolled through the timeline. Then switch to playback speed control, with a wheel that's spring-loaded to return to "paused," with snaps at 1x, 2x, 4x, etc. The SmartKnob can do this; it just needs some software integrations to be written. Check out a demo using a SmartKnob prototype to control a mock video timeline:
<a href="https://www.youtube.com/watch?v=J9192DfZplk">
<img src="https://img.youtube.com/vi/J9192DfZplk/maxresdefault.jpg" width="480" />
</a>
(you can actually try this demo yourself if you've already built a SmartKnob; plug it in over USB and go to https://scottbez1.github.io/smartknob/)
### Build your own?
While this is a "DIY" open-source project, it is not yet a mature plug-and-play project. If you intend to build your own, note that it requires advanced soldering experience to build - very small-pitch surface-mount soldering is required (reflow or hot air recommended), and assembly is quite time-consuming and delicate. Please go into it with the expectation that you will almost certainly need to be able to troubleshoot some hardware and firmware issues yourself - I recommend reviewing/understanding the schematics and basic firmware before jumping in!
More documentation on the BOM and what parts you need to order is coming in the future - thanks so much for your interest! Follow me on [Twitter](https://twitter.com/scottbez1) for the latest updates on this and other projects.
View the latest auto-generated (untested) [Base PCB Interactive BOM](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_base-ibom.html) and [Screen PCB Interactive BOM](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_screen-ibom.html) (or, the combined [BOM csv](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_base-bom.csv)) for electronics/hardware parts list. ⚠️ These are auto-generated from the latest untested revision on GitHub. For tested/stable/recommended artifacts, use a [release](https://github.com/scottbez1/smartknob/releases) instead.
A few miscellaneous notes in the meantime:
- There's limited space inside the LCD mount for wiring, and 8 wires need to fit through the hole in the center. I used 30 AWG wire-wrapping wire. Enamel-coated wire would probably work too.
- Older versions of the design (as seen in the videos) used glued-on BF350-3AA strain gauges to detect presses; in v0.5 these were replaced with footprints for SMD resistors, which exhibit similar properties when stretched/compressed and are much easier to assemble.
- The TMC6300 is _tiny_ and has a bottom pad, so I would seriously consider getting a stencil along with the PCB order. Even with the stencil I needed to manually clean up some bridging afterward; I _highly_ recommend Chip Quik NC191 gel flux, available on [Amazon](https://amzn.to/3MGDSr5) (or use this [non-affiliate link](https://www.amazon.com/Smooth-Flow-No-Clean-syringe-plunger/dp/B08KJPG3NZ) instead) or from your electronics distributor of choice. Flux is also very helpful when soldering the LCD ribbon cable to to screen PCB.
- For breadboard prototyping, the [TMC6300-BOB](https://www.trinamic.com/support/eval-kits/details/tmc6300-bob/) or SparkFun's [TMC6300 driver board](https://www.sparkfun.com/products/21867) are awesome and way easier to work with than the bare chip if you just want to play around with low current BLDC motors
- For AliExpress purchases: I highly recommend **only** using AliExpress Standard Shipping (purchasing in the US). I have had multiple purchases take months or never get delivered when purchased with Cainiao or other low cost shipping options, whereas AliExpress Standard is very reliable and generally faster in my experience.
- Make sure to check the [open issues](https://github.com/scottbez1/smartknob/issues) - this design is not yet "stable", so beware that everything may not go smoothly.
Future plans:
- consider switch to using an ESP32-S3-MINI-1 module
- get wifi configured and working (probably MQTT?). Currently memory is an issue with the full display framebuffer sprite. PSRAM might fix this (requires newer ESP-IDF & unreleased Arduino core, and from a brief test I got horrible performance with PSRAM enabled), or the next item might help reduce memory:
- migrate to LVGL, for better display rendering and easy support for menus, etc. Shouldn't require a full 240x240x24b framebuffer in memory, freeing some for wifi, etc.
- Home Assistant integration, or other real-world applications
- ???
- [Profit](https://github.com/sponsors/scottbez1/) 😉
#### Already built one?
Check out the [firmware/software documentation](https://paper.dropbox.com/doc/SmartKnob-firmware-and-software--B_oWj~L1dXqHgAqqYmhwwuqzAg-VUb9nq7btuhnHw5KlgJIH)
for tips on getting it programmed and hooking it up to your own software integrations.
If you've already uploaded the standard firmware and gone through the calibration process (see guide linked above if you don't know what this means),
go to https://scottbez1.github.io/smartknob/ to try out an interactive web-based demo that uses Web Serial to talk to a SmartKnob that's plugged into your
computer's USB port!
#### Base PCB
<a href="https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_base-front-3d.png">
<img src="https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_base-front-3d.png" width="300" />
</a>
<a href="https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_base-back-3d.png">
<img src="https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_base-back-3d.png" width="300" />
</a>
Ordering notes: use white soldermask, for reflecting light from RGB LED ring around the knob. Should be 1.2mm thick (not "standard" 1.6mm).
If you are ordering a stencil for solder paste from JLCPCB and plan to apply paste by hand (as
[shown in the video](https://youtu.be/Q76dMggUH1M?t=372)) without a stencil frame/machine, make sure to select
**"Customized size"** and enter smaller dimensions (e.g. 100mm x 100mm) to avoid getting a much larger stencil than you
need. This will also likely reduce the cost of shipping substantially! Also, select only the **Top** side; the bottom
only has 2 SMT components - the motor connector and VEML7700 ALS - so it's not worth getting a stencil for that.
Latest auto-generated (untested and likely broken!) artifacts⚠️:
[Schematic](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_base-schematic.pdf)
[Interactive BOM](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_base-ibom.html)
[PCB Packet](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_base-pcb-packet.pdf)
[Gerbers](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_base-jlc/gerbers.zip)
⚠️ For tested/stable/recommended artifacts, use a [release](https://github.com/scottbez1/smartknob/releases) instead.
#### Screen PCB
<a href="https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_screen-front-3d.png">
<img src="https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_screen-front-3d.png" width="300" />
</a>
<a href="https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_screen-back-3d.png">
<img src="https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_screen-back-3d.png" width="300" />
</a>
Ordering notes: Must be 1.2mm thick (not "standard" 1.6mm) per mechanical design. (The PCB silkscreen mentions 0.6mm thickness - this is the thickness of the **VHB tape** for adhering the LCD; the PCB should be 1.2mm thick)
There are few enough components on the Screen PCB that I chose to hand-solder them rather than reflow with solder paste
and a stencil, but if you order a stencil, see the note above about selecting a "Customized size" to be easier to
handle and save on shipping. Also make sure to select the **Bottom** side only; all the components are on the bottom
side of the screen PCB.
Latest auto-generated (untested and likely broken!) artifacts⚠️:
[Schematic](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_screen-schematic.pdf)
[Interactive BOM](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_screen-ibom.html)
[PCB Packet](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_screen-pcb-packet.pdf)
[Gerbers](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_screen-jlc/gerbers.zip)
⚠️ For tested/stable/recommended artifacts, use a [release](https://github.com/scottbez1/smartknob/releases) instead.
#### Printed parts
You will need six printed parts. The current stable designs can be found as STL assets in the [v185 mechanical release](https://github.com/scottbez1/smartknob/releases/tag/releases%2Fmechanical%2Fv185-dummy-tag) or you can export the latest untested designs from the CAD model by opening it in Fusion 360: https://a360.co/3BzkU0n
The parts can _probably_ be FDM 3D printed with a well-tuned printer, but the parts shown in videos/photos were MJF printed in nylon for tight tolerances and better surface finish.
If you wanted a simpler build, you could omit the LCD and just merge the knob + glass from the model into a single STL to get a closed-top knob.
Export and print the following 6 parts:
* `Enclosure`
* `Knob` (RotorAssembly->KnobAssembly->Knob)
* `ScreenPlatform`
* `RotorSpacer` (RotorAssembly->RotorSpacer)
* `MountBase`
* `BackPlate`
⚠️ If you opt to go for MJF Nylon printing from JLCPCB, their system may complain about `< 0.8mm wall thickness detected` on the `MountBase`, `ScreenPlatform` and `RotorSpacer` parts. This appears to be a false positive, possibly on some of the print tapers. You should be able to ignore this, as all print orders at JLCPCB are subject to a final manual review, and they will contact you by email if there are any job-stopping issues or risks with your prints.
## NanoFOC (3rd party)
If you're looking to tinker with FOC/haptic feedback, but don't want to build a full SmartKnob View yourself, I can
recommend the NanoFOC DevKit++, an [open-source design](https://github.com/katbinaris/nanofoc_devkit) made and
[sold](https://store.binaris.io/products/nanofoc-devkit) by a member of the SmartKnob community! It's super compact
and is a great testbed or core for building your own BLDC-based haptic input device.

The NanoFOC uses an ESP32-S3, and the SmartKnob firmware works on it out of the box; just select the `nanofoc`
environment in PlatformIO rather than the `view` environment when uploading.
# Frequently Asked Questions (FAQ)
### Can I use this cheap gimbal BLDC motor I found on AliExpress?
I can't stop you, but I will caution that **you probably won't be super happy with it** depending on your intended application.
Nearly every off-the-shelf BLDC gimbal motor that the community has tested (which is pretty much ALL the cheap ones you'll find on AliExpress, trust me) has
_moderate to severge cogging_. That means the motor wants to snap to certain positions by itself even when unpowered. This means you won't be able to get
completely smooth rotation when virtual detents are turned off, and the motor's cogging may interfere with or overpower the virtual detents, particularly if
you set them to lower strength or make then very fine-grained.
The recommended motor is definitely the best (i.e. lowest cogging) off-the-shelf motor we've come across so far, and is the only readily-available motor
that I would consider "good" for this application.
If you've found another motor that is completely smooth when unpowered, we'd LOVE to hear about it in the discord; if you're wondering about some cheap motor
you saw online, either just order one and try it for yourself, or ask about it in discord but don't be surprised (or offended) if the response you get is
something terse like "nope, no good".
### How much does it cost?
I wish I could tell you now, but I don't actually know off the top of my head. Check back soon - I've only built a few so far, which was the result of a bunch of tinkering and prototyping over an extended period, so I don't have all the expenses tallied up yet. Probably less than $200 in parts? But some items have gotten more expensive, and you may be limited by minimum order quantities or shipping charges from multiple separate suppliers.
### Does it work with XYZ?
Not yet, regardless of whatever "XYZ" you're thinking of. So far I've only implemented enough firmware for the demo shown in the video, so you can't actually use it for anything productive yet. The basic detent configuration API is there, but not much else. Lots of firmware work remains to be done. If you build one, I'd love your help adding support for "XYZ" though!
### Can I buy one as a kit or already assembled?
Probably not? Or at least, I don't have any immediate plans to sell them myself. It's not that I don't want you to be happy, but hardware is a hard business and I just work on this stuff in my free time.
It's open source with a fairly permissive license though, so in theory anyone could start offering kits/assemblies. If someone does go down that route of selling them, note that attribution is
_required_ (and I wouldn't say no to [royalties/tips/thanks](https://github.com/sponsors/scottbez1/) if you're in a giving mood 🙂).
# Firmware and Software
More extensive documentation of the firmware and software (and how to get started) can be found in the dedicated [SmartKnob Firmware and Software Guide](https://paper.dropbox.com/doc/SmartKnob-firmware-and-software--Byho6npe9XvZLZLxJ_8bK5TqAg-VUb9nq7btuhnHw5KlgJIH#:h2=Calibration)
## General Component Info
### Magnetic encoders
#### MT6701 (MagnTek)
Excellent sensor at a reasonable price - highly recommended. Less noisy than TLV493D, and more responsive (control loop is more stable) using SSI.
- Lots of IO options - SSI, I2C, and ABZ - should offer good response latency
- SSI includes CRC to validate data
- No power-down or low-power options - may not be ideal for battery-powered devices
- Not available from US distributors (Mouser, Digi-Key)
[Datasheet](http://www.magntek.com.cn/upload/MT6701_Rev.1.5.pdf)
[Ordering (LCSC)](https://lcsc.com/product-detail/Angle-Linear-Position-Sensors_Magn-Tek-MT6701CT-STD_C2856764.html)
#### TLV493D (Infineon)
Not used in the SmartKnob view, but a common/popular magnetic encoder in general. It's a mediocre choice for a haptic feedback implementation. Easy to prototype with using [Adafruit's QWIIC breakout board](https://www.adafruit.com/product/4366).
In my testing, it's noisy, requiring filtering/smoothing that can slow responsiveness, hurting control loop stability. Or, with less filtering, the noise
can easily be "amplified" by the derivative component in the PID motor torque controller, causing audible (and tactile) humming/buzzing.
But the bigger issue is that there is apparently a known silicon issue that causes the internal ADC to sometimes completely lock up, requiring a full reset and re-configuration, which can cause delays/gaps in data! See section
5.6 in the [User Manual](https://www.infineon.com/dgdl/Infineon-TLV493D-A1B6_3DMagnetic-UM-v01_03-EN.pdf?fileId=5546d46261d5e6820161e75721903ddd)
In the Master Controlled Mode (MCM) or the Fast Mode (FM) the ADC conversion may hang up. A hang up can
be detected by:
- Frame Counter (FRM) counter stucks and does not increment anymore.
In my experience testing 4 different Adafruit breakout boards, 2 of them (50%) regularly exhibit this lockup behavior within a minute or two of use. It is possible to detect and auto-reset (and there is code in the project to do so), but it is slow and may cause undesirable jumps/delays if the sensor locks up often.
[Datasheet](https://www.mouser.com/datasheet/2/196/Infineon_TLV493D_A1B6_DataSheet_v01_10_EN-1227967.pdf)
#### AS5600 (AMS)
A mediocre choice. Cheap breakout boards are readily available.
In my testing, it's fairly noisy (anecdotally, noisier than the TLV493d), requiring filtering/smoothing that can slow responsiveness, hurting control loop stability. Additionally, it saturates at a lower magnetic field strength than other sensors I tested, requiring a significant air gap (8-10mm) when used with a strong neodymium diametric magnet like [Radial Magnets 8995](https://www.digikey.com/en/products/detail/radial-magnets-inc/8995/5126077).
[Datasheet](https://ams.com/documents/20143/36005/AS5600_DS000365_5-00.pdf)
### Motor drivers
#### TMC6300-LA
This is a relatively new IC and it's a perfect match! There generally aren't any other drivers (with integrated fets) that meet the requirements for the low-voltage and low-current motors used in this project (DRV8316 might work, but has not been tested).
Highlights:
- 2-11V DC motor supply input
- Up to 1.2A RMS
- Tiny (3x3mm QFN)
[Datasheet](https://www.trinamic.com/fileadmin/assets/Products/ICs_Documents/TMC6300_datasheet_rev1.07.pdf)
[Product page](https://www.trinamic.com/products/integrated-circuits/details/tmc6300-la/)
### Motors
#### 32mm Rotor, Hollow Shaft, Diametric magnet
<a href="doc/img/motors/PXL_20220121_221746595.jpg"><img src="doc/img/motors/PXL_20220121_221746595.jpg" width="200" /></a>
<a href="doc/img/motors/PXL_20220121_221738745.jpg"><img src="doc/img/motors/PXL_20220121_221738745.jpg" width="200" /></a>
- 32mm rotor
- 15mm overall height (including magnet), 12.75mm height w/o magnet, 9mm rotor height
- low/zero cogging - excellent for completely smooth input
- 5.9mm hollow shaft
- built-in diametric magnet for encoder
- Proven option
This is overall the easiest motor to get started with. Low cogging and a built-in diametric magnet are great!
Available [from SparkFun](https://www.sparkfun.com/products/20441)!
# Acknowledgements
This project was greatly inspired by Jesse Schoch's video "[haptic textures and virtual detents](https://www.youtube.com/watch?v=1gPQfDkX3BU)" and the
corresponding [discussion in the SimpleFOC community](https://community.simplefoc.com/t/haptic-textures/301). Seriously, this project wouldn't exist if not for that video - thank you Jesse!
# License
This project is licensed under Apache v2 (software, electronics, documentation) and Creative Commons Attribution 4.0 (hardware/mechanical) (see [LICENSE.txt](LICENSE.txt) and [Creative Commons](https://creativecommons.org/licenses/by/4.0/)).
Copyright 2022 Scott Bezek
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: __init__.py
================================================
================================================
FILE: cad/README.md
================================================
# CAD
Most CAD work is done in Fusion 360 and versioned outside of this git repo.
# Assemblies
## SmartKnob View
- [Complete SmartKnob View assembly](https://a360.co/3BzkU0n)
## Handheld
- [Case bottom](https://a360.co/3LM82se) For breadboard with power rails removed.
- [Motor adapter](https://a360.co/3LO03eC) Connects motor to Adafruit TLV493d adapter board, and screws into Case
- [Thumbwheel](https://a360.co/3H3jSee) Test thumbwheel for motor rotor, for turning from the side
# Motors
Note that all measurements were done by hand and will be approximate. Chamfers & fillets are approximated.
## 32mm
- [Motor model](https://a360.co/3H8LUFi)
## 17mm
- [Motor model](https://a360.co/3sYa93Y)
- [Spacer](https://a360.co/3H3xh5M) (screw at the bottom is replaced with a longer M1.4 screw with this spacer inserted; diametric magnet is glued to screw)
- [Dummy test jig](https://a360.co/3sPQgvB)
## 15mm
- [Motor model](https://a360.co/34N1nOa)
- [Magnet spacer](https://a360.co/3532Tvb)
- [Magnet gluing jig](https://a360.co/3I1xbx6)
- [Adapter](https://a360.co/35gC86B) - mount motor to Adafruit TLV493d adapter board
================================================
FILE: electronics/BM28B0.6-24DSBreakout/BM28B0.6-24DSBreakout-cache.lib
================================================
EESchema-LIBRARY Version 2.4
#encoding utf-8
#
# Connector_Conn_01x14_Male
#
DEF Connector_Conn_01x14_Male J 0 40 Y N 1 F N
F0 "J" 0 700 50 H V C CNN
F1 "Connector_Conn_01x14_Male" 0 -800 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
Connector*:*_1x??_*
$ENDFPLIST
DRAW
S 34 -695 0 -705 1 1 6 F
S 34 -595 0 -605 1 1 6 F
S 34 -495 0 -505 1 1 6 F
S 34 -395 0 -405 1 1 6 F
S 34 -295 0 -305 1 1 6 F
S 34 -195 0 -205 1 1 6 F
S 34 -95 0 -105 1 1 6 F
S 34 5 0 -5 1 1 6 F
S 34 105 0 95 1 1 6 F
S 34 205 0 195 1 1 6 F
S 34 305 0 295 1 1 6 F
S 34 405 0 395 1 1 6 F
S 34 505 0 495 1 1 6 F
S 34 605 0 595 1 1 6 F
P 2 1 1 6 50 -700 34 -700 N
P 2 1 1 6 50 -600 34 -600 N
P 2 1 1 6 50 -500 34 -500 N
P 2 1 1 6 50 -400 34 -400 N
P 2 1 1 6 50 -300 34 -300 N
P 2 1 1 6 50 -200 34 -200 N
P 2 1 1 6 50 -100 34 -100 N
P 2 1 1 6 50 0 34 0 N
P 2 1 1 6 50 100 34 100 N
P 2 1 1 6 50 200 34 200 N
P 2 1 1 6 50 300 34 300 N
P 2 1 1 6 50 400 34 400 N
P 2 1 1 6 50 500 34 500 N
P 2 1 1 6 50 600 34 600 N
X Pin_1 1 200 600 150 L 50 50 1 1 P
X Pin_10 10 200 -300 150 L 50 50 1 1 P
X Pin_11 11 200 -400 150 L 50 50 1 1 P
X Pin_12 12 200 -500 150 L 50 50 1 1 P
X Pin_13 13 200 -600 150 L 50 50 1 1 P
X Pin_14 14 200 -700 150 L 50 50 1 1 P
X Pin_2 2 200 500 150 L 50 50 1 1 P
X Pin_3 3 200 400 150 L 50 50 1 1 P
X Pin_4 4 200 300 150 L 50 50 1 1 P
X Pin_5 5 200 200 150 L 50 50 1 1 P
X Pin_6 6 200 100 150 L 50 50 1 1 P
X Pin_7 7 200 0 150 L 50 50 1 1 P
X Pin_8 8 200 -100 150 L 50 50 1 1 P
X Pin_9 9 200 -200 150 L 50 50 1 1 P
ENDDRAW
ENDDEF
#
# Connector_Generic_Conn_02x14_Odd_Even
#
DEF Connector_Generic_Conn_02x14_Odd_Even J 0 40 Y N 1 F N
F0 "J" 50 700 50 H V C CNN
F1 "Connector_Generic_Conn_02x14_Odd_Even" 50 -800 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
Connector*:*_2x??_*
$ENDFPLIST
DRAW
S -50 -695 0 -705 1 1 6 N
S -50 -595 0 -605 1 1 6 N
S -50 -495 0 -505 1 1 6 N
S -50 -395 0 -405 1 1 6 N
S -50 -295 0 -305 1 1 6 N
S -50 -195 0 -205 1 1 6 N
S -50 -95 0 -105 1 1 6 N
S -50 5 0 -5 1 1 6 N
S -50 105 0 95 1 1 6 N
S -50 205 0 195 1 1 6 N
S -50 305 0 295 1 1 6 N
S -50 405 0 395 1 1 6 N
S -50 505 0 495 1 1 6 N
S -50 605 0 595 1 1 6 N
S -50 650 150 -750 1 1 10 f
S 150 -695 100 -705 1 1 6 N
S 150 -595 100 -605 1 1 6 N
S 150 -495 100 -505 1 1 6 N
S 150 -395 100 -405 1 1 6 N
S 150 -295 100 -305 1 1 6 N
S 150 -195 100 -205 1 1 6 N
S 150 -95 100 -105 1 1 6 N
S 150 5 100 -5 1 1 6 N
S 150 105 100 95 1 1 6 N
S 150 205 100 195 1 1 6 N
S 150 305 100 295 1 1 6 N
S 150 405 100 395 1 1 6 N
S 150 505 100 495 1 1 6 N
S 150 605 100 595 1 1 6 N
X Pin_1 1 -200 600 150 R 50 50 1 1 P
X Pin_10 10 300 200 150 L 50 50 1 1 P
X Pin_11 11 -200 100 150 R 50 50 1 1 P
X Pin_12 12 300 100 150 L 50 50 1 1 P
X Pin_13 13 -200 0 150 R 50 50 1 1 P
X Pin_14 14 300 0 150 L 50 50 1 1 P
X Pin_15 15 -200 -100 150 R 50 50 1 1 P
X Pin_16 16 300 -100 150 L 50 50 1 1 P
X Pin_17 17 -200 -200 150 R 50 50 1 1 P
X Pin_18 18 300 -200 150 L 50 50 1 1 P
X Pin_19 19 -200 -300 150 R 50 50 1 1 P
X Pin_2 2 300 600 150 L 50 50 1 1 P
X Pin_20 20 300 -300 150 L 50 50 1 1 P
X Pin_21 21 -200 -400 150 R 50 50 1 1 P
X Pin_22 22 300 -400 150 L 50 50 1 1 P
X Pin_23 23 -200 -500 150 R 50 50 1 1 P
X Pin_24 24 300 -500 150 L 50 50 1 1 P
X Pin_25 25 -200 -600 150 R 50 50 1 1 P
X Pin_26 26 300 -600 150 L 50 50 1 1 P
X Pin_27 27 -200 -700 150 R 50 50 1 1 P
X Pin_28 28 300 -700 150 L 50 50 1 1 P
X Pin_3 3 -200 500 150 R 50 50 1 1 P
X Pin_4 4 300 500 150 L 50 50 1 1 P
X Pin_5 5 -200 400 150 R 50 50 1 1 P
X Pin_6 6 300 400 150 L 50 50 1 1 P
X Pin_7 7 -200 300 150 R 50 50 1 1 P
X Pin_8 8 300 300 150 L 50 50 1 1 P
X Pin_9 9 -200 200 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
#End Library
================================================
FILE: electronics/BM28B0.6-24DSBreakout/BM28B0.6-24DSBreakout.kicad_pcb
================================================
(kicad_pcb (version 20171130) (host pcbnew 5.1.10-88a1d61d58~90~ubuntu20.04.1)
(general
(thickness 1.6)
(drawings 29)
(tracks 84)
(zones 0)
(modules 3)
(nets 29)
)
(page A4)
(layers
(0 F.Cu signal)
(31 B.Cu signal)
(32 B.Adhes user)
(33 F.Adhes user)
(34 B.Paste user)
(35 F.Paste user)
(36 B.SilkS user)
(37 F.SilkS user)
(38 B.Mask user)
(39 F.Mask user)
(40 Dwgs.User user)
(41 Cmts.User user)
(42 Eco1.User user)
(43 Eco2.User user)
(44 Edge.Cuts user)
(45 Margin user)
(46 B.CrtYd user)
(47 F.CrtYd user)
(48 B.Fab user)
(49 F.Fab user)
)
(setup
(last_trace_width 0.18)
(trace_clearance 0.127)
(zone_clearance 0.508)
(zone_45_only no)
(trace_min 0.127)
(via_size 0.8)
(via_drill 0.4)
(via_min_size 0.4)
(via_min_drill 0.3)
(uvia_size 0.3)
(uvia_drill 0.1)
(uvias_allowed no)
(uvia_min_size 0.2)
(uvia_min_drill 0.1)
(edge_width 0.05)
(segment_width 0.2)
(pcb_text_width 0.3)
(pcb_text_size 1.5 1.5)
(mod_edge_width 0.12)
(mod_text_size 1 1)
(mod_text_width 0.15)
(pad_size 1.524 1.524)
(pad_drill 0.762)
(pad_to_mask_clearance 0)
(aux_axis_origin 0 0)
(visible_elements FFFFFF7F)
(pcbplotparams
(layerselection 0x010fc_ffffffff)
(usegerberextensions false)
(usegerberattributes true)
(usegerberadvancedattributes true)
(creategerberjobfile true)
(excludeedgelayer true)
(linewidth 0.100000)
(plotframeref false)
(viasonmask false)
(mode 1)
(useauxorigin false)
(hpglpennumber 1)
(hpglpenspeed 20)
(hpglpendiameter 15.000000)
(psnegative false)
(psa4output false)
(plotreference true)
(plotvalue true)
(plotinvisibletext false)
(padsonsilk false)
(subtractmaskfromsilk false)
(outputformat 1)
(mirror false)
(drillshape 1)
(scaleselection 1)
(outputdirectory ""))
)
(net 0 "")
(net 1 /P27)
(net 2 "Net-(J1-Pad13)")
(net 3 "Net-(J1-Pad12)")
(net 4 "Net-(J1-Pad11)")
(net 5 "Net-(J1-Pad10)")
(net 6 "Net-(J1-Pad9)")
(net 7 "Net-(J1-Pad8)")
(net 8 "Net-(J1-Pad7)")
(net 9 "Net-(J1-Pad6)")
(net 10 "Net-(J1-Pad5)")
(net 11 "Net-(J1-Pad4)")
(net 12 "Net-(J1-Pad3)")
(net 13 "Net-(J1-Pad2)")
(net 14 /P25)
(net 15 /P28)
(net 16 "Net-(J2-Pad13)")
(net 17 "Net-(J2-Pad12)")
(net 18 "Net-(J2-Pad11)")
(net 19 "Net-(J2-Pad10)")
(net 20 "Net-(J2-Pad9)")
(net 21 "Net-(J2-Pad8)")
(net 22 "Net-(J2-Pad7)")
(net 23 "Net-(J2-Pad6)")
(net 24 "Net-(J2-Pad5)")
(net 25 "Net-(J2-Pad4)")
(net 26 "Net-(J2-Pad3)")
(net 27 "Net-(J2-Pad2)")
(net 28 /P26)
(net_class Default "This is the default net class."
(clearance 0.127)
(trace_width 0.18)
(via_dia 0.8)
(via_drill 0.4)
(uvia_dia 0.3)
(uvia_drill 0.1)
(add_net /P25)
(add_net /P26)
(add_net /P27)
(add_net /P28)
(add_net "Net-(J1-Pad10)")
(add_net "Net-(J1-Pad11)")
(add_net "Net-(J1-Pad12)")
(add_net "Net-(J1-Pad13)")
(add_net "Net-(J1-Pad2)")
(add_net "Net-(J1-Pad3)")
(add_net "Net-(J1-Pad4)")
(add_net "Net-(J1-Pad5)")
(add_net "Net-(J1-Pad6)")
(add_net "Net-(J1-Pad7)")
(add_net "Net-(J1-Pad8)")
(add_net "Net-(J1-Pad9)")
(add_net "Net-(J2-Pad10)")
(add_net "Net-(J2-Pad11)")
(add_net "Net-(J2-Pad12)")
(add_net "Net-(J2-Pad13)")
(add_net "Net-(J2-Pad2)")
(add_net "Net-(J2-Pad3)")
(add_net "Net-(J2-Pad4)")
(add_net "Net-(J2-Pad5)")
(add_net "Net-(J2-Pad6)")
(add_net "Net-(J2-Pad7)")
(add_net "Net-(J2-Pad8)")
(add_net "Net-(J2-Pad9)")
)
(module BM28:BM28B0.6-24DS (layer F.Cu) (tedit 6180705A) (tstamp 61814D44)
(at 74.93 62.23)
(path /61B58607)
(attr smd)
(fp_text reference J3 (at -3.515 0 90) (layer F.SilkS) hide
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text value Conn_02x14_Odd_Even (at 0 3.6) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(pad 28 smd rect (at 0.745 2.63) (size 0.31 0.53) (layers F.Cu F.Paste F.Mask)
(net 15 /P28))
(pad 27 smd rect (at -0.745 2.63) (size 0.31 0.53) (layers F.Cu F.Paste F.Mask)
(net 1 /P27))
(pad 26 smd rect (at 0.745 -2.63) (size 0.31 0.53) (layers F.Cu F.Paste F.Mask)
(net 28 /P26))
(pad 25 smd rect (at -0.745 -2.63) (size 0.31 0.53) (layers F.Cu F.Paste F.Mask)
(net 14 /P25))
(pad 24 smd rect (at 0.795 1.925) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask)
(net 16 "Net-(J2-Pad13)"))
(pad 23 smd rect (at -0.795 1.925) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask)
(net 2 "Net-(J1-Pad13)"))
(pad 22 smd rect (at 0.795 1.575) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask)
(net 17 "Net-(J2-Pad12)"))
(pad 21 smd rect (at -0.795 1.575) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask)
(net 3 "Net-(J1-Pad12)"))
(pad 20 smd rect (at 0.795 1.225) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask)
(net 18 "Net-(J2-Pad11)"))
(pad 19 smd rect (at -0.795 1.225) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask)
(net 4 "Net-(J1-Pad11)"))
(pad 18 smd rect (at 0.795 0.875) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask)
(net 19 "Net-(J2-Pad10)"))
(pad 17 smd rect (at -0.795 0.875) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask)
(net 5 "Net-(J1-Pad10)"))
(pad 16 smd rect (at 0.795 0.525) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask)
(net 20 "Net-(J2-Pad9)"))
(pad 15 smd rect (at -0.795 0.525) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask)
(net 6 "Net-(J1-Pad9)"))
(pad 14 smd rect (at 0.795 0.175) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask)
(net 21 "Net-(J2-Pad8)"))
(pad 13 smd rect (at -0.795 0.175) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask)
(net 7 "Net-(J1-Pad8)"))
(pad 12 smd rect (at 0.795 -0.175) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask)
(net 22 "Net-(J2-Pad7)"))
(pad 11 smd rect (at -0.795 -0.175) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask)
(net 8 "Net-(J1-Pad7)"))
(pad 10 smd rect (at 0.795 -0.525) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask)
(net 23 "Net-(J2-Pad6)"))
(pad 9 smd rect (at -0.795 -0.525) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask)
(net 9 "Net-(J1-Pad6)"))
(pad 8 smd rect (at 0.795 -0.875) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask)
(net 24 "Net-(J2-Pad5)"))
(pad 7 smd rect (at -0.795 -0.875) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask)
(net 10 "Net-(J1-Pad5)"))
(pad 6 smd rect (at 0.795 -1.225) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask)
(net 25 "Net-(J2-Pad4)"))
(pad 5 smd rect (at -0.795 -1.225) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask)
(net 11 "Net-(J1-Pad4)"))
(pad 4 smd rect (at 0.795 -1.575) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask)
(net 26 "Net-(J2-Pad3)"))
(pad 3 smd rect (at -0.795 -1.575) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask)
(net 12 "Net-(J1-Pad3)"))
(pad 2 smd rect (at 0.795 -1.925) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask)
(net 27 "Net-(J2-Pad2)"))
(pad 1 smd rect (at -0.795 -1.925) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask)
(net 13 "Net-(J1-Pad2)"))
)
(module Connector_PinHeader_2.54mm:PinHeader_1x14_P2.54mm_Vertical (layer B.Cu) (tedit 59FED5CC) (tstamp 61814D24)
(at 81.28 45.72 180)
(descr "Through hole straight pin header, 1x14, 2.54mm pitch, single row")
(tags "Through hole pin header THT 1x14 2.54mm single row")
(path /61B5ADB8)
(fp_text reference J2 (at 0 2.33) (layer B.SilkS) hide
(effects (font (size 1 1) (thickness 0.15)) (justify mirror))
)
(fp_text value Conn_01x14_Male (at 0 -35.35) (layer B.Fab)
(effects (font (size 1 1) (thickness 0.15)) (justify mirror))
)
(fp_text user %R (at 0 -16.51 270) (layer B.Fab)
(effects (font (size 1 1) (thickness 0.15)) (justify mirror))
)
(fp_line (start -0.635 1.27) (end 1.27 1.27) (layer B.Fab) (width 0.1))
(fp_line (start 1.27 1.27) (end 1.27 -34.29) (layer B.Fab) (width 0.1))
(fp_line (start 1.27 -34.29) (end -1.27 -34.29) (layer B.Fab) (width 0.1))
(fp_line (start -1.27 -34.29) (end -1.27 0.635) (layer B.Fab) (width 0.1))
(fp_line (start -1.27 0.635) (end -0.635 1.27) (layer B.Fab) (width 0.1))
(fp_line (start -1.33 -34.35) (end 1.33 -34.35) (layer B.SilkS) (width 0.12))
(fp_line (start -1.33 -1.27) (end -1.33 -34.35) (layer B.SilkS) (width 0.12))
(fp_line (start 1.33 -1.27) (end 1.33 -34.35) (layer B.SilkS) (width 0.12))
(fp_line (start -1.33 -1.27) (end 1.33 -1.27) (layer B.SilkS) (width 0.12))
(fp_line (start -1.33 0) (end -1.33 1.33) (layer B.SilkS) (width 0.12))
(fp_line (start -1.33 1.33) (end 0 1.33) (layer B.SilkS) (width 0.12))
(fp_line (start -1.8 1.8) (end -1.8 -34.8) (layer B.CrtYd) (width 0.05))
(fp_line (start -1.8 -34.8) (end 1.8 -34.8) (layer B.CrtYd) (width 0.05))
(fp_line (start 1.8 -34.8) (end 1.8 1.8) (layer B.CrtYd) (width 0.05))
(fp_line (start 1.8 1.8) (end -1.8 1.8) (layer B.CrtYd) (width 0.05))
(pad 14 thru_hole oval (at 0 -33.02 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 15 /P28))
(pad 13 thru_hole oval (at 0 -30.48 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 16 "Net-(J2-Pad13)"))
(pad 12 thru_hole oval (at 0 -27.94 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 17 "Net-(J2-Pad12)"))
(pad 11 thru_hole oval (at 0 -25.4 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 18 "Net-(J2-Pad11)"))
(pad 10 thru_hole oval (at 0 -22.86 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 19 "Net-(J2-Pad10)"))
(pad 9 thru_hole oval (at 0 -20.32 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 20 "Net-(J2-Pad9)"))
(pad 8 thru_hole oval (at 0 -17.78 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 21 "Net-(J2-Pad8)"))
(pad 7 thru_hole oval (at 0 -15.24 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 22 "Net-(J2-Pad7)"))
(pad 6 thru_hole oval (at 0 -12.7 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 23 "Net-(J2-Pad6)"))
(pad 5 thru_hole oval (at 0 -10.16 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 24 "Net-(J2-Pad5)"))
(pad 4 thru_hole oval (at 0 -7.62 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 25 "Net-(J2-Pad4)"))
(pad 3 thru_hole oval (at 0 -5.08 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 26 "Net-(J2-Pad3)"))
(pad 2 thru_hole oval (at 0 -2.54 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 27 "Net-(J2-Pad2)"))
(pad 1 thru_hole rect (at 0 0 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 28 /P26))
(model ${KISYS3DMOD}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_1x14_P2.54mm_Vertical.wrl
(at (xyz 0 0 0))
(scale (xyz 1 1 1))
(rotate (xyz 0 0 0))
)
)
(module Connector_PinHeader_2.54mm:PinHeader_1x14_P2.54mm_Vertical (layer B.Cu) (tedit 59FED5CC) (tstamp 61814D02)
(at 68.58 45.72 180)
(descr "Through hole straight pin header, 1x14, 2.54mm pitch, single row")
(tags "Through hole pin header THT 1x14 2.54mm single row")
(path /61B59B74)
(fp_text reference J1 (at 0 2.33) (layer B.SilkS) hide
(effects (font (size 1 1) (thickness 0.15)) (justify mirror))
)
(fp_text value Conn_01x14_Male (at 0 -35.35) (layer B.Fab)
(effects (font (size 1 1) (thickness 0.15)) (justify mirror))
)
(fp_text user %R (at 0 -16.51 270) (layer B.Fab)
(effects (font (size 1 1) (thickness 0.15)) (justify mirror))
)
(fp_line (start -0.635 1.27) (end 1.27 1.27) (layer B.Fab) (width 0.1))
(fp_line (start 1.27 1.27) (end 1.27 -34.29) (layer B.Fab) (width 0.1))
(fp_line (start 1.27 -34.29) (end -1.27 -34.29) (layer B.Fab) (width 0.1))
(fp_line (start -1.27 -34.29) (end -1.27 0.635) (layer B.Fab) (width 0.1))
(fp_line (start -1.27 0.635) (end -0.635 1.27) (layer B.Fab) (width 0.1))
(fp_line (start -1.33 -34.35) (end 1.33 -34.35) (layer B.SilkS) (width 0.12))
(fp_line (start -1.33 -1.27) (end -1.33 -34.35) (layer B.SilkS) (width 0.12))
(fp_line (start 1.33 -1.27) (end 1.33 -34.35) (layer B.SilkS) (width 0.12))
(fp_line (start -1.33 -1.27) (end 1.33 -1.27) (layer B.SilkS) (width 0.12))
(fp_line (start -1.33 0) (end -1.33 1.33) (layer B.SilkS) (width 0.12))
(fp_line (start -1.33 1.33) (end 0 1.33) (layer B.SilkS) (width 0.12))
(fp_line (start -1.8 1.8) (end -1.8 -34.8) (layer B.CrtYd) (width 0.05))
(fp_line (start -1.8 -34.8) (end 1.8 -34.8) (layer B.CrtYd) (width 0.05))
(fp_line (start 1.8 -34.8) (end 1.8 1.8) (layer B.CrtYd) (width 0.05))
(fp_line (start 1.8 1.8) (end -1.8 1.8) (layer B.CrtYd) (width 0.05))
(pad 14 thru_hole oval (at 0 -33.02 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 1 /P27))
(pad 13 thru_hole oval (at 0 -30.48 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 2 "Net-(J1-Pad13)"))
(pad 12 thru_hole oval (at 0 -27.94 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 3 "Net-(J1-Pad12)"))
(pad 11 thru_hole oval (at 0 -25.4 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 4 "Net-(J1-Pad11)"))
(pad 10 thru_hole oval (at 0 -22.86 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 5 "Net-(J1-Pad10)"))
(pad 9 thru_hole oval (at 0 -20.32 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 6 "Net-(J1-Pad9)"))
(pad 8 thru_hole oval (at 0 -17.78 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 7 "Net-(J1-Pad8)"))
(pad 7 thru_hole oval (at 0 -15.24 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 8 "Net-(J1-Pad7)"))
(pad 6 thru_hole oval (at 0 -12.7 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 9 "Net-(J1-Pad6)"))
(pad 5 thru_hole oval (at 0 -10.16 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 10 "Net-(J1-Pad5)"))
(pad 4 thru_hole oval (at 0 -7.62 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 11 "Net-(J1-Pad4)"))
(pad 3 thru_hole oval (at 0 -5.08 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 12 "Net-(J1-Pad3)"))
(pad 2 thru_hole oval (at 0 -2.54 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 13 "Net-(J1-Pad2)"))
(pad 1 thru_hole rect (at 0 0 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 14 /P25))
(model ${KISYS3DMOD}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_1x14_P2.54mm_Vertical.wrl
(at (xyz 0 0 0))
(scale (xyz 1 1 1))
(rotate (xyz 0 0 0))
)
)
(gr_text BM28B0.6-24DS (at 74.93 58.42 90) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)) (justify left))
)
(gr_text 16 (at 78.74 66.04) (layer F.SilkS) (tstamp 61816215)
(effects (font (size 1 1) (thickness 0.15)))
)
(gr_text 6 (at 78.74 53.34) (layer F.SilkS) (tstamp 61816214)
(effects (font (size 1 1) (thickness 0.15)))
)
(gr_text 22 (at 78.74 73.66) (layer F.SilkS) (tstamp 61816213)
(effects (font (size 1 1) (thickness 0.15)))
)
(gr_text 8 (at 78.74 55.88) (layer F.SilkS) (tstamp 61816212)
(effects (font (size 1 1) (thickness 0.15)))
)
(gr_text 14 (at 78.74 63.5) (layer F.SilkS) (tstamp 61816211)
(effects (font (size 1 1) (thickness 0.15)))
)
(gr_text 24 (at 78.74 76.2) (layer F.SilkS) (tstamp 61816210)
(effects (font (size 1 1) (thickness 0.15)))
)
(gr_text 10 (at 78.74 58.42) (layer F.SilkS) (tstamp 6181620F)
(effects (font (size 1 1) (thickness 0.15)))
)
(gr_text 4 (at 78.74 50.8) (layer F.SilkS) (tstamp 6181620E)
(effects (font (size 1 1) (thickness 0.15)))
)
(gr_text 20 (at 78.74 71.12) (layer F.SilkS) (tstamp 6181620D)
(effects (font (size 1 1) (thickness 0.15)))
)
(gr_text 12 (at 78.74 60.96) (layer F.SilkS) (tstamp 6181620C)
(effects (font (size 1 1) (thickness 0.15)))
)
(gr_text 2 (at 78.74 48.26) (layer F.SilkS) (tstamp 6181620B)
(effects (font (size 1 1) (thickness 0.15)))
)
(gr_text 18 (at 78.74 68.58) (layer F.SilkS) (tstamp 6181620A)
(effects (font (size 1 1) (thickness 0.15)))
)
(gr_text 23 (at 71.12 76.2) (layer F.SilkS) (tstamp 6181613B)
(effects (font (size 1 1) (thickness 0.15)))
)
(gr_text 21 (at 71.12 73.66) (layer F.SilkS) (tstamp 61816139)
(effects (font (size 1 1) (thickness 0.15)))
)
(gr_text 19 (at 71.12 71.12) (layer F.SilkS) (tstamp 61816137)
(effects (font (size 1 1) (thickness 0.15)))
)
(gr_text 17 (at 71.12 68.58) (layer F.SilkS) (tstamp 61816135)
(effects (font (size 1 1) (thickness 0.15)))
)
(gr_text 15 (at 71.12 66.04) (layer F.SilkS) (tstamp 61816133)
(effects (font (size 1 1) (thickness 0.15)))
)
(gr_text 13 (at 71.12 63.5) (layer F.SilkS) (tstamp 61816131)
(effects (font (size 1 1) (thickness 0.15)))
)
(gr_text 11 (at 71.12 60.96) (layer F.SilkS) (tstamp 6181610D)
(effects (font (size 1 1) (thickness 0.15)))
)
(gr_text 9 (at 71.12 58.42) (layer F.SilkS) (tstamp 6181610B)
(effects (font (size 1 1) (thickness 0.15)))
)
(gr_text 7 (at 71.12 55.88) (layer F.SilkS) (tstamp 61816109)
(effects (font (size 1 1) (thickness 0.15)))
)
(gr_text 5 (at 71.12 53.34) (layer F.SilkS) (tstamp 61816107)
(effects (font (size 1 1) (thickness 0.15)))
)
(gr_text 3 (at 71.12 50.8) (layer F.SilkS) (tstamp 61816105)
(effects (font (size 1 1) (thickness 0.15)))
)
(gr_text 1 (at 71.12 48.26) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(gr_line (start 67.31 80.01) (end 67.31 44.45) (layer Edge.Cuts) (width 0.05) (tstamp 61816102))
(gr_line (start 82.55 80.01) (end 67.31 80.01) (layer Edge.Cuts) (width 0.05))
(gr_line (start 82.55 44.45) (end 82.55 80.01) (layer Edge.Cuts) (width 0.05))
(gr_line (start 67.31 44.45) (end 82.55 44.45) (layer Edge.Cuts) (width 0.05))
(segment (start 77.724 49.276) (end 81.28 45.72) (width 0.18) (layer F.Cu) (net 28) (tstamp 61816022) (status 20))
(segment (start 75.675 59.6) (end 77.724 57.551) (width 0.18) (layer F.Cu) (net 28) (tstamp 61816025) (status 10))
(segment (start 77.724 57.551) (end 77.724 49.276) (width 0.18) (layer F.Cu) (net 28) (tstamp 6181603D))
(segment (start 78.486 57.544) (end 78.486 51.054) (width 0.18) (layer F.Cu) (net 27) (tstamp 6181601A))
(segment (start 78.486 51.054) (end 81.28 48.26) (width 0.18) (layer F.Cu) (net 27) (tstamp 6181601B) (status 20))
(segment (start 75.725 60.305) (end 78.486 57.544) (width 0.18) (layer F.Cu) (net 27) (tstamp 61816024) (status 10))
(segment (start 79.248 52.832) (end 81.28 50.8) (width 0.18) (layer F.Cu) (net 26) (tstamp 61816013) (status 20))
(segment (start 75.725 60.655) (end 75.997 60.655) (width 0.18) (layer F.Cu) (net 26) (tstamp 61816019) (status 10))
(segment (start 79.248 57.404) (end 79.248 52.832) (width 0.18) (layer F.Cu) (net 26) (tstamp 61816026))
(segment (start 75.997 60.655) (end 79.248 57.404) (width 0.18) (layer F.Cu) (net 26) (tstamp 61816039))
(segment (start 80.01 54.61) (end 81.28 53.34) (width 0.18) (layer F.Cu) (net 25) (tstamp 6181601C) (status 20))
(segment (start 75.725 61.005) (end 76.409 61.005) (width 0.18) (layer F.Cu) (net 25) (tstamp 61816030) (status 10))
(segment (start 80.01 57.404) (end 80.01 54.61) (width 0.18) (layer F.Cu) (net 25) (tstamp 6181603A))
(segment (start 76.409 61.005) (end 80.01 57.404) (width 0.18) (layer F.Cu) (net 25) (tstamp 6181603B))
(segment (start 81.28 56.896) (end 81.28 55.88) (width 0.18) (layer F.Cu) (net 24) (tstamp 6181602C) (status 20))
(segment (start 76.821 61.355) (end 81.28 56.896) (width 0.18) (layer F.Cu) (net 24) (tstamp 61816037))
(segment (start 75.725 61.355) (end 76.821 61.355) (width 0.18) (layer F.Cu) (net 24) (tstamp 61816038) (status 10))
(segment (start 75.725 61.705) (end 77.995 61.705) (width 0.18) (layer F.Cu) (net 23) (tstamp 6181601F) (status 10))
(segment (start 77.995 61.705) (end 81.28 58.42) (width 0.18) (layer F.Cu) (net 23) (tstamp 61816020) (status 20))
(segment (start 75.725 62.055) (end 80.185 62.055) (width 0.18) (layer F.Cu) (net 22) (tstamp 61816017) (status 10))
(segment (start 80.185 62.055) (end 81.28 60.96) (width 0.18) (layer F.Cu) (net 22) (tstamp 61816021) (status 20))
(segment (start 80.185 62.405) (end 81.28 63.5) (width 0.18) (layer F.Cu) (net 21) (tstamp 6181601D) (status 20))
(segment (start 75.725 62.405) (end 80.185 62.405) (width 0.18) (layer F.Cu) (net 21) (tstamp 6181602F) (status 10))
(segment (start 77.995 62.755) (end 81.28 66.04) (width 0.18) (layer F.Cu) (net 20) (tstamp 61816015) (status 20))
(segment (start 75.725 62.755) (end 77.995 62.755) (width 0.18) (layer F.Cu) (net 20) (tstamp 61816034) (status 10))
(segment (start 81.28 67.564) (end 81.28 68.58) (width 0.18) (layer F.Cu) (net 19) (tstamp 61816023) (status 20))
(segment (start 76.821 63.105) (end 81.28 67.564) (width 0.18) (layer F.Cu) (net 19) (tstamp 61816036))
(segment (start 75.725 63.105) (end 76.821 63.105) (width 0.18) (layer F.Cu) (net 19) (tstamp 6181603E) (status 10))
(segment (start 80.01 69.85) (end 81.28 71.12) (width 0.18) (layer F.Cu) (net 18) (tstamp 61816027) (status 20))
(segment (start 76.409 63.455) (end 80.01 67.056) (width 0.18) (layer F.Cu) (net 18) (tstamp 6181602A))
(segment (start 80.01 67.056) (end 80.01 69.85) (width 0.18) (layer F.Cu) (net 18) (tstamp 61816033))
(segment (start 75.725 63.455) (end 76.409 63.455) (width 0.18) (layer F.Cu) (net 18) (tstamp 61816035) (status 10))
(segment (start 79.248 66.992398) (end 79.248 71.628) (width 0.18) (layer F.Cu) (net 17) (tstamp 61816028))
(segment (start 79.248 71.628) (end 81.28 73.66) (width 0.18) (layer F.Cu) (net 17) (tstamp 61816029) (status 20))
(segment (start 76.060602 63.805) (end 79.248 66.992398) (width 0.18) (layer F.Cu) (net 17) (tstamp 6181602D))
(segment (start 75.725 63.805) (end 76.060602 63.805) (width 0.18) (layer F.Cu) (net 17) (tstamp 6181603C) (status 10))
(segment (start 78.486 73.406) (end 81.28 76.2) (width 0.18) (layer F.Cu) (net 16) (tstamp 61816014) (status 20))
(segment (start 75.725 64.155) (end 78.486 66.916) (width 0.18) (layer F.Cu) (net 16) (tstamp 61816016) (status 10))
(segment (start 78.486 66.916) (end 78.486 73.406) (width 0.18) (layer F.Cu) (net 16) (tstamp 61816018))
(segment (start 77.724 66.909) (end 77.724 75.184) (width 0.18) (layer F.Cu) (net 15) (tstamp 6181602E))
(segment (start 77.724 75.184) (end 81.28 78.74) (width 0.18) (layer F.Cu) (net 15) (tstamp 61816031) (status 20))
(segment (start 75.675 64.86) (end 77.724 66.909) (width 0.18) (layer F.Cu) (net 15) (tstamp 6181603F) (status 10))
(segment (start 72.136 66.909) (end 72.136 75.184) (width 0.18) (layer F.Cu) (net 1))
(segment (start 74.185 64.86) (end 72.136 66.909) (width 0.18) (layer F.Cu) (net 1) (status 10))
(segment (start 72.136 75.184) (end 68.58 78.74) (width 0.18) (layer F.Cu) (net 1) (status 20))
(segment (start 74.135 64.155) (end 71.374 66.916) (width 0.18) (layer F.Cu) (net 2) (status 10))
(segment (start 71.374 73.406) (end 68.58 76.2) (width 0.18) (layer F.Cu) (net 2) (status 20))
(segment (start 71.374 66.916) (end 71.374 73.406) (width 0.18) (layer F.Cu) (net 2))
(segment (start 73.863 63.805) (end 70.612 67.056) (width 0.18) (layer F.Cu) (net 3))
(segment (start 70.612 71.628) (end 68.58 73.66) (width 0.18) (layer F.Cu) (net 3) (status 20))
(segment (start 70.612 67.056) (end 70.612 71.628) (width 0.18) (layer F.Cu) (net 3))
(segment (start 74.135 63.805) (end 73.863 63.805) (width 0.18) (layer F.Cu) (net 3) (status 10))
(segment (start 73.451 63.455) (end 69.85 67.056) (width 0.18) (layer F.Cu) (net 4))
(segment (start 69.85 67.056) (end 69.85 69.85) (width 0.18) (layer F.Cu) (net 4))
(segment (start 74.135 63.455) (end 73.451 63.455) (width 0.18) (layer F.Cu) (net 4) (status 10))
(segment (start 69.85 69.85) (end 68.58 71.12) (width 0.18) (layer F.Cu) (net 4) (status 20))
(segment (start 74.135 63.105) (end 73.039 63.105) (width 0.18) (layer F.Cu) (net 5) (status 10))
(segment (start 73.039 63.105) (end 68.58 67.564) (width 0.18) (layer F.Cu) (net 5))
(segment (start 68.58 67.564) (end 68.58 68.58) (width 0.18) (layer F.Cu) (net 5) (status 20))
(segment (start 71.865 62.755) (end 68.58 66.04) (width 0.18) (layer F.Cu) (net 6) (status 20))
(segment (start 74.135 62.755) (end 71.865 62.755) (width 0.18) (layer F.Cu) (net 6) (status 10))
(segment (start 69.675 62.405) (end 68.58 63.5) (width 0.18) (layer F.Cu) (net 7) (status 20))
(segment (start 74.135 62.405) (end 69.675 62.405) (width 0.18) (layer F.Cu) (net 7) (status 10))
(segment (start 69.675 62.055) (end 68.58 60.96) (width 0.18) (layer F.Cu) (net 8) (status 20))
(segment (start 74.135 62.055) (end 69.675 62.055) (width 0.18) (layer F.Cu) (net 8) (status 10))
(segment (start 71.865 61.705) (end 68.58 58.42) (width 0.18) (layer F.Cu) (net 9) (status 20))
(segment (start 74.135 61.705) (end 71.865 61.705) (width 0.18) (layer F.Cu) (net 9) (status 10))
(segment (start 68.58 56.896) (end 68.58 55.88) (width 0.18) (layer F.Cu) (net 10) (status 20))
(segment (start 73.039 61.355) (end 68.58 56.896) (width 0.18) (layer F.Cu) (net 10))
(segment (start 74.135 61.355) (end 73.039 61.355) (width 0.18) (layer F.Cu) (net 10) (status 10))
(segment (start 69.85 54.61) (end 68.58 53.34) (width 0.18) (layer F.Cu) (net 11) (status 20))
(segment (start 69.85 57.404) (end 69.85 54.61) (width 0.18) (layer F.Cu) (net 11))
(segment (start 73.451 61.005) (end 69.85 57.404) (width 0.18) (layer F.Cu) (net 11))
(segment (start 74.135 61.005) (end 73.451 61.005) (width 0.18) (layer F.Cu) (net 11) (status 10))
(segment (start 70.612 52.832) (end 68.58 50.8) (width 0.18) (layer F.Cu) (net 12) (status 20))
(segment (start 70.612 57.467602) (end 70.612 52.832) (width 0.18) (layer F.Cu) (net 12))
(segment (start 73.799398 60.655) (end 70.612 57.467602) (width 0.18) (layer F.Cu) (net 12))
(segment (start 74.135 60.655) (end 73.799398 60.655) (width 0.18) (layer F.Cu) (net 12) (status 10))
(segment (start 71.374 51.054) (end 68.58 48.26) (width 0.18) (layer F.Cu) (net 13) (status 20))
(segment (start 71.374 57.544) (end 71.374 51.054) (width 0.18) (layer F.Cu) (net 13))
(segment (start 74.135 60.305) (end 71.374 57.544) (width 0.18) (layer F.Cu) (net 13) (status 10))
(segment (start 72.136 49.276) (end 68.58 45.72) (width 0.18) (layer F.Cu) (net 14) (status 20))
(segment (start 72.136 57.551) (end 72.136 49.276) (width 0.18) (layer F.Cu) (net 14))
(segment (start 74.185 59.6) (end 72.136 57.551) (width 0.18) (layer F.Cu) (net 14) (status 10))
)
================================================
FILE: electronics/BM28B0.6-24DSBreakout/BM28B0.6-24DSBreakout.pro
================================================
update=Mon 01 Nov 2021 03:41:48 PM PDT
version=1
last_client=kicad
[general]
version=1
RootSch=
BoardNm=
[cvpcb]
version=1
NetIExt=net
[eeschema]
version=1
LibDir=
[eeschema/libraries]
[pcbnew]
version=1
PageLayoutDescrFile=
LastNetListRead=
CopperLayerCount=2
BoardThickness=1.6
AllowMicroVias=0
AllowBlindVias=0
RequireCourtyardDefinitions=0
ProhibitOverlappingCourtyards=1
MinTrackWidth=0.127
MinViaDiameter=0.4
MinViaDrill=0.3
MinMicroViaDiameter=0.2
MinMicroViaDrill=0.09999999999999999
MinHoleToHole=0.25
TrackWidth1=0.18
ViaDiameter1=0.8
ViaDrill1=0.4
dPairWidth1=0.2
dPairGap1=0.25
dPairViaGap1=0.25
SilkLineWidth=0.12
SilkTextSizeV=1
SilkTextSizeH=1
SilkTextSizeThickness=0.15
SilkTextItalic=0
SilkTextUpright=1
CopperLineWidth=0.2
CopperTextSizeV=1.5
CopperTextSizeH=1.5
CopperTextThickness=0.3
CopperTextItalic=0
CopperTextUpright=1
EdgeCutLineWidth=0.05
CourtyardLineWidth=0.05
OthersLineWidth=0.15
OthersTextSizeV=1
OthersTextSizeH=1
OthersTextSizeThickness=0.15
OthersTextItalic=0
OthersTextUpright=1
SolderMaskClearance=0
SolderMaskMinWidth=0
SolderPasteClearance=0
SolderPasteRatio=-0
[pcbnew/Layer.F.Cu]
Name=F.Cu
Type=0
Enabled=1
[pcbnew/Layer.In1.Cu]
Name=In1.Cu
Type=0
Enabled=0
[pcbnew/Layer.In2.Cu]
Name=In2.Cu
Type=0
Enabled=0
[pcbnew/Layer.In3.Cu]
Name=In3.Cu
Type=0
Enabled=0
[pcbnew/Layer.In4.Cu]
Name=In4.Cu
Type=0
Enabled=0
[pcbnew/Layer.In5.Cu]
Name=In5.Cu
Type=0
Enabled=0
[pcbnew/Layer.In6.Cu]
Name=In6.Cu
Type=0
Enabled=0
[pcbnew/Layer.In7.Cu]
Name=In7.Cu
Type=0
Enabled=0
[pcbnew/Layer.In8.Cu]
Name=In8.Cu
Type=0
Enabled=0
[pcbnew/Layer.In9.Cu]
Name=In9.Cu
Type=0
Enabled=0
[pcbnew/Layer.In10.Cu]
Name=In10.Cu
Type=0
Enabled=0
[pcbnew/Layer.In11.Cu]
Name=In11.Cu
Type=0
Enabled=0
[pcbnew/Layer.In12.Cu]
Name=In12.Cu
Type=0
Enabled=0
[pcbnew/Layer.In13.Cu]
Name=In13.Cu
Type=0
Enabled=0
[pcbnew/Layer.In14.Cu]
Name=In14.Cu
Type=0
Enabled=0
[pcbnew/Layer.In15.Cu]
Name=In15.Cu
Type=0
Enabled=0
[pcbnew/Layer.In16.Cu]
Name=In16.Cu
Type=0
Enabled=0
[pcbnew/Layer.In17.Cu]
Name=In17.Cu
Type=0
Enabled=0
[pcbnew/Layer.In18.Cu]
Name=In18.Cu
Type=0
Enabled=0
[pcbnew/Layer.In19.Cu]
Name=In19.Cu
Type=0
Enabled=0
[pcbnew/Layer.In20.Cu]
Name=In20.Cu
Type=0
Enabled=0
[pcbnew/Layer.In21.Cu]
Name=In21.Cu
Type=0
Enabled=0
[pcbnew/Layer.In22.Cu]
Name=In22.Cu
Type=0
Enabled=0
[pcbnew/Layer.In23.Cu]
Name=In23.Cu
Type=0
Enabled=0
[pcbnew/Layer.In24.Cu]
Name=In24.Cu
Type=0
Enabled=0
[pcbnew/Layer.In25.Cu]
Name=In25.Cu
Type=0
Enabled=0
[pcbnew/Layer.In26.Cu]
Name=In26.Cu
Type=0
Enabled=0
[pcbnew/Layer.In27.Cu]
Name=In27.Cu
Type=0
Enabled=0
[pcbnew/Layer.In28.Cu]
Name=In28.Cu
Type=0
Enabled=0
[pcbnew/Layer.In29.Cu]
Name=In29.Cu
Type=0
Enabled=0
[pcbnew/Layer.In30.Cu]
Name=In30.Cu
Type=0
Enabled=0
[pcbnew/Layer.B.Cu]
Name=B.Cu
Type=0
Enabled=1
[pcbnew/Layer.B.Adhes]
Enabled=1
[pcbnew/Layer.F.Adhes]
Enabled=1
[pcbnew/Layer.B.Paste]
Enabled=1
[pcbnew/Layer.F.Paste]
Enabled=1
[pcbnew/Layer.B.SilkS]
Enabled=1
[pcbnew/Layer.F.SilkS]
Enabled=1
[pcbnew/Layer.B.Mask]
Enabled=1
[pcbnew/Layer.F.Mask]
Enabled=1
[pcbnew/Layer.Dwgs.User]
Enabled=1
[pcbnew/Layer.Cmts.User]
Enabled=1
[pcbnew/Layer.Eco1.User]
Enabled=1
[pcbnew/Layer.Eco2.User]
Enabled=1
[pcbnew/Layer.Edge.Cuts]
Enabled=1
[pcbnew/Layer.Margin]
Enabled=1
[pcbnew/Layer.B.CrtYd]
Enabled=1
[pcbnew/Layer.F.CrtYd]
Enabled=1
[pcbnew/Layer.B.Fab]
Enabled=1
[pcbnew/Layer.F.Fab]
Enabled=1
[pcbnew/Layer.Rescue]
Enabled=0
[pcbnew/Netclasses]
[pcbnew/Netclasses/Default]
Name=Default
Clearance=0.127
TrackWidth=0.18
ViaDiameter=0.8
ViaDrill=0.4
uViaDiameter=0.3
uViaDrill=0.1
dPairWidth=0.2
dPairGap=0.25
dPairViaGap=0.25
================================================
FILE: electronics/BM28B0.6-24DSBreakout/BM28B0.6-24DSBreakout.sch
================================================
EESchema Schematic File Version 4
EELAYER 30 0
EELAYER END
$Descr A4 11693 8268
encoding utf-8
Sheet 1 1
Title ""
Date ""
Rev ""
Comp ""
Comment1 ""
Comment2 ""
Comment3 ""
Comment4 ""
$EndDescr
$Comp
L Connector_Generic:Conn_02x14_Odd_Even J3
U 1 1 61B58607
P 3850 3050
F 0 "J3" H 3900 3867 50 0000 C CNN
F 1 "Conn_02x14_Odd_Even" H 3900 3776 50 0000 C CNN
F 2 "BM28:BM28B0.6-24DS" H 3850 3050 50 0001 C CNN
F 3 "~" H 3850 3050 50 0001 C CNN
1 3850 3050
1 0 0 -1
$EndComp
$Comp
L Connector:Conn_01x14_Male J1
U 1 1 61B59B74
P 3050 2950
F 0 "J1" H 3158 3731 50 0000 C CNN
F 1 "Conn_01x14_Male" H 3158 3640 50 0000 C CNN
F 2 "Connector_PinHeader_2.54mm:PinHeader_1x14_P2.54mm_Vertical" H 3050 2950 50 0001 C CNN
F 3 "~" H 3050 2950 50 0001 C CNN
1 3050 2950
1 0 0 -1
$EndComp
$Comp
L Connector:Conn_01x14_Male J2
U 1 1 61B5ADB8
P 4750 2950
F 0 "J2" H 4722 2924 50 0000 R CNN
F 1 "Conn_01x14_Male" H 4722 2833 50 0000 R CNN
F 2 "Connector_PinHeader_2.54mm:PinHeader_1x14_P2.54mm_Vertical" H 4750 2950 50 0001 C CNN
F 3 "~" H 4750 2950 50 0001 C CNN
1 4750 2950
-1 0 0 -1
$EndComp
Wire Wire Line
3250 2450 3650 2450
Wire Wire Line
3650 2550 3250 2550
Wire Wire Line
3250 2650 3650 2650
Wire Wire Line
3650 2750 3250 2750
Wire Wire Line
3250 2850 3650 2850
Wire Wire Line
3650 2950 3250 2950
Wire Wire Line
3250 3050 3650 3050
Wire Wire Line
3650 3150 3250 3150
Wire Wire Line
3250 3250 3650 3250
Wire Wire Line
3650 3350 3250 3350
Wire Wire Line
3250 3450 3650 3450
Wire Wire Line
3650 3550 3250 3550
Wire Wire Line
4150 2450 4550 2450
Wire Wire Line
4550 2550 4150 2550
Wire Wire Line
4150 2650 4550 2650
Wire Wire Line
4550 2750 4150 2750
Wire Wire Line
4150 2850 4550 2850
Wire Wire Line
4550 2950 4150 2950
Wire Wire Line
4150 3050 4550 3050
Wire Wire Line
4550 3150 4150 3150
Wire Wire Line
4150 3250 4550 3250
Wire Wire Line
4550 3350 4150 3350
Wire Wire Line
4150 3450 4550 3450
Wire Wire Line
4550 3550 4150 3550
Wire Wire Line
4150 3750 4300 3750
Text Label 4300 3750 2 50 ~ 0
P28
Wire Wire Line
3250 2350 3400 2350
Text Label 3400 2350 2 50 ~ 0
P25
Wire Wire Line
4150 3650 4300 3650
Text Label 4300 3650 2 50 ~ 0
P26
Wire Wire Line
3500 3750 3650 3750
Text Label 3500 3750 0 50 ~ 0
P27
Wire Wire Line
3500 3650 3650 3650
Text Label 3500 3650 0 50 ~ 0
P25
Wire Wire Line
3250 3650 3400 3650
Text Label 3400 3650 2 50 ~ 0
P27
Wire Wire Line
4550 2350 4400 2350
Text Label 4400 2350 0 50 ~ 0
P26
Wire Wire Line
4550 3650 4400 3650
Text Label 4400 3650 0 50 ~ 0
P28
$EndSCHEMATC
================================================
FILE: electronics/BM28B0.6-24DSBreakout/fp-lib-table
================================================
(fp_lib_table
(lib (name BM28)(type KiCad)(uri ${KIPRJMOD}/../lib/BM28.pretty)(options "")(descr ""))
)
================================================
FILE: electronics/LevelShifterBreakout/LevelShifterBreakout-cache.lib
================================================
EESchema-LIBRARY Version 2.4
#encoding utf-8
#
# Connector_Conn_01x08_Male
#
DEF Connector_Conn_01x08_Male J 0 40 Y N 1 F N
F0 "J" 0 400 50 H V C CNN
F1 "Connector_Conn_01x08_Male" 0 -500 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
Connector*:*_1x??_*
$ENDFPLIST
DRAW
S 34 -395 0 -405 1 1 6 F
S 34 -295 0 -305 1 1 6 F
S 34 -195 0 -205 1 1 6 F
S 34 -95 0 -105 1 1 6 F
S 34 5 0 -5 1 1 6 F
S 34 105 0 95 1 1 6 F
S 34 205 0 195 1 1 6 F
S 34 305 0 295 1 1 6 F
P 2 1 1 6 50 -400 34 -400 N
P 2 1 1 6 50 -300 34 -300 N
P 2 1 1 6 50 -200 34 -200 N
P 2 1 1 6 50 -100 34 -100 N
P 2 1 1 6 50 0 34 0 N
P 2 1 1 6 50 100 34 100 N
P 2 1 1 6 50 200 34 200 N
P 2 1 1 6 50 300 34 300 N
X Pin_1 1 200 300 150 L 50 50 1 1 P
X Pin_2 2 200 200 150 L 50 50 1 1 P
X Pin_3 3 200 100 150 L 50 50 1 1 P
X Pin_4 4 200 0 150 L 50 50 1 1 P
X Pin_5 5 200 -100 150 L 50 50 1 1 P
X Pin_6 6 200 -200 150 L 50 50 1 1 P
X Pin_7 7 200 -300 150 L 50 50 1 1 P
X Pin_8 8 200 -400 150 L 50 50 1 1 P
ENDDRAW
ENDDEF
#
# Device_C_Small
#
DEF Device_C_Small C 0 10 N N 1 F N
F0 "C" 10 70 50 H V L CNN
F1 "Device_C_Small" 10 -80 50 H V L CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
C_*
$ENDFPLIST
DRAW
P 2 0 1 13 -60 -20 60 -20 N
P 2 0 1 12 -60 20 60 20 N
X ~ 1 0 100 80 D 50 50 1 1 P
X ~ 2 0 -100 80 U 50 50 1 1 P
ENDDRAW
ENDDEF
#
# SN74AVC4T774_SN74AVC4T774RSVR
#
DEF SN74AVC4T774_SN74AVC4T774RSVR U 0 40 Y Y 1 L N
F0 "U" 0 200 50 H V L CNN
F1 "SN74AVC4T774_SN74AVC4T774RSVR" 0 300 50 H V L CNN
F2 "Texas_Instruments-RSV_R-PUQFN-N16-0-0-*" 0 400 50 H I L CNN
F3 "http://www.ti.com/lit/ds/symlink/sn74avc4t774.pdf" 0 500 50 H I L CNN
F4 "380Mbps" 0 600 50 H I L CNN "Data Rate"
F5 "1.2V ~ 3.6V" 0 700 50 H I L CNN "Voltage - VCCA"
F6 "1.2V ~ 3.6V" 0 800 50 H I L CNN "Voltage - VCCB"
F7 "IC" 0 900 50 H I L CNN "category"
F8 "Voltage Level Translator Bidirectional 1 Circuit 4 Channel 380Mbps 16-UQFN (2.6x1.8)" 0 1000 50 H I L CNN "digikey description"
F9 "296-24741-1-ND" 0 1100 50 H I L CNN "digikey part number"
F10 "yes" 0 1200 50 H I L CNN "lead free"
F11 "e3c229e32d4c5fe7" 0 1300 50 H I L CNN "library id"
F12 "Texas Instruments" 0 1400 50 H I L CNN "manufacturer"
F13 "595-SN74AVC4T774RSVR" 0 1500 50 H I L CNN "mouser part number"
F14 "16-UFQFN" 0 1600 50 H I L CNN "package"
F15 "yes" 0 1700 50 H I L CNN "rohs"
F16 "+85°C" 0 1800 50 H I L CNN "temperature range high"
F17 "-40°C" 0 1900 50 H I L CNN "temperature range low"
DRAW
S 200 100 900 -1400 1 1 0 f
X A1 1 100 -300 100 R 40 40 1 1 B
X B3 10 1000 -200 100 L 40 40 1 1 B
X B2 11 1000 -100 100 L 40 40 1 1 B
X B1 12 1000 0 100 L 40 40 1 1 B
X VCCB 13 100 -100 100 R 40 40 1 1 W
X VCCA 14 100 0 100 R 40 40 1 1 W
X DIR1 15 100 -800 100 R 40 40 1 1 I
X DIR2 16 100 -900 100 R 40 40 1 1 I
X A2 2 100 -400 100 R 40 40 1 1 B
X A3 3 100 -500 100 R 40 40 1 1 B
X A4 4 100 -600 100 R 40 40 1 1 B
X DIR3 5 100 -1000 100 R 40 40 1 1 I
X DIR4 6 100 -1100 100 R 40 40 1 1 I
X ~OE~ 7 100 -1300 100 R 40 40 1 1 I
X GND 8 1000 -1300 100 L 40 40 1 1 W
X B4 9 1000 -300 100 L 40 40 1 1 B
ENDDRAW
ENDDEF
#
# power_GND
#
DEF power_GND #PWR 0 0 Y Y 1 F P
F0 "#PWR" 0 -250 50 H I C CNN
F1 "power_GND" 0 -150 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
DRAW
P 6 0 1 0 0 0 0 -50 50 -50 0 -100 -50 -50 0 -50 N
X GND 1 0 0 0 D 50 50 1 1 W N
ENDDRAW
ENDDEF
#
#End Library
================================================
FILE: electronics/LevelShifterBreakout/LevelShifterBreakout.kicad_pcb
================================================
(kicad_pcb (version 20171130) (host pcbnew 5.1.10-88a1d61d58~90~ubuntu20.04.1)
(general
(thickness 1.6)
(drawings 21)
(tracks 74)
(zones 0)
(modules 5)
(nets 17)
)
(page A4)
(layers
(0 F.Cu signal)
(31 B.Cu signal)
(32 B.Adhes user)
(33 F.Adhes user)
(34 B.Paste user)
(35 F.Paste user)
(36 B.SilkS user)
(37 F.SilkS user)
(38 B.Mask user)
(39 F.Mask user)
(40 Dwgs.User user)
(41 Cmts.User user)
(42 Eco1.User user)
(43 Eco2.User user)
(44 Edge.Cuts user)
(45 Margin user)
(46 B.CrtYd user)
(47 F.CrtYd user)
(48 B.Fab user)
(49 F.Fab user)
)
(setup
(last_trace_width 0.18)
(trace_clearance 0.127)
(zone_clearance 0.254)
(zone_45_only no)
(trace_min 0.127)
(via_size 0.8)
(via_drill 0.4)
(via_min_size 0.4)
(via_min_drill 0.3)
(uvia_size 0.3)
(uvia_drill 0.1)
(uvias_allowed no)
(uvia_min_size 0.2)
(uvia_min_drill 0.1)
(edge_width 0.05)
(segment_width 0.2)
(pcb_text_width 0.3)
(pcb_text_size 1.5 1.5)
(mod_edge_width 0.12)
(mod_text_size 1 1)
(mod_text_width 0.15)
(pad_size 1.524 1.524)
(pad_drill 0.762)
(pad_to_mask_clearance 0)
(aux_axis_origin 0 0)
(visible_elements FFFFFF7F)
(pcbplotparams
(layerselection 0x010fc_ffffffff)
(usegerberextensions false)
(usegerberattributes true)
(usegerberadvancedattributes true)
(creategerberjobfile true)
(excludeedgelayer true)
(linewidth 0.100000)
(plotframeref false)
(viasonmask false)
(mode 1)
(useauxorigin false)
(hpglpennumber 1)
(hpglpenspeed 20)
(hpglpendiameter 15.000000)
(psnegative false)
(psa4output false)
(plotreference true)
(plotvalue true)
(plotinvisibletext false)
(padsonsilk false)
(subtractmaskfromsilk false)
(outputformat 1)
(mirror false)
(drillshape 1)
(scaleselection 1)
(outputdirectory ""))
)
(net 0 "")
(net 1 /nOE)
(net 2 /DIR2)
(net 3 /DIR1)
(net 4 /A4)
(net 5 /A3)
(net 6 /A2)
(net 7 /A1)
(net 8 /VCCA)
(net 9 /DIR4)
(net 10 /DIR3)
(net 11 /B4)
(net 12 /B3)
(net 13 /B2)
(net 14 /B1)
(net 15 /VCCB)
(net 16 GND)
(net_class Default "This is the default net class."
(clearance 0.127)
(trace_width 0.18)
(via_dia 0.8)
(via_drill 0.4)
(uvia_dia 0.3)
(uvia_drill 0.1)
(add_net /A1)
(add_net /A2)
(add_net /A3)
(add_net /A4)
(add_net /B1)
(add_net /B2)
(add_net /B3)
(add_net /B4)
(add_net /DIR1)
(add_net /DIR2)
(add_net /DIR3)
(add_net /DIR4)
(add_net /VCCA)
(add_net /VCCB)
(add_net /nOE)
(add_net GND)
)
(module SN74AVC4T774:Texas_Instruments-RSV_R-PUQFN-N16-0-0-0 (layer F.Cu) (tedit 618090B4) (tstamp 6181635B)
(at 82.55 72.39 270)
(path /61B8BFB7)
(fp_text reference U1 (at -1.75 -2.05 90) (layer F.SilkS) hide
(effects (font (size 1 1) (thickness 0.15)) (justify right))
)
(fp_text value SN74AVC4T774RSVR (at 0 0 90) (layer F.SilkS) hide
(effects (font (size 1.27 1.27) (thickness 0.15)))
)
(fp_circle (center -0.6 1.675) (end -0.475 1.675) (layer F.SilkS) (width 0.25))
(fp_line (start 1.3 1.075) (end 1.1 1.075) (layer F.SilkS) (width 0.15))
(fp_line (start -1.3 1.075) (end -1.1 1.075) (layer F.SilkS) (width 0.15))
(fp_line (start 1.3 -1.075) (end 1.1 -1.075) (layer F.SilkS) (width 0.15))
(fp_line (start -1.3 -1.075) (end -1.1 -1.075) (layer F.SilkS) (width 0.15))
(fp_line (start 1.525 1.125) (end 1.525 -1.125) (layer F.CrtYd) (width 0.15))
(fp_line (start -1.525 1.125) (end 1.525 1.125) (layer F.CrtYd) (width 0.15))
(fp_line (start -1.525 -1.125) (end -1.525 1.125) (layer F.CrtYd) (width 0.15))
(fp_line (start 1.525 -1.125) (end -1.525 -1.125) (layer F.CrtYd) (width 0.15))
(fp_line (start 1.525 -1.125) (end 1.525 -1.125) (layer F.CrtYd) (width 0.15))
(fp_line (start 1.3 0.9) (end -1.3 0.9) (layer F.Fab) (width 0.15))
(fp_line (start 1.3 -0.9) (end 1.3 0.9) (layer F.Fab) (width 0.15))
(fp_line (start -1.3 -0.9) (end 1.3 -0.9) (layer F.Fab) (width 0.15))
(fp_line (start -1.3 0.9) (end -1.3 -0.9) (layer F.Fab) (width 0.15))
(pad 16 smd rect (at -1.175 0.6 270) (size 0.65 0.2) (layers F.Cu F.Paste F.Mask)
(net 2 /DIR2))
(pad 15 smd rect (at -1.175 0.2 270) (size 0.65 0.2) (layers F.Cu F.Paste F.Mask)
(net 3 /DIR1))
(pad 14 smd rect (at -1.175 -0.2 270) (size 0.65 0.2) (layers F.Cu F.Paste F.Mask)
(net 8 /VCCA))
(pad 13 smd rect (at -1.175 -0.6 270) (size 0.65 0.2) (layers F.Cu F.Paste F.Mask)
(net 15 /VCCB))
(pad 12 smd rect (at -0.6 -0.775 270) (size 0.2 0.65) (layers F.Cu F.Paste F.Mask)
(net 14 /B1))
(pad 11 smd rect (at -0.2 -0.775 270) (size 0.2 0.65) (layers F.Cu F.Paste F.Mask)
(net 13 /B2))
(pad 10 smd rect (at 0.2 -0.775 270) (size 0.2 0.65) (layers F.Cu F.Paste F.Mask)
(net 12 /B3))
(pad 9 smd rect (at 0.6 -0.775 270) (size 0.2 0.65) (layers F.Cu F.Paste F.Mask)
(net 11 /B4))
(pad 8 smd rect (at 1.175 -0.6 270) (size 0.65 0.2) (layers F.Cu F.Paste F.Mask)
(net 16 GND))
(pad 7 smd rect (at 1.175 -0.2 270) (size 0.65 0.2) (layers F.Cu F.Paste F.Mask)
(net 1 /nOE))
(pad 6 smd rect (at 1.175 0.2 270) (size 0.65 0.2) (layers F.Cu F.Paste F.Mask)
(net 9 /DIR4))
(pad 5 smd rect (at 1.175 0.6 270) (size 0.65 0.2) (layers F.Cu F.Paste F.Mask)
(net 10 /DIR3))
(pad 4 smd rect (at 0.6 0.775 270) (size 0.2 0.65) (layers F.Cu F.Paste F.Mask)
(net 4 /A4))
(pad 3 smd rect (at 0.2 0.775 270) (size 0.2 0.65) (layers F.Cu F.Paste F.Mask)
(net 5 /A3))
(pad 2 smd rect (at -0.2 0.775 270) (size 0.2 0.65) (layers F.Cu F.Paste F.Mask)
(net 6 /A2))
(pad 1 smd rect (at -0.6 0.725 270) (size 0.2 0.75) (layers F.Cu F.Paste F.Mask)
(net 7 /A1))
(model SN74AVC4T774.models/Texas_Instruments_-_SN74AVC4T774RSVR.step
(at (xyz 0 0 0))
(scale (xyz 1 1 1))
(rotate (xyz 0 0 0))
)
)
(module Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder (layer F.Cu) (tedit 5F68FEEF) (tstamp 6181686B)
(at 83.82 67.31 90)
(descr "Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf, https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator")
(tags "capacitor handsolder")
(path /61B9E689)
(attr smd)
(fp_text reference C2 (at 0 -1.68 90) (layer F.SilkS) hide
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text value 0.1uF (at 0 1.68 90) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text user %R (at 0 0 90) (layer F.Fab)
(effects (font (size 0.5 0.5) (thickness 0.08)))
)
(fp_line (start -1 0.625) (end -1 -0.625) (layer F.Fab) (width 0.1))
(fp_line (start -1 -0.625) (end 1 -0.625) (layer F.Fab) (width 0.1))
(fp_line (start 1 -0.625) (end 1 0.625) (layer F.Fab) (width 0.1))
(fp_line (start 1 0.625) (end -1 0.625) (layer F.Fab) (width 0.1))
(fp_line (start -0.261252 -0.735) (end 0.261252 -0.735) (layer F.SilkS) (width 0.12))
(fp_line (start -0.261252 0.735) (end 0.261252 0.735) (layer F.SilkS) (width 0.12))
(fp_line (start -1.88 0.98) (end -1.88 -0.98) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.88 -0.98) (end 1.88 -0.98) (layer F.CrtYd) (width 0.05))
(fp_line (start 1.88 -0.98) (end 1.88 0.98) (layer F.CrtYd) (width 0.05))
(fp_line (start 1.88 0.98) (end -1.88 0.98) (layer F.CrtYd) (width 0.05))
(pad 2 smd roundrect (at 1.0375 0 90) (size 1.175 1.45) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.212766)
(net 16 GND))
(pad 1 smd roundrect (at -1.0375 0 90) (size 1.175 1.45) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.212766)
(net 15 /VCCB))
(model ${KISYS3DMOD}/Capacitor_SMD.3dshapes/C_0805_2012Metric.wrl
(at (xyz 0 0 0))
(scale (xyz 1 1 1))
(rotate (xyz 0 0 0))
)
)
(module Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder (layer F.Cu) (tedit 5F68FEEF) (tstamp 618168AC)
(at 81.28 67.31 90)
(descr "Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf, https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator")
(tags "capacitor handsolder")
(path /61B9E2DF)
(attr smd)
(fp_text reference C1 (at 0 -1.68 90) (layer F.SilkS) hide
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text value 0.1uF (at 0 1.68 90) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text user %R (at 0 0 90) (layer F.Fab)
(effects (font (size 0.5 0.5) (thickness 0.08)))
)
(fp_line (start -1 0.625) (end -1 -0.625) (layer F.Fab) (width 0.1))
(fp_line (start -1 -0.625) (end 1 -0.625) (layer F.Fab) (width 0.1))
(fp_line (start 1 -0.625) (end 1 0.625) (layer F.Fab) (width 0.1))
(fp_line (start 1 0.625) (end -1 0.625) (layer F.Fab) (width 0.1))
(fp_line (start -0.261252 -0.735) (end 0.261252 -0.735) (layer F.SilkS) (width 0.12))
(fp_line (start -0.261252 0.735) (end 0.261252 0.735) (layer F.SilkS) (width 0.12))
(fp_line (start -1.88 0.98) (end -1.88 -0.98) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.88 -0.98) (end 1.88 -0.98) (layer F.CrtYd) (width 0.05))
(fp_line (start 1.88 -0.98) (end 1.88 0.98) (layer F.CrtYd) (width 0.05))
(fp_line (start 1.88 0.98) (end -1.88 0.98) (layer F.CrtYd) (width 0.05))
(pad 2 smd roundrect (at 1.0375 0 90) (size 1.175 1.45) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.212766)
(net 16 GND))
(pad 1 smd roundrect (at -1.0375 0 90) (size 1.175 1.45) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.212766)
(net 8 /VCCA))
(model ${KISYS3DMOD}/Capacitor_SMD.3dshapes/C_0805_2012Metric.wrl
(at (xyz 0 0 0))
(scale (xyz 1 1 1))
(rotate (xyz 0 0 0))
)
)
(module Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_Vertical (layer B.Cu) (tedit 59FED5CC) (tstamp 61816339)
(at 88.9 63.5 180)
(descr "Through hole straight pin header, 1x08, 2.54mm pitch, single row")
(tags "Through hole pin header THT 1x08 2.54mm single row")
(path /61B90C78)
(fp_text reference J2 (at 0 2.33) (layer B.SilkS) hide
(effects (font (size 1 1) (thickness 0.15)) (justify mirror))
)
(fp_text value Conn_01x08_Male (at 0 -20.11) (layer B.Fab)
(effects (font (size 1 1) (thickness 0.15)) (justify mirror))
)
(fp_text user %R (at 0 -8.89 270) (layer B.Fab)
(effects (font (size 1 1) (thickness 0.15)) (justify mirror))
)
(fp_line (start -0.635 1.27) (end 1.27 1.27) (layer B.Fab) (width 0.1))
(fp_line (start 1.27 1.27) (end 1.27 -19.05) (layer B.Fab) (width 0.1))
(fp_line (start 1.27 -19.05) (end -1.27 -19.05) (layer B.Fab) (width 0.1))
(fp_line (start -1.27 -19.05) (end -1.27 0.635) (layer B.Fab) (width 0.1))
(fp_line (start -1.27 0.635) (end -0.635 1.27) (layer B.Fab) (width 0.1))
(fp_line (start -1.33 -19.11) (end 1.33 -19.11) (layer B.SilkS) (width 0.12))
(fp_line (start -1.33 -1.27) (end -1.33 -19.11) (layer B.SilkS) (width 0.12))
(fp_line (start 1.33 -1.27) (end 1.33 -19.11) (layer B.SilkS) (width 0.12))
(fp_line (start -1.33 -1.27) (end 1.33 -1.27) (layer B.SilkS) (width 0.12))
(fp_line (start -1.33 0) (end -1.33 1.33) (layer B.SilkS) (width 0.12))
(fp_line (start -1.33 1.33) (end 0 1.33) (layer B.SilkS) (width 0.12))
(fp_line (start -1.8 1.8) (end -1.8 -19.55) (layer B.CrtYd) (width 0.05))
(fp_line (start -1.8 -19.55) (end 1.8 -19.55) (layer B.CrtYd) (width 0.05))
(fp_line (start 1.8 -19.55) (end 1.8 1.8) (layer B.CrtYd) (width 0.05))
(fp_line (start 1.8 1.8) (end -1.8 1.8) (layer B.CrtYd) (width 0.05))
(pad 8 thru_hole oval (at 0 -17.78 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 16 GND))
(pad 7 thru_hole oval (at 0 -15.24 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 9 /DIR4))
(pad 6 thru_hole oval (at 0 -12.7 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 10 /DIR3))
(pad 5 thru_hole oval (at 0 -10.16 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 11 /B4))
(pad 4 thru_hole oval (at 0 -7.62 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 12 /B3))
(pad 3 thru_hole oval (at 0 -5.08 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 13 /B2))
(pad 2 thru_hole oval (at 0 -2.54 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 14 /B1))
(pad 1 thru_hole rect (at 0 0 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 15 /VCCB))
(model ${KISYS3DMOD}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_1x08_P2.54mm_Vertical.wrl
(at (xyz 0 0 0))
(scale (xyz 1 1 1))
(rotate (xyz 0 0 0))
)
)
(module Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_Vertical (layer B.Cu) (tedit 59FED5CC) (tstamp 6181631D)
(at 76.2 63.5 180)
(descr "Through hole straight pin header, 1x08, 2.54mm pitch, single row")
(tags "Through hole pin header THT 1x08 2.54mm single row")
(path /61B8EE53)
(fp_text reference J1 (at 0 2.33) (layer B.SilkS) hide
(effects (font (size 1 1) (thickness 0.15)) (justify mirror))
)
(fp_text value Conn_01x08_Male (at 0 -20.11) (layer B.Fab)
(effects (font (size 1 1) (thickness 0.15)) (justify mirror))
)
(fp_text user %R (at 0 -8.89 270) (layer B.Fab)
(effects (font (size 1 1) (thickness 0.15)) (justify mirror))
)
(fp_line (start -0.635 1.27) (end 1.27 1.27) (layer B.Fab) (width 0.1))
(fp_line (start 1.27 1.27) (end 1.27 -19.05) (layer B.Fab) (width 0.1))
(fp_line (start 1.27 -19.05) (end -1.27 -19.05) (layer B.Fab) (width 0.1))
(fp_line (start -1.27 -19.05) (end -1.27 0.635) (layer B.Fab) (width 0.1))
(fp_line (start -1.27 0.635) (end -0.635 1.27) (layer B.Fab) (width 0.1))
(fp_line (start -1.33 -19.11) (end 1.33 -19.11) (layer B.SilkS) (width 0.12))
(fp_line (start -1.33 -1.27) (end -1.33 -19.11) (layer B.SilkS) (width 0.12))
(fp_line (start 1.33 -1.27) (end 1.33 -19.11) (layer B.SilkS) (width 0.12))
(fp_line (start -1.33 -1.27) (end 1.33 -1.27) (layer B.SilkS) (width 0.12))
(fp_line (start -1.33 0) (end -1.33 1.33) (layer B.SilkS) (width 0.12))
(fp_line (start -1.33 1.33) (end 0 1.33) (layer B.SilkS) (width 0.12))
(fp_line (start -1.8 1.8) (end -1.8 -19.55) (layer B.CrtYd) (width 0.05))
(fp_line (start -1.8 -19.55) (end 1.8 -19.55) (layer B.CrtYd) (width 0.05))
(fp_line (start 1.8 -19.55) (end 1.8 1.8) (layer B.CrtYd) (width 0.05))
(fp_line (start 1.8 1.8) (end -1.8 1.8) (layer B.CrtYd) (width 0.05))
(pad 8 thru_hole oval (at 0 -17.78 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 1 /nOE))
(pad 7 thru_hole oval (at 0 -15.24 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 2 /DIR2))
(pad 6 thru_hole oval (at 0 -12.7 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 3 /DIR1))
(pad 5 thru_hole oval (at 0 -10.16 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 4 /A4))
(pad 4 thru_hole oval (at 0 -7.62 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 5 /A3))
(pad 3 thru_hole oval (at 0 -5.08 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 6 /A2))
(pad 2 thru_hole oval (at 0 -2.54 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 7 /A1))
(pad 1 thru_hole rect (at 0 0 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 8 /VCCA))
(model ${KISYS3DMOD}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_1x08_P2.54mm_Vertical.wrl
(at (xyz 0 0 0))
(scale (xyz 1 1 1))
(rotate (xyz 0 0 0))
)
)
(gr_text "74AVC4T774\nLevel shifter" (at 82.55 78.105 90) (layer F.SilkS) (tstamp 61816E50)
(effects (font (size 0.8 0.8) (thickness 0.12)))
)
(gr_text GND (at 87.63 81.28) (layer F.SilkS) (tstamp 61816E4C)
(effects (font (size 0.8 0.8) (thickness 0.12)) (justify right))
)
(gr_text DIR4 (at 87.63 78.74) (layer F.SilkS) (tstamp 61816E49)
(effects (font (size 0.8 0.8) (thickness 0.12)) (justify right))
)
(gr_text DIR3 (at 87.63 76.2) (layer F.SilkS) (tstamp 61816E46)
(effects (font (size 0.8 0.8) (thickness 0.12)) (justify right))
)
(gr_text B4 (at 87.63 73.66) (layer F.SilkS) (tstamp 61816E43)
(effects (font (size 0.8 0.8) (thickness 0.12)) (justify right))
)
(gr_text B3 (at 87.63 71.12) (layer F.SilkS) (tstamp 61816E40)
(effects (font (size 0.8 0.8) (thickness 0.12)) (justify right))
)
(gr_text B2 (at 87.63 68.58) (layer F.SilkS) (tstamp 61816E3D)
(effects (font (size 0.8 0.8) (thickness 0.12)) (justify right))
)
(gr_text B1 (at 87.63 66.04) (layer F.SilkS) (tstamp 61816E3A)
(effects (font (size 0.8 0.8) (thickness 0.12)) (justify right))
)
(gr_text VCCB (at 87.63 63.5) (layer F.SilkS) (tstamp 61816E37)
(effects (font (size 0.8 0.8) (thickness 0.12)) (justify right))
)
(gr_text ~OE (at 77.47 81.28) (layer F.SilkS) (tstamp 61816E34)
(effects (font (size 0.8 0.8) (thickness 0.12)) (justify left))
)
(gr_text DIR2 (at 77.47 78.74) (layer F.SilkS) (tstamp 61816E31)
(effects (font (size 0.8 0.8) (thickness 0.12)) (justify left))
)
(gr_text DIR1 (at 77.47 76.2) (layer F.SilkS) (tstamp 61816E2E)
(effects (font (size 0.8 0.8) (thickness 0.12)) (justify left))
)
(gr_text A4 (at 77.47 73.66) (layer F.SilkS) (tstamp 61816E2B)
(effects (font (size 0.8 0.8) (thickness 0.12)) (justify left))
)
(gr_text A3 (at 77.47 71.12) (layer F.SilkS) (tstamp 61816E1D)
(effects (font (size 0.8 0.8) (thickness 0.12)) (justify left))
)
(gr_text A2 (at 77.47 68.58) (layer F.SilkS) (tstamp 61816E1A)
(effects (font (size 0.8 0.8) (thickness 0.12)) (justify left))
)
(gr_text A1 (at 77.47 66.04) (layer F.SilkS) (tstamp 61816E17)
(effects (font (size 0.8 0.8) (thickness 0.12)) (justify left))
)
(gr_text VCCA (at 77.47 63.5) (layer F.SilkS)
(effects (font (size 0.8 0.8) (thickness 0.12)) (justify left))
)
(gr_line (start 74.93 82.55) (end 74.93 62.23) (layer Edge.Cuts) (width 0.05) (tstamp 61816AA9))
(gr_line (start 90.17 82.55) (end 74.93 82.55) (layer Edge.Cuts) (width 0.05))
(gr_line (start 90.17 62.23) (end 90.17 82.55) (layer Edge.Cuts) (width 0.05))
(gr_line (start 74.93 62.23) (end 90.17 62.23) (layer Edge.Cuts) (width 0.05))
(via (at 80.772004 79.502004) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
(segment (start 76.2 81.28) (end 78.994008 81.28) (width 0.18) (layer F.Cu) (net 1))
(segment (start 78.994008 81.28) (end 80.772004 79.502004) (width 0.18) (layer F.Cu) (net 1))
(via (at 84.455 77.469998) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
(segment (start 82.75 75.764998) (end 84.455 77.469998) (width 0.18) (layer F.Cu) (net 1))
(segment (start 82.75 73.565) (end 82.75 75.764998) (width 0.18) (layer F.Cu) (net 1))
(segment (start 80.772004 79.502004) (end 82.80401 77.469998) (width 0.18) (layer B.Cu) (net 1))
(segment (start 82.80401 77.469998) (end 84.455 77.469998) (width 0.18) (layer B.Cu) (net 1))
(via (at 80.01 74.676) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 2))
(segment (start 80.01 74.93) (end 80.01 74.676) (width 0.18) (layer F.Cu) (net 2))
(segment (start 76.2 78.74) (end 80.01 74.93) (width 0.18) (layer F.Cu) (net 2))
(segment (start 80.01 71.374) (end 80.264 71.12) (width 0.18) (layer B.Cu) (net 2))
(via (at 80.264 71.12) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 2))
(segment (start 80.01 74.676) (end 80.01 71.374) (width 0.18) (layer B.Cu) (net 2))
(segment (start 81.855 71.12) (end 81.95 71.215) (width 0.18) (layer F.Cu) (net 2))
(segment (start 80.264 71.12) (end 81.855 71.12) (width 0.18) (layer F.Cu) (net 2))
(via (at 79.39299 73.66) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 3))
(via (at 79.384559 70.826856) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 3))
(segment (start 76.2 76.2) (end 78.74 73.66) (width 0.18) (layer F.Cu) (net 3))
(segment (start 78.74 73.66) (end 79.39299 73.66) (width 0.18) (layer F.Cu) (net 3))
(segment (start 79.39299 73.66) (end 79.39299 70.835287) (width 0.18) (layer B.Cu) (net 3))
(segment (start 79.39299 70.835287) (end 79.384559 70.826856) (width 0.18) (layer B.Cu) (net 3))
(segment (start 82.35 70.71) (end 82.107002 70.467002) (width 0.18) (layer F.Cu) (net 3))
(segment (start 82.35 71.215) (end 82.35 70.71) (width 0.18) (layer F.Cu) (net 3))
(segment (start 82.107002 70.467002) (end 79.744413 70.467002) (width 0.18) (layer F.Cu) (net 3))
(segment (start 79.744413 70.467002) (end 79.384559 70.826856) (width 0.18) (layer F.Cu) (net 3))
(segment (start 76.87 72.99) (end 81.775 72.99) (width 0.18) (layer F.Cu) (net 4))
(segment (start 76.2 73.66) (end 76.87 72.99) (width 0.18) (layer F.Cu) (net 4))
(segment (start 77.67 72.59) (end 81.775 72.59) (width 0.18) (layer F.Cu) (net 5))
(segment (start 76.2 71.12) (end 77.67 72.59) (width 0.18) (layer F.Cu) (net 5))
(segment (start 79.224659 72.19) (end 81.775 72.19) (width 0.18) (layer F.Cu) (net 6))
(segment (start 76.2 69.165341) (end 79.224659 72.19) (width 0.18) (layer F.Cu) (net 6))
(segment (start 76.2 68.58) (end 76.2 69.165341) (width 0.18) (layer F.Cu) (net 6))
(segment (start 77.47 67.31) (end 76.2 66.04) (width 0.18) (layer F.Cu) (net 7))
(segment (start 77.47 70.001162) (end 77.47 67.31) (width 0.18) (layer F.Cu) (net 7))
(segment (start 79.258838 71.79) (end 77.47 70.001162) (width 0.18) (layer F.Cu) (net 7))
(segment (start 81.825 71.79) (end 79.258838 71.79) (width 0.18) (layer F.Cu) (net 7))
(segment (start 76.4325 63.5) (end 76.2 63.5) (width 0.18) (layer F.Cu) (net 8))
(segment (start 81.28 68.3475) (end 76.4325 63.5) (width 0.18) (layer F.Cu) (net 8))
(segment (start 82.03125 69.09875) (end 81.28 68.3475) (width 0.18) (layer F.Cu) (net 8))
(segment (start 82.75 69.8175) (end 82.03125 69.09875) (width 0.18) (layer F.Cu) (net 8))
(segment (start 82.75 71.215) (end 82.75 69.8175) (width 0.18) (layer F.Cu) (net 8))
(segment (start 82.35 77.626834) (end 83.463166 78.74) (width 0.18) (layer F.Cu) (net 9))
(segment (start 82.35 73.565) (end 82.35 77.626834) (width 0.18) (layer F.Cu) (net 9))
(segment (start 83.463166 78.74) (end 87.697919 78.74) (width 0.18) (layer F.Cu) (net 9))
(segment (start 87.697919 78.74) (end 88.9 78.74) (width 0.18) (layer F.Cu) (net 9))
(via (at 80.644996 75.565) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 10))
(segment (start 81.95 73.565) (end 81.95 74.259996) (width 0.18) (layer F.Cu) (net 10))
(segment (start 81.95 74.259996) (end 80.644996 75.565) (width 0.18) (layer F.Cu) (net 10))
(segment (start 84.328 75.565) (end 84.455 75.438) (width 0.18) (layer B.Cu) (net 10))
(segment (start 80.644996 75.565) (end 84.328 75.565) (width 0.18) (layer B.Cu) (net 10))
(segment (start 85.217 76.2) (end 84.455 75.438) (width 0.18) (layer F.Cu) (net 10))
(segment (start 88.9 76.2) (end 85.217 76.2) (width 0.18) (layer F.Cu) (net 10))
(via (at 84.455 75.438) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 10))
(segment (start 88.23 72.99) (end 88.9 73.66) (width 0.18) (layer F.Cu) (net 11))
(segment (start 83.325 72.99) (end 88.23 72.99) (width 0.18) (layer F.Cu) (net 11))
(segment (start 87.43 72.59) (end 88.9 71.12) (width 0.18) (layer F.Cu) (net 12))
(segment (start 83.325 72.59) (end 87.43 72.59) (width 0.18) (layer F.Cu) (net 12))
(segment (start 85.29 72.19) (end 88.9 68.58) (width 0.18) (layer F.Cu) (net 13))
(segment (start 83.325 72.19) (end 85.29 72.19) (width 0.18) (layer F.Cu) (net 13))
(segment (start 88.9 67.010454) (end 88.9 66.04) (width 0.18) (layer F.Cu) (net 14))
(segment (start 84.120454 71.79) (end 88.9 67.010454) (width 0.18) (layer F.Cu) (net 14))
(segment (start 83.325 71.79) (end 84.120454 71.79) (width 0.18) (layer F.Cu) (net 14))
(segment (start 83.15 69.0175) (end 83.82 68.3475) (width 0.18) (layer F.Cu) (net 15))
(segment (start 83.15 71.215) (end 83.15 69.0175) (width 0.18) (layer F.Cu) (net 15))
(segment (start 88.6675 63.5) (end 88.9 63.5) (width 0.18) (layer F.Cu) (net 15))
(segment (start 83.82 68.3475) (end 88.6675 63.5) (width 0.18) (layer F.Cu) (net 15))
(via (at 84.582008 73.914) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 16))
(segment (start 83.15 73.565) (end 84.233008 73.565) (width 0.18) (layer F.Cu) (net 16))
(segment (start 84.233008 73.565) (end 84.582008 73.914) (width 0.18) (layer F.Cu) (net 16))
(via (at 83.82 64.77) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 16))
(segment (start 83.82 66.2725) (end 83.82 64.77) (width 0.18) (layer F.Cu) (net 16))
(via (at 81.28 64.77) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 16))
(segment (start 81.28 66.2725) (end 81.28 64.77) (width 0.18) (layer F.Cu) (net 16))
(zone (net 16) (net_name GND) (layer B.Cu) (tstamp 0) (hatch edge 0.508)
(connect_pads (clearance 0.254))
(min_thickness 0.127)
(fill yes (arc_segments 32) (thermal_gap 0.254) (thermal_bridge_width 0.3))
(polygon
(pts
(xy 90.17 82.55) (xy 74.93 82.55) (xy 74.93 62.23) (xy 90.17 62.23)
)
)
(filled_polygon
(pts
(xy 87.737094 62.587759) (xy 87.730964 62.65) (xy 87.730964 64.35) (xy 87.737094 64.412241) (xy 87.755249 64.47209)
(xy 87.784731 64.527247) (xy 87.824407 64.575593) (xy 87.872753 64.615269) (xy 87.92791 64.644751) (xy 87.987759 64.662906)
(xy 88.05 64.669036) (xy 89.75 64.669036) (xy 89.812241 64.662906) (xy 89.8275 64.658277) (xy 89.8275 65.326658)
(xy 89.806856 65.295762) (xy 89.644238 65.133144) (xy 89.453019 65.005375) (xy 89.240547 64.917366) (xy 89.014989 64.8725)
(xy 88.785011 64.8725) (xy 88.559453 64.917366) (xy 88.346981 65.005375) (xy 88.155762 65.133144) (xy 87.993144 65.295762)
(xy 87.865375 65.486981) (xy 87.777366 65.699453) (xy 87.7325 65.925011) (xy 87.7325 66.154989) (xy 87.777366 66.380547)
(xy 87.865375 66.593019) (xy 87.993144 66.784238) (xy 88.155762 66.946856) (xy 88.346981 67.074625) (xy 88.559453 67.162634)
(xy 88.785011 67.2075) (xy 89.014989 67.2075) (xy 89.240547 67.162634) (xy 89.453019 67.074625) (xy 89.644238 66.946856)
(xy 89.806856 66.784238) (xy 89.8275 66.753342) (xy 89.8275 67.866658) (xy 89.806856 67.835762) (xy 89.644238 67.673144)
(xy 89.453019 67.545375) (xy 89.240547 67.457366) (xy 89.014989 67.4125) (xy 88.785011 67.4125) (xy 88.559453 67.457366)
(xy 88.346981 67.545375) (xy 88.155762 67.673144) (xy 87.993144 67.835762) (xy 87.865375 68.026981) (xy 87.777366 68.239453)
(xy 87.7325 68.465011) (xy 87.7325 68.694989) (xy 87.777366 68.920547) (xy 87.865375 69.133019) (xy 87.993144 69.324238)
(xy 88.155762 69.486856) (xy 88.346981 69.614625) (xy 88.559453 69.702634) (xy 88.785011 69.7475) (xy 89.014989 69.7475)
(xy 89.240547 69.702634) (xy 89.453019 69.614625) (xy 89.644238 69.486856) (xy 89.806856 69.324238) (xy 89.8275 69.293342)
(xy 89.8275 70.406658) (xy 89.806856 70.375762) (xy 89.644238 70.213144) (xy 89.453019 70.085375) (xy 89.240547 69.997366)
(xy 89.014989 69.9525) (xy 88.785011 69.9525) (xy 88.559453 69.997366) (xy 88.346981 70.085375) (xy 88.155762 70.213144)
(xy 87.993144 70.375762) (xy 87.865375 70.566981) (xy 87.777366 70.779453) (xy 87.7325 71.005011) (xy 87.7325 71.234989)
(xy 87.777366 71.460547) (xy 87.865375 71.673019) (xy 87.993144 71.864238) (xy 88.155762 72.026856) (xy 88.346981 72.154625)
(xy 88.559453 72.242634) (xy 88.785011 72.2875) (xy 89.014989 72.2875) (xy 89.240547 72.242634) (xy 89.453019 72.154625)
(xy 89.644238 72.026856) (xy 89.806856 71.864238) (xy 89.8275 71.833341) (xy 89.827501 72.946659) (xy 89.806856 72.915762)
(xy 89.644238 72.753144) (xy 89.453019 72.625375) (xy 89.240547 72.537366) (xy 89.014989 72.4925) (xy 88.785011 72.4925)
(xy 88.559453 72.537366) (xy 88.346981 72.625375) (xy 88.155762 72.753144) (xy 87.993144 72.915762) (xy 87.865375 73.106981)
(xy 87.777366 73.319453) (xy 87.7325 73.545011) (xy 87.7325 73.774989) (xy 87.777366 74.000547) (xy 87.865375 74.213019)
(xy 87.993144 74.404238) (xy 88.155762 74.566856) (xy 88.346981 74.694625) (xy 88.559453 74.782634) (xy 88.785011 74.8275)
(xy 89.014989 74.8275) (xy 89.240547 74.782634) (xy 89.453019 74.694625) (xy 89.644238 74.566856) (xy 89.806856 74.404238)
(xy 89.827501 74.373341) (xy 89.827501 75.486659) (xy 89.806856 75.455762) (xy 89.644238 75.293144) (xy 89.453019 75.165375)
(xy 89.240547 75.077366) (xy 89.014989 75.0325) (xy 88.785011 75.0325) (xy 88.559453 75.077366) (xy 88.346981 75.165375)
(xy 88.155762 75.293144) (xy 87.993144 75.455762) (xy 87.865375 75.646981) (xy 87.777366 75.859453) (xy 87.7325 76.085011)
(xy 87.7325 76.314989) (xy 87.777366 76.540547) (xy 87.865375 76.753019) (xy 87.993144 76.944238) (xy 88.155762 77.106856)
(xy 88.346981 77.234625) (xy 88.559453 77.322634) (xy 88.785011 77.3675) (xy 89.014989 77.3675) (xy 89.240547 77.322634)
(xy 89.453019 77.234625) (xy 89.644238 77.106856) (xy 89.806856 76.944238) (xy 89.827501 76.913341) (xy 89.827501 78.026659)
(xy 89.806856 77.995762) (xy 89.644238 77.833144) (xy 89.453019 77.705375) (xy 89.240547 77.617366) (xy 89.014989 77.5725)
(xy 88.785011 77.5725) (xy 88.559453 77.617366) (xy 88.346981 77.705375) (xy 88.155762 77.833144) (xy 87.993144 77.995762)
(xy 87.865375 78.186981) (xy 87.777366 78.399453) (xy 87.7325 78.625011) (xy 87.7325 78.854989) (xy 87.777366 79.080547)
(xy 87.865375 79.293019) (xy 87.993144 79.484238) (xy 88.155762 79.646856) (xy 88.346981 79.774625) (xy 88.559453 79.862634)
(xy 88.785011 79.9075) (xy 89.014989 79.9075) (xy 89.240547 79.862634) (xy 89.453019 79.774625) (xy 89.644238 79.646856)
(xy 89.806856 79.484238) (xy 89.827501 79.453341) (xy 89.827501 80.580173) (xy 89.753843 80.483749) (xy 89.582096 80.332472)
(xy 89.384136 80.217608) (xy 89.167571 80.143571) (xy 88.9865 80.19508) (xy 88.9865 81.1935) (xy 89.0065 81.1935)
(xy 89.0065 81.3665) (xy 88.9865 81.3665) (xy 88.9865 81.3865) (xy 88.8135 81.3865) (xy 88.8135 81.3665)
(xy 87.815319 81.3665) (xy 87.763575 81.54757) (xy 87.806439 81.688889) (xy 87.907222 81.894375) (xy 88.046157 82.076251)
(xy 88.195166 82.2075) (xy 76.913342 82.2075) (xy 76.944238 82.186856) (xy 77.106856 82.024238) (xy 77.234625 81.833019)
(xy 77.322634 81.620547) (xy 77.3675 81.394989) (xy 77.3675 81.165011) (xy 77.33715 81.01243) (xy 87.763575 81.01243)
(xy 87.815319 81.1935) (xy 88.8135 81.1935) (xy 88.8135 80.19508) (xy 88.632429 80.143571) (xy 88.415864 80.217608)
(xy 88.217904 80.332472) (xy 88.046157 80.483749) (xy 87.907222 80.665625) (xy 87.806439 80.871111) (xy 87.763575 81.01243)
(xy 77.33715 81.01243) (xy 77.322634 80.939453) (xy 77.234625 80.726981) (xy 77.106856 80.535762) (xy 76.944238 80.373144)
(xy 76.753019 80.245375) (xy 76.540547 80.157366) (xy 76.314989 80.1125) (xy 76.085011 80.1125) (xy 75.859453 80.157366)
(xy 75.646981 80.245375) (xy 75.455762 80.373144) (xy 75.293144 80.535762) (xy 75.2725 80.566658) (xy 75.2725 79.453342)
(xy 75.293144 79.484238) (xy 75.455762 79.646856) (xy 75.646981 79.774625) (xy 75.859453 79.862634) (xy 76.085011 79.9075)
(xy 76.314989 79.9075) (xy 76.540547 79.862634) (xy 76.753019 79.774625) (xy 76.944238 79.646856) (xy 77.106856 79.484238)
(xy 77.142204 79.431336) (xy 80.054504 79.431336) (xy 80.054504 79.572672) (xy 80.082077 79.711291) (xy 80.136163 79.841868)
(xy 80.214685 79.959384) (xy 80.314624 80.059323) (xy 80.43214 80.137845) (xy 80.562717 80.191931) (xy 80.701336 80.219504)
(xy 80.842672 80.219504) (xy 80.981291 80.191931) (xy 81.111868 80.137845) (xy 81.229384 80.059323) (xy 81.329323 79.959384)
(xy 81.407845 79.841868) (xy 81.461931 79.711291) (xy 81.489504 79.572672) (xy 81.489504 79.431336) (xy 81.477801 79.372499)
(xy 82.972802 77.877498) (xy 83.864352 77.877498) (xy 83.897681 77.927378) (xy 83.99762 78.027317) (xy 84.115136 78.105839)
(xy 84.245713 78.159925) (xy 84.384332 78.187498) (xy 84.525668 78.187498) (xy 84.664287 78.159925) (xy 84.794864 78.105839)
(xy 84.91238 78.027317) (xy 85.012319 77.927378) (xy 85.090841 77.809862) (xy 85.144927 77.679285) (xy 85.1725 77.540666)
(xy 85.1725 77.39933) (xy 85.144927 77.260711) (xy 85.090841 77.130134) (xy 85.012319 77.012618) (xy 84.91238 76.912679)
(xy 84.794864 76.834157) (xy 84.664287 76.780071) (xy 84.525668 76.752498) (xy 84.384332 76.752498) (xy 84.245713 76.780071)
(xy 84.115136 76.834157) (xy 83.99762 76.912679) (xy 83.897681 77.012618) (xy 83.864352 77.062498) (xy 82.824021 77.062498)
(xy 82.804009 77.060527) (xy 82.724125 77.068395) (xy 82.700824 77.075464) (xy 82.647312 77.091696) (xy 82.57652 77.129535)
(xy 82.51447 77.180458) (xy 82.501711 77.196005) (xy 80.901509 78.796207) (xy 80.842672 78.784504) (xy 80.701336 78.784504)
(xy 80.562717 78.812077) (xy 80.43214 78.866163) (xy 80.314624 78.944685) (xy 80.214685 79.044624) (xy 80.136163 79.16214)
(xy 80.082077 79.292717) (xy 80.054504 79.431336) (xy 77.142204 79.431336) (xy 77.234625 79.293019) (xy 77.322634 79.080547)
(xy 77.3675 78.854989) (xy 77.3675 78.625011) (xy 77.322634 78.399453) (xy 77.234625 78.186981) (xy 77.106856 77.995762)
(xy 76.944238 77.833144) (xy 76.753019 77.705375) (xy 76.540547 77.617366) (xy 76.314989 77.5725) (xy 76.085011 77.5725)
(xy 75.859453 77.617366) (xy 75.646981 77.705375) (xy 75.455762 77.833144) (xy 75.293144 77.995762) (xy 75.2725 78.026658)
(xy 75.2725 76.913342) (xy 75.293144 76.944238) (xy 75.455762 77.106856) (xy 75.646981 77.234625) (xy 75.859453 77.322634)
(xy 76.085011 77.3675) (xy 76.314989 77.3675) (xy 76.540547 77.322634) (xy 76.753019 77.234625) (xy 76.944238 77.106856)
(xy 77.106856 76.944238) (xy 77.234625 76.753019) (xy 77.322634 76.540547) (xy 77.3675 76.314989) (xy 77.3675 76.085011)
(xy 77.322634 75.859453) (xy 77.234625 75.646981) (xy 77.106856 75.455762) (xy 76.944238 75.293144) (xy 76.753019 75.165375)
(xy 76.540547 75.077366) (xy 76.314989 75.0325) (xy 76.085011 75.0325) (xy 75.859453 75.077366) (xy 75.646981 75.165375)
(xy 75.455762 75.293144) (xy 75.293144 75.455762) (xy 75.2725 75.486658) (xy 75.2725 74.373342) (xy 75.293144 74.404238)
(xy 75.455762 74.566856) (xy 75.646981 74.694625) (xy 75.859453 74.782634) (xy 76.085011 74.8275) (xy 76.314989 74.8275)
(xy 76.540547 74.782634) (xy 76.753019 74.694625) (xy 76.944238 74.566856) (xy 77.106856 74.404238) (xy 77.234625 74.213019)
(xy 77.322634 74.000547) (xy 77.3675 73.774989) (xy 77.3675 73.545011) (xy 77.322634 73.319453) (xy 77.234625 73.106981)
(xy 77.106856 72.915762) (xy 76.944238 72.753144) (xy 76.753019 72.625375) (xy 76.540547 72.537366) (xy 76.314989 72.4925)
(xy 76.085011 72.4925) (xy 75.859453 72.537366) (xy 75.646981 72.625375) (xy 75.455762 72.753144) (xy 75.293144 72.915762)
(xy 75.2725 72.946658) (xy 75.2725 71.833342) (xy 75.293144 71.864238) (xy 75.455762 72.026856) (xy 75.646981 72.154625)
(xy 75.859453 72.242634) (xy 76.085011 72.2875) (xy 76.314989 72.2875) (xy 76.540547 72.242634) (xy 76.753019 72.154625)
(xy 76.944238 72.026856) (xy 77.106856 71.864238) (xy 77.234625 71.673019) (xy 77.322634 71.460547) (xy 77.3675 71.234989)
(xy 77.3675 71.005011) (xy 77.322634 70.779453) (xy 77.312998 70.756188) (xy 78.667059 70.756188) (xy 78.667059 70.897524)
(xy 78.694632 71.036143) (xy 78.748718 71.16672) (xy 78.82724 71.284236) (xy 78.927179 71.384175) (xy 78.985491 71.423138)
(xy 78.98549 73.069352) (xy 78.93561 73.102681) (xy 78.835671 73.20262) (xy 78.757149 73.320136) (xy 78.703063 73.450713)
(xy 78.67549 73.589332) (xy 78.67549 73.730668) (xy 78.703063 73.869287) (xy 78.757149 73.999864) (xy 78.835671 74.11738)
(xy 78.93561 74.217319) (xy 79.053126 74.295841) (xy 79.183703 74.349927) (xy 79.322322 74.3775) (xy 79.357026 74.3775)
(xy 79.320073 74.466713) (xy 79.2925 74.605332) (xy 79.2925 74.746668) (xy 79.320073 74.885287) (xy 79.374159 75.015864)
(xy 79.452681 75.13338) (xy 79.55262 75.233319) (xy 79.670136 75.311841) (xy 79.800713 75.365927) (xy 79.939332 75.3935)
(xy 79.947553 75.3935) (xy 79.927496 75.494332) (xy 79.927496 75.635668) (xy 79.955069 75.774287) (xy 80.009155 75.904864)
(xy 80.087677 76.02238) (xy 80.187616 76.122319) (xy 80.305132 76.200841) (xy 80.435709 76.254927) (xy 80.574328 76.2825)
(xy 80.715664 76.2825) (xy 80.854283 76.254927) (xy 80.98486 76.200841) (xy 81.102376 76.122319) (xy 81.202315 76.02238)
(xy 81.235644 75.9725) (xy 83.974801 75.9725) (xy 83.99762 75.995319) (xy 84.115136 76.073841) (xy 84.245713 76.127927)
(xy 84.384332 76.1555) (xy 84.525668 76.1555) (xy 84.664287 76.127927) (xy 84.794864 76.073841) (xy 84.91238 75.995319)
(xy 85.012319 75.89538) (xy 85.090841 75.777864) (xy 85.144927 75.647287) (xy 85.1725 75.508668) (xy 85.1725 75.367332)
(xy 85.144927 75.228713) (xy 85.090841 75.098136) (xy 85.012319 74.98062) (xy 84.91238 74.880681) (xy 84.794864 74.802159)
(xy 84.664287 74.748073) (xy 84.525668 74.7205) (xy 84.384332 74.7205) (xy 84.245713 74.748073) (xy 84.115136 74.802159)
(xy 83.99762 74.880681) (xy 83.897681 74.98062) (xy 83.819159 75.098136) (xy 83.79457 75.1575) (xy 81.235644 75.1575)
(xy 81.202315 75.10762) (xy 81.102376 75.007681) (xy 80.98486 74.929159) (xy 80.854283 74.875073) (xy 80.715664 74.8475)
(xy 80.707443 74.8475) (xy 80.7275 74.746668) (xy 80.7275 74.605332) (xy 80.699927 74.466713) (xy 80.645841 74.336136)
(xy 80.567319 74.21862) (xy 80.46738 74.118681) (xy 80.4175 74.085352) (xy 80.4175 71.821024) (xy 80.473287 71.809927)
(xy 80.603864 71.755841) (xy 80.72138 71.677319) (xy 80.821319 71.57738) (xy 80.899841 71.459864) (xy 80.953927 71.329287)
(xy 80.9815 71.190668) (xy 80.9815 71.049332) (xy 80.953927 70.910713) (xy 80.899841 70.780136) (xy 80.821319 70.66262)
(xy 80.72138 70.562681) (xy 80.603864 70.484159) (xy 80.473287 70.430073) (xy 80.334668 70.4025) (xy 80.193332 70.4025)
(xy 80.054713 70.430073) (xy 79.99805 70.453543) (xy 79.941878 70.369476) (xy 79.841939 70.269537) (xy 79.724423 70.191015)
(xy 79.593846 70.136929) (xy 79.455227 70.109356) (xy 79.313891 70.109356) (xy 79.175272 70.136929) (xy 79.044695 70.191015)
(xy 78.927179 70.269537) (xy 78.82724 70.369476) (xy 78.748718 70.486992) (xy 78.694632 70.617569) (xy 78.667059 70.756188)
(xy 77.312998 70.756188) (xy 77.234625 70.566981) (xy 77.106856 70.375762) (xy 76.944238 70.213144) (xy 76.753019 70.085375)
(xy 76.540547 69.997366) (xy 76.314989 69.9525) (xy 76.085011 69.9525) (xy 75.859453 69.997366) (xy 75.646981 70.085375)
(xy 75.455762 70.213144) (xy 75.293144 70.375762) (xy 75.2725 70.406658) (xy 75.2725 69.293342) (xy 75.293144 69.324238)
(xy 75.455762 69.486856) (xy 75.646981 69.614625) (xy 75.859453 69.702634) (xy 76.085011 69.7475) (xy 76.314989 69.7475)
(xy 76.540547 69.702634) (xy 76.753019 69.614625) (xy 76.944238 69.486856) (xy 77.106856 69.324238) (xy 77.234625 69.133019)
(xy 77.322634 68.920547) (xy 77.3675 68.694989) (xy 77.3675 68.465011) (xy 77.322634 68.239453) (xy 77.234625 68.026981)
(xy 77.106856 67.835762) (xy 76.944238 67.673144) (xy 76.753019 67.545375) (xy 76.540547 67.457366) (xy 76.314989 67.4125)
(xy 76.085011 67.4125) (xy 75.859453 67.457366) (xy 75.646981 67.545375) (xy 75.455762 67.673144) (xy 75.293144 67.835762)
(xy 75.2725 67.866658) (xy 75.2725 66.753342) (xy 75.293144 66.784238) (xy 75.455762 66.946856) (xy 75.646981 67.074625)
(xy 75.859453 67.162634) (xy 76.085011 67.2075) (xy 76.314989 67.2075) (xy 76.540547 67.162634) (xy 76.753019 67.074625)
(xy 76.944238 66.946856) (xy 77.106856 66.784238) (xy 77.234625 66.593019) (xy 77.322634 66.380547) (xy 77.3675 66.154989)
(xy 77.3675 65.925011) (xy 77.322634 65.699453) (xy 77.234625 65.486981) (xy 77.106856 65.295762) (xy 76.944238 65.133144)
(xy 76.753019 65.005375) (xy 76.540547 64.917366) (xy 76.314989 64.8725) (xy 76.085011 64.8725) (xy 75.859453 64.917366)
(xy 75.646981 65.005375) (xy 75.455762 65.133144) (xy 75.293144 65.295762) (xy 75.2725 65.326658) (xy 75.2725 64.658277)
(xy 75.287759 64.662906) (xy 75.35 64.669036) (xy 77.05 64.669036) (xy 77.112241 64.662906) (xy 77.17209 64.644751)
(xy 77.227247 64.615269) (xy 77.275593 64.575593) (xy 77.315269 64.527247) (xy 77.344751 64.47209) (xy 77.362906 64.412241)
(xy 77.369036 64.35) (xy 77.369036 62.65) (xy 77.362906 62.587759) (xy 77.358277 62.5725) (xy 87.741723 62.5725)
)
)
)
)
================================================
FILE: electronics/LevelShifterBreakout/LevelShifterBreakout.pro
================================================
update=Mon 01 Nov 2021 06:02:37 PM PDT
version=1
last_client=kicad
[general]
version=1
RootSch=
BoardNm=
[cvpcb]
version=1
NetIExt=net
[eeschema]
version=1
LibDir=
[eeschema/libraries]
[pcbnew]
version=1
PageLayoutDescrFile=
LastNetListRead=
CopperLayerCount=2
BoardThickness=1.6
AllowMicroVias=0
AllowBlindVias=0
RequireCourtyardDefinitions=0
ProhibitOverlappingCourtyards=1
MinTrackWidth=0.127
MinViaDiameter=0.4
MinViaDrill=0.3
MinMicroViaDiameter=0.2
MinMicroViaDrill=0.09999999999999999
MinHoleToHole=0.25
TrackWidth1=0.18
ViaDiameter1=0.8
ViaDrill1=0.4
dPairWidth1=0.2
dPairGap1=0.25
dPairViaGap1=0.25
SilkLineWidth=0.12
SilkTextSizeV=1
SilkTextSizeH=1
SilkTextSizeThickness=0.15
SilkTextItalic=0
SilkTextUpright=1
CopperLineWidth=0.2
CopperTextSizeV=1.5
CopperTextSizeH=1.5
CopperTextThickness=0.3
CopperTextItalic=0
CopperTextUpright=1
EdgeCutLineWidth=0.05
CourtyardLineWidth=0.05
OthersLineWidth=0.15
OthersTextSizeV=1
OthersTextSizeH=1
OthersTextSizeThickness=0.15
OthersTextItalic=0
OthersTextUpright=1
SolderMaskClearance=0
SolderMaskMinWidth=0
SolderPasteClearance=0
SolderPasteRatio=-0
[pcbnew/Layer.F.Cu]
Name=F.Cu
Type=0
Enabled=1
[pcbnew/Layer.In1.Cu]
Name=In1.Cu
Type=0
Enabled=0
[pcbnew/Layer.In2.Cu]
Name=In2.Cu
Type=0
Enabled=0
[pcbnew/Layer.In3.Cu]
Name=In3.Cu
Type=0
Enabled=0
[pcbnew/Layer.In4.Cu]
Name=In4.Cu
Type=0
Enabled=0
[pcbnew/Layer.In5.Cu]
Name=In5.Cu
Type=0
Enabled=0
[pcbnew/Layer.In6.Cu]
Name=In6.Cu
Type=0
Enabled=0
[pcbnew/Layer.In7.Cu]
Name=In7.Cu
Type=0
Enabled=0
[pcbnew/Layer.In8.Cu]
Name=In8.Cu
Type=0
Enabled=0
[pcbnew/Layer.In9.Cu]
Name=In9.Cu
Type=0
Enabled=0
[pcbnew/Layer.In10.Cu]
Name=In10.Cu
Type=0
Enabled=0
[pcbnew/Layer.In11.Cu]
Name=In11.Cu
Type=0
Enabled=0
[pcbnew/Layer.In12.Cu]
Name=In12.Cu
Type=0
Enabled=0
[pcbnew/Layer.In13.Cu]
Name=In13.Cu
Type=0
Enabled=0
[pcbnew/Layer.In14.Cu]
Name=In14.Cu
Type=0
Enabled=0
[pcbnew/Layer.In15.Cu]
Name=In15.Cu
Type=0
Enabled=0
[pcbnew/Layer.In16.Cu]
Name=In16.Cu
Type=0
Enabled=0
[pcbnew/Layer.In17.Cu]
Name=In17.Cu
Type=0
Enabled=0
[pcbnew/Layer.In18.Cu]
Name=In18.Cu
Type=0
Enabled=0
[pcbnew/Layer.In19.Cu]
Name=In19.Cu
Type=0
Enabled=0
[pcbnew/Layer.In20.Cu]
Name=In20.Cu
Type=0
Enabled=0
[pcbnew/Layer.In21.Cu]
Name=In21.Cu
Type=0
Enabled=0
[pcbnew/Layer.In22.Cu]
Name=In22.Cu
Type=0
Enabled=0
[pcbnew/Layer.In23.Cu]
Name=In23.Cu
Type=0
Enabled=0
[pcbnew/Layer.In24.Cu]
Name=In24.Cu
Type=0
Enabled=0
[pcbnew/Layer.In25.Cu]
Name=In25.Cu
Type=0
Enabled=0
[pcbnew/Layer.In26.Cu]
Name=In26.Cu
Type=0
Enabled=0
[pcbnew/Layer.In27.Cu]
Name=In27.Cu
Type=0
Enabled=0
[pcbnew/Layer.In28.Cu]
Name=In28.Cu
Type=0
Enabled=0
[pcbnew/Layer.In29.Cu]
Name=In29.Cu
Type=0
Enabled=0
[pcbnew/Layer.In30.Cu]
Name=In30.Cu
Type=0
Enabled=0
[pcbnew/Layer.B.Cu]
Name=B.Cu
Type=0
Enabled=1
[pcbnew/Layer.B.Adhes]
Enabled=1
[pcbnew/Layer.F.Adhes]
Enabled=1
[pcbnew/Layer.B.Paste]
Enabled=1
[pcbnew/Layer.F.Paste]
Enabled=1
[pcbnew/Layer.B.SilkS]
Enabled=1
[pcbnew/Layer.F.SilkS]
Enabled=1
[pcbnew/Layer.B.Mask]
Enabled=1
[pcbnew/Layer.F.Mask]
Enabled=1
[pcbnew/Layer.Dwgs.User]
Enabled=1
[pcbnew/Layer.Cmts.User]
Enabled=1
[pcbnew/Layer.Eco1.User]
Enabled=1
[pcbnew/Layer.Eco2.User]
Enabled=1
[pcbnew/Layer.Edge.Cuts]
Enabled=1
[pcbnew/Layer.Margin]
Enabled=1
[pcbnew/Layer.B.CrtYd]
Enabled=1
[pcbnew/Layer.F.CrtYd]
Enabled=1
[pcbnew/Layer.B.Fab]
Enabled=1
[pcbnew/Layer.F.Fab]
Enabled=1
[pcbnew/Layer.Rescue]
Enabled=0
[pcbnew/Netclasses]
[pcbnew/Netclasses/Default]
Name=Default
Clearance=0.127
TrackWidth=0.18
ViaDiameter=0.8
ViaDrill=0.4
uViaDiameter=0.3
uViaDrill=0.1
dPairWidth=0.2
dPairGap=0.25
dPairViaGap=0.25
================================================
FILE: electronics/LevelShifterBreakout/LevelShifterBreakout.sch
================================================
EESchema Schematic File Version 4
EELAYER 30 0
EELAYER END
$Descr A4 11693 8268
encoding utf-8
Sheet 1 1
Title ""
Date ""
Rev ""
Comp ""
Comment1 ""
Comment2 ""
Comment3 ""
Comment4 ""
$EndDescr
$Comp
L SN74AVC4T774:SN74AVC4T774RSVR U1
U 1 1 61B8BFB7
P 3600 2650
F 0 "U1" H 4150 2915 50 0000 C CNN
F 1 "SN74AVC4T774RSVR" H 4150 2824 50 0000 C CNN
F 2 "SN74AVC4T774:Texas_Instruments-RSV_R-PUQFN-N16-0-0-0" H 3600 3050 50 0001 L CNN
F 3 "http://www.ti.com/lit/ds/symlink/sn74avc4t774.pdf" H 3600 3150 50 0001 L CNN
F 4 "380Mbps" H 3600 3250 50 0001 L CNN "Data Rate"
F 5 "1.2V ~ 3.6V" H 3600 3350 50 0001 L CNN "Voltage - VCCA"
F 6 "1.2V ~ 3.6V" H 3600 3450 50 0001 L CNN "Voltage - VCCB"
F 7 "IC" H 3600 3550 50 0001 L CNN "category"
F 8 "Voltage Level Translator Bidirectional 1 Circuit 4 Channel 380Mbps 16-UQFN (2.6x1.8)" H 3600 3650 50 0001 L CNN "digikey description"
F 9 "296-24741-1-ND" H 3600 3750 50 0001 L CNN "digikey part number"
F 10 "yes" H 3600 3850 50 0001 L CNN "lead free"
F 11 "e3c229e32d4c5fe7" H 3600 3950 50 0001 L CNN "library id"
F 12 "Texas Instruments" H 3600 4050 50 0001 L CNN "manufacturer"
F 13 "595-SN74AVC4T774RSVR" H 3600 4150 50 0001 L CNN "mouser part number"
F 14 "16-UFQFN" H 3600 4250 50 0001 L CNN "package"
F 15 "yes" H 3600 4350 50 0001 L CNN "rohs"
F 16 "+85°C" H 3600 4450 50 0001 L CNN "temperature range high"
F 17 "-40°C" H 3600 4550 50 0001 L CNN "temperature range low"
1 3600 2650
1 0 0 -1
$EndComp
Wire Wire Line
3700 2650 3000 2650
Wire Wire Line
3700 2750 3000 2750
Wire Wire Line
3700 2950 3000 2950
Wire Wire Line
3700 3050 3000 3050
Wire Wire Line
3700 3150 3000 3150
Wire Wire Line
3700 3250 3000 3250
Wire Wire Line
3700 3450 3000 3450
Wire Wire Line
3700 3550 3000 3550
Wire Wire Line
3700 3650 3000 3650
Wire Wire Line
3700 3750 3000 3750
Wire Wire Line
5300 2650 4600 2650
Wire Wire Line
5300 2750 4600 2750
Wire Wire Line
5300 2850 4600 2850
Wire Wire Line
5300 2950 4600 2950
Wire Wire Line
3700 3950 3000 3950
Text Label 3000 2650 0 50 ~ 0
VCCA
Text Label 3000 2750 0 50 ~ 0
VCCB
Text Label 3000 2950 0 50 ~ 0
A1
Text Label 3000 3050 0 50 ~ 0
A2
Text Label 3000 3150 0 50 ~ 0
A3
Text Label 3000 3250 0 50 ~ 0
A4
Text Label 3000 3450 0 50 ~ 0
DIR1
Text Label 3000 3550 0 50 ~ 0
DIR2
Text Label 3000 3650 0 50 ~ 0
DIR3
Text Label 3000 3750 0 50 ~ 0
DIR4
Text Label 3000 3950 0 50 ~ 0
nOE
Text Label 5300 2650 2 50 ~ 0
B1
Text Label 5300 2750 2 50 ~ 0
B2
Text Label 5300 2850 2 50 ~ 0
B3
Text Label 5300 2950 2 50 ~ 0
B4
$Comp
L Connector:Conn_01x08_Male J1
U 1 1 61B8EE53
P 3150 5300
F 0 "J1" H 3258 5781 50 0000 C CNN
F 1 "Conn_01x08_Male" H 3258 5690 50 0000 C CNN
F 2 "Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_Vertical" H 3150 5300 50 0001 C CNN
F 3 "~" H 3150 5300 50 0001 C CNN
1 3150 5300
1 0 0 -1
$EndComp
$Comp
L Connector:Conn_01x08_Male J2
U 1 1 61B90C78
P 4300 5300
F 0 "J2" H 4272 5274 50 0000 R CNN
F 1 "Conn_01x08_Male" H 4272 5183 50 0000 R CNN
F 2 "Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_Vertical" H 4300 5300 50 0001 C CNN
F 3 "~" H 4300 5300 50 0001 C CNN
1 4300 5300
-1 0 0 -1
$EndComp
Wire Wire Line
3350 5000 3600 5000
Wire Wire Line
3350 5100 3600 5100
Wire Wire Line
3350 5200 3600 5200
Wire Wire Line
3350 5300 3600 5300
Wire Wire Line
3350 5400 3600 5400
Wire Wire Line
3350 5500 3600 5500
Wire Wire Line
3350 5600 3600 5600
Wire Wire Line
3350 5700 3600 5700
Wire Wire Line
3850 5000 4100 5000
Wire Wire Line
3850 5100 4100 5100
Wire Wire Line
3850 5200 4100 5200
Wire Wire Line
3850 5300 4100 5300
Wire Wire Line
3850 5400 4100 5400
Wire Wire Line
3850 5500 4100 5500
Wire Wire Line
3850 5600 4100 5600
Wire Wire Line
3850 5700 4100 5700
Text Label 3600 5000 2 50 ~ 0
VCCA
Text Label 3600 5100 2 50 ~ 0
A1
Text Label 3600 5200 2 50 ~ 0
A2
Text Label 3600 5300 2 50 ~ 0
A3
Text Label 3600 5400 2 50 ~ 0
A4
Text Label 3600 5500 2 50 ~ 0
DIR1
Text Label 3600 5600 2 50 ~ 0
DIR2
Text Label 3600 5700 2 50 ~ 0
nOE
Text Label 3850 5000 0 50 ~ 0
VCCB
Text Label 3850 5100 0 50 ~ 0
B1
Text Label 3850 5200 0 50 ~ 0
B2
Text Label 3850 5300 0 50 ~ 0
B3
Text Label 3850 5400 0 50 ~ 0
B4
Text Label 3850 5500 0 50 ~ 0
DIR3
Text Label 3850 5600 0 50 ~ 0
DIR4
$Comp
L Device:C_Small C1
U 1 1 61B9E2DF
P 1100 2350
F 0 "C1" H 1192 2396 50 0000 L CNN
F 1 "0.1uF" H 1192 2305 50 0000 L CNN
F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder" H 1100 2350 50 0001 C CNN
F 3 "~" H 1100 2350 50 0001 C CNN
1 1100 2350
1 0 0 -1
$EndComp
$Comp
L Device:C_Small C2
U 1 1 61B9E689
P 1650 2350
F 0 "C2" H 1742 2396 50 0000 L CNN
F 1 "0.1uF" H 1742 2305 50 0000 L CNN
F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder" H 1650 2350 50 0001 C CNN
F 3 "~" H 1650 2350 50 0001 C CNN
1 1650 2350
1 0 0 -1
$EndComp
Text Label 850 2250 0 50 ~ 0
VCCA
Text Label 1400 2250 0 50 ~ 0
VCCB
Wire Wire Line
1100 2250 850 2250
Wire Wire Line
1650 2250 1400 2250
$Comp
L power:GND #PWR0101
U 1 1 61BA2A63
P 1100 2550
F 0 "#PWR0101" H 1100 2300 50 0001 C CNN
F 1 "GND" H 1105 2377 50 0000 C CNN
F 2 "" H 1100 2550 50 0001 C CNN
F 3 "" H 1100 2550 50 0001 C CNN
1 1100 2550
1 0 0 -1
$EndComp
$Comp
L power:GND #PWR0102
U 1 1 61BA2CD6
P 1650 2550
F 0 "#PWR0102" H 1650 2300 50 0001 C CNN
F 1 "GND" H 1655 2377 50 0000 C CNN
F 2 "" H 1650 2550 50 0001 C CNN
F 3 "" H 1650 2550 50 0001 C CNN
1 1650 2550
1 0 0 -1
$EndComp
Wire Wire Line
1100 2450 1100 2550
Wire Wire Line
1650 2450 1650 2550
$Comp
L power:GND #PWR0103
U 1 1 61BA58DF
P 4700 4050
F 0 "#PWR0103" H 4700 3800 50 0001 C CNN
F 1 "GND" H 4705 3877 50 0000 C CNN
F 2 "" H 4700 4050 50 0001 C CNN
F 3 "" H 4700 4050 50 0001 C CNN
1 4700 4050
1 0 0 -1
$EndComp
Wire Wire Line
4600 3950 4700 3950
Wire Wire Line
4700 3950 4700 4050
$Comp
L power:GND #PWR0104
U 1 1 61BA6EDB
P 3850 5700
F 0 "#PWR0104" H 3850 5450 50 0001 C CNN
F 1 "GND" H 3855 5527 50 0000 C CNN
F 2 "" H 3850 5700 50 0001 C CNN
F 3 "" H 3850 5700 50 0001 C CNN
1 3850 5700
1 0 0 -1
$EndComp
$EndSCHEMATC
================================================
FILE: electronics/LevelShifterBreakout/fp-lib-table
================================================
(fp_lib_table
(lib (name SN74AVC4T774)(type KiCad)(uri ${KIPRJMOD}/../lib/SN74AVC4T774.pretty)(options "")(descr ""))
)
================================================
FILE: electronics/LevelShifterBreakout/sym-lib-table
================================================
(sym_lib_table
(lib (name SN74AVC4T774)(type Legacy)(uri ${KIPRJMOD}/../lib/SN74AVC4T774.lib)(options "")(descr ""))
)
================================================
FILE: electronics/lib/BM28.pretty/BM28B0.6-24DS.kicad_mod
================================================
(module BM28B0.6-24DS (layer F.Cu) (tedit 6180705A)
(attr smd)
(fp_text reference REF** (at -3.515 0 90) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text value BM28B0.6-24DS (at 0 3.6) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(pad 1 smd rect (at -0.795 -1.925) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask))
(pad 2 smd rect (at 0.795 -1.925) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask))
(pad 3 smd rect (at -0.795 -1.575) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask))
(pad 4 smd rect (at 0.795 -1.575) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask))
(pad 5 smd rect (at -0.795 -1.225) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask))
(pad 6 smd rect (at 0.795 -1.225) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask))
(pad 7 smd rect (at -0.795 -0.875) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask))
(pad 8 smd rect (at 0.795 -0.875) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask))
(pad 9 smd rect (at -0.795 -0.525) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask))
(pad 10 smd rect (at 0.795 -0.525) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask))
(pad 11 smd rect (at -0.795 -0.175) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask))
(pad 12 smd rect (at 0.795 -0.175) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask))
(pad 13 smd rect (at -0.795 0.175) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask))
(pad 14 smd rect (at 0.795 0.175) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask))
(pad 15 smd rect (at -0.795 0.525) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask))
(pad 16 smd rect (at 0.795 0.525) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask))
(pad 17 smd rect (at -0.795 0.875) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask))
(pad 18 smd rect (at 0.795 0.875) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask))
(pad 19 smd rect (at -0.795 1.225) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask))
(pad 20 smd rect (at 0.795 1.225) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask))
(pad 21 smd rect (at -0.795 1.575) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask))
(pad 22 smd rect (at 0.795 1.575) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask))
(pad 23 smd rect (at -0.795 1.925) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask))
(pad 24 smd rect (at 0.795 1.925) (size 0.41 0.18) (layers F.Cu F.Paste F.Mask))
(pad 25 smd rect (at -0.745 -2.63) (size 0.31 0.53) (layers F.Cu F.Paste F.Mask))
(pad 26 smd rect (at 0.745 -2.63) (size 0.31 0.53) (layers F.Cu F.Paste F.Mask))
(pad 27 smd rect (at -0.745 2.63) (size 0.31 0.53) (layers F.Cu F.Paste F.Mask))
(pad 28 smd rect (at 0.745 2.63) (size 0.31 0.53) (layers F.Cu F.Paste F.Mask))
)
================================================
FILE: electronics/lib/BOM_Only.pretty/bom_only_no_pin.kicad_mod
================================================
(module bom_only_no_pin (layer F.Cu) (tedit 622E7E88)
(attr smd)
(fp_text reference REF** (at 0 0.5) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text value bom_only_no_pin (at 0 -0.5) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
)
================================================
FILE: electronics/lib/GCT_USB.3dshapes/proprietary/README.txt
================================================
This folder should contain a single file named:
USB4510-03-1-A.stp
Unfortunately it cannot be distributed directly as part of this project.
The model can be downloaded for your own use for free (with CADENAS account):
https://gct.co/mouser/connector/usb4510
================================================
FILE: electronics/lib/GCT_USB.pretty/USB4510.kicad_mod
================================================
(module USB4510 (layer F.Cu) (tedit 6206B6FF)
(attr smd)
(fp_text reference REF** (at 0 -3.35) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text value USB4510 (at 0 -0.5) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start 4.47 -6) (end -4.47 -6) (layer F.Fab) (width 0.05))
(fp_line (start -4.47 0.5) (end 4.47 0.5) (layer F.Fab) (width 0.05))
(fp_line (start 4.47 0.5) (end 4.47 -6) (layer F.Fab) (width 0.05))
(fp_line (start -4.47 0.5) (end -4.47 -6) (layer F.Fab) (width 0.05))
(fp_line (start 4.62 0) (end 4.62 -5.7) (layer Edge.Cuts) (width 0.2))
(fp_line (start -4.12 -6.2) (end 4.12 -6.2) (layer Edge.Cuts) (width 0.2))
(fp_line (start -4.62 0) (end -4.62 -5.7) (layer Edge.Cuts) (width 0.2))
(fp_arc (start -4.12 -5.7) (end -4.12 -6.2) (angle -90) (layer Edge.Cuts) (width 0.2))
(fp_arc (start 4.12 -5.7) (end 4.62 -5.7) (angle -90) (layer Edge.Cuts) (width 0.2))
(pad S1 thru_hole oval (at 5.62 -5.6) (size 1 1.8) (drill oval 0.6 1.4) (layers *.Cu *.Mask))
(pad S1 thru_hole oval (at -5.62 -1.6) (size 1 2.2) (drill oval 0.6 1.8) (layers *.Cu *.Mask))
(pad S1 thru_hole oval (at 5.62 -1.6) (size 1 2.2) (drill oval 0.6 1.8) (layers *.Cu *.Mask))
(pad S1 thru_hole oval (at -5.62 -5.6) (size 1 1.8) (drill oval 0.6 1.4) (layers *.Cu *.Mask))
(pad A1 smd rect (at -3.2 -6.75) (size 0.6 1.1) (layers F.Cu F.Paste F.Mask))
(pad A4 smd rect (at -2.4 -6.75) (size 0.6 1.1) (layers F.Cu F.Paste F.Mask))
(pad B12 smd rect (at -3.2 -6.75) (size 0.6 1.1) (layers F.Cu F.Paste F.Mask))
(pad B9 smd rect (at -2.4 -6.75) (size 0.6 1.1) (layers F.Cu F.Paste F.Mask))
(pad B8 smd rect (at -1.75 -6.75) (size 0.3 1.1) (layers F.Cu F.Paste F.Mask))
(pad A5 smd rect (at -1.25 -6.75) (size 0.3 1.1) (layers F.Cu F.Paste F.Mask))
(pad B7 smd rect (at -0.75 -6.75) (size 0.3 1.1) (layers F.Cu F.Paste F.Mask))
(pad A6 smd rect (at -0.25 -6.75) (size 0.3 1.1) (layers F.Cu F.Paste F.Mask))
(pad A7 smd rect (at 0.25 -6.75) (size 0.3 1.1) (layers F.Cu F.Paste F.Mask))
(pad B6 smd rect (at 0.75 -6.75) (size 0.3 1.1) (layers F.Cu F.Paste F.Mask))
(pad A8 smd rect (at 1.25 -6.75) (size 0.3 1.1) (layers F.Cu F.Paste F.Mask))
(pad B5 smd rect (at 1.75 -6.75) (size 0.3 1.1) (layers F.Cu F.Paste F.Mask))
(pad A9 smd rect (at 2.4 -6.75) (size 0.6 1.1) (layers F.Cu F.Paste F.Mask))
(pad B4 smd rect (at 2.4 -6.75) (size 0.6 1.1) (layers F.Cu F.Paste F.Mask))
(pad B1 smd rect (at 3.2 -6.75) (size 0.6 1.1) (layers F.Cu F.Paste F.Mask))
(pad A12 smd rect (at 3.2 -6.75) (size 0.6 1.1) (layers F.Cu F.Paste F.Mask))
(model ${KIPRJMOD}/../lib/GCT_USB.3dshapes/proprietary/USB4510-03-1-A.stp
(offset (xyz 0 -0.5 0))
(scale (xyz 1 1 1))
(rotate (xyz -90 0 0))
)
)
================================================
FILE: electronics/lib/GCT_USB.pretty/USB4510_NoPaste.kicad_mod
================================================
(footprint "USB4510_NoPaste" (version 20211014) (generator pcbnew)
(layer "F.Cu")
(tedit 63329430)
(attr smd)
(fp_text reference "REF**" (at 0 -3.35) (layer "F.Fab")
(effects (font (size 1 1) (thickness 0.15)))
(tstamp fb9fead8-eca2-4b53-b652-4292bca55272)
)
(fp_text value "USB4510_NoPaste" (at 0 -0.5) (layer "F.Fab")
(effects (font (size 1 1) (thickness 0.15)))
(tstamp 0c3e0028-b3b7-4329-b48a-75337a358f3e)
)
(fp_line (start -4.62 0) (end -4.62 -5.7) (layer "Edge.Cuts") (width 0.2) (tstamp 8a80f9a6-35b6-4540-86c7-f39b39959daa))
(fp_line (start 4.62 0) (end 4.62 -5.7) (layer "Edge.Cuts") (width 0.2) (tstamp b181e61f-2ece-44d0-b3d8-4cf9aab3cc52))
(fp_line (start -4.12 -6.2) (end 4.12 -6.2) (layer "Edge.Cuts") (width 0.2) (tstamp ef3053b8-279f-473d-82b1-edd879beea93))
(fp_arc (start -4.62 -5.7) (mid -4.473553 -6.053553) (end -4.12 -6.2) (layer "Edge.Cuts") (width 0.2) (tstamp caf3b000-b380-4ea0-8fc3-06cb851ddfcb))
(fp_arc (start 4.12 -6.2) (mid 4.473553 -6.053553) (end 4.62 -5.7) (layer "Edge.Cuts") (width 0.2) (tstamp ec7c110d-3397-4876-9b1e-359c83f8a42d))
(fp_line (start -4.47 0.5) (end -4.47 -6) (layer "F.Fab") (width 0.05) (tstamp 6d869c35-f48b-45fb-9e33-550c174c3c2f))
(fp_line (start 4.47 -6) (end -4.47 -6) (layer "F.Fab") (width 0.05) (tstamp d448b3d7-8604-429b-a6f5-d8433bbecdd0))
(fp_line (start 4.47 0.5) (end 4.47 -6) (layer "F.Fab") (width 0.05) (tstamp e593d6e1-8805-468f-ace3-8f153388fa1d))
(fp_line (start -4.47 0.5) (end 4.47 0.5) (layer "F.Fab") (width 0.05) (tstamp fe31bc1b-e400-4908-807a-073938dd1851))
(pad "A1" smd rect (at -3.2 -6.75) (size 0.6 1.09) (layers "F.Cu" "F.Mask") (tstamp 9789ff7e-1373-4d34-8dcd-11af0c9c3e4f))
(pad "A4" smd rect (at -2.4 -6.75) (size 0.6 1.09) (layers "F.Cu" "F.Mask") (tstamp 4b64f6df-62ba-4c1f-9357-3133f88ff9bd))
(pad "A5" smd rect (at -1.25 -6.75) (size 0.3 1.09) (layers "F.Cu" "F.Mask") (tstamp 13e2216a-5685-44fb-b37b-e3377d494a4d))
(pad "A6" smd rect (at -0.25 -6.75) (size 0.3 1.09) (layers "F.Cu" "F.Mask") (tstamp 9c993241-b300-4c08-8fb5-2c70bdcba2ee))
(pad "A7" smd rect (at 0.25 -6.75) (size 0.3 1.09) (layers "F.Cu" "F.Mask") (tstamp 7bc4d422-ec63-4bcc-89be-3eac726fdba7))
(pad "A8" smd rect (at 1.25 -6.75) (size 0.3 1.09) (layers "F.Cu" "F.Mask") (tstamp 9bb5793e-9656-4b7f-83d8-8e7a78aeb568))
(pad "A9" smd rect (at 2.4 -6.75) (size 0.6 1.09) (layers "F.Cu" "F.Mask") (tstamp 1e3679ca-9b22-4c4d-b919-ad655c9fa7cd))
(pad "A12" smd rect (at 3.2 -6.75) (size 0.6 1.09) (layers "F.Cu" "F.Mask") (tstamp da6e4cba-b944-4298-807a-017a29efd608))
(pad "B1" smd rect (at 3.2 -6.75) (size 0.6 1.09) (layers "F.Cu" "F.Mask") (tstamp a8a17960-74d8-4f78-a5a9-0866b9d8d09f))
(pad "B4" smd rect (at 2.4 -6.75) (size 0.6 1.09) (layers "F.Cu" "F.Mask") (tstamp a202737f-3bef-4789-86fe-0d52089f6e3f))
(pad "B5" smd rect (at 1.75 -6.75) (size 0.3 1.09) (layers "F.Cu" "F.Mask") (tstamp b7723b28-f2bb-4f44-9dd9-a41ed5b213a7))
(pad "B6" smd rect (at 0.75 -6.75) (size 0.3 1.09) (layers "F.Cu" "F.Mask") (tstamp e45ee289-0e09-4fb1-8e60-b9936eece8bf))
(pad "B7" smd rect (at -0.75 -6.75) (size 0.3 1.09) (layers "F.Cu" "F.Mask") (tstamp bade9c7d-286a-4c69-846c-66807ca46170))
(pad "B8" smd rect (at -1.75 -6.75) (size 0.3 1.09) (layers "F.Cu" "F.Mask") (tstamp 86122c46-0a56-4cb2-b00b-306299ff41c2))
(pad "B9" smd rect (at -2.4 -6.75) (size 0.6 1.09) (layers "F.Cu" "F.Mask") (tstamp afd7b33e-4013-4fca-bb55-de9cde044c09))
(pad "B12" smd rect (at -3.2 -6.75) (size 0.6 1.09) (layers "F.Cu" "F.Mask") (tstamp 1908bf63-3c4a-4986-9c9c-298c531e6609))
(pad "S1" thru_hole oval (at 5.62 -1.6) (size 1 2.2) (drill oval 0.6 1.8) (layers *.Cu *.Mask) (tstamp 269ce84d-94aa-4bde-90ee-eb3d25cf6aa5))
(pad "S1" thru_hole oval (at -5.62 -5.6) (size 1 1.8) (drill oval 0.6 1.4) (layers *.Cu *.Mask) (tstamp 943f5f3a-c4bb-435a-a1c9-1e3af120369a))
(pad "S1" thru_hole oval (at 5.62 -5.6) (size 1 1.8) (drill oval 0.6 1.4) (layers *.Cu *.Mask) (tstamp 98cf94aa-9a14-4efb-965e-894e721f61fd))
(pad "S1" thru_hole oval (at -5.62 -1.6) (size 1 2.2) (drill oval 0.6 1.8) (layers *.Cu *.Mask) (tstamp b8ab7155-e1ae-4650-916f-1b5454e577b5))
(model "${KIPRJMOD}/../lib/GCT_USB.3dshapes/proprietary/USB4510-03-1-A.stp"
(offset (xyz 0 -0.5 0))
(scale (xyz 1 1 1))
(rotate (xyz -90 0 0))
)
)
================================================
FILE: electronics/lib/Holes.pretty/AlignmentHole_1.6.kicad_mod
================================================
(module AlignmentHole_1.6 (layer F.Cu) (tedit 620752D6)
(descr "Mounting Hole 2.2mm, no annular, M2, ISO7380")
(tags "mounting hole 2.2mm no annular m2 iso7380")
(attr virtual)
(fp_text reference REF** (at 0 -2.75) (layer F.SilkS) hide
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text value AlignmentHole (at 0 2.75) (layer F.Fab) hide
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text user %R (at 0.3 0) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(pad 1 thru_hole circle (at 0 0) (size 2.4 2.4) (drill 1.6) (layers *.Cu *.Mask))
)
================================================
FILE: electronics/lib/Holes.pretty/MountingHole_2.2mm_M2_ISO7380_Pad_NonVirtual.kicad_mod
================================================
(module MountingHole_2.2mm_M2_ISO7380_Pad_NonVirtual (layer F.Cu) (tedit 622E47A4)
(descr "Mounting Hole 2.2mm, M2, ISO7380")
(tags "mounting hole 2.2mm m2 iso7380")
(fp_text reference REF** (at 0 -2.75) (layer F.SilkS) hide
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text value MountingHole_2.2mm_M2_ISO7380_Pad_NonVirtual (at 0 2.75) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_circle (center 0 0) (end 1.75 0) (layer Cmts.User) (width 0.15))
(fp_circle (center 0 0) (end 2 0) (layer F.CrtYd) (width 0.05))
(fp_text user %R (at 0.3 0) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(pad 1 thru_hole circle (at 0 0) (size 3.5 3.5) (drill 2.2) (layers *.Cu *.Mask))
)
================================================
FILE: electronics/lib/Holes.pretty/MountingHole_M1.6.kicad_mod
================================================
(module MountingHole_M1.6 (layer F.Cu) (tedit 622E47EB)
(descr "Mounting Hole 2.2mm, no annular, M2, ISO7380")
(tags "mounting hole 2.2mm no annular m2 iso7380")
(fp_text reference REF** (at 0 -2.75) (layer F.SilkS) hide
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text value MountingHole_M1.6_Pad (at 0 2.75) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_circle (center 0 0) (end 1.34 0) (layer Cmts.User) (width 0.15))
(fp_circle (center 0 0) (end 1.5 0) (layer F.CrtYd) (width 0.05))
(fp_text user %R (at 0.3 0) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(pad 1 thru_hole circle (at 0 0) (size 2.4 2.4) (drill 1.7) (layers *.Cu *.Mask))
)
================================================
FILE: electronics/lib/LCD_GC9A01.3dshapes/TFT-Round-1.28.step
================================================
ISO-10303-21;
HEADER;
/* Generated by software containing ST-Developer
* from STEP Tools, Inc. (www.steptools.com)
*/
FILE_DESCRIPTION(
/* description */ (''),
/* implementation_level */ '2;1');
FILE_NAME(
/* name */
'C:/Users/Scott/Dropbox/CNC/smartknob/3d/TFT-Round-1.28.step',
/* time_stamp */ '2022-02-12T09:37:05-08:00',
/* author */ (''),
/* organization */ (''),
/* preprocessor_version */ 'ST-DEVELOPER v18.1',
/* originating_system */ 'Autodesk Translation Framework v10.13.0.1454',
/* authorisation */ '');
FILE_SCHEMA (('AUTOMOTIVE_DESIGN { 1 0 10303 214 3 1 1 }'));
ENDSEC;
DATA;
#10=MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#16,#17,
#18,#19,#20,#21,#22,#23,#24,#25),#455);
#11=SHAPE_REPRESENTATION_RELATIONSHIP('SRR','None',#462,#12);
#12=ADVANCED_BREP_SHAPE_REPRESENTATION('',(#13,#14),#454);
#13=MANIFOLD_SOLID_BREP('LCd',#274);
#14=MANIFOLD_SOLID_BREP('FPC',#275);
#15=FACE_BOUND('',#65,.T.);
#16=STYLED_ITEM('',(#472),#260);
#17=STYLED_ITEM('',(#472),#261);
#18=STYLED_ITEM('',(#472),#262);
#19=STYLED_ITEM('',(#472),#263);
#20=STYLED_ITEM('',(#472),#264);
#21=STYLED_ITEM('',(#472),#265);
#22=STYLED_ITEM('',(#472),#266);
#23=STYLED_ITEM('',(#473),#267);
#24=STYLED_ITEM('',(#471),#13);
#25=STYLED_ITEM('',(#474),#14);
#26=PLANE('',#292);
#27=PLANE('',#293);
#28=PLANE('',#297);
#29=PLANE('',#298);
#30=PLANE('',#299);
#31=PLANE('',#300);
#32=PLANE('',#301);
#33=PLANE('',#302);
#34=PLANE('',#303);
#35=PLANE('',#304);
#36=PLANE('',#305);
#37=PLANE('',#306);
#38=PLANE('',#307);
#39=PLANE('',#308);
#40=FACE_OUTER_BOUND('',#56,.T.);
#41=FACE_OUTER_BOUND('',#57,.T.);
#42=FACE_OUTER_BOUND('',#58,.T.);
#43=FACE_OUTER_BOUND('',#59,.T.);
#44=FACE_OUTER_BOUND('',#60,.T.);
#45=FACE_OUTER_BOUND('',#61,.T.);
#46=FACE_OUTER_BOUND('',#62,.T.);
#47=FACE_OUTER_BOUND('',#63,.T.);
#48=FACE_OUTER_BOUND('',#64,.T.);
#49=FACE_OUTER_BOUND('',#66,.T.);
#50=FACE_OUTER_BOUND('',#67,.T.);
#51=FACE_OUTER_BOUND('',#68,.T.);
#52=FACE_OUTER_BOUND('',#69,.T.);
#53=FACE_OUTER_BOUND('',#70,.T.);
#54=FACE_OUTER_BOUND('',#71,.T.);
#55=FACE_OUTER_BOUND('',#72,.T.);
#56=EDGE_LOOP('',(#190,#191,#192,#193));
#57=EDGE_LOOP('',(#194));
#58=EDGE_LOOP('',(#195,#196,#197,#198));
#59=EDGE_LOOP('',(#199,#200,#201,#202));
#60=EDGE_LOOP('',(#203,#204,#205,#206));
#61=EDGE_LOOP('',(#207,#208,#209,#210));
#62=EDGE_LOOP('',(#211,#212,#213,#214));
#63=EDGE_LOOP('',(#215,#216,#217,#218));
#64=EDGE_LOOP('',(#219,#220,#221,#222,#223,#224));
#65=EDGE_LOOP('',(#225));
#66=EDGE_LOOP('',(#226,#227,#228,#229,#230,#231));
#67=EDGE_LOOP('',(#232,#233,#234,#235));
#68=EDGE_LOOP('',(#236,#237,#238,#239));
#69=EDGE_LOOP('',(#240,#241,#242,#243));
#70=EDGE_LOOP('',(#244,#245,#246,#247));
#71=EDGE_LOOP('',(#248,#249,#250,#251));
#72=EDGE_LOOP('',(#252,#253,#254,#255));
#73=LINE('',#385,#102);
#74=LINE('',#391,#103);
#75=LINE('',#393,#104);
#76=LINE('',#395,#105);
#77=LINE('',#396,#106);
#78=LINE('',#402,#107);
#79=LINE('',#405,#108);
#80=LINE('',#407,#109);
#81=LINE('',#408,#110);
#82=LINE('',#411,#111);
#83=LINE('',#413,#112);
#84=LINE('',#414,#113);
#85=LINE('',#417,#114);
#86=LINE('',#419,#115);
#87=LINE('',#420,#116);
#88=LINE('',#422,#117);
#89=LINE('',#423,#118);
#90=LINE('',#429,#119);
#91=LINE('',#431,#120);
#92=LINE('',#433,#121);
#93=LINE('',#434,#122);
#94=LINE('',#437,#123);
#95=LINE('',#439,#124);
#96=LINE('',#440,#125);
#97=LINE('',#443,#126);
#98=LINE('',#445,#127);
#99=LINE('',#446,#128);
#100=LINE('',#448,#129);
#101=LINE('',#449,#130);
#102=VECTOR('',#315,16.2);
#103=VECTOR('',#322,10.);
#104=VECTOR('',#323,10.);
#105=VECTOR('',#324,10.);
#106=VECTOR('',#325,10.);
#107=VECTOR('',#332,10.);
#108=VECTOR('',#335,10.);
#109=VECTOR('',#336,10.);
#110=VECTOR('',#337,10.);
#111=VECTOR('',#340,10.);
#112=VECTOR('',#341,10.);
#113=VECTOR('',#342,10.);
#114=VECTOR('',#345,10.);
#115=VECTOR('',#346,10.);
#116=VECTOR('',#347,10.);
#117=VECTOR('',#350,10.);
#118=VECTOR('',#351,10.);
#119=VECTOR('',#358,10.);
#120=VECTOR('',#359,10.);
#121=VECTOR('',#360,10.);
#122=VECTOR('',#361,10.);
#123=VECTOR('',#364,10.);
#124=VECTOR('',#365,10.);
#125=VECTOR('',#366,10.);
#126=VECTOR('',#369,10.);
#127=VECTOR('',#370,10.);
#128=VECTOR('',#371,10.);
#129=VECTOR('',#374,10.);
#130=VECTOR('',#375,10.);
#131=CIRCLE('',#290,16.2);
#132=CIRCLE('',#291,16.2);
#133=CIRCLE('',#295,17.8);
#134=CIRCLE('',#296,17.8);
#135=VERTEX_POINT('',#382);
#136=VERTEX_POINT('',#384);
#137=VERTEX_POINT('',#389);
#138=VERTEX_POINT('',#390);
#139=VERTEX_POINT('',#392);
#140=VERTEX_POINT('',#394);
#141=VERTEX_POINT('',#398);
#142=VERTEX_POINT('',#400);
#143=VERTEX_POINT('',#404);
#144=VERTEX_POINT('',#406);
#145=VERTEX_POINT('',#410);
#146=VERTEX_POINT('',#412);
#147=VERTEX_POINT('',#416);
#148=VERTEX_POINT('',#418);
#149=VERTEX_POINT('',#427);
#150=VERTEX_POINT('',#428);
#151=VERTEX_POINT('',#430);
#152=VERTEX_POINT('',#432);
#153=VERTEX_POINT('',#436);
#154=VERTEX_POINT('',#438);
#155=VERTEX_POINT('',#442);
#156=VERTEX_POINT('',#444);
#157=EDGE_CURVE('',#135,#135,#131,.T.);
#158=EDGE_CURVE('',#135,#136,#73,.T.);
#159=EDGE_CURVE('',#136,#136,#132,.T.);
#160=EDGE_CURVE('',#137,#138,#74,.T.);
#161=EDGE_CURVE('',#137,#139,#75,.T.);
#162=EDGE_CURVE('',#140,#139,#76,.T.);
#163=EDGE_CURVE('',#138,#140,#77,.T.);
#164=EDGE_CURVE('',#141,#138,#133,.T.);
#165=EDGE_CURVE('',#142,#140,#134,.T.);
#166=EDGE_CURVE('',#141,#142,#78,.T.);
#167=EDGE_CURVE('',#143,#141,#79,.T.);
#168=EDGE_CURVE('',#144,#142,#80,.T.);
#169=EDGE_CURVE('',#143,#144,#81,.T.);
#170=EDGE_CURVE('',#145,#143,#82,.T.);
#171=EDGE_CURVE('',#146,#144,#83,.T.);
#172=EDGE_CURVE('',#145,#146,#84,.T.);
#173=EDGE_CURVE('',#147,#145,#85,.T.);
#174=EDGE_CURVE('',#148,#146,#86,.T.);
#175=EDGE_CURVE('',#147,#148,#87,.T.);
#176=EDGE_CURVE('',#137,#147,#88,.T.);
#177=EDGE_CURVE('',#139,#148,#89,.T.);
#178=EDGE_CURVE('',#149,#150,#90,.T.);
#179=EDGE_CURVE('',#149,#151,#91,.T.);
#180=EDGE_CURVE('',#152,#151,#92,.T.);
#181=EDGE_CURVE('',#150,#152,#93,.T.);
#182=EDGE_CURVE('',#150,#153,#94,.T.);
#183=EDGE_CURVE('',#154,#152,#95,.T.);
#184=EDGE_CURVE('',#153,#154,#96,.T.);
#185=EDGE_CURVE('',#153,#155,#97,.T.);
#186=EDGE_CURVE('',#156,#154,#98,.T.);
#187=EDGE_CURVE('',#155,#156,#99,.T.);
#188=EDGE_CURVE('',#155,#149,#100,.T.);
#189=EDGE_CURVE('',#151,#156,#101,.T.);
#190=ORIENTED_EDGE('',*,*,#157,.F.);
#191=ORIENTED_EDGE('',*,*,#158,.T.);
#192=ORIENTED_EDGE('',*,*,#159,.F.);
#193=ORIENTED_EDGE('',*,*,#158,.F.);
#194=ORIENTED_EDGE('',*,*,#157,.T.);
#195=ORIENTED_EDGE('',*,*,#160,.F.);
#196=ORIENTED_EDGE('',*,*,#161,.T.);
#197=ORIENTED_EDGE('',*,*,#162,.F.);
#198=ORIENTED_EDGE('',*,*,#163,.F.);
#199=ORIENTED_EDGE('',*,*,#164,.T.);
#200=ORIENTED_EDGE('',*,*,#163,.T.);
#201=ORIENTED_EDGE('',*,*,#165,.F.);
#202=ORIENTED_EDGE('',*,*,#166,.F.);
#203=ORIENTED_EDGE('',*,*,#167,.T.);
#204=ORIENTED_EDGE('',*,*,#166,.T.);
#205=ORIENTED_EDGE('',*,*,#168,.F.);
#206=ORIENTED_EDGE('',*,*,#169,.F.);
#207=ORIENTED_EDGE('',*,*,#170,.T.);
#208=ORIENTED_EDGE('',*,*,#169,.T.);
#209=ORIENTED_EDGE('',*,*,#171,.F.);
#210=ORIENTED_EDGE('',*,*,#172,.F.);
#211=ORIENTED_EDGE('',*,*,#173,.T.);
#212=ORIENTED_EDGE('',*,*,#172,.T.);
#213=ORIENTED_EDGE('',*,*,#174,.F.);
#214=ORIENTED_EDGE('',*,*,#175,.F.);
#215=ORIENTED_EDGE('',*,*,#176,.T.);
#216=ORIENTED_EDGE('',*,*,#175,.T.);
#217=ORIENTED_EDGE('',*,*,#177,.F.);
#218=ORIENTED_EDGE('',*,*,#161,.F.);
#219=ORIENTED_EDGE('',*,*,#177,.T.);
#220=ORIENTED_EDGE('',*,*,#174,.T.);
#221=ORIENTED_EDGE('',*,*,#171,.T.);
#222=ORIENTED_EDGE('',*,*,#168,.T.);
#223=ORIENTED_EDGE('',*,*,#165,.T.);
#224=ORIENTED_EDGE('',*,*,#162,.T.);
#225=ORIENTED_EDGE('',*,*,#159,.T.);
#226=ORIENTED_EDGE('',*,*,#176,.F.);
#227=ORIENTED_EDGE('',*,*,#160,.T.);
#228=ORIENTED_EDGE('',*,*,#164,.F.);
#229=ORIENTED_EDGE('',*,*,#167,.F.);
#230=ORIENTED_EDGE('',*,*,#170,.F.);
#231=ORIENTED_EDGE('',*,*,#173,.F.);
#232=ORIENTED_EDGE('',*,*,#178,.F.);
#233=ORIENTED_EDGE('',*,*,#179,.T.);
#234=ORIENTED_EDGE('',*,*,#180,.F.);
#235=ORIENTED_EDGE('',*,*,#181,.F.);
#236=ORIENTED_EDGE('',*,*,#182,.F.);
#237=ORIENTED_EDGE('',*,*,#181,.T.);
#238=ORIENTED_EDGE('',*,*,#183,.F.);
#239=ORIENTED_EDGE('',*,*,#184,.F.);
#240=ORIENTED_EDGE('',*,*,#185,.F.);
#241=ORIENTED_EDGE('',*,*,#184,.T.);
#242=ORIENTED_EDGE('',*,*,#186,.F.);
#243=ORIENTED_EDGE('',*,*,#187,.F.);
#244=ORIENTED_EDGE('',*,*,#188,.F.);
#245=ORIENTED_EDGE('',*,*,#187,.T.);
#246=ORIENTED_EDGE('',*,*,#189,.F.);
#247=ORIENTED_EDGE('',*,*,#179,.F.);
#248=ORIENTED_EDGE('',*,*,#188,.T.);
#249=ORIENTED_EDGE('',*,*,#178,.T.);
#250=ORIENTED_EDGE('',*,*,#182,.T.);
#251=ORIENTED_EDGE('',*,*,#185,.T.);
#252=ORIENTED_EDGE('',*,*,#189,.T.);
#253=ORIENTED_EDGE('',*,*,#186,.T.);
#254=ORIENTED_EDGE('',*,*,#183,.T.);
#255=ORIENTED_EDGE('',*,*,#180,.T.);
#256=CYLINDRICAL_SURFACE('',#289,16.2);
#257=CYLINDRICAL_SURFACE('',#294,17.8);
#258=ADVANCED_FACE('',(#40),#256,.T.);
#259=ADVANCED_FACE('',(#41),#26,.T.);
#260=ADVANCED_FACE('',(#42),#27,.T.);
#261=ADVANCED_FACE('',(#43),#257,.T.);
#262=ADVANCED_FACE('',(#44),#28,.T.);
#263=ADVANCED_FACE('',(#45),#29,.T.);
#264=ADVANCED_FACE('',(#46),#30,.T.);
#265=ADVANCED_FACE('',(#47),#31,.T.);
#266=ADVANCED_FACE('',(#48,#15),#32,.T.);
#267=ADVANCED_FACE('',(#49),#33,.F.);
#268=ADVANCED_FACE('',(#50),#34,.T.);
#269=ADVANCED_FACE('',(#51),#35,.T.);
#270=ADVANCED_FACE('',(#52),#36,.T.);
#271=ADVANCED_FACE('',(#53),#37,.T.);
#272=ADVANCED_FACE('',(#54),#38,.T.);
#273=ADVANCED_FACE('',(#55),#39,.T.);
#274=CLOSED_SHELL('',(#258,#259,#260,#261,#262,#263,#264,#265,#266,#267));
#275=CLOSED_SHELL('',(#268,#269,#270,#271,#272,#273));
#276=DERIVED_UNIT_ELEMENT(#278,1.);
#277=DERIVED_UNIT_ELEMENT(#457,-3.);
#278=(
MASS_UNIT()
NAMED_UNIT(*)
SI_UNIT(.KILO.,.GRAM.)
);
#279=DERIVED_UNIT((#276,#277));
#280=MEASURE_REPRESENTATION_ITEM('density measure',
POSITIVE_RATIO_MEASURE(7850.),#279);
#281=PROPERTY_DEFINITION_REPRESENTATION(#286,#283);
#282=PROPERTY_DEFINITION_REPRESENTATION(#287,#284);
#283=REPRESENTATION('material name',(#285),#454);
#284=REPRESENTATION('density',(#280),#454);
#285=DESCRIPTIVE_REPRESENTATION_ITEM('Steel','Steel');
#286=PROPERTY_DEFINITION('material property','material name',#464);
#287=PROPERTY_DEFINITION('material property','density of part',#464);
#288=AXIS2_PLACEMENT_3D('placement',#380,#309,#310);
#289=AXIS2_PLACEMENT_3D('',#381,#311,#312);
#290=AXIS2_PLACEMENT_3D('',#383,#313,#314);
#291=AXIS2_PLACEMENT_3D('',#386,#316,#317);
#292=AXIS2_PLACEMENT_3D('',#387,#318,#319);
#293=AXIS2_PLACEMENT_3D('',#388,#320,#321);
#294=AXIS2_PLACEMENT_3D('',#397,#326,#327);
#295=AXIS2_PLACEMENT_3D('',#399,#328,#329);
#296=AXIS2_PLACEMENT_3D('',#401,#330,#331);
#297=AXIS2_PLACEMENT_3D('',#403,#333,#334);
#298=AXIS2_PLACEMENT_3D('',#409,#338,#339);
#299=AXIS2_PLACEMENT_3D('',#415,#343,#344);
#300=AXIS2_PLACEMENT_3D('',#421,#348,#349);
#301=AXIS2_PLACEMENT_3D('',#424,#352,#353);
#302=AXIS2_PLACEMENT_3D('',#425,#354,#355);
#303=AXIS2_PLACEMENT_3D('',#426,#356,#357);
#304=AXIS2_PLACEMENT_3D('',#435,#362,#363);
#305=AXIS2_PLACEMENT_3D('',#441,#367,#368);
#306=AXIS2_PLACEMENT_3D('',#447,#372,#373);
#307=AXIS2_PLACEMENT_3D('',#450,#376,#377);
#308=AXIS2_PLACEMENT_3D('',#451,#378,#379);
#309=DIRECTION('axis',(0.,0.,1.));
#310=DIRECTION('refdir',(1.,0.,0.));
#311=DIRECTION('center_axis',(0.,0.,1.));
#312=DIRECTION('ref_axis',(1.,0.,0.));
#313=DIRECTION('center_axis',(0.,0.,1.));
#314=DIRECTION('ref_axis',(1.,0.,0.));
#315=DIRECTION('',(0.,0.,-1.));
#316=DIRECTION('center_axis',(0.,0.,-1.));
#317=DIRECTION('ref_axis',(1.,0.,0.));
#318=DIRECTION('center_axis',(0.,0.,1.));
#319=DIRECTION('ref_axis',(1.,0.,0.));
#320=DIRECTION('center_axis',(-0.9260072092028,-0.377505825788743,0.));
#321=DIRECTION('ref_axis',(0.377505825788743,-0.926007209202801,0.));
#322=DIRECTION('',(-0.377505825788743,0.926007209202801,0.));
#323=DIRECTION('',(0.,0.,1.));
#324=DIRECTION('',(0.377505825788743,-0.926007209202801,0.));
#325=DIRECTION('',(0.,0.,1.));
#326=DIRECTION('center_axis',(0.,0.,1.));
#327=DIRECTION('ref_axis',(6.12323399573677E-17,1.,0.));
#328=DIRECTION('center_axis',(0.,0.,1.));
#329=DIRECTION('ref_axis',(1.,0.,0.));
#330=DIRECTION('center_axis',(0.,0.,1.));
#331=DIRECTION('ref_axis',(1.,0.,0.));
#332=DIRECTION('',(0.,0.,1.));
#333=DIRECTION('center_axis',(0.9260072092028,-0.377505825788743,0.));
#334=DIRECTION('ref_axis',(0.377505825788743,0.9260072092028,0.));
#335=DIRECTION('',(0.377505825788743,0.9260072092028,0.));
#336=DIRECTION('',(0.377505825788743,0.9260072092028,0.));
#337=DIRECTION('',(0.,0.,1.));
#338=DIRECTION('center_axis',(1.,0.,0.));
#339=DIRECTION('ref_axis',(0.,1.,0.));
#340=DIRECTION('',(0.,1.,0.));
#341=DIRECTION('',(0.,1.,0.));
#342=DIRECTION('',(0.,0.,1.));
#343=DIRECTION('center_axis',(0.,-1.,0.));
#344=DIRECTION('ref_axis',(1.,0.,0.));
#345=DIRECTION('',(1.,0.,0.));
#346=DIRECTION('',(1.,0.,0.));
#347=DIRECTION('',(0.,0.,1.));
#348=DIRECTION('center_axis',(-1.,0.,0.));
#349=DIRECTION('ref_axis',(0.,-1.,0.));
#350=DIRECTION('',(0.,-1.,0.));
#351=DIRECTION('',(0.,-1.,0.));
#352=DIRECTION('center_axis',(0.,0.,1.));
#353=DIRECTION('ref_axis',(1.,0.,0.));
#354=DIRECTION('center_axis',(0.,0.,1.));
#355=DIRECTION('ref_axis',(1.,0.,0.));
#356=DIRECTION('center_axis',(0.,-1.,0.));
#357=DIRECTION('ref_axis',(-1.,0.,0.));
#358=DIRECTION('',(1.,0.,0.));
#359=DIRECTION('',(0.,0.,-1.));
#360=DIRECTION('',(-1.,0.,0.));
#361=DIRECTION('',(0.,0.,-1.));
#362=DIRECTION('center_axis',(1.,0.,0.));
#363=DIRECTION('ref_axis',(0.,-1.,0.));
#364=DIRECTION('',(0.,1.,0.));
#365=DIRECTION('',(0.,-1.,0.));
#366=DIRECTION('',(0.,0.,-1.));
#367=DIRECTION('center_axis',(0.,1.,0.));
#368=DIRECTION('ref_axis',(1.,0.,0.));
#369=DIRECTION('',(-1.,0.,0.));
#370=DIRECTION('',(1.,0.,0.));
#371=DIRECTION('',(0.,0.,-1.));
#372=DIRECTION('center_axis',(-1.,0.,0.));
#373=DIRECTION('ref_axis',(0.,1.,0.));
#374=DIRECTION('',(0.,-1.,0.));
#375=DIRECTION('',(0.,1.,0.));
#376=DIRECTION('center_axis',(0.,0.,1.));
#377=DIRECTION('ref_axis',(1.,0.,0.));
#378=DIRECTION('center_axis',(0.,0.,-1.));
#379=DIRECTION('ref_axis',(-1.,0.,0.));
#380=CARTESIAN_POINT('',(0.,0.,0.));
#381=CARTESIAN_POINT('Origin',(0.,0.,1.5));
#382=CARTESIAN_POINT('',(-16.2,1.98392781461871E-15,1.6));
#383=CARTESIAN_POINT('Origin',(0.,0.,1.6));
#384=CARTESIAN_POINT('',(-16.2,1.98392781461871E-15,1.5));
#385=CARTESIAN_POINT('',(-16.2,-1.98392781461871E-15,1.5));
#386=CARTESIAN_POINT('Origin',(0.,0.,1.5));
#387=CARTESIAN_POINT('Origin',(0.,0.,1.6));
#388=CARTESIAN_POINT('Origin',(-8.5,-15.6393733889821,0.));
#389=CARTESIAN_POINT('',(-6.6,-20.3,0.));
#390=CARTESIAN_POINT('',(-8.5,-15.6393733889821,0.));
#391=CARTESIAN_POINT('',(-6.6,-20.3,0.));
#392=CARTESIAN_POINT('',(-6.6,-20.3,1.5));
#393=CARTESIAN_POINT('',(-6.6,-20.3,0.));
#394=CARTESIAN_POINT('',(-8.5,-15.6393733889821,1.5));
#395=CARTESIAN_POINT('',(-6.6,-20.3,1.5));
#396=CARTESIAN_POINT('',(-8.5,-15.6393733889821,0.));
#397=CARTESIAN_POINT('Origin',(0.,0.,0.));
#398=CARTESIAN_POINT('',(8.5,-15.6393733889821,0.));
#399=CARTESIAN_POINT('Origin',(0.,0.,0.));
#400=CARTESIAN_POINT('',(8.5,-15.6393733889821,1.5));
#401=CARTESIAN_POINT('Origin',(0.,0.,1.5));
#402=CARTESIAN_POINT('',(8.5,-15.6393733889821,0.));
#403=CARTESIAN_POINT('Origin',(6.6,-20.3,0.));
#404=CARTESIAN_POINT('',(6.6,-20.3,0.));
#405=CARTESIAN_POINT('',(6.6,-20.3,0.));
#406=CARTESIAN_POINT('',(6.6,-20.3,1.5));
#407=CARTESIAN_POINT('',(6.6,-20.3,1.5));
#408=CARTESIAN_POINT('',(6.6,-20.3,0.));
#409=CARTESIAN_POINT('Origin',(6.6,-20.8,0.));
#410=CARTESIAN_POINT('',(6.6,-20.8,0.));
#411=CARTESIAN_POINT('',(6.6,-20.8,0.));
#412=CARTESIAN_POINT('',(6.6,-20.8,1.5));
#413=CARTESIAN_POINT('',(6.6,-20.8,1.5));
#414=CARTESIAN_POINT('',(6.6,-20.8,0.));
#415=CARTESIAN_POINT('Origin',(-6.6,-20.8,0.));
#416=CARTESIAN_POINT('',(-6.6,-20.8,0.));
#417=CARTESIAN_POINT('',(-6.6,-20.8,0.));
#418=CARTESIAN_POINT('',(-6.6,-20.8,1.5));
#419=CARTESIAN_POINT('',(-6.6,-20.8,1.5));
#420=CARTESIAN_POINT('',(-6.6,-20.8,0.));
#421=CARTESIAN_POINT('Origin',(-6.6,-20.3,0.));
#422=CARTESIAN_POINT('',(-6.6,-20.3,0.));
#423=CARTESIAN_POINT('',(-6.6,-20.3,1.5));
#424=CARTESIAN_POINT('Origin',(0.,-1.5,1.5));
#425=CARTESIAN_POINT('Origin',(0.,-1.5,0.));
#426=CARTESIAN_POINT('Origin',(5.7,-20.8,0.));
#427=CARTESIAN_POINT('',(-5.7,-20.8,0.));
#428=CARTESIAN_POINT('',(5.7,-20.8,0.));
#429=CARTESIAN_POINT('',(-5.7,-20.8,0.));
#430=CARTESIAN_POINT('',(-5.7,-20.8,-0.13));
#431=CARTESIAN_POINT('',(-5.7,-20.8,0.));
#432=CARTESIAN_POINT('',(5.7,-20.8,-0.13));
#433=CARTESIAN_POINT('',(-5.7,-20.8,-0.13));
#434=CARTESIAN_POINT('',(5.7,-20.8,0.));
#435=CARTESIAN_POINT('Origin',(5.7,-10.06,0.));
#436=CARTESIAN_POINT('',(5.7,-10.06,0.));
#437=CARTESIAN_POINT('',(5.7,-20.8,0.));
#438=CARTESIAN_POINT('',(5.7,-10.06,-0.13));
#439=CARTESIAN_POINT('',(5.7,-20.8,-0.13));
#440=CARTESIAN_POINT('',(5.7,-10.06,0.));
#441=CARTESIAN_POINT('Origin',(-5.7,-10.06,0.));
#442=CARTESIAN_POINT('',(-5.7,-10.06,0.));
#443=CARTESIAN_POINT('',(5.7,-10.06,0.));
#444=CARTESIAN_POINT('',(-5.7,-10.06,-0.13));
#445=CARTESIAN_POINT('',(5.7,-10.06,-0.13));
#446=CARTESIAN_POINT('',(-5.7,-10.06,0.));
#447=CARTESIAN_POINT('Origin',(-5.7,-20.8,0.));
#448=CARTESIAN_POINT('',(-5.7,-10.06,0.));
#449=CARTESIAN_POINT('',(-5.7,-10.06,-0.13));
#450=CARTESIAN_POINT('Origin',(0.,-15.43,0.));
#451=CARTESIAN_POINT('Origin',(0.,-15.43,-0.13));
#452=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.01),#456,
'DISTANCE_ACCURACY_VALUE',
'Maximum model space distance between geometric entities at asserted c
onnectivities');
#453=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.01),#456,
'DISTANCE_ACCURACY_VALUE',
'Maximum model space distance between geometric entities at asserted c
onnectivities');
#454=(
GEOMETRIC_REPRESENTATION_CONTEXT(3)
GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#452))
GLOBAL_UNIT_ASSIGNED_CONTEXT((#456,#458,#459))
REPRESENTATION_CONTEXT('','3D')
);
#455=(
GEOMETRIC_REPRESENTATION_CONTEXT(3)
GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#453))
GLOBAL_UNIT_ASSIGNED_CONTEXT((#456,#458,#459))
REPRESENTATION_CONTEXT('','3D')
);
#456=(
LENGTH_UNIT()
NAMED_UNIT(*)
SI_UNIT(.MILLI.,.METRE.)
);
#457=(
LENGTH_UNIT()
NAMED_UNIT(*)
SI_UNIT($,.METRE.)
);
#458=(
NAMED_UNIT(*)
PLANE_ANGLE_UNIT()
SI_UNIT($,.RADIAN.)
);
#459=(
NAMED_UNIT(*)
SI_UNIT($,.STERADIAN.)
SOLID_ANGLE_UNIT()
);
#460=SHAPE_DEFINITION_REPRESENTATION(#461,#462);
#461=PRODUCT_DEFINITION_SHAPE('',$,#464);
#462=SHAPE_REPRESENTATION('',(#288),#454);
#463=PRODUCT_DEFINITION_CONTEXT('part definition',#468,'design');
#464=PRODUCT_DEFINITION('TFT-Round-1.28','TFT-Round-1.28 v5',#465,#463);
#465=PRODUCT_DEFINITION_FORMATION('',$,#470);
#466=PRODUCT_RELATED_PRODUCT_CATEGORY('TFT-Round-1.28 v5',
'TFT-Round-1.28 v5',(#470));
#467=APPLICATION_PROTOCOL_DEFINITION('international standard',
'automotive_design',2009,#468);
#468=APPLICATION_CONTEXT(
'Core Data for Automotive Mechanical Design Process');
#469=PRODUCT_CONTEXT('part definition',#468,'mechanical');
#470=PRODUCT('TFT-Round-1.28','TFT-Round-1.28 v5',$,(#469));
#471=PRESENTATION_STYLE_ASSIGNMENT((#475));
#472=PRESENTATION_STYLE_ASSIGNMENT((#476));
#473=PRESENTATION_STYLE_ASSIGNMENT((#477));
#474=PRESENTATION_STYLE_ASSIGNMENT((#478));
#475=SURFACE_STYLE_USAGE(.BOTH.,#479);
#476=SURFACE_STYLE_USAGE(.BOTH.,#480);
#477=SURFACE_STYLE_USAGE(.BOTH.,#481);
#478=SURFACE_STYLE_USAGE(.BOTH.,#482);
#479=SURFACE_SIDE_STYLE('',(#483));
#480=SURFACE_SIDE_STYLE('',(#484));
#481=SURFACE_SIDE_STYLE('',(#485));
#482=SURFACE_SIDE_STYLE('',(#486));
#483=SURFACE_STYLE_FILL_AREA(#487);
#484=SURFACE_STYLE_FILL_AREA(#488);
#485=SURFACE_STYLE_FILL_AREA(#489);
#486=SURFACE_STYLE_FILL_AREA(#490);
#487=FILL_AREA_STYLE('Steel - Satin',(#491));
#488=FILL_AREA_STYLE('Aluminum - Satin',(#492));
#489=FILL_AREA_STYLE('Glass - Heavy Color',(#493));
#490=FILL_AREA_STYLE('Polymide (Kapton)',(#494));
#491=FILL_AREA_STYLE_COLOUR('Steel - Satin',#495);
#492=FILL_AREA_STYLE_COLOUR('Aluminum - Satin',#496);
#493=FILL_AREA_STYLE_COLOUR('Glass - Heavy Color',#497);
#494=FILL_AREA_STYLE_COLOUR('Polymide (Kapton)',#498);
#495=COLOUR_RGB('Steel - Satin',0.627450980392157,0.627450980392157,0.627450980392157);
#496=COLOUR_RGB('Aluminum - Satin',0.96078431372549,0.96078431372549,0.964705882352941);
#497=COLOUR_RGB('Glass - Heavy Color',0.0980392156862745,0.0980392156862745,
0.0980392156862745);
#498=COLOUR_RGB('Polymide (Kapton)',0.784313725490196,0.556862745098039,
0.0274509803921569);
ENDSEC;
END-ISO-10303-21;
================================================
FILE: electronics/lib/LCD_GC9A01.pretty/GC9A01Round1.28.kicad_mod
================================================
(module GC9A01Round1.28 (layer F.Cu) (tedit 622E4650)
(attr smd)
(fp_text reference REF** (at 4 1) (layer F.SilkS) hide
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text value GC9A01Round1.28 (at 0 -0.5) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start 0 -5.7) (end -3 -5.7) (layer F.SilkS) (width 0.15))
(fp_line (start 0 5.7) (end -6.5 5.7) (layer F.SilkS) (width 0.15))
(fp_line (start -6.5 -6.4) (end -4.5 -6.4) (layer F.SilkS) (width 0.15))
(fp_line (start -4.5 -6.4) (end -3 -5.7) (layer F.SilkS) (width 0.15))
(fp_line (start 0 -5.7) (end 0 -4.5) (layer F.SilkS) (width 0.15))
(fp_line (start 0 5.7) (end 0 4.5) (layer F.SilkS) (width 0.15))
(fp_text user 1 (at 2 -4) (layer F.SilkS)
(effects (font (size 0.8 0.8) (thickness 0.12)))
)
(fp_text user 12 (at 2 4) (layer F.SilkS)
(effects (font (size 0.8 0.8) (thickness 0.12)))
)
(pad 1 smd roundrect (at 0 -3.85) (size 2 0.35) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25))
(pad 2 smd roundrect (at 0 -3.15) (size 2 0.35) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25))
(pad 3 smd roundrect (at 0 -2.45) (size 2 0.35) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25))
(pad 4 smd roundrect (at 0 -1.75) (size 2 0.35) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25))
(pad 5 smd roundrect (at 0 -1.05) (size 2 0.35) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25))
(pad 6 smd roundrect (at 0 -0.35) (size 2 0.35) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25))
(pad 7 smd roundrect (at 0 0.35) (size 2 0.35) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25))
(pad 8 smd roundrect (at 0 1.05) (size 2 0.35) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25))
(pad 9 smd roundrect (at 0 1.75) (size 2 0.35) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25))
(pad 10 smd roundrect (at 0 2.45) (size 2 0.35) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25))
(pad 11 smd roundrect (at 0 3.15) (size 2 0.35) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25))
(pad 12 smd roundrect (at 0 3.85) (size 2 0.35) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25))
(model ${KIPRJMOD}/../lib/LCD_GC9A01.3dshapes/TFT-Round-1.28.step
(offset (xyz 10.9 0 -1.8))
(scale (xyz 1 1 1))
(rotate (xyz 0 180 90))
)
)
================================================
FILE: electronics/lib/MagnTek.dcm
================================================
EESchema-DOCLIB Version 2.0
#
#End Doc Library
================================================
FILE: electronics/lib/MagnTek.lib
================================================
EESchema-LIBRARY Version 2.4
#encoding utf-8
#
# MT6701-CT
#
DEF MT6701-CT U 0 40 Y Y 1 F N
F0 "U" -500 250 50 H V C CNN
F1 "MT6701-CT" 0 250 50 H V C CNN
F2 "Package_SO:SOIC-8_3.9x4.9mm_P1.27mm" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
DRAW
S -550 200 650 -200 0 1 0 f
X VDD 1 -650 150 100 R 50 50 1 1 W
X MODE 2 -650 50 100 R 50 50 1 1 I
X ANALOG/PWM 3 -650 -50 100 R 50 50 1 1 O
X GND 4 -650 -150 100 R 50 50 1 1 W
X PUSH 5 750 -150 100 L 50 50 1 1 O
X A/U/SDA/DO 6 750 -50 100 L 50 50 1 1 B
X B/V/SCL/CLK 7 750 50 100 L 50 50 1 1 B
X Z/W/CSN 8 750 150 100 L 50 50 1 1 B
ENDDRAW
ENDDEF
#
#End Library
================================================
FILE: electronics/lib/Modified.pretty/CP_Radial_D5.0mm_P2.00mm_HorizontalCutout.kicad_mod
================================================
(module CP_Radial_D5.0mm_P2.00mm_HorizontalCutout (layer F.Cu) (tedit 61FE1CC0)
(descr "CP, Radial series, Radial, pin pitch=2.00mm, , diameter=5mm, Electrolytic Capacitor")
(tags "CP Radial series Radial pin pitch 2.00mm diameter 5mm Electrolytic Capacitor")
(fp_text reference REF** (at -3.25 -4 90) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text value CP_Radial_D5.0mm_P2.00mm_HorizontalCutout (at 1 3.75) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start -2.5 -14.75) (end -2.5 -2.25) (layer Edge.Cuts) (width 0.12))
(fp_line (start 3.75 -15.5) (end -1.75 -15.5) (layer Edge.Cuts) (width 0.12))
(fp_line (start 4.5 -2.25) (end 4.5 -14.75) (layer Edge.Cuts) (width 0.12))
(fp_line (start -1.75 -1.5) (end 3.75 -1.5) (layer Edge.Cuts) (width 0.12))
(fp_circle (center 1 0) (end 3.5 0) (layer F.Fab) (width 0.1))
(fp_circle (center 1 0) (end 3.75 0) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.133605 -1.0875) (end -0.633605 -1.0875) (layer F.Fab) (width 0.1))
(fp_line (start -0.883605 -1.3375) (end -0.883605 -0.8375) (layer F.Fab) (width 0.1))
(fp_line (start 1 1.04) (end 1 2.58) (layer F.SilkS) (width 0.12))
(fp_line (start 1.04 1.04) (end 1.04 2.58) (layer F.SilkS) (width 0.12))
(fp_line (start 1.08 1.04) (end 1.08 2.579) (layer F.SilkS) (width 0.12))
(fp_line (start 1.12 1.04) (end 1.12 2.578) (layer F.SilkS) (width 0.12))
(fp_line (start 1.16 1.04) (end 1.16 2.576) (layer F.SilkS) (width 0.12))
(fp_line (start 1.2 1.04) (end 1.2 2.573) (layer F.SilkS) (width 0.12))
(fp_line (start 1.24 1.04) (end 1.24 2.569) (layer F.SilkS) (width 0.12))
(fp_line (start 1.28 1.04) (end 1.28 2.565) (layer F.SilkS) (width 0.12))
(fp_line (start 1.32 1.04) (end 1.32 2.561) (layer F.SilkS) (width 0.12))
(fp_line (start 1.36 1.04) (end 1.36 2.556) (layer F.SilkS) (width 0.12))
(fp_line (start 1.4 1.04) (end 1.4 2.55) (layer F.SilkS) (width 0.12))
(fp_line (start 1.44 1.04) (end 1.44 2.543) (layer F.SilkS) (width 0.12))
(fp_line (start 1.48 1.04) (end 1.48 2.536) (layer F.SilkS) (width 0.12))
(fp_line (start 1.52 1.04) (end 1.52 2.528) (layer F.SilkS) (width 0.12))
(fp_line (start 1.56 1.04) (end 1.56 2.52) (layer F.SilkS) (width 0.12))
(fp_line (start 1.6 1.04) (end 1.6 2.511) (layer F.SilkS) (width 0.12))
(fp_line (start 1.64 1.04) (end 1.64 2.501) (layer F.SilkS) (width 0.12))
(fp_line (start 1.68 1.04) (end 1.68 2.491) (layer F.SilkS) (width 0.12))
(fp_line (start 1.721 1.04) (end 1.721 2.48) (layer F.SilkS) (width 0.12))
(fp_line (start 1.761 1.04) (end 1.761 2.468) (layer F.SilkS) (width 0.12))
(fp_line (start 1.801 1.04) (end 1.801 2.455) (layer F.SilkS) (width 0.12))
(fp_line (start 1.841 1.04) (end 1.841 2.442) (layer F.SilkS) (width 0.12))
(fp_line (start 1.881 1.04) (end 1.881 2.428) (layer F.SilkS) (width 0.12))
(fp_line (start 1.921 1.04) (end 1.921 2.414) (layer F.SilkS) (width 0.12))
(fp_line (start 1.961 1.04) (end 1.961 2.398) (layer F.SilkS) (width 0.12))
(fp_line (start 2.001 1.04) (end 2.001 2.382) (layer F.SilkS) (width 0.12))
(fp_line (start 2.041 1.04) (end 2.041 2.365) (layer F.SilkS) (width 0.12))
(fp_line (start 2.081 1.04) (end 2.081 2.348) (layer F.SilkS) (width 0.12))
(fp_line (start 2.121 1.04) (end 2.121 2.329) (layer F.SilkS) (width 0.12))
(fp_line (start 2.161 1.04) (end 2.161 2.31) (layer F.SilkS) (width 0.12))
(fp_line (start 2.201 1.04) (end 2.201 2.29) (layer F.SilkS) (width 0.12))
(fp_line (start 2.241 1.04) (end 2.241 2.268) (layer F.SilkS) (width 0.12))
(fp_line (start 2.281 1.04) (end 2.281 2.247) (layer F.SilkS) (width 0.12))
(fp_line (start 2.321 1.04) (end 2.321 2.224) (layer F.SilkS) (width 0.12))
(fp_line (start 2.361 1.04) (end 2.361 2.2) (layer F.SilkS) (width 0.12))
(fp_line (start 2.401 1.04) (end 2.401 2.175) (layer F.SilkS) (width 0.12))
(fp_line (start 2.441 1.04) (end 2.441 2.149) (layer F.SilkS) (width 0.12))
(fp_line (start 2.481 1.04) (end 2.481 2.122) (layer F.SilkS) (width 0.12))
(fp_line (start 2.521 1.04) (end 2.521 2.095) (layer F.SilkS) (width 0.12))
(fp_line (start 2.561 1.04) (end 2.561 2.065) (layer F.SilkS) (width 0.12))
(fp_line (start 2.601 1.04) (end 2.601 2.035) (layer F.SilkS) (width 0.12))
(fp_line (start 2.641 1.04) (end 2.641 2.004) (layer F.SilkS) (width 0.12))
(fp_line (start 2.681 1.04) (end 2.681 1.971) (layer F.SilkS) (width 0.12))
(fp_line (start 2.721 1.04) (end 2.721 1.937) (layer F.SilkS) (width 0.12))
(fp_line (start 2.761 1.04) (end 2.761 1.901) (layer F.SilkS) (width 0.12))
(fp_line (start 2.801 1.04) (end 2.801 1.864) (layer F.SilkS) (width 0.12))
(fp_line (start 2.841 1.04) (end 2.841 1.826) (layer F.SilkS) (width 0.12))
(fp_line (start 2.881 1.04) (end 2.881 1.785) (layer F.SilkS) (width 0.12))
(fp_line (start 2.921 1.04) (end 2.921 1.743) (layer F.SilkS) (width 0.12))
(fp_line (start 2.961 1.04) (end 2.961 1.699) (layer F.SilkS) (width 0.12))
(fp_line (start 3.001 1.04) (end 3.001 1.653) (layer F.SilkS) (width 0.12))
(fp_line (start 3.041 -1.5) (end 3.041 1.605) (layer F.SilkS) (width 0.12))
(fp_line (start 3.081 -1.5) (end 3.081 1.554) (layer F.SilkS) (width 0.12))
(fp_line (start 3.121 -1.5) (end 3.121 1.5) (layer F.SilkS) (width 0.12))
(fp_line (start 3.161 -1.443) (end 3.161 1.443) (layer F.SilkS) (width 0.12))
(fp_line (start 3.201 -1.383) (end 3.201 1.383) (layer F.SilkS) (width 0.12))
(fp_line (start 3.241 -1.319) (end 3.241 1.319) (layer F.SilkS) (width 0.12))
(fp_line (start 3.281 -1.251) (end 3.281 1.251) (layer F.SilkS) (width 0.12))
(fp_line (start 3.321 -1.178) (end 3.321 1.178) (layer F.SilkS) (width 0.12))
(fp_line (start 3.361 -1.098) (end 3.361 1.098) (layer F.SilkS) (width 0.12))
(fp_line (start 3.401 -1.011) (end 3.401 1.011) (layer F.SilkS) (width 0.12))
(fp_line (start 3.441 -0.915) (end 3.441 0.915) (layer F.SilkS) (width 0.12))
(fp_line (start 3.481 -0.805) (end 3.481 0.805) (layer F.SilkS) (width 0.12))
(fp_line (start 3.521 -0.677) (end 3.521 0.677) (layer F.SilkS) (width 0.12))
(fp_line (start 3.561 -0.518) (end 3.561 0.518) (layer F.SilkS) (width 0.12))
(fp_line (start 3.601 -0.284) (end 3.601 0.284) (layer F.SilkS) (width 0.12))
(fp_arc (start 1 0) (end -1.15 -1.499999) (angle -249.8) (layer F.SilkS) (width 0.15))
(fp_text user %R (at 1 0) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_arc (start -1.75 -14.75) (end -1.75 -15.5) (angle -90) (layer Edge.Cuts) (width 0.12))
(fp_arc (start 3.75 -14.75) (end 4.5 -14.75) (angle -90) (layer Edge.Cuts) (width 0.12))
(fp_arc (start 3.75 -2.25) (end 3.75 -1.5) (angle -90) (layer Edge.Cuts) (width 0.12))
(fp_arc (start -1.75 -2.25) (end -2.5 -2.25) (angle -90) (layer Edge.Cuts) (width 0.12))
(pad 2 thru_hole circle (at 2 0) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask))
(pad 1 thru_hole rect (at 0 0) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask))
(model ${KISYS3DMOD}/Capacitor_THT.3dshapes/CP_Radial_D5.0mm_P2.00mm.wrl
(at (xyz 0 0 0))
(scale (xyz 1 1 1))
(rotate (xyz 0 0 0))
)
)
================================================
FILE: electronics/lib/Modified.pretty/QFN-20-1EP_3x3mm_P0.4mm_EP1.65x1.65mm_ThermalVias_LargerViaHoles.kicad_mod
================================================
(footprint "QFN-20-1EP_3x3mm_P0.4mm_EP1.65x1.65mm_ThermalVias_LargerViaHoles" (version 20211014) (generator pcbnew)
(layer "F.Cu")
(tedit 6206B69C)
(descr "QFN, 20 Pin (https://www.analog.com/media/en/technical-documentation/data-sheets/3553fc.pdf#page=34), generated with kicad-footprint-generator ipc_noLead_generator.py")
(tags "QFN NoLead")
(attr smd)
(fp_text reference "U5" (at 0 -2.82) (layer "F.SilkS")
(effects (font (size 1 1) (thickness 0.15)))
(tstamp 09fb01d0-4379-4d3a-bb86-d7479dfbcbd6)
)
(fp_text value "TMC6300" (at 0 2.82) (layer "F.Fab")
(effects (font (size 1 1) (thickness 0.15)))
(tstamp 99877568-b776-4553-be84-ba0b8129b2f3)
)
(fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab")
(effects (font (size 0.75 0.75) (thickness 0.11)))
(tstamp 7da46d4f-4e29-4376-9cc1-dc06ab7b607f)
)
(fp_line (start -1.16 1.61) (end -1.61 1.61) (layer "F.SilkS") (width 0.12) (tstamp 02d2363e-13ac-4bc9-b788-c3bd9b3c2cc0))
(fp_line (start 1.16 -1.61) (end 1.61 -1.61) (layer "F.SilkS") (width 0.12) (tstamp 226bb7ad-6a92-4a06-bf07-d3cf91d90ef4))
(fp_line (start -1.16 -1.61) (end -1.61 -1.61) (layer "F.SilkS") (width 0.12) (tstamp 2ed2be97-c539-4432-b5e6-838cb195ec75))
(fp_line (start 1.61 1.61) (end 1.61 1.16) (layer "F.SilkS") (width 0.12) (tstamp 32e5dc58-27f6-42ff-a8d1-9340712c40cd))
(fp_line (start -1.61 1.61) (end -1.61 1.16) (layer "F.SilkS") (width 0.12) (tstamp 68a86649-753f-4e66-a66d-97805c215e10))
(fp_line (start 1.16 1.61) (end 1.61 1.61) (layer "F.SilkS") (width 0.12) (tstamp d9871b3e-affe-4219-aa8a-f0a51c3a307a))
(fp_line (start 1.61 -1.61) (end 1.61 -1.16) (layer "F.SilkS") (width 0.12) (tstamp f086b697-0a9e-4914-990c-48f238bdcece))
(fp_line (start 2.12 -2.12) (end -2.12 -2.12) (layer "F.CrtYd") (width 0.05) (tstamp 0bbc8b4f-44c7-4db1-a6c8-96d12fc9292a))
(fp_line (start 2.12 2.12) (end 2.12 -2.12) (layer "F.CrtYd") (width 0.05) (tstamp 12ad2516-6970-48c5-8c9c-069629bdec35))
(fp_line (start -2.12 -2.12) (end -2.12 2.12) (layer "F.CrtYd") (width 0.05) (tstamp a929cf87-3d42-4cd5-8b28-da62e1b300f8))
(fp_line (start -2.12 2.12) (end 2.12 2.12) (layer "F.CrtYd") (width 0.05) (tstamp dfa77c89-25b1-4ce8-9b88-9c49eb6dc06c))
(fp_line (start 1.5 1.5) (end -1.5 1.5) (layer "F.Fab") (width 0.1) (tstamp 4178c85b-dc4a-4466-8048-fc6a0a913480))
(fp_line (start -1.5 1.5) (end -1.5 -0.75) (layer "F.Fab") (width 0.1) (tstamp 452d421e-0bb5-476b-80b0-c7ce06d29651))
(fp_line (start -0.75 -1.5) (end 1.5 -1.5) (layer "F.Fab") (width 0.1) (tstamp 544c73f2-9c88-45ac-88a3-9da0ae3c5792))
(fp_line (start -1.5 -0.75) (end -0.75 -1.5) (layer "F.Fab") (width 0.1) (tstamp 81cca155-55c4-4ab1-b013-e3b5f9dc0a56))
(fp_line (start 1.5 -1.5) (end 1.5 1.5) (layer "F.Fab") (width 0.1) (tstamp fa8556e1-7b2a-4964-9288-df2bda67b28a))
(pad "" smd roundrect (at 0.41 -0.41) (size 0.6 0.6) (layers "F.Paste") (roundrect_rratio 0.25) (tstamp 90039618-6cb2-48fc-9714-37f106589a31))
(pad "" smd roundrect (at -0.41 0.41) (size 0.6 0.6) (layers "F.Paste") (roundrect_rratio 0.25) (tstamp bae8ee43-d884-49c9-9951-cf1b278a0ffd))
(pad "" smd roundrect (at 0.41 0.41) (size 0.6 0.6) (layers "F.Paste") (roundrect_rratio 0.25) (tstamp cc85b9ee-6c1a-4f81-83ff-a14a33d11117))
(pad "" smd roundrect (at -0.41 -0.41) (size 0.6 0.6) (layers "F.Paste") (roundrect_rratio 0.25) (tstamp e1949ff9-f274-4e4b-bf87-443cbf233870))
(pad "1" smd roundrect (at -1.45 -0.8) (size 0.7 0.2) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) (tstamp 936bea39-2e00-4426-8699-fddc8cf7772e))
(pad "2" smd roundrect (at -1.45 -0.4) (size 0.7 0.2) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) (tstamp 13409c13-b1cb-4dbe-9abf-833e4b3e996d))
(pad "3" smd roundrect (at -1.45 0) (size 0.7 0.2) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) (tstamp 31282874-aa96-46e0-ab62-93e27ad65a8b))
(pad "4" smd roundrect (at -1.45 0.4) (size 0.7 0.2) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) (tstamp bd2b77be-f184-4168-a0aa-e77c2caa46d5))
(pad "5" smd roundrect (at -1.45 0.8) (size 0.7 0.2) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) (tstamp 8768400b-6391-4a9d-943d-f8d27252bf25))
(pad "6" smd roundrect (at -0.8 1.45) (size 0.2 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) (tstamp fc8f867f-4aee-41df-b1d6-92be9369e5d4))
(pad "7" smd roundrect (at -0.4 1.45) (size 0.2 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) (tstamp 26f70200-7762-4b2e-b244-b851ff4801df))
(pad "8" smd roundrect (at 0 1.45) (size 0.2 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) (tstamp dd1060ed-1c92-4b29-b26e-543e96cc9b11))
(pad "9" smd roundrect (at 0.4 1.45) (size 0.2 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) (tstamp 18bb59da-bc32-44de-82d1-4245fa7638ba))
(pad "10" smd roundrect (at 0.8 1.45) (size 0.2 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) (tstamp d5af8127-a260-46a4-bce0-033769a21f79))
(pad "11" smd roundrect (at 1.45 0.8) (size 0.7 0.2) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) (tstamp e7294b88-276a-4a01-a13d-abe2e8533986))
(pad "12" smd roundrect (at 1.45 0.4) (size 0.7 0.2) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) (tstamp b5486e78-c82d-4079-9ea4-7f62fe8416c5))
(pad "13" smd roundrect (at 1.45 0) (size 0.7 0.2) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) (tstamp 4c63cb92-e61b-44e6-bca8-8f9371dbc10e))
(pad "14" smd roundrect (at 1.45 -0.4) (size 0.7 0.2) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) (tstamp d6b4c760-c565-4d97-87dd-2d21bce2352f))
(pad "15" smd roundrect (at 1.45 -0.8) (size 0.7 0.2) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) (tstamp 4e8214b6-910c-4756-9b35-4760379ddc2d))
(pad "16" smd roundrect (at 0.8 -1.45) (size 0.2 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) (tstamp 6c259065-d9e9-4c18-9011-f9f7231f5dda))
(pad "17" smd roundrect (at 0.4 -1.45) (size 0.2 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) (tstamp e926b924-479d-4be2-871f-73cd0ec74350))
(pad "18" smd roundrect (at 0 -1.45) (size 0.2 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) (tstamp ab3a9411-e49b-4cd3-939f-e22ee6dd7176))
(pad "19" smd roundrect (at -0.4 -1.45) (size 0.2 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) (tstamp 6b169ff4-43a6-42c2-b316-633647f234df))
(pad "20" smd roundrect (at -0.8 -1.45) (size 0.2 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) (tstamp d8e192fa-0c96-412b-8389-9cda0a5c2b9e))
(pad "PAD" thru_hole circle (at -0.5 -0.5) (size 0.6 0.6) (drill 0.3) (layers *.Cu)
(zone_connect 2) (tstamp 2425433c-cf8c-42c8-9410-372b6126b83f))
(pad "PAD" thru_hole circle (at 0.5 -0.5) (size 0.6 0.6) (drill 0.3) (layers *.Cu)
(zone_connect 2) (tstamp 307b0505-edb0-4296-bf4b-3346771976c3))
(pad "PAD" smd rect (at 0 0) (size 4 4) (layers "B.Cu" "B.Mask")
(zone_connect 2) (tstamp 4e7ad814-d93a-4ebc-a5a1-d6eea38ad88e))
(pad "PAD" thru_hole circle (at 0.5 0.5) (size 0.6 0.6) (drill 0.3) (layers *.Cu)
(zone_connect 2) (tstamp 61b4b466-5770-4b4a-850b-70299bba4740))
(pad "PAD" thru_hole circle (at -0.5 0.5) (size 0.6 0.6) (drill 0.3) (layers *.Cu)
(zone_connect 2) (tstamp a3963e6c-8ba2-406c-af49-43c1d04e5561))
(pad "PAD" smd rect (at 0 0) (size 1.5 1.5) (layers "F.Cu" "F.Mask")
(zone_connect 2) (tstamp f954229e-7e7b-41ab-b6af-fc32e2286d33))
(model "${KISYS3DMOD}/Package_DFN_QFN.3dshapes/UQFN-20-1EP_3x3mm_P0.4mm_EP1.85x1.85mm.step"
(offset (xyz 0 0 0))
(scale (xyz 1 1 1))
(rotate (xyz 0 0 0))
)
(model "${KICAD6_3DMODEL_DIR}/Package_DFN_QFN.3dshapes/UQFN-20-1EP_3x3mm_P0.4mm_EP1.85x1.85mm.step"
(offset (xyz 0 0 0))
(scale (xyz 1 1 1))
(rotate (xyz 0 0 0))
)
)
================================================
FILE: electronics/lib/Modified.pretty/SOT-223-3_TabPin2_GndOutIn.kicad_mod
================================================
(footprint "SOT-223-3_TabPin2_GndOutIn" (version 20211014) (generator pcbnew)
(layer "F.Cu")
(tedit 5A02FF57)
(descr "module CMS SOT223 4 pins")
(tags "CMS SOT")
(attr smd)
(fp_text reference "REF**" (at 0 -4.5) (layer "F.SilkS")
(effects (font (size 1 1) (thickness 0.15)))
(tstamp 095b50a5-76ce-476b-aa10-37a37fa441f1)
)
(fp_text value "SOT-223-3_TabPin2_GndOutIn" (at 0 4.5) (layer "F.Fab")
(effects (font (size 1 1) (thickness 0.15)))
(tstamp a763838d-1dc3-4eda-bbc0-fbcf1edf1449)
)
(fp_text user "IN" (at -2 2 180 unlocked) (layer "F.SilkS")
(effects (font (size 1 1) (thickness 0.15)) (justify right))
(tstamp 0880239d-bc8b-4181-aca5-6612a4274989)
)
(fp_text user "OUT" (at -2 0 180 unlocked) (layer "F.SilkS")
(effects (font (size 1 1) (thickness 0.15)) (justify right))
(tstamp 534c862e-a63f-4f6f-91db-77400cbc5396)
)
(fp_text user "GND" (at -2 -2.2 180 unlocked) (layer "F.SilkS")
(effects (font (size 1 1) (thickness 0.15)) (justify right))
(tstamp 70a62c11-4e31-42c7-bb23-01711d13d94b)
)
(fp_text user "${REFERENCE}" (at 0 0 90) (layer "F.Fab")
(effects (font (size 0.8 0.8) (thickness 0.12)))
(tstamp aff1cd04-29c5-47f0-8349-1badf43ec67b)
)
(fp_line (start -4.1 -3.41) (end 1.91 -3.41) (layer "F.SilkS") (width 0.12) (tstamp 0a67b9e3-ecbd-4d75-bed9-dd795037d639))
(fp_line (start -1.85 3.41) (end 1.91 3.41) (layer "F.SilkS") (width 0.12) (tstamp 6e43f798-7915-403c-b947-4851bde35045))
(fp_line (start 1.91 3.41) (end 1.91 2.15) (layer "F.SilkS") (width 0.12) (tstamp 79366377-6a9f-460a-b0d1-788467590954))
(fp_line (start 1.91 -3.41) (end 1.91 -2.15) (layer "F.SilkS") (width 0.12) (tstamp ddfc40c4-e33c-493e-b735-24282440d539))
(fp_line (start 4.4 3.6) (end 4.4 -3.6) (layer "F.CrtYd") (width 0.05) (tstamp 18839f08-10e9-4a73-9312-8be172f09091))
(fp_line (start -4.4 -3.6) (end -4.4 3.6) (layer "F.CrtYd") (width 0.05) (tstamp 2d708b29-208a-4760-a2c5-6626e4d03d29))
(fp_line (start 4.4 -3.6) (end -4.4 -3.6) (layer "F.CrtYd") (width 0.05) (tstamp d963e7fb-b321-4298-bcd6-9650f5938938))
(fp_line (start -4.4 3.6) (end 4.4 3.6) (layer "F.CrtYd") (width 0.05) (tstamp ffe8efb3-9432-4dfe-8e3a-faf2eb064270))
(fp_line (start -1.85 3.35) (end 1.85 3.35) (layer "F.Fab") (width 0.1) (tstamp 27db54e0-f4a8-4972-bcbc-256787416dcd))
(fp_line (start -1.85 -2.35) (end -1.85 3.35) (layer "F.Fab") (width 0.1) (tstamp 659fc817-2286-4dd8-ba60-8e62262ce6cc))
(fp_line (start 1.85 -3.35) (end 1.85 3.35) (layer "F.Fab") (width 0.1) (tstamp 9d748ff0-f43a-42f3-a9ff-3a463972b1ca))
(fp_line (start -0.85 -3.35) (end 1.85 -3.35) (layer "F.Fab") (width 0.1) (tstamp be579ebe-38db-4860-98f0-9f530f704760))
(fp_line (start -1.85 -2.35) (end -0.85 -3.35) (layer "F.Fab") (width 0.1) (tstamp f393364a-2641-4746-ba4c-6509ea1de503))
(pad "1" smd rect (at -3.15 -2.3) (size 2 1.5) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 6c38c733-73aa-46ef-9aa8-0adc47a79448))
(pad "2" smd rect (at 3.15 0) (size 2 3.8) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 118e82e2-9099-4e46-a269-1e2cb8448d5e))
(pad "2" smd rect (at -3.15 0) (size 2 1.5) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 553b4aa3-b4fc-45ee-9bbe-5eb8183ee7d8))
(pad "3" smd rect (at -3.15 2.3) (size 2 1.5) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 5046df04-2b74-45a5-867e-e33a5e51e59c))
(model "${KICAD6_3DMODEL_DIR}/Package_TO_SOT_SMD.3dshapes/SOT-223.wrl"
(offset (xyz 0 0 0))
(scale (xyz 1 1 1))
(rotate (xyz 0 0 0))
)
)
================================================
FILE: electronics/lib/Modified.pretty/SOT-223-3_TabPin2_InGndOut.kicad_mod
================================================
(footprint "SOT-223-3_TabPin2_InGndOut" (version 20211014) (generator pcbnew)
(layer "F.Cu")
(tedit 5A02FF57)
(descr "module CMS SOT223 4 pins")
(tags "CMS SOT")
(attr smd)
(fp_text reference "REF**" (at 0 -4.5) (layer "F.SilkS")
(effects (font (size 1 1) (thickness 0.15)))
(tstamp 095b50a5-76ce-476b-aa10-37a37fa441f1)
)
(fp_text value "SOT-223-3_TabPin2_InGndOut" (at 0 4.5) (layer "F.Fab")
(effects (font (size 1 1) (thickness 0.15)))
(tstamp a763838d-1dc3-4eda-bbc0-fbcf1edf1449)
)
(fp_text user "IN" (at -2 -2 unlocked) (layer "F.SilkS")
(effects (font (size 1 1) (thickness 0.15)) (justify left))
(tstamp 1c1deacc-cae2-4a2b-a6a3-30e810ce6a30)
)
(fp_text user "OUT" (at -2 2 unlocked) (layer "F.SilkS")
(effects (font (size 1 1) (thickness 0.15)) (justify left))
(tstamp 3c759526-0e7c-4303-a782-4b303a02e7a4)
)
(fp_text user "GND" (at -2 0 unlocked) (layer "F.SilkS")
(effects (font (size 1 1) (thickness 0.15)) (justify left))
(tstamp 70a62c11-4e31-42c7-bb23-01711d13d94b)
)
(fp_text user "${REFERENCE}" (at 0 0 90) (layer "F.Fab")
(effects (font (size 0.8 0.8) (thickness 0.12)))
(tstamp aff1cd04-29c5-47f0-8349-1badf43ec67b)
)
(fp_line (start -4.1 -3.41) (end 1.91 -3.41) (layer "F.SilkS") (width 0.12) (tstamp 0a67b9e3-ecbd-4d75-bed9-dd795037d639))
(fp_line (start -1.85 3.41) (end 1.91 3.41) (layer "F.SilkS") (width 0.12) (tstamp 6e43f798-7915-403c-b947-4851bde35045))
(fp_line (start 1.91 3.41) (end 1.91 2.15) (layer "F.SilkS") (width 0.12) (tstamp 79366377-6a9f-460a-b0d1-788467590954))
(fp_line (start 1.91 -3.41) (end 1.91 -2.15) (layer "F.SilkS") (width 0.12) (tstamp ddfc40c4-e33c-493e-b735-24282440d539))
(fp_line (start 4.4 3.6) (end 4.4 -3.6) (layer "F.CrtYd") (width 0.05) (tstamp 18839f08-10e9-4a73-9312-8be172f09091))
(fp_line (start -4.4 -3.6) (end -4.4 3.6) (layer "F.CrtYd") (width 0.05) (tstamp 2d708b29-208a-4760-a2c5-6626e4d03d29))
(fp_line (start 4.4 -3.6) (end -4.4 -3.6) (layer "F.CrtYd") (width 0.05) (tstamp d963e7fb-b321-4298-bc
gitextract_8y110f7p/
├── .github/
│ ├── FUNDING.yml
│ └── workflows/
│ ├── electronics.yml
│ ├── js.yml
│ └── pio.yml
├── .gitignore
├── .gitmodules
├── .vscode/
│ ├── extensions.json
│ └── settings.json
├── LICENSE.txt
├── README.md
├── __init__.py
├── cad/
│ └── README.md
├── electronics/
│ ├── BM28B0.6-24DSBreakout/
│ │ ├── BM28B0.6-24DSBreakout-cache.lib
│ │ ├── BM28B0.6-24DSBreakout.kicad_pcb
│ │ ├── BM28B0.6-24DSBreakout.pro
│ │ ├── BM28B0.6-24DSBreakout.sch
│ │ └── fp-lib-table
│ ├── LevelShifterBreakout/
│ │ ├── LevelShifterBreakout-cache.lib
│ │ ├── LevelShifterBreakout.kicad_pcb
│ │ ├── LevelShifterBreakout.pro
│ │ ├── LevelShifterBreakout.sch
│ │ ├── fp-lib-table
│ │ └── sym-lib-table
│ ├── lib/
│ │ ├── BM28.pretty/
│ │ │ └── BM28B0.6-24DS.kicad_mod
│ │ ├── BOM_Only.pretty/
│ │ │ └── bom_only_no_pin.kicad_mod
│ │ ├── GCT_USB.3dshapes/
│ │ │ └── proprietary/
│ │ │ └── README.txt
│ │ ├── GCT_USB.pretty/
│ │ │ ├── USB4510.kicad_mod
│ │ │ └── USB4510_NoPaste.kicad_mod
│ │ ├── Holes.pretty/
│ │ │ ├── AlignmentHole_1.6.kicad_mod
│ │ │ ├── MountingHole_2.2mm_M2_ISO7380_Pad_NonVirtual.kicad_mod
│ │ │ └── MountingHole_M1.6.kicad_mod
│ │ ├── LCD_GC9A01.3dshapes/
│ │ │ └── TFT-Round-1.28.step
│ │ ├── LCD_GC9A01.pretty/
│ │ │ └── GC9A01Round1.28.kicad_mod
│ │ ├── MagnTek.dcm
│ │ ├── MagnTek.lib
│ │ ├── Modified.pretty/
│ │ │ ├── CP_Radial_D5.0mm_P2.00mm_HorizontalCutout.kicad_mod
│ │ │ ├── QFN-20-1EP_3x3mm_P0.4mm_EP1.65x1.65mm_ThermalVias_LargerViaHoles.kicad_mod
│ │ │ ├── SOT-223-3_TabPin2_GndOutIn.kicad_mod
│ │ │ ├── SOT-223-3_TabPin2_InGndOut.kicad_mod
│ │ │ └── TestPoint_Pad_D2.0mm_ValueSilk.kicad_mod
│ │ ├── Molex.3dshapes/
│ │ │ └── 532610371.stp
│ │ ├── Molex.pretty/
│ │ │ └── 532610371.kicad_mod
│ │ ├── SK6812.dcm
│ │ ├── SK6812.lib
│ │ ├── SN74AVC4T774.dcm
│ │ ├── SN74AVC4T774.lib
│ │ ├── SN74AVC4T774.models/
│ │ │ └── Texas_Instruments_-_SN74AVC4T774RSVR.step
│ │ ├── SN74AVC4T774.pretty/
│ │ │ └── Texas_Instruments-RSV_R-PUQFN-N16-0-0-0.kicad_mod
│ │ ├── SolderPads.pretty/
│ │ │ ├── SolderPads_2mm_3.kicad_mod
│ │ │ ├── SolderPads_2mm_3_STRAIN.kicad_mod
│ │ │ ├── SolderPads_2mm_4.kicad_mod
│ │ │ └── SolderPads_2mm_8.kicad_mod
│ │ ├── Trinamic.dcm
│ │ ├── Trinamic.lib
│ │ ├── VEML7700.3dshapes/
│ │ │ └── 84592VEML7700.stp
│ │ ├── VEML7700.dcm
│ │ ├── VEML7700.lib
│ │ ├── VEML7700.pretty/
│ │ │ └── VEML7700-TOP.kicad_mod
│ │ ├── lilygo_micro32.3dshapes/
│ │ │ └── ap-700.stp
│ │ ├── lilygo_micro32.dcm
│ │ ├── lilygo_micro32.lib
│ │ ├── lilygo_micro32.pretty/
│ │ │ └── T-Micro32.kicad_mod
│ │ ├── no_pin.dcm
│ │ ├── no_pin.lib
│ │ ├── sk6812.3dshapes/
│ │ │ └── SK6812-SIDE-A.step
│ │ ├── sk6812.pretty/
│ │ │ └── SK6812-SIDE-A.kicad_mod
│ │ ├── strain.dcm
│ │ ├── strain.lib
│ │ └── strain.pretty/
│ │ └── BF350-3AA.kicad_mod
│ ├── scripts/
│ │ ├── __init__.py
│ │ ├── config/
│ │ │ ├── eeschema
│ │ │ ├── pcbnew
│ │ │ └── policy.xml
│ │ ├── dependencies.sh
│ │ ├── export_jlcpcb.py
│ │ ├── export_util.py
│ │ ├── generate_pdf.py
│ │ └── pcb_util.py
│ ├── view_base/
│ │ ├── fp-lib-table
│ │ ├── lib/
│ │ │ ├── view_custom.3dshapes/
│ │ │ │ └── ViewKeepouts3d.step
│ │ │ └── view_custom.pretty/
│ │ │ └── ViewKeepouts3d.kicad_mod
│ │ ├── sym-lib-table
│ │ ├── view_base-cache.lib
│ │ ├── view_base.kibot.yml
│ │ ├── view_base.kicad_pcb
│ │ ├── view_base.kicad_pro
│ │ └── view_base.kicad_sch
│ └── view_screen/
│ ├── fp-lib-table
│ ├── sym-lib-table
│ ├── view_screen-cache.lib
│ ├── view_screen.kibot.yml
│ ├── view_screen.kicad_pcb
│ ├── view_screen.kicad_pro
│ └── view_screen.kicad_sch
├── firmware/
│ ├── .gitignore
│ ├── .vscode/
│ │ ├── extensions.json
│ │ └── settings.json
│ ├── include/
│ │ └── README
│ ├── lib/
│ │ ├── README
│ │ └── tlv/
│ │ ├── .piopm
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── library.json
│ │ ├── library.properties
│ │ └── src/
│ │ ├── Tlv493d.cpp
│ │ ├── Tlv493d.h
│ │ └── util/
│ │ ├── BusInterface.cpp
│ │ ├── BusInterface.h
│ │ ├── BusInterface2.h
│ │ ├── RegMask.cpp
│ │ ├── RegMask.h
│ │ └── Tlv493d_conf.h
│ ├── partitions-4MB-fat.csv
│ ├── src/
│ │ ├── configuration.cpp
│ │ ├── configuration.h
│ │ ├── display_task.cpp
│ │ ├── display_task.h
│ │ ├── font/
│ │ │ └── roboto_light_60.h
│ │ ├── interface_callbacks.h
│ │ ├── interface_task.cpp
│ │ ├── interface_task.h
│ │ ├── logger.h
│ │ ├── main.cpp
│ │ ├── maq430_sensor.h
│ │ ├── motor_task.cpp
│ │ ├── motor_task.h
│ │ ├── motors/
│ │ │ ├── mad2804.h
│ │ │ ├── motor_config.h
│ │ │ └── wanzhida_once_top.h
│ │ ├── mt6701_sensor.cpp
│ │ ├── mt6701_sensor.h
│ │ ├── proto_gen/
│ │ │ ├── smartknob.pb.c
│ │ │ └── smartknob.pb.h
│ │ ├── semaphore_guard.h
│ │ ├── serial/
│ │ │ ├── crc32.cpp
│ │ │ ├── crc32.h
│ │ │ ├── proto_helpers.h
│ │ │ ├── serial_protocol.h
│ │ │ ├── serial_protocol_plaintext.cpp
│ │ │ ├── serial_protocol_plaintext.h
│ │ │ ├── serial_protocol_protobuf.cpp
│ │ │ ├── serial_protocol_protobuf.h
│ │ │ ├── uart_stream.cpp
│ │ │ └── uart_stream.h
│ │ ├── task.h
│ │ ├── tlv_sensor.cpp
│ │ ├── tlv_sensor.h
│ │ ├── util.cpp
│ │ └── util.h
│ └── test/
│ └── README
├── platformio.ini
├── proto/
│ ├── Pipfile
│ ├── generate_protobuf.py
│ └── smartknob.proto
├── scripts/
│ └── annotate_image.sh
├── software/
│ ├── js/
│ │ ├── .gitignore
│ │ ├── .npmrc
│ │ ├── README.md
│ │ ├── package.json
│ │ └── packages/
│ │ ├── example-cli/
│ │ │ ├── .eslintrc
│ │ │ ├── .prettierrc
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ └── index.ts
│ │ │ └── tsconfig.json
│ │ ├── example-webserial-basic/
│ │ │ ├── .eslintrc
│ │ │ ├── .gitignore
│ │ │ ├── .prettierrc
│ │ │ ├── README.md
│ │ │ ├── package.json
│ │ │ ├── public/
│ │ │ │ ├── index.html
│ │ │ │ └── robots.txt
│ │ │ ├── src/
│ │ │ │ ├── App.tsx
│ │ │ │ ├── index.tsx
│ │ │ │ ├── react-app-env.d.ts
│ │ │ │ └── util.ts
│ │ │ └── tsconfig.json
│ │ ├── example-webserial-timeline/
│ │ │ ├── .eslintrc
│ │ │ ├── .gitignore
│ │ │ ├── .prettierrc
│ │ │ ├── README.md
│ │ │ ├── package.json
│ │ │ ├── public/
│ │ │ │ ├── index.html
│ │ │ │ └── robots.txt
│ │ │ ├── src/
│ │ │ │ ├── App.tsx
│ │ │ │ ├── index.tsx
│ │ │ │ ├── react-app-env.d.ts
│ │ │ │ ├── types.tsx
│ │ │ │ └── util.ts
│ │ │ └── tsconfig.json
│ │ ├── smartknobjs-core/
│ │ │ ├── .eslintrc
│ │ │ ├── .prettierrc
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ ├── cobs.ts
│ │ │ │ └── index.ts
│ │ │ └── tsconfig.json
│ │ ├── smartknobjs-node/
│ │ │ ├── .eslintrc
│ │ │ ├── .prettierrc
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ └── index.ts
│ │ │ └── tsconfig.json
│ │ ├── smartknobjs-proto/
│ │ │ └── package.json
│ │ └── smartknobjs-webserial/
│ │ ├── .eslintrc
│ │ ├── .prettierrc
│ │ ├── package.json
│ │ ├── src/
│ │ │ └── index.ts
│ │ └── tsconfig.json
│ └── python/
│ ├── Pipfile
│ ├── proto_gen/
│ │ ├── README
│ │ ├── nanopb_pb2.py
│ │ └── smartknob_pb2.py
│ ├── simple_example.py
│ └── smartknob_io.py
└── util/
├── __init__.py
├── file_util.py
└── rev_info.py
SYMBOL INDEX (126 symbols across 45 files)
FILE: electronics/scripts/export_jlcpcb.py
function export_jlcpcb (line 36) | def export_jlcpcb(pcb, schematic, alt_fields, release_prefix):
FILE: electronics/scripts/export_util.py
class PopenContext (line 37) | class PopenContext(subprocess.Popen):
method __enter__ (line 38) | def __enter__(self):
method __exit__ (line 40) | def __exit__(self, type, value, traceback):
function xdotool (line 52) | def xdotool(command):
function wait_for_window (line 55) | def wait_for_window(name, window_regex, additional_commands=None, timeou...
function recorded_xvfb (line 74) | def recorded_xvfb(video_filename, **xvfb_args):
function get_versioned_contents (line 86) | def get_versioned_contents(filename, release_search_prefix):
function versioned_file (line 112) | def versioned_file(filename, release_search_prefix):
function patch_config (line 126) | def patch_config(filename, replacements):
FILE: electronics/scripts/generate_pdf.py
function run (line 32) | def run(pcb_file, release_prefix):
function plot_to_directory (line 43) | def plot_to_directory(pcb_file, output_directory, temp_dir, release_pref...
FILE: electronics/scripts/pcb_util.py
function versioned_board (line 32) | def versioned_board(filename, release_search_prefix):
function get_plotter (line 44) | def get_plotter(pcb_filename, build_directory, release_prefix):
class Plotter (line 49) | class Plotter(object):
method __init__ (line 50) | def __init__(self, board, build_directory):
method plot (line 64) | def plot(self, layer, plot_format):
method plot_drill (line 74) | def plot_drill(self):
FILE: firmware/lib/tlv/src/Tlv493d.cpp
function Tlv493d_Error_t (line 161) | Tlv493d_Error_t Tlv493d::updateData(void)
FILE: firmware/lib/tlv/src/Tlv493d.h
type Tlv493d_Address_t (line 42) | typedef enum Tlv493d_Address
type Tlv493d_Error_t (line 49) | typedef enum Tlv493d_Error
function class (line 70) | class Tlv493d
FILE: firmware/lib/tlv/src/util/BusInterface.h
function namespace (line 42) | namespace tlv493d
FILE: firmware/lib/tlv/src/util/BusInterface2.h
function namespace (line 41) | namespace tlv493d
FILE: firmware/lib/tlv/src/util/RegMask.h
function namespace (line 41) | namespace tlv493d
FILE: firmware/lib/tlv/src/util/Tlv493d_conf.h
function namespace (line 56) | namespace tlv493d
FILE: firmware/src/configuration.cpp
function PB_PersistentConfiguration (line 106) | PB_PersistentConfiguration Configuration::get() {
FILE: firmware/src/configuration.h
function class (line 12) | class Configuration {
function class (line 35) | class FatGuard {
FILE: firmware/src/display_task.cpp
function drawPlayButton (line 23) | static void drawPlayButton(TFT_eSprite& spr, int x, int y, int width, in...
function QueueHandle_t (line 198) | QueueHandle_t DisplayTask::getKnobStateQueue() {
FILE: firmware/src/display_task.h
function class (line 12) | class DisplayTask : public Task<DisplayTask> {
function class (line 44) | class DisplayTask {}
FILE: firmware/src/interface_callbacks.h
type std (line 7) | typedef std::function<void(PB_SmartKnobConfig&)> ConfigCallback;
type std (line 8) | typedef std::function<void(void)> MotorCalibrationCallback;
FILE: firmware/src/logger.h
function class (line 3) | class Logger {
FILE: firmware/src/main.cpp
function setup (line 21) | void setup() {
function loop (line 44) | void loop() {
FILE: firmware/src/motor_task.h
function CommandType (line 13) | enum class CommandType {
FILE: firmware/src/mt6701_sensor.cpp
function CRC6_43_18bit (line 19) | static uint8_t CRC6_43_18bit (uint32_t w_InputData)
function MT6701Error (line 135) | MT6701Error MT6701Sensor::getAndClearError() {
FILE: firmware/src/mt6701_sensor.h
type MT6701Error (line 6) | struct MT6701Error {
function class (line 12) | class MT6701Sensor : public Sensor {
FILE: firmware/src/proto_gen/smartknob.pb.h
type PB_Ack (line 14) | typedef struct _PB_Ack {
type PB_Log (line 18) | typedef struct _PB_Log {
type PB_SmartKnobConfig (line 22) | typedef struct _PB_SmartKnobConfig {
type PB_SmartKnobState (line 121) | typedef struct _PB_SmartKnobState {
type PB_FromSmartKnob (line 157) | typedef struct _PB_FromSmartKnob {
type PB_RequestState (line 167) | typedef struct _PB_RequestState {
type PB_ToSmartknob (line 172) | typedef struct _PB_ToSmartknob {
type PB_MotorCalibration (line 182) | typedef struct _PB_MotorCalibration {
type PB_StrainCalibration (line 189) | typedef struct _PB_StrainCalibration {
type PB_PersistentConfiguration (line 194) | typedef struct _PB_PersistentConfiguration {
FILE: firmware/src/semaphore_guard.h
function class (line 20) | class SemaphoreGuard {
FILE: firmware/src/serial/crc32.cpp
function crc32_for_byte (line 8) | static uint32_t crc32_for_byte(uint32_t r) {
function crc32 (line 14) | void crc32(const void *data, size_t n_bytes, uint32_t* crc) {
FILE: firmware/src/serial/proto_helpers.h
function config_eq (line 7) | bool config_eq(PB_SmartKnobConfig& first, PB_SmartKnobConfig& second) {
function state_eq (line 23) | bool state_eq(PB_SmartKnobState& first, PB_SmartKnobState& second) {
FILE: firmware/src/serial/serial_protocol.h
type std (line 11) | typedef std::function<void(uint8_t)> ProtocolChangeCallback;
function class (line 13) | class SerialProtocol : public Logger {
FILE: firmware/src/serial/serial_protocol_plaintext.h
type std (line 10) | typedef std::function<void(void)> DemoConfigChangeCallback;
type std (line 11) | typedef std::function<void(void)> StrainCalibrationCallback;
function class (line 13) | class SerialProtocolPlaintext : public SerialProtocol {
FILE: firmware/src/serial/serial_protocol_protobuf.h
function class (line 12) | class SerialProtocolProtobuf : public SerialProtocol {
FILE: firmware/src/serial/uart_stream.h
function class (line 29) | class UartStream : public Stream {
FILE: firmware/src/task.h
function TaskHandle_t (line 34) | TaskHandle_t getHandle() {
function begin (line 38) | void begin() {
FILE: firmware/src/tlv_sensor.h
function class (line 6) | class TlvSensor : public Sensor {
FILE: firmware/src/util.cpp
function lerp (line 3) | float lerp(const float value, const float inMin, const float inMax, cons...
FILE: proto/generate_protobuf.py
function run (line 11) | def run():
FILE: software/js/packages/example-webserial-basic/src/App.tsx
type Config (line 9) | type Config = NoUndefinedField<PB.ISmartKnobConfig>
type AppProps (line 27) | type AppProps = object
FILE: software/js/packages/example-webserial-basic/src/util.ts
type NoUndefinedField (line 17) | type NoUndefinedField<T> = {
function findNClosest (line 21) | function findNClosest(numbers: number[], target: number, n: number): num...
FILE: software/js/packages/example-webserial-timeline/src/App.tsx
constant MIN_ZOOM (line 14) | const MIN_ZOOM = 0.01
constant MAX_ZOOM (line 15) | const MAX_ZOOM = 60
constant PIXELS_PER_POSITION (line 17) | const PIXELS_PER_POSITION = 5
type Mode (line 19) | enum Mode {
type PlaybackState (line 25) | type PlaybackState = {
type InterfaceState (line 30) | type InterfaceState = {
type Config (line 34) | type Config = NoUndefinedField<PB.ISmartKnobConfig> & {
type AppProps (line 38) | type AppProps = {
type TimelineProps (line 465) | type TimelineProps = {
FILE: software/js/packages/example-webserial-timeline/src/types.tsx
type VideoInfo (line 1) | type VideoInfo = {
FILE: software/js/packages/example-webserial-timeline/src/util.ts
type NoUndefinedField (line 17) | type NoUndefinedField<T> = {
function findNClosest (line 21) | function findNClosest(numbers: number[], target: number, n: number): num...
FILE: software/js/packages/smartknobjs-core/src/cobs.ts
function encode (line 3) | function encode(buf: Uint8Array) {
function decode (line 31) | function decode(buf: Uint8Array) {
FILE: software/js/packages/smartknobjs-core/src/index.ts
constant PROTOBUF_PROTOCOL_VERSION (line 6) | const PROTOBUF_PROTOCOL_VERSION = 1
type MessageCallback (line 8) | type MessageCallback = (message: PB.FromSmartKnob) => void
type SendBytes (line 9) | type SendBytes = (packet: Uint8Array) => void
type QueueEntry (line 11) | type QueueEntry = {
class SmartKnobCore (line 18) | class SmartKnobCore {
method constructor (line 45) | constructor(onMessage: MessageCallback, sendBytes: SendBytes) {
method sendConfig (line 51) | public sendConfig(config: PB.SmartKnobConfig): void {
method onReceivedData (line 59) | protected onReceivedData(data: Uint8Array) {
method enqueueMessage (line 109) | private enqueueMessage(message: PB.ToSmartknob) {
method handleAck (line 130) | private handleAck(nonce: number): void {
method serviceQueue (line 143) | private serviceQueue(): void {
FILE: software/js/packages/smartknobjs-node/src/index.ts
class SmartKnobNode (line 4) | class SmartKnobNode extends SmartKnobCore {
method constructor (line 7) | constructor(serialPath: string, onMessage: MessageCallback) {
FILE: software/js/packages/smartknobjs-webserial/src/index.ts
class SmartKnobWebSerial (line 3) | class SmartKnobWebSerial extends SmartKnobCore {
method constructor (line 7) | constructor(port: SerialPort, onMessage: MessageCallback) {
method openAndLoop (line 20) | public async openAndLoop() {
method onError (line 55) | private onError(e: unknown) {
FILE: software/python/simple_example.py
function _run_example (line 17) | def _run_example():
FILE: software/python/smartknob_io.py
class Smartknob (line 40) | class Smartknob(object):
method __init__ (line 43) | def __init__(self, serial_instance):
method _read_loop (line 54) | def _read_loop(self):
method _process_frame (line 71) | def _process_frame(self, frame):
method _write_loop (line 113) | def _write_loop(self):
method _enqueue_message (line 147) | def _enqueue_message(self, message):
method set_config (line 171) | def set_config(self, config):
method start (line 176) | def start(self):
method shutdown (line 182) | def shutdown(self):
method add_handler (line 192) | def add_handler(self, message_type, handler):
method _remove_handler (line 197) | def _remove_handler(self, message_type, handler):
method request_state (line 201) | def request_state(self):
method hard_reset (line 206) | def hard_reset(self):
function smartknob_context (line 215) | def smartknob_context(serial_port, default_logging=True, wait_for_comms=...
function ask_for_serial_port (line 244) | def ask_for_serial_port():
FILE: util/file_util.py
function mkdir_p (line 6) | def mkdir_p(path):
FILE: util/rev_info.py
function git_short_rev (line 7) | def git_short_rev():
function current_date (line 18) | def current_date():
function git_date (line 21) | def git_date(short=True):
function git_release_version (line 37) | def git_release_version(search_prefix, fallback=None):
Condensed preview — 215 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (3,712K chars).
[
{
"path": ".github/FUNDING.yml",
"chars": 65,
"preview": "# These are supported funding model platforms\n\ngithub: scottbez1\n"
},
{
"path": ".github/workflows/electronics.yml",
"chars": 4730,
"preview": "name: Export Electronics\n\non:\n push:\n paths:\n - 'electronics/**'\n - 'util/**'\n - 'scripts/**'\n -"
},
{
"path": ".github/workflows/js.yml",
"chars": 1603,
"preview": "name: JS\n\non:\n push:\n paths:\n - 'software/js/**'\n - 'proto/**'\n - '.github/workflows/js.yml'\n pull_r"
},
{
"path": ".github/workflows/pio.yml",
"chars": 1780,
"preview": "name: PlatformIO CI\n\non:\n push:\n paths:\n - 'firmware/**'\n - 'proto/**'\n - 'thirdparty/nanopb/**'\n "
},
{
"path": ".gitignore",
"chars": 449,
"preview": "# KiCAD files\n*.000\n*.bak\n*.bck\n*.kicad_pcb-bak\n*.sch-bak\n*.net\n*.dsn\nfp-info-cache\n_autosave*.kicad_pcb\n*.kicad_prl\nele"
},
{
"path": ".gitmodules",
"chars": 98,
"preview": "[submodule \"thirdparty/nanopb\"]\n\tpath = thirdparty/nanopb\n\turl = git@github.com:nanopb/nanopb.git\n"
},
{
"path": ".vscode/extensions.json",
"chars": 349,
"preview": "{\n // See http://go.microsoft.com/fwlink/?LinkId=827846\n // for the documentation about the extensions.json format"
},
{
"path": ".vscode/settings.json",
"chars": 447,
"preview": "{\n \"eslint.workingDirectories\": [\n \"./software/js/packages/example\",\n \"./software/js/packages/smartknob"
},
{
"path": "LICENSE.txt",
"chars": 11958,
"preview": " smartknob - Copyright 2022 Scott Bezek\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may"
},
{
"path": "README.md",
"chars": 22614,
"preview": "# SmartKnob\nSmartKnob is an open-source input device with software-configurable endstops and virtual detents.\n\nA brushle"
},
{
"path": "__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "cad/README.md",
"chars": 1141,
"preview": "# CAD\n\nMost CAD work is done in Fusion 360 and versioned outside of this git repo.\n\n# Assemblies\n## SmartKnob View\n - [C"
},
{
"path": "electronics/BM28B0.6-24DSBreakout/BM28B0.6-24DSBreakout-cache.lib",
"chars": 3662,
"preview": "EESchema-LIBRARY Version 2.4\n#encoding utf-8\n#\n# Connector_Conn_01x14_Male\n#\nDEF Connector_Conn_01x14_Male J 0 40 Y N 1 "
},
{
"path": "electronics/BM28B0.6-24DSBreakout/BM28B0.6-24DSBreakout.kicad_pcb",
"chars": 26912,
"preview": "(kicad_pcb (version 20171130) (host pcbnew 5.1.10-88a1d61d58~90~ubuntu20.04.1)\n\n (general\n (thickness 1.6)\n (draw"
},
{
"path": "electronics/BM28B0.6-24DSBreakout/BM28B0.6-24DSBreakout.pro",
"chars": 3595,
"preview": "update=Mon 01 Nov 2021 03:41:48 PM PDT\nversion=1\nlast_client=kicad\n[general]\nversion=1\nRootSch=\nBoardNm=\n[cvpcb]\nversion"
},
{
"path": "electronics/BM28B0.6-24DSBreakout/BM28B0.6-24DSBreakout.sch",
"chars": 2614,
"preview": "EESchema Schematic File Version 4\nEELAYER 30 0\nEELAYER END\n$Descr A4 11693 8268\nencoding utf-8\nSheet 1 1\nTitle \"\"\nDate \""
},
{
"path": "electronics/BM28B0.6-24DSBreakout/fp-lib-table",
"chars": 106,
"preview": "(fp_lib_table\n (lib (name BM28)(type KiCad)(uri ${KIPRJMOD}/../lib/BM28.pretty)(options \"\")(descr \"\"))\n)\n"
},
{
"path": "electronics/LevelShifterBreakout/LevelShifterBreakout-cache.lib",
"chars": 3321,
"preview": "EESchema-LIBRARY Version 2.4\n#encoding utf-8\n#\n# Connector_Conn_01x08_Male\n#\nDEF Connector_Conn_01x08_Male J 0 40 Y N 1 "
},
{
"path": "electronics/LevelShifterBreakout/LevelShifterBreakout.kicad_pcb",
"chars": 41749,
"preview": "(kicad_pcb (version 20171130) (host pcbnew 5.1.10-88a1d61d58~90~ubuntu20.04.1)\n\n (general\n (thickness 1.6)\n (draw"
},
{
"path": "electronics/LevelShifterBreakout/LevelShifterBreakout.pro",
"chars": 3595,
"preview": "update=Mon 01 Nov 2021 06:02:37 PM PDT\nversion=1\nlast_client=kicad\n[general]\nversion=1\nRootSch=\nBoardNm=\n[cvpcb]\nversion"
},
{
"path": "electronics/LevelShifterBreakout/LevelShifterBreakout.sch",
"chars": 6305,
"preview": "EESchema Schematic File Version 4\nEELAYER 30 0\nEELAYER END\n$Descr A4 11693 8268\nencoding utf-8\nSheet 1 1\nTitle \"\"\nDate \""
},
{
"path": "electronics/LevelShifterBreakout/fp-lib-table",
"chars": 122,
"preview": "(fp_lib_table\n (lib (name SN74AVC4T774)(type KiCad)(uri ${KIPRJMOD}/../lib/SN74AVC4T774.pretty)(options \"\")(descr \"\"))\n"
},
{
"path": "electronics/LevelShifterBreakout/sym-lib-table",
"chars": 121,
"preview": "(sym_lib_table\n (lib (name SN74AVC4T774)(type Legacy)(uri ${KIPRJMOD}/../lib/SN74AVC4T774.lib)(options \"\")(descr \"\"))\n)"
},
{
"path": "electronics/lib/BM28.pretty/BM28B0.6-24DS.kicad_mod",
"chars": 2628,
"preview": "(module BM28B0.6-24DS (layer F.Cu) (tedit 6180705A)\n (attr smd)\n (fp_text reference REF** (at -3.515 0 90) (layer F.Si"
},
{
"path": "electronics/lib/BOM_Only.pretty/bom_only_no_pin.kicad_mod",
"chars": 286,
"preview": "(module bom_only_no_pin (layer F.Cu) (tedit 622E7E88)\n (attr smd)\n (fp_text reference REF** (at 0 0.5) (layer F.Fab)\n "
},
{
"path": "electronics/lib/GCT_USB.3dshapes/proprietary/README.txt",
"chars": 262,
"preview": "This folder should contain a single file named:\nUSB4510-03-1-A.stp\n\nUnfortunately it cannot be distributed directly as p"
},
{
"path": "electronics/lib/GCT_USB.pretty/USB4510.kicad_mod",
"chars": 2784,
"preview": "(module USB4510 (layer F.Cu) (tedit 6206B6FF)\n (attr smd)\n (fp_text reference REF** (at 0 -3.35) (layer F.Fab)\n (ef"
},
{
"path": "electronics/lib/GCT_USB.pretty/USB4510_NoPaste.kicad_mod",
"chars": 4330,
"preview": "(footprint \"USB4510_NoPaste\" (version 20211014) (generator pcbnew)\n (layer \"F.Cu\")\n (tedit 63329430)\n (attr smd)\n (f"
},
{
"path": "electronics/lib/Holes.pretty/AlignmentHole_1.6.kicad_mod",
"chars": 595,
"preview": "(module AlignmentHole_1.6 (layer F.Cu) (tedit 620752D6)\n (descr \"Mounting Hole 2.2mm, no annular, M2, ISO7380\")\n (tags"
},
{
"path": "electronics/lib/Holes.pretty/MountingHole_2.2mm_M2_ISO7380_Pad_NonVirtual.kicad_mod",
"chars": 745,
"preview": "(module MountingHole_2.2mm_M2_ISO7380_Pad_NonVirtual (layer F.Cu) (tedit 622E47A4)\n (descr \"Mounting Hole 2.2mm, M2, IS"
},
{
"path": "electronics/lib/Holes.pretty/MountingHole_M1.6.kicad_mod",
"chars": 720,
"preview": "(module MountingHole_M1.6 (layer F.Cu) (tedit 622E47EB)\n (descr \"Mounting Hole 2.2mm, no annular, M2, ISO7380\")\n (tags"
},
{
"path": "electronics/lib/LCD_GC9A01.3dshapes/TFT-Round-1.28.step",
"chars": 20848,
"preview": "ISO-10303-21;\r\nHEADER;\r\n/* Generated by software containing ST-Developer\r\n * from STEP Tools, Inc. (www.steptools.com) \r"
},
{
"path": "electronics/lib/LCD_GC9A01.pretty/GC9A01Round1.28.kicad_mod",
"chars": 2317,
"preview": "(module GC9A01Round1.28 (layer F.Cu) (tedit 622E4650)\n (attr smd)\n (fp_text reference REF** (at 4 1) (layer F.SilkS) h"
},
{
"path": "electronics/lib/MagnTek.dcm",
"chars": 48,
"preview": "EESchema-DOCLIB Version 2.0\n#\n#End Doc Library\n"
},
{
"path": "electronics/lib/MagnTek.lib",
"chars": 603,
"preview": "EESchema-LIBRARY Version 2.4\n#encoding utf-8\n#\n# MT6701-CT\n#\nDEF MT6701-CT U 0 40 Y Y 1 F N\nF0 \"U\" -500 250 50 H V C CNN"
},
{
"path": "electronics/lib/Modified.pretty/CP_Radial_D5.0mm_P2.00mm_HorizontalCutout.kicad_mod",
"chars": 7120,
"preview": "(module CP_Radial_D5.0mm_P2.00mm_HorizontalCutout (layer F.Cu) (tedit 61FE1CC0)\n (descr \"CP, Radial series, Radial, pin"
},
{
"path": "electronics/lib/Modified.pretty/QFN-20-1EP_3x3mm_P0.4mm_EP1.65x1.65mm_ThermalVias_LargerViaHoles.kicad_mod",
"chars": 7859,
"preview": "(footprint \"QFN-20-1EP_3x3mm_P0.4mm_EP1.65x1.65mm_ThermalVias_LargerViaHoles\" (version 20211014) (generator pcbnew)\n (l"
},
{
"path": "electronics/lib/Modified.pretty/SOT-223-3_TabPin2_GndOutIn.kicad_mod",
"chars": 3497,
"preview": "(footprint \"SOT-223-3_TabPin2_GndOutIn\" (version 20211014) (generator pcbnew)\n (layer \"F.Cu\")\n (tedit 5A02FF57)\n (des"
},
{
"path": "electronics/lib/Modified.pretty/SOT-223-3_TabPin2_InGndOut.kicad_mod",
"chars": 3480,
"preview": "(footprint \"SOT-223-3_TabPin2_InGndOut\" (version 20211014) (generator pcbnew)\n (layer \"F.Cu\")\n (tedit 5A02FF57)\n (des"
},
{
"path": "electronics/lib/Modified.pretty/TestPoint_Pad_D2.0mm_ValueSilk.kicad_mod",
"chars": 807,
"preview": "(module TestPoint_Pad_D2.0mm_ValueSilk (layer F.Cu) (tedit 62094535)\n (descr \"SMD pad as test Point, diameter 2.0mm\")\n "
},
{
"path": "electronics/lib/Molex.3dshapes/532610371.stp",
"chars": 320951,
"preview": "ISO-10303-21;\r\nHEADER;\r\nFILE_DESCRIPTION((''),'2;1');\r\nFILE_NAME('532610371','2019-05-09T',('gga'),(''),\r\n'PRO/ENGINEER "
},
{
"path": "electronics/lib/Molex.pretty/532610371.kicad_mod",
"chars": 2922,
"preview": "(module 532610371 (layer F.Cu) (tedit 620AE163)\n (fp_text reference REF** (at 1.25 -3.02) (layer F.SilkS)\n (effects "
},
{
"path": "electronics/lib/SK6812.dcm",
"chars": 113,
"preview": "EESchema-DOCLIB Version 2.0\n#\n$CMP SK6812SIDE-A\nD RGB LED with integrated controller\n$ENDCMP\n#\n#End Doc Library\n"
},
{
"path": "electronics/lib/SK6812.lib",
"chars": 766,
"preview": "EESchema-LIBRARY Version 2.4\n#encoding utf-8\n#\n# SK6812SIDE-A\n#\nDEF SK6812SIDE-A D 0 10 Y Y 1 F N\nF0 \"D\" 200 225 50 H V "
},
{
"path": "electronics/lib/SN74AVC4T774.dcm",
"chars": 150,
"preview": "EESchema-DOCLIB Version 2.0\n#\n$CMP SN74AVC4T774RSVR\nD SN74AVC4T774RSVR\nF http://www.ti.com/lit/ds/symlink/sn74avc4t774."
},
{
"path": "electronics/lib/SN74AVC4T774.lib",
"chars": 1784,
"preview": "EESchema-LIBRARY Version 2.4\n#encoding utf-8\n#\n# Texas Instruments SN74AVC4T774RSVR\n#\nDEF SN74AVC4T774RSVR U 0 40 Y Y 1 "
},
{
"path": "electronics/lib/SN74AVC4T774.models/Texas_Instruments_-_SN74AVC4T774RSVR.step",
"chars": 286064,
"preview": "ISO-10303-21;\nHEADER;\nFILE_DESCRIPTION( ( '' ), ' ' );\nFILE_NAME( '/vol/tmp/translate-3862705116347205271/5b3ba3f885973f"
},
{
"path": "electronics/lib/SN74AVC4T774.pretty/Texas_Instruments-RSV_R-PUQFN-N16-0-0-0.kicad_mod",
"chars": 2826,
"preview": "(module Texas_Instruments-RSV_R-PUQFN-N16-0-0-0 (layer F.Cu) (tedit 618090B4)\n (fp_text reference REF** (at -1.75 -2.05"
},
{
"path": "electronics/lib/SolderPads.pretty/SolderPads_2mm_3.kicad_mod",
"chars": 619,
"preview": "(module SolderPads_2mm_3 (layer F.Cu) (tedit 620309F0)\n (fp_text reference REF** (at 0 0.5) (layer F.SilkS) hide\n (e"
},
{
"path": "electronics/lib/SolderPads.pretty/SolderPads_2mm_3_STRAIN.kicad_mod",
"chars": 945,
"preview": "(module SolderPads_2mm_3_STRAIN (layer F.Cu) (tedit 622E2DE5)\n (attr virtual)\n (fp_text reference REF** (at 0 0.5) (la"
},
{
"path": "electronics/lib/SolderPads.pretty/SolderPads_2mm_4.kicad_mod",
"chars": 701,
"preview": "(module SolderPads_2mm_4 (layer F.Cu) (tedit 622E46A5)\n (attr virtual)\n (fp_text reference REF** (at 0 0.5) (layer F.S"
},
{
"path": "electronics/lib/SolderPads.pretty/SolderPads_2mm_8.kicad_mod",
"chars": 964,
"preview": "(module SolderPads_2mm_8 (layer F.Cu) (tedit 622E2DC9)\n (attr virtual)\n (fp_text reference REF** (at 0 0.5) (layer F.S"
},
{
"path": "electronics/lib/Trinamic.dcm",
"chars": 48,
"preview": "EESchema-DOCLIB Version 2.0\n#\n#End Doc Library\n"
},
{
"path": "electronics/lib/Trinamic.lib",
"chars": 1073,
"preview": "EESchema-LIBRARY Version 2.4\n#encoding utf-8\n#\n# TMC6300\n#\nDEF TMC6300 U 0 40 Y Y 1 F N\nF0 \"U\" 0 100 50 H V C CNN\nF1 \"TM"
},
{
"path": "electronics/lib/VEML7700.3dshapes/84592VEML7700.stp",
"chars": 135242,
"preview": "ISO-10303-21;\r\nHEADER;\r\n/* Generated by software containing ST-Developer\r\n * from STEP Tools, Inc. (www.steptools.com) \r"
},
{
"path": "electronics/lib/VEML7700.dcm",
"chars": 48,
"preview": "EESchema-DOCLIB Version 2.0\n#\n#End Doc Library\n"
},
{
"path": "electronics/lib/VEML7700.lib",
"chars": 414,
"preview": "EESchema-LIBRARY Version 2.4\n#encoding utf-8\n#\n# VEML7700\n#\nDEF VEML7700 U 0 40 Y Y 1 F N\nF0 \"U\" -250 450 50 H V C CNN\nF"
},
{
"path": "electronics/lib/VEML7700.pretty/VEML7700-TOP.kicad_mod",
"chars": 1490,
"preview": "(module VEML7700-TOP (layer F.Cu) (tedit 6203268B)\n (attr smd)\n (fp_text reference REF** (at 0 0.5) (layer F.SilkS)\n "
},
{
"path": "electronics/lib/lilygo_micro32.3dshapes/ap-700.stp",
"chars": 194004,
"preview": "ISO-10303-21;\r\nHEADER;\r\nFILE_DESCRIPTION((''),'2;1');\r\nFILE_NAME('AP-700','2020-12-20T',('Administrator'),(''),\r\n'PRO/EN"
},
{
"path": "electronics/lib/lilygo_micro32.dcm",
"chars": 48,
"preview": "EESchema-DOCLIB Version 2.0\n#\n#End Doc Library\n"
},
{
"path": "electronics/lib/lilygo_micro32.lib",
"chars": 4349,
"preview": "EESchema-LIBRARY Version 2.4\n#encoding utf-8\n#\n# T-Micro32\n#\nDEF T-Micro32 U 0 40 Y Y 1 F N\nF0 \"U\" -600 850 50 H V C CNN"
},
{
"path": "electronics/lib/lilygo_micro32.pretty/T-Micro32.kicad_mod",
"chars": 5553,
"preview": "(module T-Micro32 (layer F.Cu) (tedit 618DED80)\n (fp_text reference REF** (at 2 -4.5) (layer F.SilkS)\n (effects (fon"
},
{
"path": "electronics/lib/no_pin.dcm",
"chars": 48,
"preview": "EESchema-DOCLIB Version 2.0\n#\n#End Doc Library\n"
},
{
"path": "electronics/lib/no_pin.lib",
"chars": 253,
"preview": "EESchema-LIBRARY Version 2.3\n#encoding utf-8\n#\n# no_pin\n#\nDEF no_pin Z 0 40 Y Y 1 F N\nF0 \"Z\" -350 150 60 H V C CNN\nF1 \"n"
},
{
"path": "electronics/lib/sk6812.3dshapes/SK6812-SIDE-A.step",
"chars": 55047,
"preview": "ISO-10303-21;\r\nHEADER;\r\n/* Generated by software containing ST-Developer\r\n * from STEP Tools, Inc. (www.steptools.com) \r"
},
{
"path": "electronics/lib/sk6812.pretty/SK6812-SIDE-A.kicad_mod",
"chars": 1571,
"preview": "(module SK6812-SIDE-A (layer F.Cu) (tedit 6205A40B)\n (fp_text reference REF** (at 2.032 -1.397) (layer F.SilkS)\n (ef"
},
{
"path": "electronics/lib/strain.dcm",
"chars": 48,
"preview": "EESchema-DOCLIB Version 2.0\n#\n#End Doc Library\n"
},
{
"path": "electronics/lib/strain.lib",
"chars": 865,
"preview": "EESchema-LIBRARY Version 2.4\n#encoding utf-8\n#\n# HX711\n#\nDEF HX711 U 0 40 Y Y 1 F N\nF0 \"U\" 200 500 50 H V C CNN\nF1 \"HX71"
},
{
"path": "electronics/lib/strain.pretty/BF350-3AA.kicad_mod",
"chars": 6229,
"preview": "(footprint \"BF350-3AA\" (version 20211014) (generator pcbnew)\n (layer \"F.Cu\")\n (tedit 622E2DB0)\n (attr smd)\n (fp_text"
},
{
"path": "electronics/scripts/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "electronics/scripts/config/eeschema",
"chars": 3201,
"preview": "SchematicFramePos_x=89\nSchematicFramePos_y=38\nSchematicFrameSize_x=1125\nSchematicFrameSize_y=739\nSchematicFrameMaximized"
},
{
"path": "electronics/scripts/config/pcbnew",
"chars": 22792,
"preview": "Color4DPCBLayer_F.Cu=rgb(132, 0, 0)\nColor4DPCBLayer_In1.Cu=rgb(194, 194, 0)\nColor4DPCBLayer_In2.Cu=rgb(194, 0, 194)\nColo"
},
{
"path": "electronics/scripts/config/policy.xml",
"chars": 4597,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE policymap [\n <!ELEMENT policymap (policy)+>\n <!ATTLIST policymap xmln"
},
{
"path": "electronics/scripts/dependencies.sh",
"chars": 1004,
"preview": "#!/bin/bash\nset -e\n\nif [[ -z \"${GITHUB_WORKFLOW}\" ]]; then\n >&2 echo \"Aborting! This script is meant to be run in CI "
},
{
"path": "electronics/scripts/export_jlcpcb.py",
"chars": 2352,
"preview": "#!/usr/bin/env python3\n\n# Copyright 2021 Scott Bezek and the splitflap contributors\n#\n# Licensed under the Apache Li"
},
{
"path": "electronics/scripts/export_util.py",
"chars": 4976,
"preview": "#!/usr/bin/env python\n\n# Copyright 2015-2016 Scott Bezek and the splitflap contributors\n#\n# Licensed under the Apach"
},
{
"path": "electronics/scripts/generate_pdf.py",
"chars": 2996,
"preview": "#!/usr/bin/env python3\n# Copyright 2015-2021 Scott Bezek and the splitflap contributors\n#\n# Licensed under the Apach"
},
{
"path": "electronics/scripts/pcb_util.py",
"chars": 4278,
"preview": "#!/usr/bin/env python3\n# Copyright 2015-2021 Scott Bezek and the splitflap contributors\n#\n# Licensed under the Apach"
},
{
"path": "electronics/view_base/fp-lib-table",
"chars": 1091,
"preview": "(fp_lib_table\n (lib (name sk6812)(type KiCad)(uri ${KIPRJMOD}/../lib/sk6812.pretty)(options \"\")(descr \"\"))\n (lib (name"
},
{
"path": "electronics/view_base/lib/view_custom.3dshapes/ViewKeepouts3d.step",
"chars": 264088,
"preview": "ISO-10303-21;\r\nHEADER;\r\n/* Generated by software containing ST-Developer\r\n * from STEP Tools, Inc. (www.steptools.com) \r"
},
{
"path": "electronics/view_base/lib/view_custom.pretty/ViewKeepouts3d.kicad_mod",
"chars": 15166,
"preview": "(module ViewKeepouts3d (layer F.Cu) (tedit 622FDCDD)\n (attr virtual)\n (fp_text reference REF** (at 0 0.5) (layer F.Sil"
},
{
"path": "electronics/view_base/sym-lib-table",
"chars": 687,
"preview": "(sym_lib_table\n (lib (name MagnTek)(type Legacy)(uri ${KIPRJMOD}/../lib/MagnTek.lib)(options \"\")(descr \"\"))\n (lib (nam"
},
{
"path": "electronics/view_base/view_base-cache.lib",
"chars": 16418,
"preview": "EESchema-LIBRARY Version 2.4\n#encoding utf-8\n#\n# Connector_Conn_01x03_Male\n#\nDEF Connector_Conn_01x03_Male J 0 40 Y N 1 "
},
{
"path": "electronics/view_base/view_base.kibot.yml",
"chars": 1468,
"preview": "kibot:\n version: 1\n\npreflight:\n check_zone_fills: true\n run_drc: true\n run_erc: true\n update_xml: true\n set_text_v"
},
{
"path": "electronics/view_base/view_base.kicad_pcb",
"chars": 963946,
"preview": "(kicad_pcb (version 20211014) (generator pcbnew)\n\n (general\n (thickness 1.2)\n )\n\n (paper \"A4\")\n (layers\n (0 \"F"
},
{
"path": "electronics/view_base/view_base.kicad_pro",
"chars": 10039,
"preview": "{\n \"board\": {\n \"design_settings\": {\n \"defaults\": {\n \"board_outline_line_width\": 0.049999999999999996,\n "
},
{
"path": "electronics/view_base/view_base.kicad_sch",
"chars": 345520,
"preview": "(kicad_sch (version 20211123) (generator eeschema)\n\n (uuid 5edcefbe-9766-42c8-9529-28d0ec865573)\n\n (paper \"B\")\n\n (tit"
},
{
"path": "electronics/view_screen/fp-lib-table",
"chars": 410,
"preview": "(fp_lib_table\n (lib (name Holes)(type KiCad)(uri ${KIPRJMOD}/../lib/Holes.pretty)(options \"\")(descr \"\"))\n (lib (name M"
},
{
"path": "electronics/view_screen/sym-lib-table",
"chars": 687,
"preview": "(sym_lib_table\n (lib (name MagnTek)(type Legacy)(uri ${KIPRJMOD}/../lib/MagnTek.lib)(options \"\")(descr \"\"))\n (lib (nam"
},
{
"path": "electronics/view_screen/view_screen-cache.lib",
"chars": 4192,
"preview": "EESchema-LIBRARY Version 2.4\n#encoding utf-8\n#\n# Connector_Generic_Conn_01x04\n#\nDEF Connector_Generic_Conn_01x04 J 0 40 "
},
{
"path": "electronics/view_screen/view_screen.kibot.yml",
"chars": 1289,
"preview": "kibot:\n version: 1\n\npreflight:\n check_zone_fills: true\n run_drc: true\n run_erc: true\n update_xml: true\n set_text_v"
},
{
"path": "electronics/view_screen/view_screen.kicad_pcb",
"chars": 207678,
"preview": "(kicad_pcb (version 20211014) (generator pcbnew)\n\n (general\n (thickness 1.6)\n )\n\n (paper \"A4\")\n (layers\n (0 \"F"
},
{
"path": "electronics/view_screen/view_screen.kicad_pro",
"chars": 9960,
"preview": "{\n \"board\": {\n \"design_settings\": {\n \"defaults\": {\n \"board_outline_line_width\": 0.049999999999999996,\n "
},
{
"path": "electronics/view_screen/view_screen.kicad_sch",
"chars": 50315,
"preview": "(kicad_sch (version 20211123) (generator eeschema)\n\n (uuid 03c6bcc5-70e5-4ed1-8d53-27c57df043e2)\n\n (paper \"A4\")\n\n (ti"
},
{
"path": "firmware/.gitignore",
"chars": 94,
"preview": ".pio\n.vscode/.browse.c_cpp.db*\n.vscode/c_cpp_properties.json\n.vscode/launch.json\n.vscode/ipch\n"
},
{
"path": "firmware/.vscode/extensions.json",
"chars": 274,
"preview": "{\n // See http://go.microsoft.com/fwlink/?LinkId=827846\n // for the documentation about the extensions.json format"
},
{
"path": "firmware/.vscode/settings.json",
"chars": 65,
"preview": "{\n \"files.associations\": {\n \"functional\": \"cpp\"\n }\n}"
},
{
"path": "firmware/include/README",
"chars": 1386,
"preview": "\nThis directory is intended for project header files.\n\nA header file is a file containing C declarations and macro defin"
},
{
"path": "firmware/lib/README",
"chars": 1037,
"preview": "\nThis directory is intended for project specific (private) libraries.\nPlatformIO will compile them to static libraries a"
},
{
"path": "firmware/lib/tlv/.piopm",
"chars": 186,
"preview": "{\"type\": \"library\", \"name\": \"TLV493D-Magnetic-Sensor\", \"version\": \"1.0.3\", \"spec\": {\"owner\": \"infineon\", \"id\": 957, \"nam"
},
{
"path": "firmware/lib/tlv/LICENSE.md",
"chars": 2168,
"preview": "# License Summary for Repository\n```\nImportant Notice:\nChanges, suggestions and commits in this repository may only be d"
},
{
"path": "firmware/lib/tlv/README.md",
"chars": 7212,
"preview": "# TLV493D-A1B6-3DMagnetic-Sensor\n\n[ {};\n virtual ~Logger() {};\n virtual void log(con"
},
{
"path": "firmware/src/main.cpp",
"chars": 1875,
"preview": "#include <Arduino.h>\n\n#include \"configuration.h\"\n#include \"display_task.h\"\n#include \"interface_task.h\"\n#include \"motor_t"
},
{
"path": "firmware/src/maq430_sensor.h",
"chars": 396,
"preview": "#pragma once\n#include <sensors/MagneticSensorSPI.h>\n\n/** Configured fro 12bit MA710 and MAQ430 magnetic sensor over SPI "
},
{
"path": "firmware/src/motor_task.cpp",
"chars": 22434,
"preview": "#include <SimpleFOC.h>\n\n#include \"motor_task.h\"\n#if SENSOR_MT6701\n#include \"mt6701_sensor.h\"\n#elif SENSOR_TLV\n#include \""
},
{
"path": "firmware/src/motor_task.h",
"chars": 1467,
"preview": "#pragma once\n\n#include <Arduino.h>\n#include <SimpleFOC.h>\n#include <vector>\n\n#include \"configuration.h\"\n#include \"logger"
},
{
"path": "firmware/src/motors/mad2804.h",
"chars": 248,
"preview": "#pragma once\n\n// Tuning parameters for the MAD2804 motor (orange stator).\n\n#define FOC_PID_P 1\n#define FOC_PID_I 0\n#defi"
},
{
"path": "firmware/src/motors/motor_config.h",
"chars": 184,
"preview": "#pragma once\n\n#if MOTOR_WANZHIDA_ONCE_TOP\n#include \"motors/wanzhida_once_top.h\"\n#elif MOTOR_MAD2804\n#include \"motors/mad"
},
{
"path": "firmware/src/motors/wanzhida_once_top.h",
"chars": 264,
"preview": "#pragma once\n\n// Tuning parameters for the Wanzhida/Oncetop OT-EM3215D2450Y1R,\n// sold by SparkFun (ROB-20441).\n\n#define"
},
{
"path": "firmware/src/mt6701_sensor.cpp",
"chars": 3760,
"preview": "#include \"mt6701_sensor.h\"\n#include \"driver/spi_master.h\"\n\nstatic const float ALPHA = 0.4;\n\n\nstatic uint8_t tableCRC6[64"
},
{
"path": "firmware/src/mt6701_sensor.h",
"chars": 948,
"preview": "#pragma once\n\n#include <SimpleFOC.h>\n#include \"driver/spi_master.h\"\n\nstruct MT6701Error {\n bool error;\n uint8_t re"
},
{
"path": "firmware/src/proto_gen/smartknob.pb.c",
"chars": 742,
"preview": "/* Automatically generated nanopb constant definitions */\n/* Generated by nanopb-0.4.7 */\n\n#include \"smartknob.pb.h\"\n#if"
},
{
"path": "firmware/src/proto_gen/smartknob.pb.h",
"chars": 17290,
"preview": "/* Automatically generated nanopb header */\n/* Generated by nanopb-0.4.7 */\n\n#ifndef PB_PB_SMARTKNOB_PB_H_INCLUDED\n#defi"
},
{
"path": "firmware/src/semaphore_guard.h",
"chars": 1067,
"preview": "/*\n Copyright 2020 Scott Bezek and the splitflap contributors\n\n Licensed under the Apache License, Version 2.0 (the "
},
{
"path": "firmware/src/serial/crc32.cpp",
"chars": 760,
"preview": "/* Simple public domain implementation of the standard CRC32 checksum.\n * Outputs the checksum for each file given as a "
},
{
"path": "firmware/src/serial/crc32.h",
"chars": 420,
"preview": "/* Simple public domain implementation of the standard CRC32 checksum.\n * Outputs the checksum for each file given as a "
},
{
"path": "firmware/src/serial/proto_helpers.h",
"chars": 1330,
"preview": "#pragma once\n\n#include \"proto_gen/smartknob.pb.h\"\n\n#define PROTOBUF_PROTOCOL_VERSION (1)\n\nbool config_eq(PB_SmartKnobCon"
},
{
"path": "firmware/src/serial/serial_protocol.h",
"chars": 671,
"preview": "#pragma once\n\n#include <functional>\n\n#include \"../logger.h\"\n#include \"../proto_gen/smartknob.pb.h\"\n\n#define SERIAL_PROTO"
},
{
"path": "firmware/src/serial/serial_protocol_plaintext.cpp",
"chars": 2286,
"preview": "#include \"../proto_gen/smartknob.pb.h\"\n\n#include \"serial_protocol_plaintext.h\"\n\nvoid SerialProtocolPlaintext::handleStat"
},
{
"path": "firmware/src/serial/serial_protocol_plaintext.h",
"chars": 1141,
"preview": "#pragma once\n\n#include \"../proto_gen/smartknob.pb.h\"\n\n#include \"interface_callbacks.h\"\n#include \"motor_task.h\"\n#include "
},
{
"path": "firmware/src/serial/serial_protocol_protobuf.cpp",
"chars": 5538,
"preview": "#include <PacketSerial.h>\n\n#include \"../proto_gen/smartknob.pb.h\"\n\n#include \"proto_helpers.h\"\n\n#include \"crc32.h\"\n#inclu"
},
{
"path": "firmware/src/serial/serial_protocol_protobuf.h",
"chars": 1194,
"preview": "#pragma once\n\n#include <PacketSerial.h>\n\n#include \"../proto_gen/smartknob.pb.h\"\n\n#include \"interface_callbacks.h\"\n#inclu"
},
{
"path": "firmware/src/serial/uart_stream.cpp",
"chars": 1822,
"preview": "/*\n Copyright 2021 Scott Bezek and the splitflap contributors\n\n Licensed under the Apache License, Version 2.0 (the "
},
{
"path": "firmware/src/serial/uart_stream.h",
"chars": 1499,
"preview": "/*\n Copyright 2021 Scott Bezek and the splitflap contributors\n\n Licensed under the Apache License, Version 2.0 (the "
},
{
"path": "firmware/src/task.h",
"chars": 1837,
"preview": "/*\n Copyright 2020 Scott Bezek and the splitflap contributors\n\n Licensed under the Apache License, Version 2.0 (the "
},
{
"path": "firmware/src/tlv_sensor.cpp",
"chars": 1481,
"preview": "#include \"tlv_sensor.h\"\n\nstatic const float ALPHA = 1;\n\nTlvSensor::TlvSensor() {}\n\nvoid TlvSensor::init(TwoWire* wire, b"
},
{
"path": "firmware/src/tlv_sensor.h",
"chars": 924,
"preview": "#pragma once\n\n#include <SimpleFOC.h>\n#include <Tlv493d.h>\n\nclass TlvSensor : public Sensor {\n public:\n TlvSens"
},
{
"path": "firmware/src/util.cpp",
"chars": 261,
"preview": "#include \"util.h\"\n\nfloat lerp(const float value, const float inMin, const float inMax, const float min, const float max)"
},
{
"path": "firmware/src/util.h",
"chars": 390,
"preview": "\n#pragma once\n\ntemplate <typename T> T CLAMP(const T& value, const T& low, const T& high) \n{\n return value < low ? low "
},
{
"path": "firmware/test/README",
"chars": 490,
"preview": "\nThis directory is intended for PIO Unit Testing and project tests.\n\nUnit Testing is a software testing method by which "
},
{
"path": "platformio.ini",
"chars": 8354,
"preview": "; PlatformIO Project Configuration File\n;\n; Build options: build flags, source filter\n; Upload options: custom uploa"
},
{
"path": "proto/Pipfile",
"chars": 180,
"preview": "[[source]]\nurl = \"https://pypi.org/simple\"\nverify_ssl = true\nname = \"pypi\"\n\n[packages]\ngrpcio-tools = \"*\"\nprotobuf = \"=="
},
{
"path": "proto/generate_protobuf.py",
"chars": 1804,
"preview": "import os\nimport sys\nif __name__ == '__main__':\n if 'PIPENV_ACTIVE' not in os.environ:\n sys.exit(f'This script"
},
{
"path": "proto/smartknob.proto",
"chars": 8187,
"preview": "syntax = \"proto3\";\n\nimport \"nanopb.proto\";\n\npackage PB;\n\n/*\n * Message FROM the SmartKnob to the host\n */\nmessage FromSm"
},
{
"path": "scripts/annotate_image.sh",
"chars": 391,
"preview": "#!/bin/bash\n\nset -e\n\nDIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" >/dev/null 2>&1 && pwd )\"\n\nFONT=\"$DIR/RobotoMono-Bold"
},
{
"path": "software/js/.gitignore",
"chars": 18,
"preview": "node_modules/\ndist"
},
{
"path": "software/js/.npmrc",
"chars": 18,
"preview": "engine-strict=true"
},
{
"path": "software/js/README.md",
"chars": 299,
"preview": "# Typescript SmartKnob protobuf interface library and examples\n\n### Requirements (nvm is recommended)\n\n- node >= 18.11.0"
},
{
"path": "software/js/package.json",
"chars": 903,
"preview": "{\n \"name\": \"root\",\n \"version\": \"0.1.0\",\n \"description\": \"\",\n \"main\": \"index.js\",\n \"engines\": {\n \"npm\": \">=8.19.2"
},
{
"path": "software/js/packages/example-cli/.eslintrc",
"chars": 473,
"preview": "// .eslintrc\n{\n \"parser\": \"@typescript-eslint/parser\",\n \"parserOptions\": {\n \"ecmaVersion\": 12,\n \"sou"
},
{
"path": "software/js/packages/example-cli/.prettierrc",
"chars": 197,
"preview": "{\n \"printWidth\": 120,\n \"tabWidth\": 4,\n \"useTabs\": false,\n \"semi\": false,\n \"singleQuote\": true,\n \"trail"
},
{
"path": "software/js/packages/example-cli/package.json",
"chars": 838,
"preview": "{\n \"name\": \"example-cli\",\n \"version\": \"0.1.0\",\n \"description\": \"SmartKnob Interface Example\",\n \"main\": \"dist"
},
{
"path": "software/js/packages/example-cli/src/index.ts",
"chars": 2666,
"preview": "import SerialPort = require('serialport')\nimport {SmartKnobNode} from 'smartknobjs-node'\nimport {PB} from 'smartknobjs-p"
},
{
"path": "software/js/packages/example-cli/tsconfig.json",
"chars": 10950,
"preview": "{\n \"compilerOptions\": {\n /* Visit https://aka.ms/tsconfig.json to read more about this file */\n\n /* Projects */\n "
},
{
"path": "software/js/packages/example-webserial-basic/.eslintrc",
"chars": 473,
"preview": "// .eslintrc\n{\n \"parser\": \"@typescript-eslint/parser\",\n \"parserOptions\": {\n \"ecmaVersion\": 12,\n \"sou"
},
{
"path": "software/js/packages/example-webserial-basic/.gitignore",
"chars": 310,
"preview": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n/.pn"
},
{
"path": "software/js/packages/example-webserial-basic/.prettierrc",
"chars": 197,
"preview": "{\n \"printWidth\": 120,\n \"tabWidth\": 4,\n \"useTabs\": false,\n \"semi\": false,\n \"singleQuote\": true,\n \"trail"
},
{
"path": "software/js/packages/example-webserial-basic/README.md",
"chars": 2103,
"preview": "# Getting Started with Create React App\n\nThis project was bootstrapped with [Create React App](https://github.com/facebo"
},
{
"path": "software/js/packages/example-webserial-basic/package.json",
"chars": 1567,
"preview": "{\n \"name\": \"example-webserial-basic\",\n \"version\": \"0.1.0\",\n \"private\": true,\n \"dependencies\": {\n \"@em"
},
{
"path": "software/js/packages/example-webserial-basic/public/index.html",
"chars": 547,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <link rel=\"icon\" href=\"%PUBLIC_URL%"
},
{
"path": "software/js/packages/example-webserial-basic/public/robots.txt",
"chars": 67,
"preview": "# https://www.robotstxt.org/robotstxt.html\nUser-agent: *\nDisallow:\n"
},
{
"path": "software/js/packages/example-webserial-basic/src/App.tsx",
"chars": 15829,
"preview": "import React, {useEffect, useState} from 'react'\nimport Typography from '@mui/material/Typography'\nimport Container from"
},
{
"path": "software/js/packages/example-webserial-basic/src/index.tsx",
"chars": 638,
"preview": "import React from 'react'\nimport ReactDOM from 'react-dom/client'\nimport {App} from './App'\nimport '@fontsource/roboto/3"
},
{
"path": "software/js/packages/example-webserial-basic/src/react-app-env.d.ts",
"chars": 40,
"preview": "/// <reference types=\"react-scripts\" />\n"
},
{
"path": "software/js/packages/example-webserial-basic/src/util.ts",
"chars": 1208,
"preview": "export const exhaustiveCheck = (x: never): never => {\n throw new Error(\"Didn't expect to get here\", x)\n}\n\nexport cons"
},
{
"path": "software/js/packages/example-webserial-basic/tsconfig.json",
"chars": 569,
"preview": "{\n \"compilerOptions\": {\n \"target\": \"es6\",\n \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n \"allowJs\":"
},
{
"path": "software/js/packages/example-webserial-timeline/.eslintrc",
"chars": 473,
"preview": "// .eslintrc\n{\n \"parser\": \"@typescript-eslint/parser\",\n \"parserOptions\": {\n \"ecmaVersion\": 12,\n \"sou"
},
{
"path": "software/js/packages/example-webserial-timeline/.gitignore",
"chars": 310,
"preview": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n/.pn"
},
{
"path": "software/js/packages/example-webserial-timeline/.prettierrc",
"chars": 197,
"preview": "{\n \"printWidth\": 120,\n \"tabWidth\": 4,\n \"useTabs\": false,\n \"semi\": false,\n \"singleQuote\": true,\n \"trail"
},
{
"path": "software/js/packages/example-webserial-timeline/README.md",
"chars": 2103,
"preview": "# Getting Started with Create React App\n\nThis project was bootstrapped with [Create React App](https://github.com/facebo"
},
{
"path": "software/js/packages/example-webserial-timeline/package.json",
"chars": 1570,
"preview": "{\n \"name\": \"example-webserial-timeline\",\n \"version\": \"0.1.0\",\n \"private\": true,\n \"dependencies\": {\n \""
},
{
"path": "software/js/packages/example-webserial-timeline/public/index.html",
"chars": 547,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <link rel=\"icon\" href=\"%PUBLIC_URL%"
},
{
"path": "software/js/packages/example-webserial-timeline/public/robots.txt",
"chars": 67,
"preview": "# https://www.robotstxt.org/robotstxt.html\nUser-agent: *\nDisallow:\n"
},
{
"path": "software/js/packages/example-webserial-timeline/src/App.tsx",
"chars": 22813,
"preview": "import React, {useCallback, useEffect, useMemo, useRef, useState} from 'react'\nimport Typography from '@mui/material/Typ"
},
{
"path": "software/js/packages/example-webserial-timeline/src/index.tsx",
"chars": 835,
"preview": "import React from 'react'\nimport ReactDOM from 'react-dom/client'\nimport {App} from './App'\nimport '@fontsource/roboto/3"
},
{
"path": "software/js/packages/example-webserial-timeline/src/react-app-env.d.ts",
"chars": 40,
"preview": "/// <reference types=\"react-scripts\" />\n"
},
{
"path": "software/js/packages/example-webserial-timeline/src/types.tsx",
"chars": 103,
"preview": "export type VideoInfo = {\n totalFrames: number\n frameRate: number\n boundaryFrames: number[]\n}\n"
},
{
"path": "software/js/packages/example-webserial-timeline/src/util.ts",
"chars": 1205,
"preview": "export const exhaustiveCheck = (x: never): never => {\n throw new Error(`Unexpected value: ${x}`, x)\n}\n\nexport const i"
},
{
"path": "software/js/packages/example-webserial-timeline/tsconfig.json",
"chars": 569,
"preview": "{\n \"compilerOptions\": {\n \"target\": \"es6\",\n \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n \"allowJs\":"
},
{
"path": "software/js/packages/smartknobjs-core/.eslintrc",
"chars": 473,
"preview": "// .eslintrc\n{\n \"parser\": \"@typescript-eslint/parser\",\n \"parserOptions\": {\n \"ecmaVersion\": 12,\n \"sou"
},
{
"path": "software/js/packages/smartknobjs-core/.prettierrc",
"chars": 197,
"preview": "{\n \"printWidth\": 120,\n \"tabWidth\": 4,\n \"useTabs\": false,\n \"semi\": false,\n \"singleQuote\": true,\n \"trail"
},
{
"path": "software/js/packages/smartknobjs-core/package.json",
"chars": 714,
"preview": "{\n \"name\": \"smartknobjs-core\",\n \"version\": \"1.0.0\",\n \"description\": \"SmartKnob Interface Core\",\n \"main\": \"di"
},
{
"path": "software/js/packages/smartknobjs-core/src/cobs.ts",
"chars": 999,
"preview": "// Based on https://github.com/tcr/node-cobs/blob/master/index.js\n\nexport function encode(buf: Uint8Array) {\n const d"
},
{
"path": "software/js/packages/smartknobjs-core/src/index.ts",
"chars": 6130,
"preview": "import {encode as cobsEncode, decode as cobsDecode} from './cobs'\nimport * as CRC32 from 'crc-32'\n\nimport {PB} from 'sma"
},
{
"path": "software/js/packages/smartknobjs-core/tsconfig.json",
"chars": 10914,
"preview": "{\n \"compilerOptions\": {\n /* Visit https://aka.ms/tsconfig.json to read more about this file */\n\n /* Pro"
},
{
"path": "software/js/packages/smartknobjs-node/.eslintrc",
"chars": 473,
"preview": "// .eslintrc\n{\n \"parser\": \"@typescript-eslint/parser\",\n \"parserOptions\": {\n \"ecmaVersion\": 12,\n \"sou"
},
{
"path": "software/js/packages/smartknobjs-node/.prettierrc",
"chars": 197,
"preview": "{\n \"printWidth\": 120,\n \"tabWidth\": 4,\n \"useTabs\": false,\n \"semi\": false,\n \"singleQuote\": true,\n \"trail"
},
{
"path": "software/js/packages/smartknobjs-node/package.json",
"chars": 771,
"preview": "{\n \"name\": \"smartknobjs-node\",\n \"version\": \"1.0.0\",\n \"description\": \"SmartKnob Interface Library for Node.js\",\n"
},
{
"path": "software/js/packages/smartknobjs-node/src/index.ts",
"chars": 607,
"preview": "import SerialPort = require('serialport')\nimport {MessageCallback, SmartKnobCore} from 'smartknobjs-core'\n\nexport class "
},
{
"path": "software/js/packages/smartknobjs-node/tsconfig.json",
"chars": 10914,
"preview": "{\n \"compilerOptions\": {\n /* Visit https://aka.ms/tsconfig.json to read more about this file */\n\n /* Pro"
}
]
// ... and 15 more files (download for full content)
About this extraction
This page contains the full source code of the scottbez1/smartknob GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 215 files (3.4 MB), approximately 902.3k tokens, and a symbol index with 126 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.