

STM32G431 + WIZnet W5500(Ethernet) を使い、PC(Python)から UDP で直接 CAN バス上のアクチュエータ (DJI C610 ESC / TTL サーボ / 差動ワイヤ機構モータ) を制御するための、基板設計(KiCad)・ファームウェア (STM32CubeMX + CMake)・PC側ツール一式です。
- Size
- 85 × 50 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 98
- Nets
- 89
- Pads
- 361
- Tracks, vias
- 1,125, 125
- Pours
- 5
- Routed
- Yes
- KiCad
- KiCad 9.0 (file 20241229)
- Created
- 7 Aug 2026
- Updated
- 4 Oct 2026
Overview
UDP w5500 is an open-source printed circuit board by SameSameIndustry, from the SameSameIndustry/STM32_UDP2CAN_controller repository on GitHub. It is a 2-layer board of 85 × 50 mm with 98 parts on 89 nets, routed with 1,125 tracks and 125 vias.
It is built around the 74AHCT1G125SE, XL1509-5.0 and AMS1117-3.3, with the W5500, WS2812B and S4B-PH-SM4-TB among its other parts. Its parts include 31 capacitors, 25 resistors, 12 connectors, 11 diodes and 6 ICs. It belongs with the STM32 boards of this library.
Main components
1074AHCT1G125SE
SOT-353-40℃~+125℃ 1 1 4.5V~5.5V 4.7ns@5V,50pF 40uA 74AHCT 8mA 8mA Schmitt trigger Tri-State Unidirectional SOT-353 Buffers, Drivers, Receivers, Transceivers ROHSDiodes IncorporatedBuffers, Drivers, Receivers, TransceiversXL1509-5.0
SOIC-8-40℃~+125℃ 1 150kHz 2A 2mA 4.5V~40V 5V Buck Buck Built-in Fixed No SOIC-8 DC-DC Converters ROHSUMWDC-DC ConvertersAMS1117-3.3
SOT-223-40℃~+125℃ 0.003%Vout 1 1.1V@(800mA) 15V 1A 3.3V 5mA 72dB@(120Hz) Fixed Over Current Protection、Short Circuit Protection、Thermal shutdown Positive SOT-223 Voltage Regulators - Linear, Low Drop Out (LDO) Regulators ROHSAdvanced Monolithic SystemsVoltage Regulators - Linear, Low Drop Out (LDO) RegulatorsW5500
LQFP-48_7x7-40℃~+85℃ 10BASE-T、100BASE-TX 3.3V 32KB SPI SPI Wake-up function、Programmable LED indication、Low-power mode Yes LQFP-48(7x7) Ethernet Controllers ROHSWIZNETEthernet ControllersWS2812B
5mm X 5mm Surface Mount RGB LED with Intelligent ControlWorldsemiUncategorisedS4B-PH-SM4-TB
UncategorisedJSTXT30(2+2)-F.G.B
-- Power connector / plug connector ROHSChangzhou Amass ElecUncategorisedCYA1040-68UH
SMD,11.6x10.1mm230mΩ 2A 3.5A 68uH ±20% SMD,11.6x10.1mm Molding Power Inductors ROHSSHOU HANInductors (SMD)LCMGG160808T121RG
0603Ferrite BeadsTaiyo YudenSS34
SMA(DO-214AC)-55℃~+125℃ 3A 40V 500uA@40V 550mV@3A Independent SMA(DO-214AC) Schottky Diodes ROHSMDDSchottky Diodes
README
README.mdw5500_UDP — STM32G431 + W5500 UDP⇄CAN エンドエフェクタ制御基板
STM32G431 + WIZnet W5500(Ethernet) を使い、PC(Python)から UDP で直接 CAN バス上のアクチュエータ (DJI C610 ESC / TTL サーボ / 差動ワイヤ機構モータ) を制御するための、基板設計(KiCad)・ファームウェア (STM32CubeMX + CMake)・PC側ツール一式です。
このリポジトリの範囲
ロボットアーム全体は「GIM6010/GIM8018 で関節を駆動する基板(192.168.1.100)」と「本基板=エンド
エフェクタ基板(192.168.1.101)」の 2 枚の STM32G431+W5500 基板を同一 LAN 上で使う構成を前提にしています。
本リポジトリに含まれるファームウェアは 192.168.1.101 側(エンドエフェクタ基板)のみです。
GIM 基板側のファームウェアは別ファーム・別管理であり、ここには含まれていません
(tools/odrive_setup/ の ODrive 初期設定スクリプトや tools/hl_control/ 内の一部スクリプトは
GIM 側の調査・設定用に書かれたものですが、GIM 基板自体のファームウェアソースはありません)。
ディレクトリ構成
| パス | 内容 |
|---|---|
UDP_w5500/ | KiCad 9 基板設計データ(回路図・PCB・ガーバー・3D モデル) |
UDP_w5500/jlcpcb/ | JLCPCB 発注用ガーバー・BOM・CPL(エクスポート済み) |
G431_w5500/ | STM32G431 ファームウェア本体(CMake ビルド) |
tools/as5600_monitor/ | AS5600 磁気エンコーダの角度を UDP 経由で監視する CLI |
tools/can_id_scanner/ | 2 基板分の状態を 1 ウィンドウ(上下2セクション)で見る Tkinter GUI、CAN ID 調査用スクリプト |
tools/hl_control/ | 高レベル制御 UDP プロトコルの実装・診断スクリプト、ROS2 連携 GUI |
tools/odrive_setup/ | ODrive ベースの GIM6010-8/GIM8108-8 を USB 経由で初期設定・較正するスクリプト(本基板のファームとは独立) |
CAN_PROTOCOL_*.md | CAN バス上の各デバイスのフレーム仕様書 |
tools/hl_control/PROTOCOL_HL_CONTROL_UDP.md | 高レベル制御 UDP プロトコル仕様書 |
ref/ | 使用部品(モータ・エンコーダ等)のデータシート・メーカー資料(参考資料) |
parts/ | KiCad 用の追加シンボル/フットプリント/3D モデルライブラリ |
ハードウェア概要
-
MCU: STM32G431CBT6 (Cortex-M4F)
-
Ethernet: WIZnet W5500(SPI 接続、静的 IP)
-
CAN: FDCAN1, 1 Mbps classic CAN, 標準 11bit ID
-
バス上のデバイスと CAN ID:
デバイス CAN ID 通信方向 仕様書 DJI C610 (M2006 用 ESC) 0x01(ESC ID=1) + AS5600 フィードバック送受信 — (DJI 標準プロトコル) TTL サーボ基板 0x21受信専用(本基板からは送信しない) CAN_PROTOCOL_TTL-SERVO.md差動ワイヤ機構モータ(ピッチ/ヨー) 0x11/0x12受信専用(本基板からは送信しない) CAN_PROTOCOL_wave_motor.md -
3D モデル:
UDP_w5500/3D/UDP_w5500.stepが基板単体の統合 STEP。3D_base*.ipt/.stl/3D_clear*.ipt/.stlはエンクロージャ部品(Autodesk Inventor 形式 + 変換済み STL)。- 既知の注意点: PCB 上の RJ45 コネクタの 3D モデル参照(
${KIPRJMOD}/EASYEDA_MODELS/RJ45-TH_HR911105A.step) は本リポジトリに含まれていません。KiCad の 3D ビューアでその部品だけ表示されませんが、 回路設計・ガーバー出力には影響しません。
- 既知の注意点: PCB 上の RJ45 コネクタの 3D モデル参照(
ビルド環境
- Arm GNU Toolchain
(
arm-none-eabi-gcc等) を PATH に追加 - CMake 3.22 以上、Ninja
- STM32CubeMX (
G431_w5500/G431_w5500.iocを編集・再生成する場合のみ) - フラッシュ/デバッグ用に ST-Link デバッグプローブ + OpenOCD 、 または STM32CubeProgrammer
CLI でビルド
cd G431_w5500
cmake --preset Debug
cmake --build --preset DebugVS Code でビルド/フラッシュ
本リポジトリには .vscode/ 設定を同梱しています。
.vscode/settings.jsonのcortex-debug.openocdPath、.vscode/tasks.jsonのFlashタスクのcommandは"openocd"としてあります。OpenOCD を PATH に追加するか、 お使いの環境のインストール先の絶対パスに書き換えてください。.vscode/c_cpp_properties.jsonのcompilerPathは Arm GNU Toolchain の Windows インストーラのデフォルト位置を指しています。インストール先が異なる場合は書き換えてください。- ビルド:
Ctrl+Shift+B(Build Debugタスク、cmake --buildを実行) - 書き込み: タスク
Flash(Build Debugに依存、OpenOCD + ST-Link で書き込み・検証・リセット) - デバッグ: 実行とデバッグ →
Debug (OpenOCD)
ネットワーク設定(環境ごとに書き換えが必要)
基板の IP/MAC と、ブロードキャスト以外の送信先 PC の IP アドレスは
G431_w5500/Core/Src/main.c 内にコンパイル時定数として直接
記述されています。自分の環境の LAN 構成に合わせて書き換えてから書き込んでください。
.mac = {0x00, 0x08, 0xdc, 0x11, 0x22, 0x65},
.ip = {192, 168, 1, 101}, // 本基板(エンドエフェクタ)の固定IP
.sn = {255, 255, 255, 0},
.gw = {192, 168, 1, 1},
uint8_t dest_ip[4] = {192, 168, 1, 2}; // ← PC側のIPアドレスに書き換えるGIM 基板(別ファーム)を同一 LAN に併設する場合は、IP(192.168.1.100 等)と MAC が重複しないように
してください。
UDP ポート一覧
| ポート | 方向 | 用途 |
|---|---|---|
| 5000 | STM32→PC | 定期 "Hello" デモ送信(dest_ip 宛) |
| 5001 | PC↔STM32 | 生 CAN フレーム中継(CAN ID 調査・デバッグ用)。PC から 1 回何か送ると以後は受信した全 CAN フレームが転送される |
| 5002 | STM32→PC(broadcast) | ハートビート(定期送信、255.255.255.255 宛) |
| 5003 | PC→STM32(単方向) | 高レベル制御 UDP(TTL サーボ/wave motor/C610 を直接操作、詳細は PROTOCOL_HL_CONTROL_UDP.md) |
| 5004 | STM32→PC | AS5600 角度モニタ(ストリーム配信) |
| 8888 | PC(ROS2)→STM32 | ROS2 連携プロトコル受信 |
| 8889 | STM32→PC(ROS2) | ROS2 連携プロトコル フィードバック送信 |
PC 側ツール(Python)
Python 3.x、標準ライブラリ(socket / struct / tkinter / argparse)のみで動作します
(tkinter を使う GUI ツールは Tcl/Tk 入りの Python が必要)。tools/odrive_setup/ の
スクリプトのみ追加で ODrive 公式ライブラリが必要です。
pip install odrive # tools/odrive_setup/ のスクリプトを使う場合のみ主なツール:
tools/can_id_scanner/can_id_scanner.py— GIM 基板(100)とエンドエフェクタ基板(101)の 両方を 1 ウィンドウ(上下2セクション)で扱う GUI。生 CAN フレーム(ポート5001)の送受信・デコード。tools/hl_control/ros2_arm_control.py— 同様の 2 基板 GUI(ROS2/sharmech プロトコル版、ポート8888/8889)。tools/as5600_monitor/as5600_monitor.py— AS5600 角度モニタ(ポート5004)の CLI クライアント。tools/hl_control/diagnose_gim_axes.py/ramp_gim6010_pitch.py— GIM 基板側の ODrive heartbeat 診断・角度ランプ送信(ポート5001 の生 CAN ブリッジ経由、GIM 基板向け)。tools/odrive_setup/odrive_configure.py/odrive_inspect.py等 — USB 接続した ODrive(GIM6010-8/GIM8108-8)の初期設定・読み取り専用確認スクリプト。
いずれも -h / --help で使用法を確認できます。
基板発注
UDP_w5500/jlcpcb/production_files/ に JLCPCB 向けの BOM・CPL・ガーバー一式(zip)が、
UDP_w5500/jlcpcb/gerber/ に展開済みガーバー/ドリルデータがあります。他の基板製造業者を使う場合は
UDP_w5500/UDP_w5500.kicad_pcb から KiCad 9 でガーバーを再出力してください。
既知の制限・未解決事項
- RJ45 コネクタの 3D モデル参照が欠落している(上記参照)。電気的な設計・発注には影響しない。
tools/hl_control/ros2_arm_control.pyはワイヤフォーマットの仕様根拠として社内リポジトリsharmech(非公開・本リポジトリには含まれない)の文書を参照しているコメントがありますが、 スクリプト自体は標準ライブラリのみで完結しており、sharmechが無くても動作します。
ライセンス
MIT License。ただし G431_w5500/Core/Drivers/W5500/(WIZnet ioLibrary)、
G431_w5500/Drivers/CMSIS/、G431_w5500/Drivers/STM32G4xx_HAL_Driver/ は各ディレクトリ・
ファイルヘッダに記載された元のライセンス(WIZnet license / Apache-2.0 / BSD-3-Clause)に従います。
Parts
98| Qty | Value | Footprint | References |
|---|---|---|---|
| 11 | 100nF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C2, C5, C8, C14, C22, C26, C27, C30, C31, C32, C33 |
| 8 | WS2812B | LED_SMD:LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm | D4, D5, D6, D7, D8, D9, D10, D11 |
| 4 | 3.3R | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R9, R10, R11, R12 |
| 4 | 49.9R | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R15, R16, R18, R20 |
| 4 | S4B-PH-SM4 | Connector_JST:JST_PH_S4B-PH-SM4-TB_1x04-1MP_P2.00mm_Horizontal | J9, J10, J11, J12 |
| 4 | XT30-2+2 | Ether:CONN-TH_4P-XT30PW-M | J3, J4, J5, J6 |
| 3 | 10nF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C15, C18, C29 |
| 3 | 4.7K | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R2, R3, R5 |
| 2 | 10K | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R23, R25 |
| 2 | 10uF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C6, C13 |
| 2 | 120R | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R7, R8 |
| 2 | 18pF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C9, C10 |
| 2 | 2.2K | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R27, R28 |
| 2 | 22uF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C12, C16 |
| 2 | 330R | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R13, R14 |
| 2 | 4.7uF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C17, C28 |
| 2 | 470 | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R17, R24 |
| 2 | 6.8nF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C20, C21 |
| 2 | 6.8pF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C23, C24 |
| 2 | AR02016 | Ether:SW-SMD_L3.9-W3.0-P4.45 | SW1, SW2 |
| 2 | Blue | LED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolder | D2, D3 |
| 1 | 0R/1206 | Resistor_SMD:R_1206_3216Metric | R22 |
| 1 | 10R | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R21 |
| 1 | 12.4K | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R19 |
| 1 | 16Hz | Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mm | Y2 |
| 1 | 1uF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C25 |
| 1 | 1uF/35V | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C7 |
| 1 | 2.54-5 | Connector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_Vertical | J8 |
| 1 | 220uF/35V | Capacitor_THT:CP_Radial_D8.0mm_P3.50mm | C11 |
| 1 | 22nF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C19 |
| 1 | 25MHz | Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mm | Y1 |
| 1 | 470R | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R26 |
| 1 | 470uF/35V | Capacitor_THT:CP_Radial_D10.0mm_P5.00mm | C4 |
| 1 | 5V | TestPoint:TestPoint_Pad_D3.0mm | TP1 |
| 1 | 74AHCT1G125 | Package_TO_SOT_SMD:SOT-23-5_HandSoldering | U7 |
| 1 | AMS1117-3.3 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U4 |
| 1 | CYA1040-68UH | Ether:IND-SMD_L11.6-W10.1 | L2 |
| 1 | GND | TestPoint:TestPoint_Pad_D3.0mm | TP2 |
| 1 | LCMGG160808T121RG | Inductor_SMD:L_0603_1608Metric | L1 |
| 1 | LOGO | Ether:same_logo | G*** |
| 1 | MCP2562-E-SN | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | U5 |
| 1 | SS34 | Diode_SMD:D_SMA | D1 |
| 1 | STM32G431CBTx | Package_QFP:LQFP-48_7x7mm_P0.5mm | U6 |
| 1 | W5500 | Package_QFP:LQFP-48_7x7mm_P0.5mm | U3 |
| 1 | XL1509-5.0 | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | U1 |
| 1 | XT60 | Connector_AMASS:AMASS_XT60PW-F_1x02_P7.20mm_Horizontal | J2 |
| 1 | XT60 | Connector_AMASS:AMASS_XT60IPW-M_1x03_P7.20mm_Horizontal | J1 |
| 1 | ~ | Ether:RJ45-TH_HR911105A | J7 |
The 94 most common of 98 parts.
Similar boards
- 2 layers100 × 90 mm

- 2 layers

- 2 layers99.9 × 79.3 mm

Led controller
azaslavskis/WLED-Controller
Simple project that takes care of LED strips and connect them using esp32 to home assistant interface
65 partsMIT - 2 layers68.6 × 53.3 mm

- 2 layers100 × 95 mm

- 2 layers1,107.6 × 7.7 mm

- 2 layers32 × 80 mm

- 4 layers107.5 × 102.5 mm

Questions
How big is the UDP w5500 PCB?
It measures 85 × 50 mm and has 2 copper layers, 1.6 mm thick.
What parts does the UDP w5500 use?
98 parts, built around the 74AHCT1G125SE, XL1509-5.0, AMS1117-3.3 and W5500. 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 UDP w5500 KiCad files?
From the SameSameIndustry/STM32_UDP2CAN_controller repository on GitHub, at the commit this page was made from: the board is UDP_w5500/UDP_w5500.kicad_pcb and its schematic UDP_w5500/UDP_w5500.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the UDP w5500 design in my own project?
Its repository states no licence, so its author keeps all rights: ask SameSameIndustry before reusing the design.