← 返回信息流
AI 资讯Hacker News·3 天前

3D打印机也能写明信片?

原标题:Writing Postcards with a 3D Printer

速览

这项技术展示了3D打印在精细艺术创作领域的潜力。通过精确控制打印头轨迹,设备可以模拟人类书写的笔触和风格。这不仅拓展了3D打印的应用场景,也为个性化定制提供了新的可能性。

AI 深度解读

用3D打印机写明信片:从硬件改装到软件绕过

背景

作者近期阅读了 Amy Goodchild 关于使用 JavaScript 数字化手写笔迹的博客文章,这一想法引发了他的灵感。虽然作者最终没有选择数字化自己的笔迹,但这促使他构思了一个更小型的项目:将一个圆珠笔夹具安装在 3D 打印机上,让机器代替他手写明信片。

这篇文章记录了实现这一目标的完整过程,其中甚至包含了打印机差点将笔尖直接刺穿打印床的惊险插曲。

核心内容

1. 硬件改装:笔夹适配器

作者使用的设备是 Elegoo Neptune 4 Plus。首要任务是设计并打印一个能将笔固定在挤出机(extruder)上的适配器。他使用 OpenSCAD 设计并在 PLA 材料上打印了该适配器,该部件由三部分组成:

  • 主体部分:包裹在挤出机周围,用于固定圆珠笔芯和弹簧。弹簧的作用出乎意料地重要,它允许笔尖在纸面上轻微下压,即使纸面不完全平整,也能保证足够的压力进行书写。
  • U形压片:一个小巧的 U 形部件,压在挤出机顶部。其作用是分散螺丝的压力,防止螺丝直接作用于挤出机结构,避免潜在损坏。
  • 微型夹具:用于固定笔芯弹簧,防止其脱落。

作者指出,这些部件对精度要求不高,PLA 材料完全胜任,其他耗材应该也能使用。相关的 STL 文件已上传至 Thingiverse

2. 初步测试:概念验证

在进行复杂操作前,作者进行了基础测试。他安装好适配器,利用打印机的手动控制功能将笔尖降至纸面,并手动移动各轴。结果显示,打印机能够干净、均匀地写出字迹,这证实了概念可行。

3. 软件流程:从文本到 G-code

为了生成可写入的内容,作者采用了以下工作流:

  1. SVG 生成:使用 Inkscape 软件。较新版本的 Inkscape 内置了 Hershey Text 扩展插件,可以将文本转换为单笔画的 SVG 路径,这正是笔式绘图仪(pen plotter)所需要的格式。
  2. G-code 转换:使用在线工具 svg2gcode 将 SVG 转换为 G-code。
  3. 坐标校准:这是一个需要手动设置的步骤。作者手动将笔移至纸张下边缘以设定 X 和 Y 轴原点,然后将 Z 轴降低直至笔尖刚刚接触纸面,以此高度作为“落笔”指令的基准。
    • 落笔指令:G1 Z10 F100
    • 抬笔指令:G1 Z15 F100

4. 第二次测试:遭遇安全机制阻碍

作者最初计划直接发送生成的 G-code 给打印机,像正常打印一样让它执行。然而,测试失败。

问题在于 Elegoo Neptune 4 Plus 的安全机制:每次打印开始前,打印机会自动执行归位(homing)操作。虽然 X 和 Y 轴的归位无害,但 Z 轴归位会导致笔尖和适配器因低于正常挤出机位置,从而被驱动直接撞击打印床。尽管作者以极低速度运行测试,且弹簧吸收了冲击力未造成损坏,但他无法禁用强制归位功能。

5. 解决方案:自定义软件绕过

既然手动控制模式可以正常书写且不触发归位,作者决定寻找一种能模拟手动控制指令的方法。

通过调研,他发现 Neptune 打印机运行着 Moonraker 服务,该服务提供了 REST 和 WebSocket API 用于与打印机通信。这成为了关键突破口。

作者编写了一个小型工具(代码已开源至 GitHub),该工具读取 G-code 文件和打印机地址,通过 WebSocket 连接逐行流式传输 G-code 指令给打印机。这种方式完全绕过了打印机的自动归位逻辑。

6. 第三次测试:成功

使用相同的工作流(Inkscape -> svg2gcode -> 自定义流式传输工具),作者进行了最终测试。

为确保安全,第一次运行时设置了较高的 Z 值,让笔尖在纸面上方空中描摹轨迹,确认运动无误后,再降低 Z 值进行实际书写。测试成功,打印机顺利完成了书写任务。

7. 标准化操作流程

为了方便后续制作,作者总结了一套完整的书写流程:

  1. 启动打印机,在安装适配器前完成所有轴的归位,确立打印机坐标系。
  2. 将适配器安装在挤出机上。
  3. 将纸张或明信片放置在打印床上,确保纸张下边缘与打印床前缘平行。
  4. 使用磁铁固定纸张。
  5. 手动移动至纸张左下角,降低 Z 轴直至笔尖接触纸面,记录此时的 X、Y、Z 数值。
  6. 在 Inkscape 中创建 SVG,并设置文档尺寸以匹配纸张。
  7. 在 svg2gcode 中,将 X 和 Y 原点设置为刚才记录的数值,并使用记录的 Z 值作为落笔指令高度。
  8. 使用 g-code-streamer 工具将 G-code 流式传输给打印机。
  9. 若需连续书写多张相同内容的卡片,可保留两个磁铁作为限位器,确保下一张纸张能精准落在同一位置。

关键要点

  • 硬件兼容性:通过简单的机械结构(弹簧缓冲+分散压力设计),可以将非打印耗材(如圆珠笔)适配到大多数 FDM 3D 打印机上。
  • 软件生态利用:利用 Inkscape 的 Hershey 字体插件和 svg2gcode 工具,可以轻松将文本或矢量图形转换为绘图仪可用的路径数据。
  • 安全机制的规避:许多 3D 打印机(如运行 Moonraker 的 Neptune 系列)在打印前强制执行 Z 轴归位。对于改装设备,直接发送 G-code 可能导致硬件碰撞。
  • API 编程介入:通过 Moonraker 的 WebSocket API 逐行发送指令,是一种有效绕过打印机固件限制、实现自定义运动控制的手段。
  • 低成本DIY:整个项目无需昂贵的专用绘图仪,利用现有的 3D 打印机和开源软件即可实现类似功能。

意义与影响

这个项目不仅是一个有趣的周末 DIY 挑战,更展示了 3D 打印机作为通用运动平台的可能性。通过简单的改装和软件层面的灵活干预,3D 打印机可以从单纯的增材制造设备转变为二维绘图仪。

作者提到,看着机器工作具有某种奇特的放松感。由于该方案支持任何 SVG 格式,它不仅能写字,也能绘制图画。更重要的是,这一技术突破让作者重新开始了寄送实体明信片给亲友的传统,在数字化沟通盛行的今天,为个人表达增添了一份独特的物理触感和仪式感。

查看原文 →severinbucher.com