

Softswitcher module sw4
HybridSwitcher — ハイブリッドIP映像スイッチャー(開発用リポジトリ)
- Size
- 40 × 100 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 21
- Nets
- 34
- Pads
- 115
- Tracks, vias
- 228, 82
- Pours
- 3
- Routed
- Yes
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 28 Jul 2026
- Updated
- 15 Oct 2026
Overview
Softswitcher module sw4 is an open-source printed circuit board by oldsheeep3, from the oldsheeep3/TheHack repository on GitHub, published under the GPL-2.0 licence. It is a 2-layer board of 40 × 100 mm with 21 parts on 34 nets, routed with 228 tracks and 82 vias.
It is built around the XC6206P332MR-G and SK6812MINI-E. Its parts include 6 connectors, 4 diodes, 4 switches, 3 capacitors and 2 ICs. It belongs with the RISC-V boards of this library.
Main components
2README
README.mdHybridSwitcher — ハイブリッドIP映像スイッチャー
既存機材(ATEM Mini)と自作ハードウェア(自作スイッチングモジュール群 + Pico 2W)、 ネットワーク技術(SRT / NDI / WebAPI)を融合した、次世代のハイブリッドIP映像スイッチャーシステム。
PC上に常駐する制御アプリを「脳」とし、複数プロトコル(UVC / NDI / SRT)の映像入力・PiP合成・ 仮想カメラ出力・タリー送出・外部機材(ATEM)の遠隔制御を一元化する。DIYでありながらプロ用 スイッチャーに匹敵する多人数オペレーション(メイン/サブ分業)と拡張性を目指す。
全体仕様は
docs/specs/00-system-overview.md(親仕様書)を参照。
システム構成
[ サブ ATEM Mini ] ──(SRT/HDMI/NDI)──→ [ メインPC (常駐App) ] ──(仮想WebCam/HDMI)──→ [ 配信/録画/OBS等 ]
▲ ▲ │
│ (ATEM遠隔制御: UDP 9910) │ │ (UDPタリー: 9999 ブロードキャスト)
└────────────────────────────────────┘ ▼
▲ [ ワイヤレスタリー子機(ESP32) ] [ 赤/緑 LED ]
│ (WebSocket / WebAPI: 8080)
(USB/HID/Serial)
[ 自作コントローラー: Pico 2W ] ──┬── (USB直結) ──→ メインPC
│ └── (USB-OTG) ──→ [ スマホ (Web App) ] ──(Wi-Fi/WebSocket)──→ メインPC
│
├─(内部制御: 後日詳細化)──→ [ 各スイッチングモジュール内マイコン ]
└─(HDMI DDC/I2Cスニッフィング)──→ [ 物理タリー抽出 ]コンポーネント
| コンポーネント | 場所 | 技術 | 責務 | 個別README / 仕様書 |
|---|---|---|---|---|
| PC常駐アプリ | src/ | C# / .NET 9 + libobs(P/Invoke) | 映像入力デコード・PiP合成・仮想カメラ/HDMI出力・WebAPI/WebSocket・UDPタリー送出・ATEM制御 | App / 仕様 / 移行 |
| ネイティブ映像エンジン | native/switcher-engine/ | C/C++ + libobs (GPLv2) | libobs を駆動する IVideoEngine の実体(デュアルM/E=obs_view×2・ソース共有・出力・マルチビュー) | switcher-engine |
| Pico 2W コントローラー | firmware/pico2w-controller/ | Pico SDK (C/C++) | 物理ボタン入力→PC/スマホ送信・モジュール統括・HDMI DDCタリー抽出 | Firmware / 仕様 |
| スマホWebブリッジ | apps/phone-bridge/ | React / TypeScript | Web Serial/WebUSBでPico 2Wを中継・ブラウザ設定UI | phone-bridge / 仕様 |
| ワイヤレスタリー子機 | (未着手) | ESP32 (Arduino/ESP-IDF) | UDPブロードキャスト受信→赤/緑LED点灯 | 仕様 |
PC常駐アプリの .NET プロジェクト構成(src/)
| プロジェクト | 役割 |
|---|---|
Switcher.Contracts | 共通インターフェース・DTO(IVideoEngine 抽象を含む契約層) |
Switcher.Engine | IVideoEngine の実体。ネイティブ switcher-engine(libobs) への P/Invoke + テスト用 FakeVideoEngine |
Switcher.Atem | ATEM遠隔制御クライアント(UDP 9910) |
Switcher.Web | WebAPI/WebSocketサーバ・UDPタリーブロードキャスト |
Switcher.App | WPFホスト。上記を1つの常駐プロセスに結線するDI合成ルート |
libobs 移行: 旧
Switcher.Media(GStreamer/DirectX 合成) /Switcher.VirtualCam(自作仮想カメラ) は廃止し、映像パスは libobs に一本化した(docs/specs/libobs-engine-migration.md)。ネイティブswitcher-engine.dllは Windows + OBS でのみビルド/実行し、.slnには含まない(テストはFakeVideoEngine注入でヘッドレス実行)。
リポジトリ構成
.
├── src/ # PC常駐アプリ (.NET 9) — HybridSwitcher.sln
├── native/switcher-engine/ # ネイティブ映像エンジン (C/C++ + libobs, CMake, .sln外)
├── tests/ # 上記各プロジェクトのユニットテスト
├── apps/phone-bridge/ # スマホWebブリッジ & 設定UI (React/TS)
├── firmware/pico2w-controller/# Pico 2W コントローラー / タリー抽出ファーム
├── docs/
│ ├── specs/ # 仕様書(親仕様書 + コンポーネント別)
│ └── tasks/ # マルチエージェント実装計画・タスク指示書
├── softswitcher*/ # 既存KiCadハードウェア設計(参考資産)
└── HybridSwitcher.sln # .NET ソリューションセットアップ(clone 直後に一度)
./setup.sh # 共通(.NET / phone-bridge / firmware).\setup.ps1 # Windows で映像エンジンまで動かす場合(追加で実行)clone しただけの状態では、次の理由で初回ビルドが必ず落ちる。setup.sh がこれを一括で潰す。
| 落ちる理由 | setup.sh の対応 |
|---|---|
dotnet / node が ~/.bashrc 経由でしか PATH に乗らない(非ログインシェル・CI では不在) | DOTNET_ROOT と nvm を解決して検証。--install-missing で .NET SDK を ~/.dotnet に導入 |
firmware/switcher-module/ch32v003fun サブモジュールが未初期化 | git submodule update --init --recursive |
scripts → .claude/scripts のリンク切れ(.claude は gitignore) | .claude を取得してリンクを復旧(失敗しても警告のみ。ビルドには不要) |
| NuGet / npm の依存が未取得 | dotnet restore と npm ci(CI と同じ lock 厳守) |
主なオプション(何度実行しても同じ結果になる):
| オプション | 用途 |
|---|---|
--check | 検証のみ。取得も生成もせず状態を報告する |
--ci | 対話なし。.env を作らず、サブモジュールと .claude を触らない |
--install-missing | .NET SDK が無ければ dotnet-install.sh で導入する |
--skip-submodules / --skip-restore / --skip-npm / --skip-agent-scripts | 個別スキップ |
未解決の問題が残ると終了コード 1 で終わるので、CI からそのまま呼べる(./setup.sh --ci)。
Windows でネイティブ映像エンジンまで用意する(setup.ps1)
Visual Studio で F5 したときの DllNotFoundException / 0x8007007E は、ネイティブの switcher-engine.dll が未ビルドなことが原因。この DLL は .sln 外の CMake ビルドで、さらにその手前に libobs の import lib obs.lib が要る。obs.lib は OBS のインストーラには含まれず、OBS 本体をソースからビルドしないと手に入らない。
setup.ps1 はその依存の連鎖を通しで面倒を見る。
インストール済み OBS を検出 → 同じ版の obs-studio を clone
→ libobs だけビルド → obs.lib
→ .env に LIBOBS_* を記録
→ build.bat → switcher-engine.dll
→ Switcher.App.csproj が App 出力へ自動コピー(既存の仕組み)| オプション | 用途 |
|---|---|
-Check | 検証のみ。clone もビルドも .env の書き換えもしない |
-ObsVersion <version> | 使う OBS の版を明示する |
-Force | obs-studio\ を作り直す(版を切り替えるとき) |
-Bundle | tools/bundle-obs-runtime.ps1 を呼び、App 出力に obs-runtime\ を同梱する |
-SkipLibobs / -SkipEngine | 個別スキップ |
初回は数十分かかる(obs-studio の clone が数 GB、libobs のビルドがその後)。2 回目以降は済んだ工程を飛ばす。
バージョンは固定していない。 マネージド側(ObsRuntime.cs)は libobs 30.0〜32.99 を受け入れ、範囲外でも警告を出すだけで拒否しない。setup.ps1 もそれに合わせ、インストール済み OBS の版を検出してその版のソースをビルドする。OBS が入っていない場合だけ既定の 32.0.4(実機検証済み)を使う。
⚠️
obs.lib(ビルド時)とobs.dll(実行時)の版が食い違うと起動失敗・クラッシュする。バージョンを検出に任せるのはこの事故を避けるため。手動で-ObsVersionを指定してインストール済みの版と食い違う場合は警告が出る。
エンドユーザーは OBS のインストールが不要。 ObsRuntime.Locate() は実行ファイルの隣の obs-runtime\ を最優先で見る(ObsRuntime.cs:83-90)ので、-Bundle で同梱した配布物は自己完結する。OBS インストールが要るのはビルドする側だけ。
GPL:
obs-runtime\を同梱した配布物は GPL-2.0 になる。LICENSE/THIRD-PARTY-NOTICES.md参照。
環境変数(.env)
ツールチェーン関連の変数は .env.example をひな形に .env へ書く(setup.sh が無ければ自動生成する)。.env は gitignore 済み。既に export 済みの環境変数が .env より優先されるので、CI の env: / secrets が上書きされることはない。
⚠️
.envに書けるのはビルド/ツールチェーンの変数だけ。アプリの動作設定(AtemIp/WebPort/ProjectorDisplayIndex等)はsrc/Switcher.App/appsettings.jsonをSystem.Text.Jsonが直接読む実装で、環境変数は見ない(Configuration/AppConfigLoader.cs)。
ビルド & テスト
PC常駐アプリ(.NET 9)
./setup.sh済みでも、dotnetが PATH に乗るのは setup.sh の中だけ。呼び出し元のシェルには以下を前置きする。
export DOTNET_ROOT=$HOME/.dotnet PATH=$HOME/.dotnet:$PATH
dotnet build HybridSwitcher.sln # 全プロジェクトのビルド
dotnet test HybridSwitcher.sln # 全ユニットテストSwitcher.App は WPF (net9.0-windows) だが EnableWindowsTargeting によりLinuxでもCIでも
コンパイルは可能。ただしネイティブ switcher-engine(libobs) ランタイムは Windows 限定で、
実行には Windows 10/11 と下記の起動順が必要。
ネイティブ映像エンジン(libobs)のビルド & Windows 実起動 — 起動順
switcher-engine.dll(native/switcher-engine/)は Windows + OBS 専用で .sln 外。以下が検証済みの順序
(詳細は switcher-engine README / L-002 タスク)。
以下は手順の内訳。通常は
setup.ps1が 1〜2 を自動でやるので、手で追う必要があるのは仕組みを確認したいときだけ。
前提: Windows / Visual Studio 2022(「C++によるデスクトップ開発」)/ CMake ≥ 3.24 / インストール済み OBS(版は問わない。libobs 30.0〜32.99 が対象)。
以下はすべて 「x64 Native Tools Command Prompt for VS 2022」 から実行する(cmake/cl に PATH が通る。通常の cmd/PowerShell 不可)。
-
libobs dev files を用意(採用 OBS と同一版のソースをビルド。インストール済み OBS アプリだけではヘッダ/
obs.libが無い)bat git clone --recursive https://github.com/obsproject/obs-studio.git rem <version> はインストール済み OBS に合わせる(obs.dll のファイルバージョン)。 cd obs-studio && git checkout <version> && git submodule update --init --recursive cmake --preset windows-x64 cmake --build build_x64 --config Release --target libobs→
build_x64\libobs\Release\{obs.lib,obs.dll}、生成ヘッダbuild_x64\config\obsconfig.h、公開ヘッダlibobs\。 -
switcher-engine.dllをビルド(リポジトリルートで。ヘッダは公開+生成の2フォルダを;区切りで渡す)bat set OBS=<obs-studio のパス> set LIBOBS_INCLUDE_DIR=%OBS%\libobs;%OBS%\build_x64\config set LIBOBS_LIB=%OBS%\build_x64\libobs\Release\obs.lib native\switcher-engine\build.batSwitcher.App.csprojがビルド時にswitcher-engine.dllを App 出力へ自動コピーする(VS F5/Rebuild でも維持)。 -
App を起動(
obs.dll等を PATH に通してから)- Visual Studio: 構成
Debug/x64→Switcher.Appをスタートアップに → プロパティ「デバッグ」→ デバッグ起動プロファイルUIで環境変数PATH = C:\Program Files\obs-studio\bin\64bit;%PATH%(版一致のインストール済み OBS)→ F5。 - コマンドライン:
bat dotnet build src\Switcher.App\Switcher.App.csproj -c Release set PATH=%OBS%\build_x64\rundir\Release\bin\64bit;%PATH% src\Switcher.App\bin\x64\Release\net9.0-windows\Switcher.App.exe
- Visual Studio: 構成
前提/注意
obs.dll+data\+ プラグイン +libobs-d3d11.dllが PATH 上で到達可能、かつ import lib(obs.lib) と同一版であること(不一致は起動失敗/クラッシュ)。- L-002 未完のうちは
engine_startupがobs_reset_videoで失敗する(libobs データパス未配線。L-002 タスクの「実機検証で判明した実装ポイント」参照)。- ネイティブ抜きで App を動かすなら DI(
src/Switcher.App/Composition/ServiceCollectionExtensions.cs)をFakeVideoEngineに差し替える。
スマホWebブリッジ(React/TS)
cd apps/phone-bridge
npm install
npm run dev # 開発サーバ
npm run build # プロダクションビルド
npm test # vitestPico 2W ファームウェア
I/Oに依存しないロジックはホストの gcc でユニットテスト可能(Pico SDK不要)。
cd firmware/pico2w-controller/test
make # ビルド + 実行(全テスト green で終了コード0)実機向けクロスビルド(Pico SDK / arm-none-eabi ツールチェーン必要)は
firmware/pico2w-controller/README.md を参照。
CI(GitHub Actions)
.github/workflows/ci.yml が 全 PR(タスク → 親Epic の PR も含む)と
main / develop への push で走る。すべて ubuntu-latest。
| ジョブ | 内容 |
|---|---|
.NET | dotnet build -c Release -warnaserror → dotnet format --verify-no-changes → dotnet test(結果 .trx をアーティファクト化) |
phone-bridge | npm ci → npm run lint(eslint) → npm run build(tsc -b 型チェック + vite) → npm test(vitest)、dist/ をアーティファクト化 |
firmware | firmware/pico2w-controller/test と firmware/switcher-module/test のホストテスト(gcc、-Werror) |
ブランチ保護の必須チェックには集約ジョブ All checks 1つを指定すればよい。
CI が走るのは個人リポジトリ(public)だけ。 ミラー先の NxTEND-THE-HACK/2026-Team-38 は
Free org の private リポジトリで Actions のランナーが割り当てられず、どのジョブも 0 ステップの
まま即座に失敗する(ワークフロー側の問題ではなく org の Actions 枠の問題で、修正には org 管理者
による支払い設定・repo の public 化・セルフホストランナー登録のいずれかが要る)。そのため全ジョブに
if: github.repository_owner != 'NxTEND-THE-HACK' を付けて向こうでは skip させている。ジョブレベルの
if はランナー要求より前に評価されるので、skip されたジョブは失敗扱いにならない。
CI 対象外(ローカル/Windows でのみ検証可能):
native/switcher-engine(libobs 依存・Windows + OBS 専用・.sln外)と、それを要する App の実起動web/build-preview.ps1(Windows PowerShell 前提のパス処理)apps/phone-bridgeの Prettier 整形チェック(既存ファイルが未整形のため未導入。npm run formatで一括整形後に追加可能)
ミラー(個人リポジトリ → ハッカソン用リポジトリ)
開発を個人アカウントの public リポジトリ(oldsheeep3/TheHack)で行い、ハッカソン用 private
リポジトリ(NxTEND-THE-HACK/2026-Team-38)へ push のたびに反映する。片方向(個人 → ハッカソン用)。
ミラー先へ書けるトークンは GitHub に預けない。 実際に push するのは tailnet 上の VPS(gh
ログイン済み)で、自分の資格情報を使う。GitHub Actions はその VPS に SSH して起動をかけるだけ
なので、この public リポジトリに置く secret は tailnet への参加情報と SSH 鍵だけで済む。
.github/ を含め、履歴をそのまま送る(コミット SHA も個人リポジトリ側と一致する)。ミラー先では
CI を走らせないよう、ci.yml と mirror.yml
の両方がリポジトリのオーナーを見てジョブを skip する。
手元 ── git push origin ──→ oldsheeep3/TheHack (public)
├ Actions: ci.yml(green になったら↓を起動)
└ Actions: mirror.yml
├ tailscale/github-action で tailnet に参加
└ ssh ──→ VPS: mirror-sync <branch>
├ 個人リポジトリから fetch(~/mirror/TheHack.git)
└ mirror.sh … mirror/X を push + PR 作成 + マージ
↓
NxTEND-THE-HACK/2026-Team-38 (private)ブランチ X を push すると:
- まず CI が走り、green で終わったときだけミラーが起動する(
workflow_runトリガー)。 赤い場合・CI が走らないブランチは、直さない限りミラーされない .github/workflows/mirror.ymlが tailnet に ephemeral ノードとして参加し、 VPS へ SSH してmirror-sync Xを実行する(CI が通ったXだけが対象)- VPS が個人リポジトリから
Xを fetch し、tools/mirror/mirror.shを呼ぶ - ミラー先の
mirror/X(ミラー専用ブランチ)へ push mirror/X→Xの PR を作成(既にオープンならそれを使う)し、マージコミットでマージする
起点が GitHub 側にあるので、どのマシンから push しても(GitHub 上で直接編集しても)ミラーされる。 同期するのは CI が通ったそのブランチだけ。全ブランチ + 全タグをまとめて送るのは手動実行のとき。
ミラー先の main / develop へ直接 push も force push もしない。force は「手元で rebase / amend して
mirror/X が fast-forward できなくなった」場合のフォールバックとして mirror/* に対してのみ使う。
ミラー先の ref を削除することはないので、ブランチ削除は同期されない。
Actions が使えないとき(ワークフローの失敗、tailnet の不調、初回の一括コピー)は VPS 側で
mirror-sync を直接実行すれば追いつく。
| 場所 | もの | 役割 |
|---|---|---|
| GitHub | .github/workflows/mirror.yml | tailnet に参加して VPS へ SSH し mirror-sync を起動 |
| VPS | ~/mirror/TheHack.git | 中継用の bare リポジトリ(remote: personal / hackathon) |
| VPS | ~/mirror/mirror.sh | mirror/X の push・PR 作成・マージ(tools/mirror/mirror.sh) |
| VPS | ~/.local/bin/mirror-sync | 個人リポジトリから取り込んで同期(tools/mirror/mirror-sync) |
セットアップ:
# VPS 側(gh でログイン済み・gh auth setup-git 済みであること)
scp -r tools/mirror <vps>:~/mirror-install
ssh <vps> 'bash ~/mirror-install/install-vps.sh'
# CI 用の SSH 鍵を作って公開鍵を VPS に置く
ssh-keygen -t ed25519 -N '' -f mirror_ci
ssh-copy-id -i mirror_ci.pub <vps>
# 手動同期(全ブランチ + 全タグ / ブランチ指定)
ssh sheep 'bash -lc mirror-sync'
ssh sheep 'bash -lc "mirror-sync develop"'個人リポジトリの Settings → Secrets and variables → Actions に登録する secret:
| secret | 中身 |
|---|---|
TS_CLIENT / TS_SECRET | Tailscale の OAuth クライアント ID / シークレット(scope auth_keys write / tag tag:ci) |
SSH_HOST / SSH_USER | VPS の tailnet アドレス(100.x or MagicDNS 名)とログインユーザー名 |
SSH_KEY | ログインに使う秘密鍵(mirror_ci の中身。公開鍵は VPS の authorized_keys へ) |
SSH_KNOWN_HOSTS | VPS のホスト鍵(ssh-keyscan <host> の出力)。任意だが推奨 |
tailnet の ACL で tag:ci から VPS の 22/tcp を許可しておくこと。
- マージは マージコミットで行う(squash / rebase merge だと merge-base が進まず、次回の PR に同じコミットが再び載る)。ブランチ保護で弾かれた場合は
gh pr merge --adminで通す。- ミラー先に同名ブランチが無いと PR は作れない(
mirror/Xの push だけ行い notice を出す)。 その場合はミラー先でmirror/Xからブランチを作る。- 手動で
mirror-syncを叩くときは Actions の実行と重ならないようにする(作業リポジトリを共有 していて、排他はしていない)。workflow_runはデフォルトブランチにあるワークフローファイルしか起動しない。mirror.ymlはmainにも入っている必要がある(developだけに置いても発火しない)。- CI の push トリガーは
main/developだけなので、作業ブランチを直接 push してもミラーは 起動しない(PR を出せば CI は走るが、pull_request由来の実行はミラーの対象外)。作業ブランチを 今すぐミラーしたいときは VPS でmirror-sync <branch>を叩くか、Actions から手動実行する。- ミラーの実行は
concurrencyで 1 本に絞っている。実行中 + 待機中がいる状態でさらに CI が green になると待機中が追い出され、そのブランチは次の CI green まで待つ。.github/workflows/も同期するので、VPS のghログインにはworkflowスコープが要る (gh auth refresh -h github.com -s workflow)。無いと push が拒否される。- タグは手動同期(引数なしの
mirror-sync)のときにまとめて送る。ミラー先で既に別のコミットを 指しているタグは上書きしない。
共通プロトコル / ポート
各コンポーネントは親仕様書 §4 の共通定義に準拠する。
| ポート | プロトコル | 用途 |
|---|---|---|
| 8080 | HTTP/WebSocket | 設定WebAPI・コントローラー入力受信 |
| 9000 | SRT (Listener) | 映像入力(ATEM PGM等) |
| 9999 | UDP broadcast | タリー配信(255.255.255.255:9999) |
| 9910 | UDP | ATEM遠隔制御(ATEM純正プロトコル) |
詳細(イベントペイロード・設定変更API・タリーペイロード)は
docs/specs/00-system-overview.md §4 を参照。
ドキュメント
- 技術仕様(現行実装):
docs/spec/technical-overview.md(詳細) /docs/spec/summary.md(要約) /docs/slides/switcher.md(Marp) - 配布サイト:
web/— LP + 使い方(web/build-preview.ps1で1ファイルのプレビューを生成) - ライセンス: GPL-2.0-or-later(
LICENSE/THIRD-PARTY-NOTICES.md) - 仕様書:
docs/specs/— 親仕様書 + コンポーネント別詳細仕様 - 実装計画 / タスク:
docs/tasks/— マルチエージェント実装のオーケストレーション計画とタスク指示書
Parts
21| Qty | Value | Footprint | References |
|---|---|---|---|
| 4 | CherryMX | CherryMX:CherryMX_1.00u | SW1, SW2, SW3, SW4 |
| 4 | SK6812MINI-E | kicad-keyboard-parts.pretty-master:MX_SK6812MINI-E | D1, D2, D3, D4 |
| 3 | 0.1u | Capacitor_SMD:C_0402_1005Metric | C1, C2, C3 |
| 2 | Conn_01x01_Pin | Connector_PinHeader_2.54mm:PinHeader_1x01_P2.54mm_Vertical | J5, J6 |
| 2 | R_Potentiometer | Potentiometer_THT:Potentiometer_Alps_RK09K_Single_Vertical | RV1, RV2 |
| 1 | CH32V003FxPx | Package_SO:TSSOP-20_4.4x6.5mm_P0.65mm | U2 |
| 1 | Conn_01x07_Pin | Connector_PinHeader_2.54mm:PinHeader_1x07_P2.54mm_Horizontal | J1 |
| 1 | Conn_01x07_Socket | Connector_PinSocket_2.54mm:PinSocket_1x07_P2.54mm_Horizontal | J3 |
| 1 | Conn_02x08_Odd_Even | Connector_PinSocket_2.54mm:PinSocket_2x08_P2.54mm_Horizontal | J4 |
| 1 | Conn_02x08_Odd_Even | Connector_PinHeader_2.54mm:PinHeader_2x08_P2.54mm_Horizontal | J2 |
| 1 | XC6206P332MR-G | Package_TO_SOT_SMD:SOT-23-3 | U1 |
Questions
How big is the Softswitcher module sw4 PCB?
It measures 40 × 100 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Softswitcher module sw4 use?
21 parts, built around the XC6206P332MR-G and SK6812MINI-E. 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 Softswitcher module sw4 KiCad files?
From the oldsheeep3/TheHack repository on GitHub, at the commit this page was made from: the board is softswitcher_module_sw4/softswitcher_module_sw4.kicad_pcb and its schematic softswitcher/softswitcher.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Softswitcher module sw4 design in my own project?
Its repository publishes it under the GPL-2.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).
More from oldsheeep3/TheHack
5- 2 layers78 × 78 mm

- 2 layers78 × 78 mm

- 2 layers78 × 78 mm

- 2 layers78 × 78 mm

- 2 layers40 × 100 mm

Softswitcher module master
oldsheeep3/TheHack
HybridSwitcher — ハイブリッドIP映像スイッチャー(開発用リポジトリ)
6 partsGPL-2.0
Similar boards
- 4 layers95.6 × 73.6 mm

- 2 layers11.8 × 12.2 mm

Microlcd-3digit
cnlohr/ch32v003_3digit_lcd_usb
ch32v003 USB Driver for 3-digit 7-segment TN LCDs with touch
10 parts222MIT - 2 layers284.7 × 94.2 mm

- 4 layers28.7 × 27 mm

Neurband c
jlcjak/neurband
Open, minimal sEMG wristband like the Meta Neural Band: 8-ch ADS1298 + nRF52832 BLE, dry gold electrodes on a flex, 3D-printed band. KiCad, FreeCAD, Zephyr, Python, simulations.
70 parts46 - 4 layers36.6 × 60.3 mm

StratoSoar MK3.0
crnicholson/StratoSoar-MK3
StratoSoar MK3, an autonomous glider meant for high-altitudes, accessible to everyone
85 parts43 - 2 layers31.9 × 36 mm

Lemon pcb swizzle
rianadon/Cosmos-Keyboard-PCBs
Open-Source keyboard PCB designs for the Cosmos Keyboard Generator
63 parts43 - 4 layers36 × 54.5 mm

V0.2 Custom Motor Driver DRV8316 STM32G4
clawntl/BLDC-Driver
BLDC Driver with STM32G431 and DRV8316
86 parts9AGPL-3.0 - 2 layers49 × 67 mm

Calliope mirror heater
openUC2/TechnicalDocs-openUC2-HoloBox
This is the holographic box for openUC2
67 parts5