neuron-explorer
Qwen3.5‑4B 전용 조향형 뉴런 탐색기, 모든 MLP 뉴런을 밀어 결과를 보관·탐색
4×3 개발보드 테스트 랙, 전부 3D 프린트, ESP32‑S3 USB/IP 노드와 슬라이드 서랍, 교체 가능한 보드 플레이트 제공
A 4×3 dev-board test rack, all printed: ESP32-S3 USB/IP node per bay, sliding drawers with a hidden drag chain, swappable board plates. Interactive 3D model.
개발 도구Python · CGitHub @kartben온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기3D-printed, tilted test shelf for 16 dev boards: sliding drawers, per-bay ESP32-S3 running Zephyr (USB/IP, power switching, metering), KiCad PCBs, OpenSCAD parts, BOM and an interactive 3D viewer
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗An all-printed, tilted test rack for development boards (12 in its default 4 × 3 layout) — every board in its own sliding drawer, power-switched, current-metered and exposed over the network with USB/IP by a Zephyr-powered ESP32-S3 in each bay.
▶ Interactive 3D model · BOM · Architecture · Mechanics · Cabling · Power · Electronics · Assembly · Firmware · Standalone bays · CI
config/rack.yaml:
OpenSCAD parts, KiCad schematics and PCBs (schematic-as-code, Freerouting),
the BOM with LCSC part numbers, and the interactive viewer.| Bay B3 pulled out, still connected: a DATA ×4 at the back serves two XIAOs and two Pico 2s | The DATA ×4 up close: a USB-C lead per board, Dupont jumpers wiring a UART between two of them (real models) |
| Row B: the GIGA's LVGL screen in B2, between two DATA ×4 bays | Bay node — ESP32-S3 (8 MB PSRAM), 2 USB muxes, TPS2553, INA226, CAN, 60 V buck |
Neutral technical renders: the rack, one bay exploded, side view.
config/rack.yaml single source of truth (rows, bays, tilt, dimensions, population)
mechanical/ OpenSCAD: lib/, parts/, boards/boards.yaml, generated/ (from the config)
electronics/
tools/ schematic-as-code (eda.py), PCB builder (pcbgen.py), catalogue, LCSC resolver
bay-node/ design.py + generated KiCad project, fab/, docs/
power-hub/ design.py + generated KiCad project, fab/, docs/
data-port/ the drawer's USB-C port board: design.py + generated KiCad project, fab/, docs/
camera-pod/ the camera pod's board (lead, camera header, 3.3 V, LEDs): design.py + KiCad, fab/, docs/
lib/ custom symbol(s), cached JLC basic passives
site/ GitHub Pages: three.js viewer + BOM page (assets generated)
bom/ full rack BOM (CSV + summary)
render/ Blender scene + photoreal renders
tools/ build.py (config/STL/web), kicad.sh, bom.py, jlc_mcp.py, notice/ (FreeCAD line art)
docs/ design documentation
Prerequisites: Python ≥ 3.10 with pyyaml numpy trimesh (pip install -r tools/requirements.txt),
Docker (for KiCad 10, Freerouting and — if not installed locally — OpenSCAD).
python tools/build.py all # config → STLs → web viewer assets
tools/kicad.sh bay-node --route --fab # schematic, PCB, autoroute, Gerbers/BOM/CPL, renders
tools/kicad.sh power-hub --route --fab
tools/kicad.sh data-port --route --fab
tools/kicad.sh camera-pod --route --fab
python tools/bom.py # full rack BOM
python -m http.server -d site 8000 # open http://localhost:8000
Generated outputs (STLs, Gerbers, renders, PDFs, GLBs, the BOM) are committed with the change that alters
them, never for a date: python tools/keep_unchanged.py puts back every regenerated file whose content didn't
change (tools/kicad.sh … --fab runs it on its board).
For screenshots the viewer takes URL parameters: ?bay=B4&openbay=1&view=dut&hideui
pulls bay B4's drawer out and frames its DUT cable (DATA port to board), with no UI.
?bay=B2&view=camera&camlight=1&preview=B2 looks into a camera bay with its LEDs on and opens what
its camera sees (an Arducam Mega with a ~120° lens: fisheye, noise, auto-exposure and JPEG, at 5 fps).
The viewer lights the rack like the photos: a real room (Poly Haven's "Small Empty Room 1", CC0, cut to
512 × 256 in site/assets/env/), AgX with Blender's "Medium High Contrast" look, PETG with its layer lines.
Its High quality box (on by default on a desktop GPU, off on phones and small GPUs, and dropped by itself
under 25 fps) adds ambient occlusion (GTAO), a glow on the status LEDs and the camera lights, 4× MSAA through
the post-processing and 4096² sun shadows; ?quality=high or ?quality=low forces one for screenshots.
Photoreal renders (Blender + Cycles) start from render/assembly.glb, baked
from the same scene as the viewer by python tools/assembly_glb.py --hq (--hq:
full-resolution part meshes instead of the viewer's lighter ones). Either
render headless in Docker (tools/render.sh hero) or drive a Blender you
already have open — GPU and all — through the Blender MCP add-on's socket:
python tools/blender_live.py exec render/live_scene.py # (re)build the scene
python tools/blender_live.py exec render/live_render.py hero # → docs/img/hero.jpg
python tools/blender_live.py exec render/live_render.py drawer:B3 docs/img/drawer.jpg
python tools/assembly_glb.py --hq --explode-bay B2 --out render/bay-exploded.glb # one bay, layers apart
python tools/blender_live.py exec render/live_scene.py render/bay-exploded.glb
python tools/blender_live.py exec render/live_render.py exploded
The photo shots (docs/img/photo-*.jpg) use their own scene: a small office
lit through a window, PETG with 0.2 mm layer lines and
rounded edges, scanned oak and plaster (CC0 textures from Poly Haven), a laptop
showing a Zephyr shell, wired to bay B4 by a USB-C cable that hangs as a real
one would (a catenary), depth of field, bloom and a vignette, rendered at 2× and averaged down:
python tools/fetch_render_assets.py # CC0 textures + vendor board models → render/assets/
python tools/board_models.py # normalise the board models (docs/boards-3d.md)
python render/screen_terminal.py # the laptop's screen → render/assets/
node tools/lvgl_frame.mjs music 480 800 # B2's GIGA display: one frame of the viewer's LVGL demo
# (the drawer fronts' status screens: assembly_glb.py draws them)
python tools/assembly_glb.py --hq --with-pc-cable --open-bays B3 --out render/assembly-photo.glb
python tools/blender_live.py exec render/live_photo.py build
python tools/blender_live.py exec render/live_photo.py shot desk # desk, drawer, detail → docs/img/photo-*.jpg
Change the rack in config/rack.yaml (tilt, rows, columns, panel thickness,
which bays get cameras, which board sits where) and rebuild.
v0.2 — the printed panel frame replaces the aluminium frame, not yet
built. Mechanics are printable and parametric, the power box included;
still to design: double-width bays (see mechanical.md).
Each drawer front carries the node's 1.9" touch display, waiting on the
module to check its fit before a test print. Five PCBs (bay node, power hub,
DATA port, DATA ×4 v2, camera pod) pass ERC and DRC, are routed and smoothed,
and went through a schematic review
(schematic-review-2026-10-25.md) and a
datasheet audit; none is fabricated yet (see
electronics.md). The node firmware:
firmware.md.
Board outlines marked verified: false in boards.yaml are approximate.
Hardware (mechanical and electronics design files): CERN-OHL-P-2.0. Software (tools, viewer, firmware): Apache-2.0. See LICENSE.