让三只小舵机把照片画到纸上
用树莓派和3只模拟舵机驱动两段木条,让一支笔画出线稿。固定8cm+8cm基础结构,提供原作者装配实拍、逐针接线、采购入口和从画方框到照片转线稿的步骤。约¥150–350为复用部分材料时的规划估算;全新原厂海外采购另核。Daniele Procida开源项目,有外部制作者教程,非本站实机测试。
alan000
BrachioGraph 原作者开放文档 / GitHub 2019

### 清点零件,固定原版基础路线
按材料表清点主控、3模拟SG90(含舵盘/中心螺钉)、SD卡、电源、面包板、5母公线和9公公线、2木条、衣夹、底板/垫片、胶棒、笔、纸和胶带。固定两臂80mm、Pi Zero WH+Wi-Fi+面包板路线,不混入Pi5、Pico、360°舵机或数字SG92R。供应商缺货项不能假定已买到;家中已有物料可扣除。
照片/接线图:Daniele Procida,BrachioGraph原仓库配套文档,MIT;保留原图。中文整理2026-10-03,未进行实机测试。
[原装配教程](https://www.brachiograph.art/tutorial/) · [MIT许可全文](https://github.com/evildmp/BrachioGraph/blob/a2825e42edbccde866cc070e50db5721a153a772/LICENSE)


### 打印定位网格并安装肩舵机
下载原template-grid.pdf,以100%实际大小打印在A4纸并用尺复核刻度。固定到A4硬底板,肩舵机轴心对准(0,0)。用硬纸片把电机垫高约4–6mm,让后续木臂旋转时不刮板。胶固化后轻推电机,确认底座不晃。
照片/接线图:Daniele Procida,BrachioGraph原仓库配套文档,MIT;保留原图。中文整理2026-10-03,未进行实机测试。
[原装配教程](https://www.brachiograph.art/tutorial/) · [MIT许可全文](https://github.com/evildmp/BrachioGraph/blob/a2825e42edbccde866cc070e50db5721a153a772/LICENSE)



### 制作80mm双臂和抬笔机构
把两个舵盘粘在内臂上,转轴中心间距准确80mm。外臂粘肘舵机和衣夹,肘转轴到被夹笔尖的水平距离也为80mm。抬笔舵机固定在外臂靠近衣夹的位置,转动舵盘能顶起笔,且全程不碰木条。先不把两臂锁在电机上,第一次通电先归中。
照片/接线图:Daniele Procida,BrachioGraph原仓库配套文档,MIT;保留原图。中文整理2026-10-03,未进行实机测试。
[原装配教程](https://www.brachiograph.art/tutorial/) · [MIT许可全文](https://github.com/evildmp/BrachioGraph/blob/a2825e42edbccde866cc070e50db5721a153a772/LICENSE)

### 准备树莓派系统与控制程序
本方案沿用原文测试的Raspberry Pi OS Bullseye Lite 32-bit包名。用官方Imager刷卡并设置你自己的用户名、2.4GHz Wi-Fi和SSH;采用Wi-Fi连接,无需照抄旧OTG默认口令。电脑通过SSH登录后运行下列命令。若所用系统找不到libtiff5/libwebp6,先核OS版本,不能随意删除依赖后声称安装完成。本站未在Pi硬件试装,保留安装日志和pip freeze。
```
sudo apt update
sudo apt install -y python3-venv python3-tk pigpiod libjbig0 libjpeg-dev liblcms2-2 libopenjp2-7 libtiff5 libwebp6 libwebpdemux2 libwebpmux3 libzstd1 libatlas3-base libgfortran5 git
python3 -m venv ~/bg-env
source ~/bg-env/bin/activate
git clone https://github.com/evildmp/BrachioGraph.git ~/BrachioGraph
cd ~/BrachioGraph
git checkout a2825e42edbccde866cc070e50db5721a153a772
pip install -r requirements.txt
```
照片/接线图:Daniele Procida,BrachioGraph原仓库配套文档,MIT;保留原图。中文整理2026-10-03,未进行实机测试。
[原装配教程](https://www.brachiograph.art/tutorial/) · [MIT许可全文](https://github.com/evildmp/BrachioGraph/blob/a2825e42edbccde866cc070e50db5721a153a772/LICENSE)

### 断电逐针接线
彻底断开Pi电源后接线。三只舵机5V(通常红/橙)接同一电源轨,再连Pi物理针2;三只GND(通常棕)接另一轨,再连物理针6。肩信号接BCM14=物理针8,肘接BCM15=物理针10,抬笔接BCM18=物理针12。颜色只是参考,最终看舵机标识。用面包板配5根母公线与9根公公线;电源轨若中断需按实际板型桥接。严禁把5V接入GPIO信号脚。
照片/接线图:Daniele Procida,BrachioGraph原仓库配套文档,MIT;保留原图。中文整理2026-10-03,未进行实机测试。
[原装配教程](https://www.brachiograph.art/tutorial/) · [MIT许可全文](https://github.com/evildmp/BrachioGraph/blob/a2825e42edbccde866cc070e50db5721a153a772/LICENSE)


### 空载归中,依次安装两臂
先让肩、肘舵机与木臂脱开,电机空载通电。终端启动pigpiod及Python,再执行from brachiograph import BrachioGraph;bg = BrachioGraph()。按原图把内臂装在约-90°、外臂相对内臂约90°位置,用随SG90附带中心螺钉固定。保持手远离运动区,先试bg.set_angles(0, 90),再bg.park();肘测试bg.set_angles(-90, 120)后归位。方向与原图不符先停机检查安装和配置。
```
sudo pigpiod
source ~/bg-env/bin/activate
cd ~/BrachioGraph
python
```
照片/接线图:Daniele Procida,BrachioGraph原仓库配套文档,MIT;保留原图。中文整理2026-10-03,未进行实机测试。
[原装配教程](https://www.brachiograph.art/tutorial/) · [MIT许可全文](https://github.com/evildmp/BrachioGraph/blob/a2825e42edbccde866cc070e50db5721a153a772/LICENSE)


### 调抬笔高度并画第一个方框
在Python执行bg.pen.down()与bg.pen.up(),调笔在夹中的高度,使落笔刚能出线、抬笔高出纸约1–2mm。bg.status()核默认范围。用bg.set_pulse_widths(1500,1500)作为初始中心,每次改不超过100µs,记录各机实际归位脉宽,不能把他人的1570/1450当你的校准值。先执行下方4cm小方框,能闭合后再画大图。
```
bg.pen.down()
bg.pen.up()
bg.status()
bg.box(bounds=[-2, 7, 2, 11])
```
照片/接线图:Daniele Procida,BrachioGraph原仓库配套文档,MIT;保留原图。中文整理2026-10-03,未进行实机测试。
[原装配教程](https://www.brachiograph.art/tutorial/) · [MIT许可全文](https://github.com/evildmp/BrachioGraph/blob/a2825e42edbccde866cc070e50db5721a153a772/LICENSE)

### 保存校准,先画原版测试图
[将自己的归位脉宽写进custom.py](http://将自己的归位脉宽写进custom.py)。bg.test_pattern(both=True)比较正反方向偏差,再小幅调整hysteresis_correction_1/2;原文7–20只是试验区间。角度系数由实际测量,肩方向通常为负、肘为正。先画images/demo.json,不能把低价舵机的波浪线当软件错误或承诺工程精度。
```
bg.test_pattern(both=True)
bg.plot_file("images/demo.json")
```
照片/接线图:Daniele Procida,BrachioGraph原仓库配套文档,MIT;保留原图。中文整理2026-10-03,未进行实机测试。
[原装配教程](https://www.brachiograph.art/tutorial/) · [MIT许可全文](https://github.com/evildmp/BrachioGraph/blob/a2825e42edbccde866cc070e50db5721a153a772/LICENSE)

### 把照片变线稿,保存你的成品
先选高对比、背景简单的照片。原linedraw还需要opencv-python-headless,建议在已有电脑转换:把照片放images目录,用image_to_json生成SVG与JSON,先看SVG,再把JSON复制到Pi的images目录。执行bg.plot_file("images/你的文件.json")。验收保存小方框、正反测试图、一张线稿、接线照片、依赖版本与校准参数;头图所示为原作者结果,并非本站测试。
```
from linedraw import image_to_json
image_to_json("africa", draw_contours=2, draw_hatch=16)
```
照片/接线图:Daniele Procida,BrachioGraph原仓库配套文档,MIT;保留原图。中文整理2026-10-03,未进行实机测试。
[原装配教程](https://www.brachiograph.art/tutorial/) · [MIT许可全文](https://github.com/evildmp/BrachioGraph/blob/a2825e42edbccde866cc070e50db5721a153a772/LICENSE)