设计一款紧凑型A4 CoreXY绘图仪,配备定制电子元件和ESP32固件,实现精准运动控制
Mini Plotter 是一款桌面尺寸、支持 Wi-Fi 的笔式绘图仪,可在 A444 纸上绘制任意矢量图形。您只需通过手机或笔记本电脑浏览器连接设备,上传 SVG 文件,即可观看图形自动绘制。无需线缆、无需特殊软件,也无需驱动程序。所有操作均通过由绘图仪自身托管的简洁定制网页界面完成。
它通过步进电机在两个轴(X和Y)上移动笔,再利用伺服电机在Z轴上升降笔。这是任何CNC机床的经典三轴结构,经过缩小并简化后变得更加易于使用。
我们为什么要建造它?
该项目由喀拉拉邦创客实验室(Fab Lab Kerala)的团队开发,该实验室专注于数字制造、开源硬件和动手学习。
动机很简单:打字机绘图仪是有趣的设备,但大多数要么是昂贵的商用机型,要么是复杂的业余爱好者自制装置,需要通过USB连接笔记本电脑,并配备一系列软件工具。我们希望去掉所有这些繁琐的东西。
我们的目标是:
•使绘图仪完全无线且自给自足(设置后无需电脑)
•让每个人都能使用:如果你能将文件上传到网站,你就可以使用这个绘图仪
•使用价格实惠且易于改装的组件(如28BYJ-48步进电机、ESP32芯片、3D打印结构)来构建,以便任何创客空间或Fab Lab的人都能复制它。
•将概念验证为产品原型:一个真实、精美的设备,而非概念验证的线缆束。
它是如何工作的?
总体而言,工作流程如下:
•开启迷你绘图仪。ESP322 启动并创建一个 Wi-Fi 接入点。
•将您的手机或笔记本电脑连接到该Wi-Fi网络。
•打开浏览器。您将被自动重定向至绘图仪内置的网页应用( captive portal )。
•在网页界面上传一个SVG文件。
•该网页应用使用 JavaScript 在浏览器中解析 SVG SVG 并将其完全转换为 G 代码。
•G代码通过Wi-Fi发送回ESP32。
•ESP322 固件会解析每个 G 代码指令,并相应驱动步进电机和伺服电机。
•笔在纸上移动,勾勒出你的设计。
无需云服务,无需应用商店,无需驱动安装,只需一个浏览器和一个SVG文件。
运动系统
绘图仪采用笛卡尔坐标系的XY运动系统:
•X轴:一个28BYJ-48单极步进电机通过GT2皮带和皮轮驱动,使笔架沿水平杆左右移动。
•Y轴:第二个28BYJ-48电机可带动整个X轴组件前后移动,实现A4图纸区域的完整二维覆盖。
•Z轴(笔架升降):一个小型SG90伺服电机可升降笔架,使绘图仪在不绘图时(笔上)和绘图时(笔下)都能移动。
28BYJ-48 是一款小型、低成本的单极步进电机,内置行星齿轮箱,因此在体积相对较小的情况下具有较高的扭矩。每个电机由 ULN28033 达林顿晶体管阵列驱动,该阵列将 ESP32 的低电流 GPIO 信号转换为驱动电机线圈所需的电流。
绘图区域
A4(约210 x 297毫米),标准纸张尺寸,覆盖范围完整。
机械设计
框架
整个框架均为3D打印而成。每个结构支架、导轨、电机支架、皮带张紧器和笔架均专为FDM打印设计,并在无需金属加工的情况下组装完成。这使得该设计可完全复制,任何创客空间或Fab Lab均可使用桌面3D打印机进行制作。
关键设计考虑因素:
•刚性与重量:零件设计时具有足够的壁厚,以防止拉伸过程中的弯曲,同时尽可能减轻移动滑架的重量,从而降低电机负荷。
•皮带路径:GT2皮带传动系统已集成到印刷机车的设计中,并配有张紧器以消除回差。
•笔架:Z轴笔座可固定标准马克笔,并直接连接到伺服臂,使伺服电机的旋转可直接带动笔尖上升或下降。
装配
框架采用标准的直线杆(光滑钢制),并配有印刷轴承座,使运动轴保持笔直且摩擦低。两个轴相互垂直,形成经典的CoreXY相邻布局,即一个电机独立控制一个轴。
电子产品
ESP32
ESP32 是绘图仪的“大脑”,负责处理以下功能:
•托管Wi-Fi接入点和 captive portal portal portal 网络服务器
•通过浏览器接收Wi-Fi上的G代码
•实时解析并执行G代码指令
•通过ULN2803驱动器为步进电机生成步进脉冲
•向伺服发送PWM信号以控制笔的升降
ESP32的双核架构非常适合此应用:一个核心负责Wi-Fi/HTTP协议栈,另一个核心处理对时间敏感的电机步进控制,从而避免通信延迟影响运动的平滑性。
步进电机驱动器:ULN2803
ULN2803 是一个 8 通道达林顿晶体管阵列。每个 28BYJ-48 电机有 4 个线圈输入,因此一个 ULN28033 可驱动一个电机(使用其 8 个通道中的 4 个)。ESP32 的 GPIO GPIO 引脚连接到 ULN2803 的输入端,输出直接连接到电机线圈。
28BYJ-48电机采用半步模式运行,实现更平滑的运动和更高的有效分辨率,通过齿轮箱每全转一圈可提供4096个步数。
接线概览
注意:ESP32 采用 3.3V 逻辑电平,但 28BYJ-48 和舵机则使用 5V 电压。ULN2803 的输出端兼容 5V,因此是连接这两个电压等级的理想接口。
固件
固件使用Arduino框架(通过Arduino IDE或PlatformIO)在ESP32上运行。
固件的功能
•启动时:以接入点模式初始化Wi-Fi,启动HTTP网页服务器,并设置电机和舵机的GPIO引脚。
•提供网页应用服务:网页界面的HTML/CSS/JS存储在闪存中(SPIFFS/LittleFS),并由任何连接的浏览器获取。
•接收G代码:浏览器将G代码行(或完整的G代码程序)通过POST方式发送到ESP32上的HTTP端点。
•解析G代码:固件会读取诸如G0(快速移动)、G1(直线移动)、M3/M5(笔下/上)等指令,并将其转换为电机动作。
•执行运动:步进脉冲按正确顺序发送至ULN2803驱动器,以实现半步操作;伺服电机将位置调整为0度(笔向下)或90度(笔向上)。
关键固件功能
•捕获门户:任何对未识别域名的HTTP请求都会被重定向至绘图仪的Web应用程序,从而实现无缝体验(无需输入IP地址)。
•G代码队列:传入的G代码被缓冲,以便Web应用程序在执行前发送指令。
•加速:实现了基础的梯形加速,以防止齿轮式28BYJ-48电机在快速运动时发生卡死。
•归位:启动时,车床移动到其初始位置(原点角),以便后续所有坐标保持一致。
支持的G代码指令
命令 — — 操作
G0 X__ Y__ -- -- 快速移动(向上笔)至坐标
G1 X__ Y__ -- -- -- 线性绘制移动(笔向下)
M3 -- 下压(伺服用于绘制位置)
M5 -- 提起(伺服移动到位置)
G28 -- -- 所有轴归位
软件:网络应用程序
这正是Mini Plotter与众不同的地方。它无需用户安装GRBL发送器、Inkscape插件或Python脚本,所有操作都在浏览器中完成。
网络应用的工作原理
该网页应用是一个使用纯JavaScript编写的单页应用程序,直接从ESP32的闪存中加载运行。当用户连接到绘图仪的Wi-Fi网络并打开浏览器时,即可立即看到界面。
第一步:上传一个SVG文件
用户从设备中选择任意一个SVG文件。该文件通过FileReader API在浏览器中读取,且在此阶段不会离开设备。
第二步:SVG转G代码
JavaScriptJavaScript 应用程序解析 SVG DOM,提取所有路径元素,并将其转换为 G 代码:
•元素通过其 d d 属性进行转换。贝塞尔曲线和弧线被近似为短的线性段。
•元素作为特殊情况处理,并转换为相应的线性工具路径。
•每条连续路径变为笔下段(G1移动);在不连续路径之间的移动变为笔上快速移动(G0 + M5/M3)。
•坐标系经过缩放和平移,以适应A4图纸的区域。
•生成的G代码会显示在预览面板中,以便用户在发送前进行检查。
第三步:预览
基于画布的视觉预览可在浏览器中直接渲染工具路径,准确显示绘图仪将绘制的内容,包括哪些部分为连续移动(以颜色显示)和快速移动(以虚线显示)。
第四步:发送至绘图仪
当用户点击“绘图”时,G代码会通过HTTP POST请求以逐行(或批量)方式发送到ESP32的/plot端点。网页应用会跟踪进度,并显示实时状态指示器。
为什么选择定制网络应用?
•无需安装:可在任何支持浏览器的手机、平板或笔记本电脑上使用。
•离线模式:无需网络连接即可完全正常运行(应用程序由绘图仪本身提供服务)。
•快速迭代:更新网页应用就像重新刷写SPIFFS分区一样简单,无需重新编译固件。
•可扩展性:未来诸如路径优化、填充图案或多层绘图等功能,均可纯通过 JavaScript 添加。
构建说明
1. 打印零件
从仓库中打印所有STL文件:
•层高:0.222 毫米
•填充率:30-40%
•材质:PLA(使用PETG以提高刚性)
•支撑:车架轴承座所需
2. 组装框架
•将线性杆穿过印刷轴承支架
•将步进电机安装到其印刷的支架上
•调整GT2皮带的路径和张力
•将伺服电机安装到Z轴笔架导轨上
3. 连接电子设备
根据仓库中的接线图进行连接:
•ESP32 -> ULN2803 输入(每个电机4个引脚)
•ULN2803 输出 -> 28BYJ-48 电机线圈
•ESP32 GPIO 23 -> SG90 伺服信号线
•为所有组件提供5V电源
4. 刷写固件
Bash
5. 首次运行
•开启绘图仪电源
•将您的设备连接到名为“MiniPlotter”的Wi-Fi网络
•打开浏览器,您将自动被重定向至网络应用程序。
•上传一个 SVG 文件并点击“绘制”
本文编译自hackster.io





