
24g2usb rp2350zero
joypad-ai/joypad-os
Universal controller firmware for building adapters, dongles, and custom controllers.

VoiceS3R 用の指静脈モジュール接続ベース(24x24 Atomic型)
Vein base is an open-source printed circuit board by ippoan, from the ippoan/vein-base repository on GitHub. It is a 2-layer board of 20 × 19.9 mm with 4 parts on 9 nets, routed with 20 tracks and 1 via.
M5Stack Atom VoiceS3R の下に積むベースです。指静脈モジュール Waveshare Finger Vein Scanner Module (A) を UART でつなぐための中継基板と、上蓋なしの 1 部品のケース(カップ)で構成しています。
ケース(vein_base_v<版>_cup)は床・ネジのボス・基板を支えるレールに、基板を囲む壁を立ち上げた形です。M5 の Atomic 系ベースと同じく、VoiceS3R は Ext.Pin のピンに刺して上に載せるだけで、外側は囲みません。壁の上端は VoiceS3R の底面から 0.25 mm 下で止め、ピンヘッダーのすき間を隠します(外形 24.4 × 33.1 × 9.25 mm、壁は全方向 1.4 mm 以上)。基板に合わせて USB-C と反対側(+y)へ伸びていて、その面に J3 のケーブル用の上へ開いた溝があります。
3D プレビュー: https://ippoan.github.io/vein-base/(回転・分解表示・部品の表示切替ができます)
3D プレビュー(GitHub Pages、main の CI が更新。各ページから型紙・加工図もダウンロードできます):
| 案 | ページ |
|---|---|
| vein-base(単体) | https://ippoan.github.io/vein-base/ |
| Vein Station(印刷筐体) | https://ippoan.github.io/vein-base/station/ |
| Vein Station SE(CoreS3 SE) | https://ippoan.github.io/vein-base/station-se/ |
| Vein Station PF(タカチ PF13-4-9) | https://ippoan.github.io/vein-base/station-pf/ |
| Vein Station SW(タカチ SW-85B) | https://ippoan.github.io/vein-base/station-sw/ |
| Vein Station SW75(タカチ SW-75B) | https://ippoan.github.io/vein-base/station-sw75/ |
| Vein Station SW130(タカチ SW-130B) | https://ippoan.github.io/vein-base/station-sw130/ |
| Vein Station 3D 印刷の試作 A(一列・薄型) | https://ippoan.github.io/vein-base/station-print-a/ |
| Vein Station 3D 印刷の試作 B(2 列・短い) | https://ippoan.github.io/vein-base/station-print-b/ |
| Vein Station 3D 印刷の案 C(一列・DB9 なし・指静脈と VoiceS3R だけ) | https://ippoan.github.io/vein-base/station-print-c/ |
| 指静脈 Unit(CS75N-B) | https://ippoan.github.io/vein-base/vein-unit-cs/ |
| 指静脈 Unit(SIC5-9-2B) | https://ippoan.github.io/vein-base/vein-unit-sic/ |
VoiceS3R(Ext.Pin メス)
└ 中継基板 20.0×29.9 mm(J1 1x5 / J2 1x4 オスピン、J3 MX1.25 4P 横型。全部品が表面 = VoiceS3R 側。J3 は VoiceS3R の外、USB-C の反対側の端)
└ カップ 24.4×33.1(基板の下と周りだけ。VoiceS3R は囲まない。M2×12 ネジ 1 本で全体を VoiceS3R に共締め)組み立て: VoiceS3R に基板を挿す → 指静脈のケーブルを J3 に挿す(挿さり具合を目で確かめられる)→ カップを下から差し込む(ケーブルは USB-C と反対側(+y)の壁の、上へ開いた溝を通る)→ 底から M2 ネジで締める。
| VoiceS3R Ext.Pin | 基板 | J3(4P) | モジュール 9P |
|---|---|---|---|
| G5(UART TX) | J1-2 | 1 | 5 RXD |
| G6(UART RX) | J1-3 | 2 | 6 TXD |
| 3V3 | J1-1 | 3 | 3 VCC |
| GND | J2-4 | 4 | 4 GND |
vein_base_atomic)3D プリントのカップの代わりに、市販の M5Stack ATOMIC Proto Kit(A077)のケースに入れる版。基板の外形は M5 公式の ATOMIC-TYPE-A(M5_Hardware の Common/Atomic_Type_A/Structures/Atomic_Type_A.dxf、20 × 43.8 mm)をそのまま使い、中心の穴は φ4.2(メッキなし)。部品・配線表はカップ版と同じで、J3 は +y 端(ケース端面の開口側)に置く。両側の半円の切り欠き(ケースの柱よけ)のあいだは幅 8.6 mm しかないので、配線はそこを x −3.8〜+3.8 の中だけで通る。
fab/atomic/vein_base_atomic_v<版>_*(ガーバー zip・BOM・CPL)。カップ版の vein_base_v<版>_* と取り違えない。VoiceS3R(vein-base の基板のみ。ケースは使わない)・指静脈モジュール・NFC ユニットを上向きに並べて収める卓上筐体の案。station/build_station.py(CadQuery)が筐体(ケース上部・底蓋)の STEP / STL と 3D プレビュー(https://ippoan.github.io/vein-base/station/)を作り、モジュール・プラグ・USB ケーブルとの干渉をチェックする。モジュールの外形は公式値(VoiceS3R・NFC は M5Stack 公式 STL の Atom_VoiceS3R.stl・Unit_NFC.stl、指静脈は Waveshare の製品ページ の 59 × 26 × 15)。上面ボタン・ネジ頭などの細部とケーブルは写真からの実測。指静脈のコネクタ位置は未確定。基板は pcb/station_board/(r12)が生成する 60 × 35 mm の 1 枚基板で、VoiceS3R の Ext.Pin・指静脈 J3(G5/G6)・MAX3232(G7=送信 / G8=受信)・DIP(1+2 = Passthrough、3+4 = Cross)・DB9 オス RA をまとめ、接続口はすべて奥の壁に出す。同じ回路・同じ配線で外形を広げた版(build_board.py pf → station_board_pf、92 × 71)は、既製ケースタカチ PF13-4-9 用(印刷部品なし)。基板はケースに元からある基板用ボス(87 × 47)にタカチ TPS-M2.3-7 と M2.3 ねじで留め、モジュールは M3 オスメス六角スペーサーとナットで基板に立てる。60 × 35 の範囲と配線は共通。ケース側は station/build_station_pf.py(ケースはタカチ公式 STP の実測値からの簡略形状、STP は入れない)が、干渉チェック・3D プレビュー(site/station-pf/)・タカチの穴加工に出す DXF(天板の窓 2 つだけ)を作る。接続口はすべて背面なので背面パネルは付けない。基板の穴(H1..H8、B1..B4)はこのスクリプトと build_board.py の 2 か所にあるので一緒に直す。
pcb/station_esp_board/build_board.py(e1)は、PF13-4-9 用の station 基板(92 × 71、穴・DB9・MAX3232・DIP・J3 の位置は同じ)に、Atom VoiceS3R を挿す代わりにその回路を直接載せた版。M5Stack 公開の回路図(Sch_M5_AtomS3R_v0.4.1 / Sch_M5_AtomEchoS3R_Audio_v1.0)と同じ GPIO でつなぐので、VoiceS3R 用のファームがそのまま使える見込み。
espefuse.py --port <ポート> set_flash_voltage 3.3V で Flash 電圧を eFuse に書く。M5Unified は PICO-1 のパッケージで VoiceS3R を見分けるので、cfg.fallback_board = m5::board_t::board_M5AtomVoiceS3R を指定する。build_board.py、fab/station_esp/。筐体側 station/build_station_pf.py はまだ VoiceS3R 版のまま)と、SW-85B 用 52 × 76(build_board.py sw、fab/station_esp_sw/)。station_esp_board[_sw].ses に入れてある(build_board.py [sw] dsn で DSN を出して再配線)。CI で gerber / CPL / DRC。ケースを小さくする案。VoiceS3R が無くなった分、中身は指静脈・NFC・DB9 と ESP 基板だけなので、タカチで一番小さく収まる SW-85B(60 × 40 × 85、はめ込み式、¥350。PF13-4-9 の半分以下の面積)に入れる。station/build_station_sw.py がケースの簡略形状(タカチの外形図から)と干渉チェック、3D プレビュー(site/station-sw/)を作る。
NFC Unit を箱の外に置き(Grove ケーブルで J6 へ)、SW-75B(50 × 30 × 75、¥200。PF13-4-9 の約 1/3 の面積で高さも 10 低い)に指静脈・DB9 と ESP 基板だけを収める。station/build_station_sw75.py が干渉チェックと 3D プレビュー(site/station-sw75/)、基板は build_board.py sw75(40.8 × 68.1、fab/station_esp_sw75/、BOM は jlc_bom_sw75.csv)。
タカチ SW-130B(40 × 25 × 130、¥360)に、−y から DB9 → DIP と指静脈のケーブル → 指静脈 → VoiceS3R を一列に全部入れる。station/build_station_sw130.py が干渉チェック・3D プレビュー(https://ippoan.github.io/vein-base/station-sw130/)・加工図(DXF / PDF)と A4 原寸の型紙、タカチへの見積もり依頼に付ける加工位置図(A4 横 1 枚・日本語、vein_station_<REV>_positions.pdf)を作る。基板は build_board.py sw130(34.8 × 122.7、片面、fab/station_sw130/、BOM は jlc_bom_sw130.csv)。詳細は CLAUDE.md の SW130 案の節。
本体を CoreS3 SE に替え、RS232M Module 13.2(アルコールチェッカー FC-1200 用)・NFC・指静脈を収める版。LAN は使わず、USB 1 本で Windows PC につなぐ。station/build_station_se.py が筐体と 3D プレビュー(https://ippoan.github.io/vein-base/station-se/)を作る。CoreS3 SE には PORT.B のコネクタが無いので、指静脈の UART(G8/G9)は RS232M の下に挿す M-Bus 分岐基板から取り出す。CoreS3 SE と Unit NFC は M5Stack 公式 STL(m5stack/M5_Hardware、MIT)を commit 固定で取得して表示とポート位置に使う(station/cad/、git 管理外)。CoreS3 SE の PWR・USB-C・PORT.A はすべて左側面にある。指静脈モジュールの外形は公式値(コネクタ位置は未確定)。RS232M・分岐基板は仮の箱。計画は #14。
| パス | 内容 |
|---|---|
pcb/ | KiCad 7 の基板データと生成スクリプト(build_pcb.py、KiCad 付属の Python で実行) |
VERSION | 版番号。出力ファイル名(vein_base_v<版>_*)と基板裏のシルクに入る |
case/ | ケース生成スクリプト(build_case.py、CadQuery) |
pcb/jlc_bom.csv | JLCPCB 用 BOM の元データ(LCSC 品番) |
pcb/station_board/jlc_bom.csv | station 基板の JLCPCB 用 BOM の元データ |
pcb/station_esp_board/jlc_bom.csv | station ESP 基板(VoiceS3R の回路を載せた版、PF 用・SW 用で共通)の JLCPCB 用 BOM の元データ |
pcb/station_esp_board/jlc_bom_sw75.csv | 同じく SW-75B 用(0402 部品)の BOM |
fab/ | CI の出力先(git 管理外)。JLCPCB 発注用(ガーバー zip、BOM、CPL)、原寸の確認用 PDF、基板の STEP |
tools/ | CI 用スクリプト(DRC チェック、JLC 用 CPL 変換、3D プレビュー生成と干渉チェック) |
main への push で .github/workflows/build.yml が次を順に実行します。
vein-base-v<版>-fab)にアップロードする。ファイル名はすべて vein_base_v<版>_* で、発注時に版を取り違えないようにしている。STL / STEP / PDF 等の生成物はリポジトリに置かず、常に Artifacts から取る。寸法や配線を変えるときは、pcb/build_pcb.py / case/build_case.py を編集して push すれば、製造データと 3D プレビューがまとめて更新されます。
Common/Atomic_Type_A による。atoms3-timecard の station 版(0.1.0+74579fe、Pages の firmware/alc-hub-atoms3-timecard-station-merged.bin を espflash write-bin 0x0 で書き込み)で確認。SW1 は 1+2 ON(Passthrough)。DB9 に FC-1200B をつなぎ、G7 = 送信 / G8 = 受信(MAX3232、9600 8N1)で接続応答 → 暖機 → 吹き込み待ち → 測定 → 測定値(0.000 mg/L)まで USB コンソールに出た。未確認: 指静脈(J3、G5/G6。vein 版のファームが要る)、NFC、SW1 の Cross(3+4 ON)。vein_base_v<版>_fitcheck_1to1_seen_from_below.pdf を原寸(100%)で印刷し、VoiceS3R の底面に当てる。ピン列の左右とネジ穴の位置が合うか確認する。| Qty | Value | Footprint | References |
|---|---|---|---|
| 1 | Hdr 1x4 2.54 (G39,G38,5V,GND) | PinHeader_1x04_P2.54mm_Vertical | J2 |
| 1 | Hdr 1x5 2.54 (3V3,G5,G6,G7,G8) | PinHeader_1x05_P2.54mm_Vertical | J1 |
| 1 | MX1.25-4P RA SMD (Molex 53261-0471) | Molex_PicoBlade_53261-0471_1x04-1MP_P1.25mm_Horizontal | J3 |
| 1 | MountingHole_2.2mm_M2 | MountingHole_2.2mm_M2 | H1 |
It measures 20 × 19.9 mm and has 2 copper layers, 1.6 mm thick.
4 parts. 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.
From the ippoan/vein-base repository on GitHub, at the commit this page was made from: the board is pcb/vein_base.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask ippoan before reusing the design.

joypad-ai/joypad-os
Universal controller firmware for building adapters, dongles, and custom controllers.


hackclub/OnBoard
💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

tardate/LittleArduinoProjects
a collection of "Little Electronic & Arduino Projects", most involving electronics or an Arduino in one way or another!

drandyhaas/KiCadRoutingTools
A set of Python/Rust tools to aid routing in KiCad

osy/XG_Mobile_Station
Open source eGPU dock for ROG Ally and ROG Flow

Luos-io/luos_engine
Open-source and real-time orchestrator for cyber-physical-systems, to easily design, test and deploy embedded applications and digital twins.

NVNTLabs/switch2-SDEX2M2
Micro SD Express to M.2 NVME Adapter for Nintendo Switch 2