GainSec/AutoProber

GitHub: GainSec/AutoProber

硬件黑客的飞针自动化栈,解决从目标发现到安全针脚探测的闭环控制问题。

Stars: 0 | Forks: 0

# 自动探测工具 AutoProber 是硬件黑客的飞针自动化栈,旨在为 你的代理提供从“盘中有新目标”到以安全方式探测单个引脚所需的一切。 ![AutoProber 组装图](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/fbce9989b0023144.jpg) 演示视频: https://gainsec.com/autoprober-demo-mp4/ ## 工作流程 1. 告诉代理导入项目。 2. 连接所有硬件。 3. 告诉代理确认所有部件功能正常。 ![AutoProber 网页仪表盘顶部](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/8854c2972e023146.png) 4. 执行归位和校准。 5. 安装自定义探针和显微镜支架。 6. 告诉代理盘中有新目标。 7. 它将找到目标在盘中的位置,然后逐帧拍摄, 记录 XYZ 坐标,同时标注焊盘、引脚、芯片和其他 有趣特征。 ![检测到的标签和目标特征](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/32031ac7b4023148.png) 8. 它将把帧拼接在一起并标注地图,包括引脚和 识别出的有趣组件。 ![标注后的地图视图](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/6e1d0deed7023150.png) 9. 它将为你在网页仪表盘上添加探针目标,供你批准或拒绝。 ![探针审查仪表盘部分](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/93a79373aa023152.png) 10. 它将探测已批准的目标并报告结果。 所有硬件均可通过网页仪表盘、Python 脚本或代理本身控制。 ![手动控制和硬件面板](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/356e445fb7023154.png) 该仓库是一个自包含的源可用候选发布版本。它包含 Python 控制代码、仪表盘、CAD 文件以及创建你自己的 AutoProber 所需的文档。 ## 安全模型 该项目可以移动物理硬件。请将其视为机器控制系统, 而非普通网页应用。 所需的安全设计如下: - 忽略 GRBL `Pn:P`。CNC 探针引脚不是可信的终点开关。 - 独立的安全终点开关从示波器通道 4 读取。 - 任何运动过程中必须持续监控通道 4。 - 通道 4 的任何触发、模糊电压、CNC 报警或真实的 X/Y/Z 限位引脚 都是停止条件。 - 代理/操作员必须停止并报告。恢复运动不是自动的。 在运行硬件前,请阅读 [docs/safety.md](docs/safety.md) 和 [docs/operations.md](docs/operations.md)。 ## 仓库布局 ``` 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 ``` ## 硬件栈 经过测试的项目架构使用: - GRBL 兼容的 3018 风格 CNC 控制器(USB 串口) - 由 `mjpg_streamer` 提供的 USB 显微镜 - 通过 LAN/SCPI 连接的 Siglent 示波器,用于通道 4 安全监控和 通道 1 测量 - 连接到外部 5V 电源和示波器通道 4 的光学终点开关 - 可选的网络控制插座用于实验室电源控制 - `cad/` 中当前可打印的自定义工具头部件 默认运行时假设已在设备文档中记录。使用前请用你自己的实验室设置替换它们。 如需硬件购物清单,请参见 [docs/BOM.md](docs/BOM.md)。 ## 参考部件 这些是用于原型发布的特定部件或部件类别。 在购买前请验证当前列表、尺寸、电压和连接器兼容性。 我的构建: - [光学终点开关](https://www.amazon.com/dp/B08977QFK5) - [USB 显微镜](https://www.amazon.com/dp/B00XNYXQHE) - [SainSmart Genmitsu 3018-PROVer V2](https://www.amazon.com/dp/B07ZFD6SKP) - [Matter Smart Power Strip](https://www.amazon.com/dp/B0DYDFKJJJ),带独立控制交流插座的智能电源插排,配备 2 个 USB-A 和 2 个 USB-C 端口 - [Siglent SDS1104X-E 示波器](https://www.amazon.com/Siglent-SDS1104X-oscilloscope-channels-standard/dp/B0771N1ZF9) - 杜邦线 - 笔弹簧或类似轻压缩弹簧 - 用于 `cad/` 中可打印工具头部件的 3D 打印机 可选/可互换: - [通用示波器探头](https://www.amazon.com/dp/B0827JL1T2) - USB 电源适配器,5V - USB 2.0 尾线电缆 ## 硬件架构 ``` 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 ``` ## 运行时架构 ``` 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] ``` ## STOP 状态 ``` 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 ``` ## 快速开始 安装依赖: ``` uv sync ``` 在已配置硬件主机上启动仪表盘: ``` PYTHONPATH=. python3 apps/dashboard.py ``` 仪表盘默认端口为 `5000`。 ## 配置 从 [config/autoprober.example.env](config/autoprober.example.env) 开始。 不要发布实验室特定的 IP、主机名、凭据、校准文件或捕获的目标图像,除非你打算公开它们。 重要的运行时值可配置: - `AUTOPROBER_LOG_PATH`:运行时日志路径 - `AUTOPROBER_RUNTIME_ROOT`:校准、平场和运行时状态目录 - `AUTOPROBER_MICROSCOPE_SNAPSHOT_URL`:显微镜快照端点 - `AUTOPROBER_SCOPE_HOST` / `AUTOPROBER_SCOPE_PORT`:示波器 SCPI 端点 - 仪表盘:Flask 在端口 `5000` 上运行 不要提交包含实验室特定主机、路径或目标数据的本地环境文件。 ## 主要工作流程 1. 运行预检检查。 2. 验证通道 4 是否空闲。 3. 仅在物理设置就绪时进行归位和校准。 4. 在监控运动下捕获显微镜帧。 5. 导入或生成目标地图工件以供审查。 6. 手动批准探针候选。 7. 仅在测量并存储显微镜到探针偏移后执行探针运动。 ## 排除内容 该候选发布版本有意排除了: - 试用显微镜捕获和拼接的目标图像 - 上传的参考图像 - 本地备份和归档 - `.venv`、`__pycache__`、Playwright 工件 - 运行时日志、校准缓存、平场图像 - 机器特定的 SSH/部署状态 详细信息请参见 [RELEASE_MANIFEST.md](RELEASE_MANIFEST.md)。 ## 许可证 本项目根据 PolyForm Noncommercial License 1.0.0 以源可用方式提供。 你可以在非商业用途下使用、修改和分享本项目。 商业用途需要单独的商业许可。 如需商业许可,请联系:autoprober@gainsecmail.com ## 当前限制 - 显微镜到 Pogo 的 XY 偏移必须在真实探测前测量。 - 校准不得伪造;运行时校准文件应在将要移动的机器上生成。 - 仪表盘是实验室控制工具,不应暴露在不受信任的网络上。 ## 负责任使用 本项目旨在对设备和目标进行受控的实验室工作。请勿用于探测、损坏或分析未经许可的系统。 ## 作者 [Jon 'GainSec' Gaines](https://gainsec.com/)
标签:CAD设计, CNC运动控制, GRBL, PCB探针, Python控制, Web仪表盘, 代理驱动, 开源硬件, 探针校准, 显微镜测绘, 机器控制, 源码可用, 物理安全, 目标发现, 硬件测试, 硬件黑客, 自动化探针, 自托管, 逆向工具, 飞行探针