메뉴
HN
Hacker News 44일 전

절연 테이프와 구형 CNC로 만든 AI 하드웨어 해킹 로봇 팔

IMP
6/10
핵심 요약

해커가 일상적인 잡동사니와 AI를 결합하여 기판의 핀과 패드를 자동으로 탐지하고 프로빙(Probing)하는 'AutoProber' 시스템을 구축했습니다. 이 시스템은 USB 현미경으로 기판을 스캔해 지도를 생성하고, 오실로스코프를 통해 안전 장치를 모니터링하며, AI 에이전트가 웹 대시보드를 통해 물리적 하드웨어를 제어할 수 있게 해줍니다. 오픈소스 형태로 공개되어 누구나 자체 실습 환경에 맞춰 하드웨어 해킹 및 테스트 자동화 환경을 구축할 수 있다는 점이 핵심입니다.

번역된 본문

AutoProber는 하드웨어 해커를 위한 플라잉 프로브(Flying Probe) 자동화 스택입니다. 에이전트에게 테스트할 새로운 타겟이 준비되었다는 것을 알리는 것부터 시작하여, 개별 핀을 안전하게 프로빙(Probing)하는 데 필요한 모든 기능을 제공합니다.

데모 영상: https://gainsec.com/autoprober-demo-mp4/

동작 흐름

  1. 에이전트에게 프로젝트를 분석(ingest)하도록 지시합니다.
  2. 모든 하드웨어를 연결합니다.
  3. 에이전트에게 모든 부품이 정상 작동하는지 확인하도록 지시합니다.
  4. 기준점 복귀(Homing) 및 캘리브레이션을 실행합니다.
  5. 커스텀 프로브와 현미경 헤더를 부착합니다.
  6. 에이전트에게 플레이트 위에 새로운 타겟이 있음을 알립니다.
  7. 에이전트가 타겟의 위치를 찾고, 개별 프레임을 캡처하며 XYZ 좌표를 기록하면서 패드, 핀, 칩 및 기타 주요 특징들을 파악합니다.
  8. 캡처된 프레임들을 이어 붙여 지도를 생성하고, 식별된 핀과 주요 부품들을 주석(Annotation)으로 표시합니다.
  9. 웹 대시보드에 프로브 타겟을 추가하여 사용자의 승인 또는 거절을 기다립니다.
  10. 승인된 타겟을 프로빙하고 그 결과를 보고합니다.

모든 하드웨어는 웹 대시보드, 파이썬(Python) 스크립트 또는 에이전트 자체를 통해 제어할 수 있습니다. 이 리포지토리는 소스 코드가 공개된 독립적인 릴리즈 후보(RC) 버전으로, 직접 AutoProber를 구축하는 데 필요한 파이썬 제어 코드, 대시보드, CAD 파일 및 문서가 포함되어 있습니다.

안전 모델 이 프로젝트는 물리적 하드웨어를 움직이는 시스템입니다. 일반적인 웹 앱이 아닌 기계 제어 시스템으로 취급해야 합니다. 요구되는 안전 설계는 다음과 같습니다: GRBL의 Pn:P 명령은 무시됩니다. CNC 프로브 핀은 신뢰할 수 있는 엔드스톱(Endstop)으로 간주하지 않습니다. 독립적인 안전용 엔드스톱은 오실로스코프의 채널 4(CH4)에서 읽어옵니다. 모터 구동 중 채널 4의 상태를 지속적으로 모니터링해야 합니다. 채널 4의 트리거, 불분명한 전압, CNC 알람 또는 실제 X/Y/Z 리밋(Limit) 핀 작동은 모두 즉각적인 정지 조건입니다. 에이전트나 조작자는 작동을 멈추고 상황을 보고해야 합니다. 복구 동작은 자동으로 수행되지 않습니다. 하드웨어를 작동하기 전에 반드시 docs/safety.md와 docs/operations.md를 읽어야 합니다.

리포지토리 구조 apps/: 조작자용 스크립트 및 Flask 대시보드 진입점 autoprober/: CNC, 오실로스코프, 현미경, 로깅, 안전 기능을 위한 재사용 가능한 파이썬 패키지 dashboard/: 싱글 페이지 웹 대시보드 docs/: 아키텍처, 장비 참조, 작동 및 안전 가이드 cad/: 현재 커스텀 툴헤드용 3D 프린팅(STL) 파일 config/: 환경/설정 파일 예시 AGENTS.md: 에이전트/조작자 안전 규칙 LICENSE: PolyForm 비상업적 라이선스 1.0.0 (상업적 이용은 별도 문의) pyproject.toml: 파이썬 프로젝트 메타데이터 uv.lock: 고정된 파이썬 종속성 해상도(버전 정보)

하드웨어 스택 테스트된 프로젝트 아키텍처는 다음과 같습니다:

  • USB 시리얼을 통한 GRBL 호환 3018 타입 CNC 컨트롤러
  • mjpg_streamer를 통해 제공되는 USB 현미경
  • 채널 4 안전 모니터링 및 채널 1 측정을 위한 LAN/SCPI 연결 Siglent 오실로스코프
  • 외부 5V 전원 및 오실로스코프 채널 4에 연결된 광학식 엔드스톱
  • 실험실 전원 제어를 위한 선택적 네트워크 제어 콘센트
  • cad/ 폴더에 있는 현재 3D 프린팅 가능한 커스텀 툴헤드 부품
  • 기본 런타임 설정은 장비 문서에 명시되어 있으며, 사용하기 전에 자체 실험실 환경에 맞게 변경해야 합니다. 쇼핑 목록 중심의 하드웨어 목록은 docs/BOM.md를 참조하십시오.

참고 부품 프로토타입 릴리즈에 사용된 특정 부품 또는 부품 클래스입니다. 구매 전에 현재 판매 여부, 치수, 전압 및 커넥터 호환성을 확인하십시오.

내 빌드 구성:

  • 광학식 엔드스톱 (Optical End Stop)
  • USB 현미경
  • SainSmart Genmitsu 3018-PROVer V2
  • Matter 스마트 전원 탭 (개별 제어 가능한 AC 콘센트 2개와 USB-A 2개, USB-C 2개 포함)
  • Siglent SDS1104X-E 오실로스코프
  • 듀폰트(Dupont) 와이어
  • 펜 스프링 또는 유사한 경량 압축 스프링
  • cad/ 폴더의 출력물을 출력할 3D 프린터

선택 사항 / 교체 가능:

  • 범용 오실로스코프 프로브
  • 5V USB 전원 어댑터, USB 2.0 피그테일(Pigtail) 케이블

하드웨어 아키텍처 흐름도 Operator(조작자) --> Dashboard(웹 대시보드) Dashboard --> Apps(파이썬 앱) Apps --> CNC(USB 시리얼을 통한 GRBL CNC) Apps --> Microscope(mjpg-streamer를 통한 USB 현미경) Apps --> Scope(LAN/SCPI를 통한 오실로스코프) Apps --> Outlet(선택적 LAN 전원 콘센트) Endstop(광학식 엔드스톱) --> ScopeC4(오실로스코프 CH4 안전 전압) Pogo(포고 핀 측정) --> ScopeC1(오실로스코프 CH1 측정) ScopeC4 --> Apps ScopeC1 --> Apps

원문 보기
원문 보기 (영어)
AutoProber AutoProber is the hardware hacker's flying probe automation stack for giving your agent everything it needs to go from "there's a new target on the plate" to probing individual pins in a safe way. Demo video: https://gainsec.com/autoprober-demo-mp4/ Flow Tell the agent to ingest the project. Connect all the hardware. Tell the agent to confirm that all parts are functioning. Have it run homing and then calibration. Attach the custom probe and microscope header. Tell the agent that there is a new target on the plate. It will find where the target is on the plate, then take individual frames, keeping a record of the XYZ while noting pads, pins, chips, and other interesting features. It will stitch the frames together and annotate the map, including pins and interesting components it identified. It will add probe targets to the web dashboard for you to approve or deny. It will probe the approved targets and report back. All hardware can be controlled through the web dashboard, Python scripts, or by the agent itself. This repo is a self-contained source-available release candidate. It contains the Python control code, dashboard, CAD files, and documentation needed to create your own AutoProber. Safety Model This project can move physical hardware. Treat it as a machine-control system, not a normal web app. The required safety design is: GRBL Pn:P is ignored. The CNC probe pin is not a trusted endstop. The independent safety endstop is read from oscilloscope Channel 4. Channel 4 must be continuously monitored during any motion. Any Channel 4 trigger, ambiguous voltage, CNC alarm, or real X/Y/Z limit pin is a stop condition. The agent/operator must stop and report. Recovery motion is not automatic. Read docs/safety.md and docs/operations.md before running hardware. Repository Layout apps/ Operator-facing scripts and Flask dashboard entrypoint autoprober/ Reusable Python package for CNC, scope, microscope, logging, safety dashboard/ Single-page web dashboard docs/ Architecture, device references, operations, and safety guidance cad/ Printable STL files for the current custom toolhead config/ Example environment/configuration files AGENTS.md Agent/operator safety rules LICENSE PolyForm Noncommercial 1.0.0 license and commercial contact pyproject.toml Python project metadata uv.lock Locked Python dependency resolution Hardware Stack The tested project architecture uses: GRBL-compatible 3018-style CNC controller over USB serial USB microscope served by mjpg_streamer Siglent oscilloscope over LAN/SCPI for Channel 4 safety monitoring and Channel 1 measurement Optical endstop wired to an external 5V supply and oscilloscope Channel 4 Optional network-controlled outlet for lab power control Current printable custom toolhead parts in cad/ Default runtime assumptions are documented in the device docs. Replace them with your own lab settings before use. For a shopping-oriented hardware list, see docs/BOM.md . Reference Parts These are the specific parts or part classes used for the prototype release. Verify current listings, dimensions, voltage, and connector compatibility before buying. My build: Optical End Stop USB Microscope SainSmart Genmitsu 3018-PROVer V2 Matter Smart Power Strip , individually controlled AC outlets with 2 USB-A and 2 USB-C ports Siglent SDS1104X-E Oscilloscope Dupont wires Pen spring or similar light compression spring 3D printer for the printable toolhead parts in cad/ Optional / interchangeable: Universal Oscilloscope Probes USB power brick, 5V USB 2.0 pigtail cable Hardware Architecture flowchart LR Operator[Operator] --> Dashboard[Web Dashboard] Dashboard --> Apps[Python Apps] Apps --> CNC[GRBL CNC over USB serial] Apps --> Microscope[USB Microscope via mjpg-streamer] Apps --> Scope[Oscilloscope over LAN / SCPI] Apps --> Outlet[Optional LAN Power Outlet] Endstop[Optical Endstop] --> ScopeC4[Scope C4 Safety Voltage] Pogo[Pogo Measurement] --> ScopeC1[Scope C1 Measurement] ScopeC4 --> Apps ScopeC1 --> Apps Loading Runtime Architecture flowchart TD Preflight[Preflight] --> SafetyCheck{Channel 4 clear?} SafetyCheck -- no --> Stop[STOP State] SafetyCheck -- yes --> Motion[Monitored Motion] Motion --> Monitor[EndstopMonitor thread >= 10 Hz] Monitor --> C4{C4 clear?} C4 -- yes --> Capture[Microscope Capture] C4 -- no --> FeedHold[Immediate feed hold] FeedHold --> Stop Capture --> Stitch[Stitch / Map] Stitch --> Review[Manual Probe Review] Review --> Approved{Approved target and measured probe offset?} Approved -- no --> Stop Approved -- yes --> Probe[Bounded probe motion] Loading STOP State stateDiagram-v2 [*] --> Running Running --> STOP: C4 triggered / C4 fault / CNC alarm / real limit pin STOP --> Report: log voltage, status, action Report --> WaitForOperator: no automatic recovery motion WaitForOperator --> Running: operator explicitly clears condition Loading Quick Start Install dependencies: uv sync Start the dashboard on a configured hardware host: PYTHONPATH=. python3 apps/dashboard.py The dashboard defaults to port 5000 . Configuration Start from config/autoprober.example.env . Do not publish lab-specific IPs, hostnames, credentials, calibration files, or captured target images unless you intend to release them. Important runtime values are configurable: AUTOPROBER_LOG_PATH : runtime log path AUTOPROBER_RUNTIME_ROOT : calibration, flat-field, and runtime state directory AUTOPROBER_MICROSCOPE_SNAPSHOT_URL : microscope snapshot endpoint AUTOPROBER_SCOPE_HOST / AUTOPROBER_SCOPE_PORT : oscilloscope SCPI endpoint Dashboard: Flask on port 5000 Do not commit local environment files that contain lab-specific hosts, paths, or target data. Main Workflows Run preflight checks. Verify Channel 4 is clear. Home and calibrate only when the physical setup is ready. Capture microscope frames with monitored motion. Import or generate target map artifacts for review. Approve probe candidates manually. Execute any probe motion only after microscope-to-probe offset is measured and stored. What Is Excluded This release candidate intentionally excludes: Trial microscope captures and stitched target images Uploaded reference images Local backups and archives .venv , __pycache__ , Playwright artifacts Runtime logs, calibration cache, flat-field images Machine-specific SSH/deploy state See RELEASE_MANIFEST.md for details. License This project is source-available under the PolyForm Noncommercial License 1.0.0. You may use, modify, and share this project for noncommercial purposes. Commercial use requires a separate paid commercial license. For commercial licensing, contact: autoprober@gainsecmail.com Current Limitations The microscope-to-pogo XY offset must be measured before real probing. Calibration must not be fabricated; the runtime calibration file should be generated on the machine that will move. The dashboard is a lab-control tool and should not be exposed to untrusted networks. Responsible Use This project is intended for controlled lab work on equipment and targets you are authorized to test. Do not use it to probe, damage, or analyze systems without permission. Authors Jon 'GainSec' Gaines