ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
LEGO 51515·EV3 31313 로봇 설계를 계획하고 2D 시뮬레이터로 연습해 Pybricks 코드와 Jev가 선택한 동작까지 내보낸다
Plan LEGO 51515 and EV3 31313 robot builds, rehearse them in a 2D simulator and export Pybricks code, up to behaviours picked by Jev
교육JavaScript · CSSGitHub @energon-a-secas온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Plan LEGO 51515 and EV3 31313 robot builds, rehearse them in a 2D simulator and export Pybricks code
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Plan LEGO 51515 and EV3 31313 robot builds, rehearse them in a 2D simulator and export Pybricks code, up to behaviours picked by Jev
Botbench is a workbench for the two LEGO robot kits most people still have in a cupboard: Robot Inventor (51515) and EV3 Home Edition (31313). Tick the boxes you own, plug parts into a hub's ports, and it tells you what that build can do, rehearses it in a top-down simulator, writes the Pybricks MicroPython to run it, and then connects to the real Inventor Hub over Web Bluetooth so you can watch it sense, drive it by hand and switch its behaviour from the page. The top of the ladder adds a decision layer: a laptop bridge asks TypeSafe's Jev which behaviour fits a goal written in plain words, while the motors stay under the hub's own control loops.
Live: botbench.neorgon.com
bridge.py (bleak over Bluetooth LE, HTTPS to Jev, key kept on the laptop)| Layer | Runs on | Rate | Does |
|---|---|---|---|
| Control loops | the hub | ~100 Hz | line following, avoiding, stopping |
| Facts | the hub | 2 Hz | turns readings into categories: front=blocked;floor=line edge;mode=explore |
| Link tab | this page, Chromium | 2 Hz | the same facts over Web Bluetooth; teleop and mode bytes back; the stand-in decider, never Jev |
| Bridge | laptop or Raspberry Pi | 2 Hz | reads facts over BLE, holds the API key |
| Jev | TypeSafe API | per call | one Choice question picks the mode, one Noul asks if the goal is met |
| Gate | the bridge | per call | switches only above a confidence threshold, sends one byte back |
Two things the simulator taught the design, both now in the exported hub code: numbers are turned into categories on the hub because comparing numbers is on Jev's documented weak-spot list, and a crossed line is latched between reports because a 22 mm line passes under the sensor in a tenth of a second.
The browser never calls Jev: there is no CORS story and a key must not ship in a static page. The simulator's decider is a hand-weighted local stand-in that imitates the answer's shape, labelled as such.
The Link tab speaks the Pybricks BLE profile directly (service c5f50001-…, the command/event
characteristic, WRITE_STDIN 0x06 out, WRITE_STDOUT 0x01 in, START_USER_PROGRAM 0x01), which is the
same channel Pybricks' own "hub to PC" tutorial uses. The program still gets onto the hub through Pybricks
Code, because compiling MicroPython in the browser is a build this site does not carry; an experimental
button pastes the source into the hub's REPL instead, paced on the echo, and is marked as untried on
hardware. Web Bluetooth exists in Chrome and Edge only, over https or localhost.
The virtual hub is the simulator attached to the same link: it prints the same facts line and takes the same bytes, so the tab, the decider and the teleop pad can be tried before a hub is in the room.
ES modules require an HTTP server (not file://):
make serve
Tests over the pure modules (build, brain, export, the link protocol):
node --test test/*.test.mjs
botbench-site/
├── index.html # Shell, CSP, header and footer kit contracts, the five panels
├── css/style.css # Template base plus the workbench layer
├── js/
│ ├── app.js # Entry point
│ ├── catalog.js # Hubs, devices, kits, chassis types, firmware, extra hardware
│ ├── build.js # Port validation, capabilities, combination matrix
│ ├── brain.js # Rule runner, modes, facts, the Jev request, the local stand-in
│ ├── sim.js # Arenas, kinematics, sensor models (no drawing)
│ ├── simview.js # Canvas, clock, brain-in-the-loop
│ ├── export.js # Pybricks programs (rules, modes with teleop) and the Jev bridge
│ ├── link.js # Pybricks BLE profile, facts line, link over a transport; BLE and virtual transports
│ ├── linkpanel.js # The Link tab
│ ├── projects.js # The project ladder
│ ├── models.js # Published models and bigger ideas, with sources
│ ├── models-panel.js # The Models and ideas tab
│ ├── state.js # Workbench state, validated persistence
│ ├── render.js # Build, projects, paths, export panels
│ ├── simpanel.js # Simulator controls, readout, rule editor
│ ├── events.js # All listeners
│ └── neorgon-*.js # Vendored kits (header, footer, beacon, dom, persist)
├── test/ # node --test over the pure modules
└── docs/architecture.mmd
LEGO, MINDSTORMS and Robot Inventor are trademarks of the LEGO Group, which does not sponsor or endorse this project.