固件
PhysiClaw 硬件通过 FluidNC 固件与电脑通信。电脑用 G-code(GRBL 协议)发送指令,控制电机转动和电磁铁开关,完成点击和滑动等手势。
- MKS DLC32 V2.1 控制板。
- USB-B 转 USB-A 数据线。
- 12 V 2 A 电源。
- Chrome 浏览器(仅下面的手动方式需要)。
你可以用一条命令烧录 FluidNC,也可以通过 FluidNC 网页安装器手动烧录。
命令行烧录(推荐)
Section titled “命令行烧录(推荐)”通过 USB 连接控制板(接通 12 V 电源、断开步进电机),然后运行:
physiclaw flash连接两个电机和电磁铁,手动测试一遍,确认一切正常:
physiclaw testdrive试试 X10 / Y10,确认每次移动都与上图坐标轴的方向一致。再用 tap 检查电磁铁是否正常。
若 physiclaw flash 执行成功,可跳过这部分。
手动烧录流程
-
给控制板上电。 接 12 V 电源,用 USB 串口线连接到电脑。
-
打开安装器。 在 Chrome 里打开 FluidNC 网页安装器。页面会显示两个产品,在 FluidNC 下点击 Continue。
-
连接控制板。 点击 Connect。弹出的对话框会列出可用串口。选 USB Serial,点击 Connect。
-
进入 Install。 出现 Home 页。点击左侧栏的 Install。
-
选择固件变体。 从下拉里选最新版本。会出现三个变体,选择
noradio。 -
选择安装类型。 选择 fresh-install。
-
确认。 弹出确认框。确保 Installation speed 是 115200 baud,然后点击 Install。
-
等待。 出现进度条,等待完成。
-
安装完成。 一个 “Done” 对话框确认完成。点击 Continue。
-
打开 File browser。 Home 页会显示红色的 “invalid configuration” 警告,这是因为控制板已经刷入固件,但还没有配置。点击左侧栏的 File browser。
-
创建配置文件。 File browser 会提示你创建一个。点击 Create config。弹出的对话框里
config.yaml已预填为文件名。点击 OK。 -
打开 Source 标签页。 编辑器停在 General 标签。点击最右侧的 Source 标签。
-
粘贴配置。 全选已有文本,删掉,再把下面配置文件一节的全部内容粘进去。
-
保存。 点击 Save。
-
进入 Terminal。 点击左侧栏的 Terminal。
-
重启控制板。 点击红色的 Restart 按钮。控制板重启并打印启动日志。
-
验证。 每条消息都应当是绿色的,最后一行应为
<Idle|...>,说明刷入固件并配置成功。
命令行烧录会自动帮你刷入。手动烧录则需在第 13 步粘贴。FluidNC 配置:
config.yaml
# FluidNC config — MKS DLC32 v2.1 — CoreXY + Solenoid# Comments ONLY on their own lines (FluidNC YAML subset rule)# Tune: steps_per_mm, max_travel_mm, acceleration, direction pins
board: MKS-DLC32 V2.1name: PhysiClaw
# I2S bus — hardwired on DLC32 v2.1, do not changei2so: bck_pin: gpio.16 data_pin: gpio.21 ws_pin: gpio.17
# I2S_STATIC only — I2S_STREAM causes drift on this boardstepping: engine: I2S_STATIC idle_ms: 250 pulse_us: 4 dir_delay_us: 1 disable_delay_us: 0
kinematics: corexy:
axes: shared_stepper_disable_pin: I2SO.0
x: # Tune: (motor_steps x microsteps) / mm_per_rev # e.g. 200 x 16 / 40mm (20T GT2) = 80 steps_per_mm: 80.000 max_rate_mm_per_min: 10000.000 acceleration_mm_per_sec2: 1000.000 # Set max_travel_mm to your actual X travel max_travel_mm: 200.000 soft_limits: false
motor0: hard_limits: false stepstick: step_pin: I2SO.1 # Add :low after I2SO.2 if X runs backwards direction_pin: I2SO.2:low
y: steps_per_mm: 80.000 max_rate_mm_per_min: 10000.000 acceleration_mm_per_sec2: 1000.000 # Set max_travel_mm to your actual Y travel max_travel_mm: 200.000 soft_limits: false
motor0: hard_limits: false stepstick: step_pin: I2SO.5 # Add :low after I2SO.6 if Y runs backwards direction_pin: I2SO.6:low
PWM: pwm_hz: 1000 output_pin: gpio.32 enable_pin: NO_PIN direction_pin: NO_PIN disable_with_s0: false s0_with_disable: true spinup_ms: 0 spindown_ms: 0 tool_num: 0 speed_map: 0=0% 1000=100% off_on_alarm: true
start: must_home: false