

ST1S14PHR 3V3 3A
My private KiCad repository with symbols, 3D models (most of the models are delivered by the part manufacturer), and footprints for my projects.
- Copper layers
- 4
- Thickness
- 1.58 mm
- Parts
- 21
- Nets
- 10
- Pads
- 50
- Tracks, vias
- 33, 35
- Pours
- 5
- Routed
- Yes
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 29 Oct 2020
- Updated
- 16 Oct 2026
Overview
ST1S14PHR 3V3 3A is an open-source printed circuit board by Kampi, from the Kampi/KiCad repository on GitHub. It is a 4-layer board with 21 parts on 10 nets, routed with 33 tracks and 35 vias.
It is built around the ST1S14PHR and STPS3L60U. Its parts include 9 capacitors, 5 resistors, 2 diodes, 1 IC and 1 inductor.
Main components
2README
README.mdKiCad
Table of Contents
- KiCad
About
My private KiCad repository with symbols, 3D models (most of the models are delivered by the part manufacturer, GrabCAD, 3D ContentCentral or SnapEDA), and footprints for different projects.
Please write an e-mail to DanielKampert@kampis-elektroecke.de if you have any questions.
Setup
Required Tools
| Tool | Version | Needed for |
|---|---|---|
| KiCad | 10.0 or later | Schematic and PCB design, kicad-cli for ERC/DRC. The template files and the PCB pipeline use KiCad 10 |
| Git | Current version | Repository handling, init scripts, releases |
| Python 3 | 3.8 or later | JSON processing in init-project.sh, file updates in the create-dev-branch and create-release skills |
| Bash | 4.0 or later | init-project.sh, project scripts and the create-dev-branch and create-release skills (Git Bash or WSL on Windows) |
| PowerShell | 5.1 or later | init-project.ps1 (Windows only) |
| curl | Current version | License download in init-project.sh |
GitHub CLI (gh) | Current version | Pushing with the logged in GitHub user in the create-dev-branch and create-release skills, watching pipelines and reading releases in the create-release skill |
| Visual Studio Code | Current version | Running the create-dev-branch and create-release skills |
| GitHub Copilot | Copilot subscription | Agent mode for the create-dev-branch and create-release skills |
| KiBot | Optional | Local output generation with kibot_launch.sh (the CI/CD pipeline uses its own container) |
Setup Instructions
1. Install the Tools
Linux (Debian/Ubuntu):
sudo apt update
sudo apt install git python3 curlInstall KiCad from the KiCad download page and the GitHub CLI by following the official installation instructions. The distribution packages of both tools are often outdated.
Windows (PowerShell):
winget install --id KiCad.KiCad
winget install --id Git.Git
winget install --id Python.Python.3.12
winget install --id GitHub.cli
winget install --id Microsoft.VisualStudioCodeAdd the bin directory of KiCad (e.g. C:\Program Files\KiCad\10.0\bin) to the PATH, so that kicad-cli can be found.
Verify the installation:
git --version
python3 --version
kicad-cli version
gh --version2. Clone the Repository
The template and the plugins are included as Git submodules, so clone the repository recursively:
git clone --recurse-submodules https://github.com/Kampi/KiCadFor an existing clone, fetch the submodules with git submodule update --init --recursive.
3. Set the KICAD_LIBRARY Environment Variable
Create an environment variable with the name KICAD_LIBRARY and set it to the location of the repository.
Linux/macOS:
echo 'export KICAD_LIBRARY="$HOME/Projects/KiCad"' >> ~/.bashrc
source ~/.bashrcWindows (PowerShell):
[Environment]::SetEnvironmentVariable("KICAD_LIBRARY", "C:\KiCad", "User")Restart KiCad and all terminals afterwards.
4. Authenticate Git and the GitHub CLI
git config --global user.name "John Doe"
git config --global user.email "john.doe@example.com"
gh auth login --hostname github.com --git-protocol https --web
gh auth setup-git
gh auth statusgh auth setup-git makes Git use the credentials of the active GitHub CLI account, so git push and gh always use the same account. With several accounts, add them with gh auth login and switch with gh auth switch --user <username>.
5. Configure VS Code and GitHub Copilot
-
Install the GitHub Copilot extension and sign in with your GitHub account
-
Open the generated project folder (not the
KiCadrepository) in VS Code, so that the skills in.github/skills/are found -
Make sure agent skills are enabled (
chat.useAgentSkills, enabled by default) -
Windows only: The skill uses Bash commands. Set Git Bash as the terminal profile for agent commands:
json "chat.tools.terminal.terminalProfile.windows": { "path": "C:\\Program Files\\Git\\bin\\bash.exe" }
Project Initialization Script
The Scripts directory contains initialization scripts for creating new projects from the template:
Scripts/init-project.ps1- Windows PowerShell scriptScripts/init-project.sh- Linux/macOS Bash script
The scripts find the template via the KICAD_LIBRARY environment variable or, if it is not set, relative to their own location.
Project Types
The scripts ask for the project type and keep only the directories, the firmware profile and the GitHub Actions workflows that belong to it:
| No. | Project type | Hardware | Firmware profile | Result |
|---|---|---|---|---|
| 1 | Hardware (default) | Yes | firmware/blank | KiCad project with an empty firmware directory |
| 2 | Hardware with PlatformIO firmware | Yes | firmware/platformio | KiCad project and a PlatformIO project in firmware/ |
| 3 | PlatformIO firmware | No | firmware/platformio | PlatformIO project in firmware/ |
| 4 | ESP-IDF component | No | firmware/esp-idf-component | Component in the repository root |
- PlatformIO profile: ESP32 (
esp32dev) with the ESP-IDF framework. The platformespressif32 @ 7.1.3contains ESP-IDF v6.1. Hardware independent code inlib/is tested on the host with thenativeenvironment - ESP-IDF component profile: Component for ESP-IDF v6.1 or later with
idf_component.yml, an example project inexamples/basicand its ownREADME.mdandCHANGELOG.md. The sources are named after the repository (my-componentbecomesmy_component.h) - Project types without hardware get no KiCad project, no
hw-*workflows and no release skills. The GitLab CI pipelines are not adapted to the project type yet - A component cannot be combined with hardware in one repository, because the component release and the hardware release both use the tag
x.y.z
What the Script Does
- Project metadata: Prompts for project name, board name, designer, email, repository URL, company, main branch, target directory and the project type
- PCB template selection (project types with hardware): Lists the PCB templates from
Template-Project/hardware/and applies the selected one - Project structure: Copies the complete template (hardware, firmware, CAD, 3D print, scripts, GitHub Actions workflows, GitLab CI pipelines and agent skills), removes template artifacts such as backups,
VARIABLES.mdand the Git data of the template, and applies the project type - Renaming: Renames the
hardwaredirectory to the lowercase board name and allTemplate.*files to<BoardName>.* - Metadata: Updates the text variables in the
.kicad_profile (PROJECT_NAME,BOARD_NAME,DESIGNER,COMPANY, release date and revision), the sheet title of the main schematic,kibot_main.yamland the workflow settings - License: Prompts for an open source license (or no license) and downloads the license text
- Placeholders: Replaces all
${...}placeholders in every text file of the project, including the GitLab CI pipelines and the agent skills - Documentation: Creates the AsciiDoc scaffolding in
firmware/docs/(not for the ESP-IDF component) - Git repository: Initializes the repository with the main branch, the remote
origin, the commit message template.github/.commit-msg-templateand an initial commit, and optionally pushes it
Usage
Windows (PowerShell):
cd C:\path\to\KiCad
.\Scripts\init-project.ps1Linux/macOS (Bash):
cd /path/to/KiCad
./Scripts/init-project.shThe script guides you through an interactive setup. Afterwards the target directory contains a fully configured KiCad project. The Bash script checks whether Python 3 is installed and prints installation instructions if it is missing.
Non-Interactive Usage
For automated or scripted usage, you can pipe all inputs to the initialization script using echo:
Windows (PowerShell):
"MyProject`nMyBoard`nJohn Doe`njohn.doe@example.com`nhttps://github.com/user/repo`nMyCompany`nmain`nC:\Projects`n1`n1`n1`nn" | .\Scripts\init-project.ps1Linux/macOS (Bash):
echo -e "MyProject\nMyBoard\nJohn Doe\njohn.doe@example.com\nhttps://github.com/user/repo\nMyCompany\nmain\n/home/$(whoami)/projects\n1\n1\n1\nn" | ./Scripts/init-project.shInput Order:
- Project name (e.g., "MyProject")
- KiCad board name (e.g., "MyBoard", or press Enter to use project name)
- Designer name (e.g., "John Doe")
- Designer email (e.g.,
john.doe@example.com) - GitHub repository URL (e.g.,
https://github.com/user/repo) - username and repository name are extracted automatically - Company name (optional, or press Enter to skip)
- Main branch name (default: "main")
- Target directory (default: current directory)
- Project type selection (1-4, default: "1" for hardware, see Project Types)
- PCB template selection (number, e.g., "1" for first template). Only asked for project types with hardware, leave it out for the types 3 and 4
- License selection (1-11, e.g., "1" for MIT)
- Push to GitHub now (y/N, default: no)
Note: Empty values (just \n or backtick-n in PowerShell) will use the default value for that field.
Directories
The repository contains the following directories and files:
3D: 3D models in STEP format used by the libraryApplications: Additional applications, e.g. the Part-DB integrationDesign-Blocks: KiCad design blocksDrawings: Inventor projects for different 3D modelsFootprints: Part footprintsGitHub: Third-party libraries as Git submodules (Espressif KiCad libraries)Layout: Drawing sheet templatesPlugins: KiCad plugins as Git submodules (KiCad Project Initialization Plugin)Scripts: Project initialization scriptsSymbols: Part symbolsTemplate-Project: Project template (Git submodule)KiCad Workflow.md: Development workflow, version numbering and GitHub workflowAGENTS.md: Project guidelines for AI coding agents (GitHub Copilot, Claude Code, Codex, Cursor and others)..github/copilot-instructions.mdandCLAUDE.mdonly point to it. Rules for single areas are in.github/instructions/
PCB Template Structure
The project template supports multiple PCB stackup configurations through template files. Templates must be placed in the Template-Project/hardware/ directory.
Template Naming Convention
PCB template files must follow this exact naming pattern:
Template - <manufacturer>_<thickness>_<layers>-layer.kicad_pcbComponents:
Template -- Fixed prefix (required)<manufacturer>- PCB manufacturer name (e.g., pcbway, jlcpcb, oshpark)<thickness>- Board thickness with unit (e.g., 1.6mm, 0.8mm, 2.0mm)<layers>- Number of copper layers (e.g., 2, 4, 6)-layer.kicad_pcb- Fixed suffix (required)
Available Templates
Template - pcbway_1.6mm_2-layer.kicad_pcb- PCBWay, 1.6mm thickness, 2 layersTemplate - pcbway_1.6mm_4-layer.kicad_pcb- PCBWay, 1.6mm thickness, 4 layers
Template Selection
During project initialization, the script will:
- Scan the
Template-Project/hardware/directory for all template files - Parse the manufacturer, thickness, and layer count from each filename
- Present an interactive menu with available templates
- Copy the selected template as the base PCB file for the new project and remove the unused templates
Adding Custom Templates
To add a new PCB template:
- Create a KiCad PCB file with your desired stackup and design rules
- Name the file following the convention above
- Place it in the
Template-Project/hardware/directory - The template will automatically appear in the selection menu
Template Requirements:
- Must be a valid
.kicad_pcbfile - Should include appropriate design rules for the manufacturer
- Should contain stackup configuration matching the specified layer count
- Recommended to include manufacturer-specific constraints (trace width, spacing, etc.)
CI/CD Pipelines
The project template contains pipelines for GitHub Actions (Template-Project/.github/workflows/) and GitLab CI (Template-Project/.gitlab/ci/, included by Template-Project/.gitlab-ci.yml).
The GitHub Actions workflows are grouped by a prefix in the file name and in the workflow name, so they are listed together in the Actions view. The initialization script removes the workflows that do not belong to the project type.
| Prefix | Workflow name | Area | Runs for |
|---|---|---|---|
hw- | Hardware / ... | KiCad project | Changes in the hardware directory |
fw- | Firmware / ... | Firmware and components | Changes in the firmware sources |
docs- | Documentation / ... | Documentation | Changes in firmware/docs/ |
common- | Common / ... | All project types | Every push and pull request |
| Pipeline | GitHub Actions | GitLab CI |
|---|---|---|
| PCB | hw-pcb.yaml | pcb.gitlab-ci.yml |
| Changelog check | common-changelog.yaml | changelog.gitlab-ci.yml |
| Documentation | docs-build.yaml | documentation.gitlab-ci.yml |
| Code style check (AStyle) | fw-format.yaml | astyle.gitlab-ci.yml |
| Code style check (West, clang-format) | - | west-clang-format.gitlab-ci.yml |
| PlatformIO firmware | fw-platformio.yaml | - |
| ESP-IDF component | fw-esp-component.yaml | - |
| Component release (ESP-IDF) | fw-esp-component-release.yaml | esp-component-release.gitlab-ci.yml |
PCB
Trigger: Push to dev or a development branch x.y.z_Dev / x.y_Dev, push of a version tag x.y.z, or manual start. The GitHub workflow only runs for branch pushes that change the hardware directory or hw-pcb.yaml. Tag pushes always start it
A push to main or master does not start the GitHub workflow. The main branch only receives releases, and a release is built by its tag. The GitLab pipeline still runs for main and master (except changes to *.md)
A branch x.y_Dev only triggers the build. Releases always use the three-part version scheme x.y.z
Generates the hardware outputs with KiBot in the kicad10_auto_full container:
- Variant-based builds: Uses the variant from
kibot_variant. Tag pushes always useRELEASED - Outputs: Schematic PDF, Gerbers, drill files, BoM, assembly documents, 3D renders and reports. The outputs are uploaded as workflow artifact (GitLab: job artifact) and not committed. Only the netlist XML is pushed back to the branch, because the next run reads the sheet titles from it
- ERC/DRC checks: Only for the
CHECKEDandRELEASEDvariants - BoM check:
scripts/python/check-bom.pycompares the generated BoM (CSV and XLSX) with the schematic. The check fails when a fitted component is missing in the BoM, when the BoM lists a component that is not fitted or excluded from the BoM, or when the CSV and the XLSX BoM differ. A failed check is reported as error, but does not stop the pipeline or the release: GitHub shows an error annotation for the stepCheck BoM against schematic, GitLab marks the jobpcb:check_bomas failed with a warning. The report lists the components that are not expected in the BoM by reason (DNP, test points, mounting holes, ...) and is shown in the job summary (GitLab:bom_check.mdin the artifact ofpcb:check_bom). The result is also stored as Markdown checklist<board>-bom_check.mdnext to the BoM, so it is part of the artifact and the release. The checklist contains the automatic checks and the components for the manual review - Cost analysis: Runs KiCost with the distributor API keys. Missing keys do not fail the pipeline
- Release (tag pushes only): Updates
CHANGELOG.mdon the main branch, creates the GitHub/GitLab release with the outputs as ZIP file and publishes the outputs to GitHub/GitLab Pages. GitHub Pages is only updated by releases, so it always shows the state of the latest release
Variants:
DRAFT: Schematic only, generates PDF, netlist and BoM (skips ERC/DRC)PRELIMINARY: Full outputs without ERC/DRC. Set by thecreate-dev-branchskillCHECKED: Full outputs with ERC/DRC. Set by thecreate-releaseskillRELEASED: Full outputs with ERC/DRC, automatically used for version tags
Enclosed components:
Components that are not assembled, but supplied loose with the board (e.g. jumpers, screws, spacers, cables), are marked with the value Enclosed in the symbol field assembly. The project template offers this field for every symbol. Leave it empty for all other components.
- BoM: Enclosed components stay in the BoM (CSV, HTML and XLSX) and are marked in the column
Assembly. They get their own row, even when an assembled component has the same value and part number - Position file: Enclosed components with a footprint are removed from the position file
- Assembly notes: A note tells the assembler that the components marked as
Enclosedare not populated
Don't set DNP or Exclude from bill of materials for these components, otherwise they are removed from the BoM. A component without a footprint also needs Exclude from board. The field name and the value are set by ASSEMBLY_FIELD and ASSEMBLY_ENCLOSED in hardware/kibot_yaml/kibot_main.yaml
Changelog Check
Trigger: Pull/merge requests targeting main or master, push to main, master or dev
Validates the changelogs of the project. The GitHub workflow checks <board>/CHANGELOG.md, firmware/CHANGELOG.md and CHANGELOG.md (ESP-IDF component) and skips the files that do not exist. The GitLab pipeline checks <board>/CHANGELOG.md:
- The
## [Unreleased]section must exist - Entries must be grouped under
**Added:**,**Changed:**,**Fixed:**or**Removed:** - Each entry must start with a dash and a space
Example:
## [Unreleased]
**Added:**
- New feature description (#12)
**Fixed:**
- Bug fix description (#13)Documentation
Trigger: Push to main or master and pull/merge requests that change firmware/docs/** or the pipeline file, or manual start
- Converts all AsciiDoc files in
firmware/docs/to HTML and PDF and generates a landing page - Publishes the result to GitHub/GitLab Pages
Code Style Check
Trigger: Pull/merge requests, push to main, master or dev, or manual start. The GitHub workflow only runs when C/C++ sources, scripts/ or the workflow file change
- Builds AStyle and runs
scripts/bash/check-format.shin dry-run mode. Style violations are reported, files are not changed - The GitHub workflow checks the directories from
source_dirs(firmware, for the ESP-IDF componentsrc include examples). Without arguments the script checkssrcandinclude - GitLab only:
west-clang-format.gitlab-ci.ymlchecks Zephyr/West based firmware with clang-format instead of AStyle. It runsscripts/bash/check-clang-format.shfor the directories fromSOURCE_DIRS(firmware). The job only exists in repositories with a West manifest (west.yml), a West workspace is not needed - The style for Zephyr/West based firmware is stored in
scripts/config/.clang-format: the rules of the Zephyr project with an indentation of 4 spaces instead of tabs. Copy the file as.clang-formatto the root of the West application, then clangd and clang-format use it in the editor. It requires clang-format 16 or later - A West based project is checked by both GitLab jobs. Remove
astyle.gitlab-ci.ymlfrom theinclude:list of.gitlab-ci.ymlin such a project, because the AStyle rules differ from the clang-format rules
PlatformIO Firmware
Trigger: Pull requests and pushes to main, master, dev or a development branch that change firmware/ or the workflow file, or manual start
Builds, tests and checks the PlatformIO project in firmware/ (GitHub Actions only):
- Build: Reads the environments from
platformio.iniand builds every environment except the ones with thenativeplatform as a matrix. The firmware images (*.bin,*.elf) are uploaded as workflow artifact - Unit tests: Runs
pio test -e nativeon the host - Static analysis: Runs
pio check(cppcheck) for every target environment and fails on defects of medium or high severity
The firmware has no release pipeline. A version tag x.y.z starts the hardware release only.
ESP-IDF Component
Trigger: Pull requests and pushes to main, master, dev or a development branch (except changes to *.md), or manual start
Builds and validates the component in the repository root (GitHub Actions only):
- Build: Builds every example in
examples/in theespressif/idfDocker image for each combination of the matrixidf_version(default:v6.1) andtarget(default:esp32). Add versions or targets to the matrix to cover them - Validation: Packs the component with
compote component pack. This checksidf_component.ymlwithout uploading anything
Component Release
Trigger: Push to main or master (merge of a development branch)
Releases an ESP-IDF component:
- Takes the version from the merge commit (
Merge branch 'x.y.z_Dev') or the branch name - Updates
CHANGELOG.md,CMakeLists.txtandidf_component.yml, commits the changes and pushes the tagx.y.z - Creates the GitHub/GitLab release. The GitHub workflow also uploads the component to the ESP Component Registry
Release Workflow
A hardware release follows the development cycle of the template:
- Create a development branch
x.y.z_Devwith thecreate-dev-branchskill. It branches off the main branch, sets the KiBot variant toPRELIMINARYand prepares the changelog variables for the release - Work on the design and document all changes in the
## [Unreleased]section ofCHANGELOG.md - Create the release with the
create-releaseskill. It merges the development branch into the main branch and pushes the tagx.y.z, which triggers theRELEASEDbuild and the GitHub release
Version Scheme
Releases use exactly three numeric parts x.y.z (major, minor, patch), e.g. 1.2.0. A two-part version like 1.2 is not a valid release version, write it as 1.2.0.
| Item | Format | Example |
|---|---|---|
| Development branch | x.y.z_Dev | 1.2.0_Dev |
| Release version and tag | x.y.z, without prefix or suffix | 1.2.0 |
| Commit of the release preparation | Prepare Release x.y.z | Prepare Release 1.2.0 |
| Changelog variables | RELEASE_TITLE_x.y.z, RELEASE_BODY_x.y.z | RELEASE_TITLE_1.2.0 |
The version is defined once by the name of the development branch. The tag, the commit message and the changelog variables are derived from it and are never entered separately.
The create-dev-branch skill extends a shorter input to this format (1.2 becomes 1.2.0). The create-release skill and the tag trigger of the PCB pipeline only accept this format. With a branch 1.2_Dev the skill stops, and a tag 1.2 or v1.2.0 does not start the release pipeline.
create-dev-branch Skill
The template contains the agent skill create-dev-branch in Template-Project/.github/skills/create-dev-branch/SKILL.md. GitHub Copilot finds it there, Claude Code finds it through the pointer in Template-Project/.claude/skills/create-dev-branch/SKILL.md. The initialization script copies it into every new project and replaces the placeholders (${BOARD_NAME}, ${BOARD_NAME_LOWER}, ${MASTER_BRANCH}) with the project values.
The skill prepares a development branch from any state of the main branch, so that only the design work and the changelog entries are missing before the create-release skill is started. It requires git, python3, an authenticated GitHub CLI and a clean working tree. The branch is pushed with the user that is logged in to the GitHub CLI. Start it in the Agent mode of the Chat view with /create-dev-branch.
- Version: Asks for the version of the next release and extends it to
x.y.z. Stops if the tag or the branch already exists - Main branch: Pulls the main branch (
mainormaster, frommaster_branchinhw-pcb.yaml) - Branch: Creates the development branch
x.y.z_Dev - Production data: Removes the production directory (
kibot_output_pathinhw-pcb.yaml) with the outputs of the previous release. The netlist XML is kept - Variant: Sets
kibot_variantin.github/workflows/hw-pcb.yamltoPRELIMINARY - Changelog variables: Adds a free
x.y.zentry forRELEASE_TITLE_<version>andRELEASE_BODY_<version>to the KiBot configuration and to the revision history sheet. It uses the unused column (${RELEASE_TITLE_...}) following the newest release. If all columns of the table are used, the column of the oldest release is replaced - Commit and push: Commits
Prepare Development Branch for Release x.y.zand pushes the branch after a confirmation
The skill is based on the GitHub Actions workflow hw-pcb.yaml. It does not change the GitLab CI pipelines.
create-release Skill
The template contains the agent skill create-release in Template-Project/.github/skills/create-release/SKILL.md. GitHub Copilot finds it there, Claude Code finds it through the pointer in Template-Project/.claude/skills/create-release/SKILL.md. The initialization script copies it into every new project and replaces the placeholders (${BOARD_NAME}, ${BOARD_NAME_LOWER}, ${MASTER_BRANCH}) with the project values.
The skill is based on the GitHub Actions workflow hw-pcb.yaml and the GitHub CLI. It does not support GitLab CI.
Prerequisites
- All required tools for the skill are installed:
git,python3,kicad-cli(KiCad 10 or later) andgh - The GitHub CLI is authenticated with an account that can push to the repository (
gh auth status). All pushes of the skill are done with this user - The working tree is clean (
git status --porcelainis empty) - The current branch is the development branch
x.y.z_Dev(three parts, see Version Scheme). The release version is always taken from the branch name - The
## [Unreleased]section ofCHANGELOG.mdcontains entries - The tag
x.y.zdoes not exist yet kibot_yaml/kibot_pre_set_text_variables.yamland the revision history sheet contain a freex.y.zentry for the changelog variables, or already the entries for the release version
Usage of the Skill
-
Open the project in VS Code and check out the development branch, e.g.
1.2.0_Dev -
Open the Chat view and select Agent mode
-
Start the skill with the slash command or a prompt:
text /create-releasetext Create the release for the current development branch. -
Confirm the summary (version, development branch, main branch) before the skill pushes anything
The skill stops at the first failing step and reports the error. It never deletes or moves a tag without asking.
What the Skill Does
- Checks: Validates the branch name, the project files, the
envsection ofhw-pcb.yaml, the changelog and the tag - ERC and DRC: Runs
kicad-cli sch ercandkicad-cli pcb drc(with schematic parity). Errors abort the release, warnings do not - Changelog variables: Sets the free
x.y.zentries forRELEASE_TITLE_<version>andRELEASE_BODY_<version>in the KiBot configuration and in the revision history sheet to the release version - Variant: Sets
kibot_variantin.github/workflows/hw-pcb.yamltoCHECKED - Commit and push: Commits
Prepare Release x.y.zand pushes it to the development branch - KiBot pipeline: Waits for the
Hardware / PCB Dataworkflow of the commit withgh run watch - Merge: Pulls the netlist XML generated by the pipeline and merges the development branch into the main branch
- Tag: Creates the tag
x.y.zand pushes the main branch and the tag atomically - Release pipeline: Waits for the run of the tag, which builds the release, and reports the URL of the GitHub release. Only this run decides whether the release was successful. The push of the main branch starts no run
- Pull: Pulls the main branch (
mainormaster, frommaster_branchinhw-pcb.yaml) to get the released state with the updatedCHANGELOG.md
Files Changed by the Skill
| File | Change |
|---|---|
<board>/kibot_yaml/kibot_pre_set_text_variables.yaml | Changelog variables of the release version |
<board>/Revision History.kicad_sch | Changelog variables in the revision history table |
.github/workflows/hw-pcb.yaml | kibot_variant set to CHECKED |
GitHub Secrets Configuration
Add the secrets in the repository settings under Settings > Secrets and variables > Actions.
| Secret Name | Used In | Description | Required |
|---|---|---|---|
MOUSER_KEY | hw-pcb.yaml | Mouser API key for the KiCost price lookup | Optional |
DIGIKEY_KEY | hw-pcb.yaml | DigiKey API key for the KiCost price lookup | Optional |
TME_KEY | hw-pcb.yaml | TME API key for the KiCost price lookup | Optional |
RS_KEY | hw-pcb.yaml | RS API key for the KiCost price lookup | Optional |
FARNELL_KEY | hw-pcb.yaml | Farnell API key for the KiCost price lookup | Optional |
IDF_COMPONENT_REGISTRY_TOKEN | fw-esp-component-release.yaml | Token for the upload to the ESP Component Registry | Required for ESP-IDF components |
GITHUB_TOKEN is provided automatically. The workflows use it to push the netlist and the changelog, to create releases and to deploy GitHub Pages. For the Pages deployment set Settings > Pages > Source to GitHub Actions.
GitLab CI/CD Variables
Add the variables in the project settings under Settings > CI/CD > Variables and mark them as masked.
| Variable Name | Used In | Description | Required |
|---|---|---|---|
WORKFLOW_PAT | pcb.gitlab-ci.yml, esp-component-release.gitlab-ci.yml | Personal access token with the scopes api and write_repository to push commits and tags and to create releases | Required |
MOUSER_KEY | pcb.gitlab-ci.yml | Mouser API key for the KiCost price lookup | Optional |
DIGIKEY_KEY | pcb.gitlab-ci.yml | DigiKey API key for the KiCost price lookup | Optional |
TME_KEY | pcb.gitlab-ci.yml | TME API key for the KiCost price lookup | Optional |
RS_KEY | pcb.gitlab-ci.yml | RS API key for the KiCost price lookup | Optional |
FARNELL_KEY | pcb.gitlab-ci.yml | Farnell API key for the KiCost price lookup | Optional |
How to Obtain API Keys
Only the Mouser API is enabled in kibot_yaml/kicost_config_local.yaml of the template. Enable further distributors there before you add their keys.
Mouser API Key:
- Register at Mouser Electronics
- Navigate to API Hub
- Request access to the Search API and copy the key
DigiKey API Key:
- Register at the DigiKey API Portal
- Create an application and copy the client ID and the client secret
ESP Component Registry Token:
- Log in to the ESP Component Registry
- Navigate to your profile settings
- Generate an API token for component uploads
Part-DB
Notes for using Part-DB as KiCad HTTP library. The examples use the hostname inventory.lan and the server address 192.168.178.103, replace them with your own values.
Part Links with a Hostname
Part-DB builds the links of a part (fields datasheet and Part-DB URL) from the host KiCad uses for the request. A library that calls Part-DB by its IP address gets links like http://192.168.178.103:8980/de/part/109/info.
Use the hostname in the root_url of the .kicad_httplib file to get links with the hostname:
"root_url": "https://inventory.lan/de/kicad-api/",Symbols that are already placed keep the old link, because it is stored in the symbol. Update them in the schematic editor with Tools > Update Symbol Fields from Library.
Resolve the Hostname on Windows
KiCad can not load the library if Windows does not resolve the hostname. This happens when the router announces itself as additional DNS server via IPv6 and does not know the local name, even if the local DNS server does. Check it with:
Resolve-DnsName inventory.lanIf no address is returned, add the name to the hosts file. The file can only be written with administrator rights, the command starts an elevated PowerShell for it:
Start-Process powershell -Verb RunAs -ArgumentList '-NoProfile -Command "Add-Content $env:SystemRoot\System32\drivers\etc\hosts ''192.168.178.103 inventory.lan''"'ping inventory.lan must show the address of the server afterwards. Restart KiCad to load the library again.
The entry is only valid for this computer. For all devices in the network, stop the router from announcing itself as DNSv6 server, so only the local DNS server is used.
create-partdb-part Skill
The agent skill create-partdb-part adds a component to Part-DB. It reads the existing parts of the same kind as schema, fetches the datasheet, the image and the prices through the Part-DB info providers and creates the part with parameters, attachments, order details and stock lot. It never deletes or changes existing parts.
The skill asks before it guesses:
- Info source: Always asks whether the data comes from an active info provider of Part-DB (e.g. Mouser) or from another source
- Part number: Checks that the info source knows exactly this number and that the values coded in it match. Asks when the number is not found, ambiguous or contradicting
- Assignment: Asks when the category, the footprint, the manufacturer or the storage location is not clear from the existing parts
- Symbol and footprint: Uses the symbol and the footprint of the own KiCad library when they exist there, and only falls back to the libraries shipped with KiCad for what is missing. Asks when several own symbols or footprints fit
- Label: Generates a label with the label profile of Part-DB that fits the kind of the part. Asks when no profile or several profiles fit
- Printer: Always asks on which installed printer the label is printed
Ask the agent for it in the chat, e.g. Add the part CR0805-JW-182ELF to Part-DB.
The skill reads the server and the token from the environment. Variables that are not set there are read from the file .partdb.env in the root of this repository. The file is ignored by Git and contains one NAME=value per line:
PARTDB_URL=https://inventory.lan
PARTDB_TOKEN=<API token>| Variable | Description |
|---|---|
PARTDB_URL | Base URL of the Part-DB server, without /api |
PARTDB_TOKEN | API token with the level edit. Create it in Part-DB in the user settings under the API tokens. The token of the KiCad library is read-only and not sufficient |
PARTDB_INSECURE | 1 if the server uses a self-signed certificate |
Resources
Maintainer
Parts
21| Qty | Value | Footprint | References |
|---|---|---|---|
| 3 | 100n | Capacitor_SMD:C_0402_1005Metric | C903, C905, C908 |
| 3 | ~ | Testpoints_Kampi:TestPoint_Pad_1.0x1.0mm | TP901, TP903, TP904 |
| 2 | 100k | Resistor_SMD:R_0402_1005Metric | R901, R902 |
| 2 | 10u | Capacitor_SMD:C_0805_2012Metric | C901, C902 |
| 1 | 10u | Inductor_SMD:L_Wuerth_HCI-7050 | L901 |
| 1 | 150R | Resistor_SMD:R_0402_1005Metric | R904 |
| 1 | 150p | Capacitor_SMD:C_0402_1005Metric | C906 |
| 1 | 33p | Capacitor_SMD:C_0402_1005Metric | C909 |
| 1 | 470u | Capacitor_SMD:CP_Elec_6.3x7.7 | C907 |
| 1 | 48k7 | Resistor_SMD:R_0402_1005Metric | R906 |
| 1 | 68n | Capacitor_SMD:C_0402_1005Metric | C904 |
| 1 | 82k5 | Resistor_SMD:R_0402_1005Metric | R905 |
| 1 | Power Good | LED_SMD:LED_0805_2012Metric | LED901 |
| 1 | ST1S14PHR | Package_SO:HSOP-8-1EP_3.9x4.9mm_P1.27mm_EP2.41x3.1mm | IC901 |
| 1 | STPS3L60U | Diode_SMD:D_SMB | D901 |
Questions
What parts does the ST1S14PHR 3V3 3A use?
21 parts, built around the ST1S14PHR and STPS3L60U. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the ST1S14PHR 3V3 3A KiCad files?
From the Kampi/KiCad repository on GitHub, at the commit this page was made from: the board is Design-Blocks/Buck-Converter.kicad_blocks/ST1S14PHR_3V3_3A.kicad_block/ST1S14PHR_3V3_3A.kicad_pcb and its schematic Design-Blocks/Buck-Converter.kicad_blocks/ST1S14PHR_3V3_3A.kicad_block/ST1S14PHR_3V3_3A.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the ST1S14PHR 3V3 3A design in my own project?
Its repository states no licence, so its author keeps all rights: ask Kampi before reusing the design.
Similar boards
- 2 layers75 × 80 mm

- 4 layers256.9 × 96.2 mm

- 2 layers40.1 × 40.1 mm

- 4 layers100 × 50 mm

- 4 layers100 × 100 mm

Cheap version
nikolajevs/ai
Открыть PCBV1.kicadpro в KiCad 10. После обновления репозитория перечитать открытый проект с диска перед сохранением.
170 parts - 4 layers103 × 57 mm

- 4 layers26.7 × 21.9 mm

Buck Converter
murexrobotics/electrical
Highly integrated electronics design and printed circuit boards (PCBs) for the MATE ROV Competition. Attempt the impossible.
21 parts192MIT - 4 layers26 × 30 mm

Day 01 Wi Fi Halow
i2cjak/Framework_Expansion_Cards
In which i2cjak creates a new expansion card design every day until he is given a NICE Framework laptop
21 parts95CERN-OHL-P-2.0