USB Servo Controller について
USB Servo Controllerは、最大12台のホビー用サーボを制御するオープンハードウェアのUSB-C基板とソフトウェアです。MCPサーバーを通じてAIエージェントが動作やシーケンスを指示し、電源レールを測定できます。動作制限や電流保護も備えています。
主な機能
- 0112チャンネルのPWMサーボ制御
- 02Maestroシリアルプロトコル互換
- 03電源レールの電流・電圧測定
- 04ポーズと保存済みシーケンスの実行
- 05チャンネル別制限とランプ動作
- 06過電流・低電圧時の遮断
活用シーン
- 01AIエージェントからのサーボ駆動
- 02コントローラーでのポーズやシーケンス実行
- 03サーボ電源レールの監視
- 04保護条件の検出時の動作停止
MCP 対応
付属のMCPサーバーは、サーボの動作、ポーズ、シーケンス、および電源レールの電流・電圧測定値をMCPクライアントに提供します。設定した制限とランプ動作に対応し、過電流時には停止します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
16掲載時のツール一覧 · 5 日前に更新
このツールにパラメーターはありません。
詳細
USB-C 12 チャンネルサーボコントローラー
12 チャンネルの USB-C サーボコントローラーです。Pololu Maestro 互換で、AI エージェント(Claude など)がサーボを操作できる MCP サーバーを備えています。価格はTindieで 18 ドルです。・製品ページ。
▶ 2 分の動画:配線、電流モニタリング、GUI、コントローラーによる実際の MG995 の操作
Pololu Mini Maestro 12のオープンソース代替品です。Maestro シリアルプロトコルに対応しているため、Maestro ライブラリをそのまま使えます。さらに、USB-C、サーボ電源レールの電流・電圧検知、オンボードスクリプトを備えています。JLCPCB の一括組み立て向けに設計されており、100 台製造時の基板 1 枚あたりの価格は約 4.43 ドルです(Maestro は 29.95 ドル)。
| MCU | WCH CH32V203C8T6、RISC-V 96 MHz、LQFP-48 |
| チャンネル | ハードウェア PWM 12 チャンネル、50 Hz、0.5 µs。チャンネルごとの可動範囲制限(64~4080 µs、デフォルト 500~2500)。0~7 にアナログ入力 |
| ホストインターフェース | USB-C、CDC シリアル(ドライバー不要)。ASCII プロトコル、Pololu Maestro Compact/Pololu/Mini SSC プロトコル |
| サーボ電源 | 5.08 mm ネジ端子の独立レール。フル機能時 5~13.2 V、合計約 5 A |
| 検知 | レール電流(5 mΩ + INA180A2)と電圧(÷4)、過電流/LiPo 低電圧カットオフ |
| PCB | 66 × 38 mm、2 層、すべての部品を上面に配置、M3 穴 × 4 |
| 状況 | 2026-09-28 に初号基板のハードウェア検証を完了 — selftest.py --rail --move は 58/58。チャンネル 1~11 は実際のサーボで未検証 |
| ドキュメント | 対象 |
|---|---|
USER.md | ボードの使用方法:配線、電源、ツール、コマンドリファレンス、書き込み |
tools/README.md | ホストツール:ライブラリ、CLI、GUI、スクリプト、MCP サーバー、リリースビルド |
| このファイル | 設計:各選択の理由、BOM とコスト、制限事項、製造前に残っている作業 |
AI エージェント(MCP サーバー)
tools/servo_mcp.pyは、AI エージェントがサーボを動かし、ポーズやシーケンスを実行し、レール電流/電圧を読み取れるようにする MCP サーバーです。チャンネルごとの制限、ランプ移動、過電流時の停止といった安全対策を備えています。pip install -r tools/requirements.txtを実行してから、以下を実行します。
Claude Code
claude mcp add servo -- python /path/to/UsbServoController/tools/servo_mcp.py
Claude Desktop(claude_desktop_config.json)
{
"mcpServers": {
"servo": {
"command": "python",
"args": ["/path/to/UsbServoController/tools/servo_mcp.py"]
}
}
}
ポートを指定するには"--port", "COM5"を追加します。ハードウェアなしで試すには"--mock"を追加します。
シリアルポートを開けるプログラムは 1 つだけなので、先に GUI を閉じてください。
サーバーは PyPI でも公開されているため、リポジトリをクローンしなくても、どの MCP クライアントからでも実行できます。
コマンドはuvx、引数は["ucan-servo-mcp"]です(GUI で保存した制限、ポーズ、シーケンスを使う場合は、さらに--config path/to/servogui.jsonを指定します)。
1. クイックスタート
pip install -r tools/requirements.txt
python tools/servogui.py # GUI (or --mock with no hardware)
python tools/servoctl.py set 0 1500 # CLI
cd embedded-ch32 && make flash # build + flash over USB, ~3 s, no jumper
**ダウンロード:**ファームウェアイメージと Windows/Linux 向けのビルド済み GUI は、リリースページから入手できます。
GUI を自分でビルドするには、python tools/build_release.pyを実行します。出力先はtools/dist/です。
2. CH32V203C8T6を選んだ理由
必須条件は、ROMにUSBブートローダーを搭載していることでした。これにより、未書き込みのチップにもプログラマーなしでUSB-C経由で書き込めます。この条件により、設計当初に採用していたSTM32F103(USART専用ブートローダー)は候補から外れます。USBブートに対応し、JLCPCBで在庫のあるLQFP-48部品は次のとおりです。
| 候補 | 未書き込みチップでのUSBブート | 在庫 | $@100 |
|---|---|---|---|
| CH32V203C8T6(採用) | ✅ | 8,643 | 0.877 |
| CH32X035C8T6 / CH32F203C8T6 | ✅ | ~500 | 0.72 / 1.02 |
| AT32F415CBT7 | ✅ | 10,518 | 1.319 |
| STM32F072C8T6 | ✅ | 2,945 | 2.495 |
実在庫のある部品の中で最安で、STM32F072の3分の1の価格です。また、STM32F103のレイアウトとピン互換性があります(接続された33ピンのうち32ピンが同一です)。
この選択に伴うコスト:
- RISC-Vファームウェア、WCH HALを使用し、CubeMXは使えません。
- ST-Linkは使用できません。 デバッグにはJ9のWCH 2線SDIを使用するため、WCH-LinkEが必要です。通常の書き込みはUSB経由なので、デバッグ用プローブはデバッグ時のみ使用します。
- このチップではPB2がBOOT1なので、R17(5.1 kΩ)でLowに接続されています。
3. ハードウェア
U4 INA180A2 (Kelvin across R18) ─► PA5 I_SENSE
J2 Servo V+ ── R18 5mΩ ──┬────────► servo header V+ rail (unfused)
(VSRV_RAW) ├─ R19..R22 ÷4 ─► PA4 V_SENSE
└─ JP1 ──D2──┐
├─► HT7533-1 ─► 3V3 ─► CH32V203, LED
USB-C VBUS 5V ─────────────D1──────────┘
GND: one continuous plane, common to both supplies
- 電源系統は2つ、グランドは共通です。 D1/D2はダイオードOR接続になっているため、互いの系統に電流が流れ込みません。各サーボアンプはR18を経由するため、電流値はボード全体を対象とします。
- JP1(2ピンヘッダー、デフォルトではオープン):シャントキャップを取り付けると、USBなしでサーボ電源からロジック電源を供給できます。これはMaestroの
VSRV=VINブロックに相当します。 - JP2(2ピンヘッダー):初回書き込み/復旧時のみ、BOOT0をHighにします。
- ロジックの消費電流は約15 mAなので、HT7533-1(100 mA、静止電流2.5 µA)は2S LiPoから給電しても発熱は0.07 Wです。
- USB-C:CCプルダウン抵抗はR14/R15、D+/D−/CC1/CC2のクランプにはSRV05-4を使用します。
- サーボ信号は220 Ω(R1–R12)を介した3.3 Vです。ヘッダーのピン配列はSIG / V+ / GNDです。
チャンネル割り当て
| Ch | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ピン | PA0 | PA1 | PA2 | PA3 | PA6 | PA7 | PB0 | PB1 | PA8 | PA9 | PA10 | PB8 |
| タイマー | T2C1 | T2C2 | T2C3 | T2C4 | T3C1 | T3C2 | T3C3 | T3C4 | T1C1 | T1C2 | T1C3 | T4C3 |
| アナログ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — | — | — | — |
予約済み:PA4/PA5 レール検出 · PA11/PA12 USB · PA13/PA14 SDI · PD0/PD1 水晶振動子 · PC13 LED · PB2 BOOT1。LQFP-48のADCピンは10本のみで、PA4/PA5は検出に使用するため、 アナログ入力は12チャンネル中8チャンネルです。Maestro 12は12チャンネルすべてに対応します。
電源レールの検出
| 電流(R18 + U4) | 電圧(R19–R22) | |
|---|---|---|
| 部品 | 5 mΩ 1 Wシャント抵抗、INA180A2ゲイン50、ハイサイド | 5.1 kΩ × 4、÷4、100 nF |
| フルスケール | 13.2 A | 13.2 V |
| 分解能 | 約3.2 mA | 約3.2 mV |
ハイサイド方式により、グランドプレーンを分断せずに済みます。検出するのはレールの合計電流であり、チャンネルごとの電流ではありません。ADCの基準電圧はVDDA(LDO出力)です(LQFP-48にはVREF+がありません)。そのため、測定値はしきい値の判定には適していますが、校正済みの計測には適しません。異常な測定値が5回続くと、ファームウェアはすべてのチャンネルをオフにします(約50 ms)。デフォルトの過電流しきい値は5 Aで、低電圧しきい値は自動選択されます(2S → 6.4 V、3S → 9.6 V、それ以外はオフ)。詳細はUSER.md §4.4を参照してください。
電源の制限
| 制限 | 制限要因 | 値 |
|---|---|---|
| J2の絶対最大値 | C15/C16、16 V電解コンデンサー | 16 V |
| 全機能動作時(電圧検出) | ÷4分圧回路 | 13.2 V |
| 連続電流 | ヘッダー列間の2.4 mm配線 | 約5 A(温度上昇20 °Cで6.1 A) |
上限を決めるのは24 A端子ではなく、その背後の銅箔です。
PCB
2 × 1 oz、1.6 mm、最小配線幅/間隔0.2 mm、ビア0.3/0.6 mm。GNDは両面のベタ銅箔です。SERVO_V+は優先順位を設定したトップレイヤーの3つのゾーンで配線します。ヘッダーは下端、USB-Cは右側、ねじ端子は左側、MCUは中央に配置しています。
⚠️ F8(Update PCB from Schematic)を実行するとH1–H4が削除されます。これらには回路図シンボルがありません。Delete footprints with no symbolsのチェックを外すか、次の位置に再配置してください: (16, 4), (61.5, 4), (16, 33), (61.5, 33)。
⚠️ HT7533-1は、置き換え前のAMS1117とピン互換ではありません(SOT-89:GND / VIN+タブ / VOUT)。タブはVINです。
4. 部品表とコスト
クラス:B 標準 · P 推奨(どちらも手数料不要) · E 拡張(SMT の場合、フィーダー手数料 $3.07)
| Ref | 部品 | LCSC | クラス | 数量 | 1 枚あたりの価格 |
|---|---|---|---|---|---|
| U1 | CH32V203C8T6, LQFP-48 | C3001172 | E | 1 | 0.8770 |
| U2 | HT7533-1, SOT-89-3 | C14289 | B | 1 | 0.1430 |
| U3 | SRV05-4 ESD, SOT-23-6 | C558418 | E | 1 | 0.0270 |
| U4 | INA180A2, SOT-23-5 | C192764 | E | 1 | 0.1920 |
| J1 | USB-C 16P TYPE-C-31-M-12 | C165948 | E | 1 | 0.1860 |
| J2 | 5.08 mm 2P ねじ端子台 | C474952 | E (THT) | 1 | 0.1920 |
| J3–J8 | 1×6 2.54 mm ピンヘッダー | C37208 | E (THT) | 6 | 0.2520 |
| JP1, JP2 | 1×2 2.54 mm ピンヘッダー | C358684 | E (THT) | 2 | 0.0180 |
| Y1 | 8 MHz 水晶振動子 SMD5032 | C115962 | B | 1 | 0.2450 |
| D1–D2 | B5819W, SOD-123 | C7420330 | P | 2 | 0.0340 |
| D3 | 赤色 LED 0603 | C2286 | B | 1 | 0.0070 |
| R1–R13 | 220 Ω 0603(サーボ直列抵抗+LED) | C22962 | B | 13 | 0.0650 |
| R14–R17, R19–R22 | 5.1 kΩ 0603 | C23186 | B | 8 | 0.0160 |
| R18 | 5 mΩ 1 W シャント抵抗、1206 | C7419996 | E | 1 | 0.0370 |
| C1–C8, C17–C18 | 100 nF 0603 X7R | C14663 | B | 10 | 0.1200 |
| C9–C11 | 10 µF 0603 X5R | C19702 | B | 3 | 0.0960 |
| C12 | 1 µF 0603 | C15849 | B | 1 | 0.0170 |
| C13–C14 | 30 pF 0603 C0G | C1658 | B | 2 | 0.0160 |
| C15–C16 | 470 µF 16 V 電解コンデンサー | C46550400 | E | 2 | 0.2140 |
| 58 | $2.7540 |
J9(SDI)は実装しません。シャントコンデンサー(C100114、基板 1 枚あたり 2 個)は JLCPCB では実装できないため、別途購入してください。100 個あたり約 $1.80 です。
| 100 枚 | 合計 | 1 枚あたり |
|---|---|---|
| 部品 | $275.40 | $2.754 |
| 実装:セットアップ $8.18、ステンシル $1.53、SMT 167 接合部 $26.72、THT 42 接合部 $68.88 + $3.58、フィーダー手数料 6 件 $18.42 | $127.31 | $1.273 |
| PCB 製造(概算) | ~$40 | ~$0.40 |
| 合計 | ≈ $443 | ≈ $4.43 |
送料と関税は含みません。価格は LCSC の 100 個購入時の価格です。在庫は 2026-09-19/20 に確認済み(CH32V203 が最も在庫が少なく 8,643 個)— 注文前に再確認してください。
コストを左右する要因:
- 実装費の 57 % はスルーホールはんだ付けです。 J3–J8 は部品代が $0.25、手はんだ付け費が $0.59 です。SMT のみにしてヘッダーを別途購入すれば、実装費は 1 枚あたり $0.55 に下がります。
- 単価ではなく、種類の異なる拡張 SMT 部品の数がコストを左右します。 そのため、220 Ω 抵抗を LED 用としても使用し、5.1 kΩ 抵抗で CC1/CC2/BOOT0/BOOT1/分圧器に対応し、個別の TVS ダイオードの代わりに SRV05-4 を 1 個使用し、JP1/JP2 で同じヘッダー部品を共有しています。
5. ファームウェア(embedded-ch32/)
RISC-V、WCH ch32v20x HAL と USB デバイスライブラリ、xPack riscv-none-elf-gcc
15.2(上書きするには make GCC_PATH=... を実行)。バージョンは USBServoController 0.4 です。
| フラッシュ領域 | アドレス | サイズ | 内容 |
|---|---|---|---|
| ブートローダー | 0x0000 | 12 KB | 独自の USB CDC ブートローダー(bootloader/) |
| アプリケーション | 0x3000 | 48 KB | サーボファームウェア |
| スクリプト | 0xF000 | 2 KB | 保存済みボードスクリプト |
| 設定 | 0xF800 | 256 B 使用 | 移動範囲の上限、Maestro の速度/加速度(User/settings.c、W) |
レイアウトは User/flash_layout.h と 2 つの Link.ld ファイルに記載されています。
make # build/USBServoController-ch32.{elf,hex,bin}
make flash # BOOT command -> bootloader -> write, CRC-32 check, restart (~3 s)
make hosttest # on the PC: sense.c protection (21 supply scenarios), maestro.c protocol, ramps and limits (11)
python tools/verify_pinmap_ch32.py # schematic <-> pin table <-> firmware
未書き込みチップまたはリカバリー: make full を実行し、JP2 を取り付けて USB に接続し、
wchisp flash build/USBServoController-ch32-full.bin を実行してから、JP2 を取り外し、再接続します。
ファームウェアから ROM ブートローダーにジャンプする方法は、このチップでは機能しません(テスト済み)。
そのため、ボードには独自のブートローダーが搭載されています。
タイミング: タイマーは 96 MHz、PSC 47 → 0.5 µs のティック、ARR 39999 → 20 ms のフレームです。 0.25 µs にするには 4 MHz のティックが必要ですが、100 Hz 以上の場合に限り 16 ビットに収まります。
プロトコル: 1 行につき ASCII コマンド 1 つ、応答は OK/OK <value>/ERR <reason> のいずれか 1 つです。
サーボ(S G E X A)、電源レールの監視(I U F L P C Z N)、保存済みスクリプト(QC QA QS QI QG QR QX)、システム(V BOOT)。完全なリファレンスは USER.md §4.3 を参照してください。
Maestro プロトコル(User/maestro.c):0x80 以上のバイトは Pololu Maestro コマンドです。Compact、Pololu(デバイス 12)、Mini SSC のフレーミングに対応し、Maestro の単位でオンボードの速度および加速度ランプを設定できます。両方のプロトコルは同じポートを共有します。リファレンスは USER.md §4.3b を参照してください。
スクリプトエンジン(User/script.c):ランプ時間付きの移動、待機、同期、ループ、ジャンプ、アナログ値による待機/分岐を含む、最大 254 個の命令に対応します。tools/servoscript.py でテキストからコンパイルされ、PC なしで実行でき、オプションで電源投入時に実行できます。
ツールチェーンの注意点
interrupt("WCH-Interrupt-fast")は上流の GCC で黙って無視されます — 警告が 1 つ出た後、ISR はmretではなくretで終了します。interrupt("machine")を使用してください。- **GCC 15 はデフォルトで C23 です。**この規格では
boolがキーワードですが、WCH のusb_type.hでは typedef されています。-std=gnu11とパッチ適用済みのヘッダーを使ってビルドします。 -march=rv32imac_zicsr_zifencei— GCC 15 では CSR と fence.i が分離されました。- **実行時に
printfは使えません。**USB のサスペンドフックに WCH のサンプルのprintfを置いたところ、起動時に ISR が停止しました。また、PA9(USART1 TX)はサーボ出力です。
変更したベンダーファイル:usb_endp.c(OUT エンドポイント → パーサー)、usb_prop.c
(User/cdc_glue.c 経由のラインコーディング)、ch32v20x_it.c(TIM2 がサーボを駆動)。
6. 制限事項と Maestro 12 の比較
| Maestro 12 | このボード | 対応 |
|---|---|---|
| mini-USB | USB-C | 改善 |
| 電源レールの監視なし | 電流・電圧、過電流、LiPo のカットオフ | 改善 |
| $29.95 | ≈ $4.43 | 改善 |
| サーボ電源 5–16 V | 5–16 V(全機能は 13.2 V) | 同等 |
| アナログ入力 12 個 | 8 個 | 基板再設計(ピン数の制限) |
| 信号 5 V、ユーザーピン 5 V | 3.3 V、5 V レールなし | 基板再設計 |
TTL シリアル、デイジーチェーン、ERR ピン、LED 3 個 | USB のみ、LED 1 個 | 基板再設計 |
| Pololu/Compact/Mini SSC プロトコル | 対応(0.4):目標値の設定(単数/複数)、速度、加速度、位置/移動状態/エラーの取得、原点復帰 | 同等 |
| チャンネルごとの最小/最大値 64–4080 µs、1–333 Hz | チャンネルごとの上限値 64–4080 µs。W で保存、固定 50 Hz | 周波数:ファームウェア |
| 分解能 0.25 µs | 0.5 µs | ファームウェア、100 Hz 以上 |
| ファームウェアで速度と加速度に対応 | Maestro プロトコル経由で対応 | 同等 |
| 設定、原点位置、起動時の動作をフラッシュに保存 | 上限値と速度/加速度を保存。原点位置はなく、すべてのチャンネルはオフで起動 | ファームウェア |
| エラーレジスター、シリアルタイムアウト時のフェイルセーフ | プロトコルエラービットのみ。シリアルタイムアウトなし | ファームウェア |
| 8 KB のスクリプト言語 | 254 命令のモーションスクリプト | よりシンプル |
| Maestro Control Center | 独自 GUI(servogui.py) | Pololu VID に固定 |
| 28 × 36 mm | 66 × 38 mm | — |
その他の既知の不足点:J2 に逆極性保護がありません — バッテリーパックを逆向きに接続すると U4 が破損し、C15/C16 が破裂する可能性があります(P-FET の理想ダイオード、≈ $0.19 は意図的に省略しました)。電流検出のゼロ点(Z)は電源オフ時に失われます。
Maestro エコシステムへの参加
Maestro ソフトウェアは大きく2つに分かれます。ランタイム制御 — ほぼすべてのコミュニティライブラリ(FRC4564/Maestro、maestro-servo、ROS 1/2 ドライバー、Node、C++)は、CDC ポートを開き、USB ID を確認せずに Pololu/Compact/Mini SSC のバイトプロトコルを使用します。設定(Control Center、UscCmd)では、Pololu の VID 0x1FFB に紐づいた制御転送を使用するため、ここでは動作しません。
ファームウェア 0.4 はこれらのシリアルプロトコルを実装しているため、ランタイムライブラリは変更なしで動作します。改変していない FRC4564 の maestro.py を使用し、ハードウェアで検証済みです(ターゲット、速度、加速度、位置、移動状態)。最初のバイトに応じてディスパッチするため、すべてに対応できます。0xAA は Pololu、0xFF は Mini SSC、0x80–0xFE は Compact、印字可能な ASCII は既存のプロトコルです。
Maestro とは異なる点もあります。出力ステップは 0.5 µs(0.25 µs には ≥ 100 Hz のフレームが必要)、固定 50 Hz レート、ホーム位置なし、CRC なし、シリアルタイムアウトなしです。チャンネルごとの移動範囲(64~4080 µs)と起動時の速度/加速度は、W コマンドでボードに保存されます。GUI の歯車ボタンで移動範囲を設定します。今後の予定:フレームレート設定 → シリアルタイムアウト時のフェイルセーフ → ホーム位置。
7. 設計上の注意点
JP1 はヘッダーであり、電源マルチプレクサー IC ではありません。 6 V を超える電圧で自動切り替えするには、理想ダイオードコントローラーと FET(LM5050、基板あたり +$2.12)が必要です。TPS2116 の上限は 5.5 V です。ダイオード OR 回路は $0.03 で、JP1 に流れるのは約 15 mA のロジック電流だけです。ヘッダーとシャントキャップ($0.05)はスライドスイッチより安価で、それ自体に電圧制限もありません。
JP2 もヘッダーです。そのため、各ボードで初回の書き込みに必要なジャンパーは、はんだごてなしで設定できます。
AMS1117 は HT7533-1 に置き換えました。AMS1117 は必要サイズの 66 倍もあり、静止電流が 5 mA で、22 µF のタンタルコンデンサーが必要でした。HT7533 はより安価で、30 V に対応し、既存の 10 µF セラミックコンデンサーで安定して動作します。
8. リポジトリの構成
| パス | 内容 |
|---|---|
PCB/usbservocontroller/ | KiCad 10 の回路図と基板。production/ = Fabrication Toolkit の出力 |
embedded-ch32/ | アプリケーションファームウェア(User/)、ブートローダー(bootloader/)、ホストテスト(test/) |
embedded-ch32/tools/ | verify_pinmap_ch32.py。wchisp をここに配置してください(リポジトリ内には含めません) |
tools/ | ホストツール — tools/README.md を参照 |
USER.md | ユーザーマニュアル |
Fabrication Toolkit は、シンボルではなくフットプリントから
LCSCを読み取ります。回路図の同期後にgrep -c 'property "LCSC"' usbservocontroller.kicad_pcb(現在は 58)を確認してください。フィールドがない場合、JLCPCB では「part not found」と表示されます。
9. 次回の製造前に
2026-09-29 時点のファイルで確認済みです。ERC は 0、DRC は 11 件のエラーで、いずれもヘッダーの本質的なコートヤード重複(2.54 mm グリッド上に3列)です。未接続は 0 です。
- JP2 の基板上のリファレンスを修正します。 フットプリントには
JP2ではなくBOOT0_SELと表示されているため、DRC では JP2 が見つからないうえ、余分なフットプリントがあると報告され、製造ファイルにも誤った部品番号が記載されます。F8 を実行してください(シンボルのないフットプリントを削除 のチェックを外します)。 - J9 に DNP を設定し、H1~H4 を BOM/位置ファイルから除外します。 まだどちらのフラグも設定されていないため、
fabrication-toolkit-options.jsonのEXCLUDE DNPは何も行いません。 - R13 を 220 Ω から 1 kΩ に変更します(C21190、Basic)。PC13 の定格は 3 mA ですが、220 Ω では LED に約 6 mA 流れます。最初のボードでは動作しましたが、規格外です。
- 重複しているビアを3つ削除します(GND:11.5、35.2。I_SENSE と V_SENSE:32、16~18 付近)。また、コートヤードエラーへの対処を決めます。コートヤードを縮小するか、実際のエラーがその中に隠れないよう DRC 除外を追加してください。
production/を再生成します。このフォルダーの更新日は 2026-09-20 で、最後の基板編集より前です。その後、bom.csvとpositions.csvから H1~H4 と J9 が削除されていることを確認してください。- JLCPCB の在庫を再確認します(§4)。
kicad-cli sch erc usbservocontroller.kicad_sch と kicad-cli pcb drc --schematic-parity usbservocontroller.kicad_pcb を実行して、チェックを再度行ってください。
ライセンス
MIT — ハードウェア設計ファイル、ファームウェア、ホストツール。
WCH(Nanjing Qinheng Microelectronics)の著作権表示があるファイル(
ch32v20x HAL、USB ライブラリ、スタートアップコード、および
embedded-ch32/User/ 内の WCH 由来のファイル)は、WCH 独自の規約に従います。これらの規約では、WCH マイクロコントローラーでの使用に限定されています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。