本帖最后由 bzhou830 于 2023-12-5 06:29 编辑
基于licheepi 4A的3D打印机上位机
作者:bzhou830
1. 项目背景(100-200字)
目前是市面上的3D打印机所用的固件基本上Marlin和Klipper这两种。他们都是开源的3D打印机固件。
Marlin是一个广泛使用的3D打印机固件,它支持多种硬件平台和传感器,具有丰富的功能和可扩展性。Marlin提供了广泛的配置选项,可以根据用户的需求进行调整和优化,支持温度传感器、限位开关、挤出机驱动器和其他常见的3D打印机传感器,具有断电续打功能,可以在断电后自动恢复打印任务,减少打印失败的风险。Marlin支持G代码指令、自动校准、缩放、移动轴等功能,使用户可以更好地控制打印过程和结果。但是Marlin固件也存在一定的缺陷,因为所有的运动控制算法都是在打印机主板上进行的,然而打印机主板通常是mcu作为运算核心,因此很难运行复杂的运动控制算法,也就很难提供高速打印以及高精度的要求。相比之下Klipper使用分布式处理架构,将计算任务分配给主机电脑和微控制器,可以提高打印速度和精度。Klipper支持用Python编写的配置文件,用户可以轻松地进行配置和调整,而无需重新编译固件。正是因为Klipper采用了分离式的结构,那么主从之前的传输稳定性就显得非常重要。一旦通信出现故障,那就意味着打印就出现故障了。
本项目基于Marlin固件主板, 使用licheepi 4A作为上位机。licheepi 4A负责将G代码指令发送给Marlin固件的主板,主板来执行具体的动作任务。这种方式下,保有了Marlin固件稳定的特性,同时因为licheepi4A拥有强大的处理核心,可以扩展实现更多有实际意义的功能。
2. 作品简介(100-200字)
本项目基于Marlin固件主板, 使用licheepi 4A作为上位机。上位机端使用python编程实现,易于扩展和维护。上位机和3D打印机主板之间使用串口线进行连接通信。上位机端使用Python+Flask设计一个web端的页面,可以方便的在远程发送要打印的G代码文件,并在远程网页端对打印机进行控制,和运行状态的检测。搭配内网穿透,本项目即实现了任何可访问网页的位置均可对3D打印机进行远程的操控。
与此同时,本项目还实现了基于pyqt5的本地化上位机界面,可将licheepi 4A作为主机,在本地对3D打印机进行控制和检测。
3. 系统框图(图文结合)
如下图所示:本项目中实现的上位机为浅蓝色部分。分为Flask上位机和pyqt5上位机两个部分,两部分独立运行。Flask上位机用于在远程端可方便的控制和检测打印机状态,而pyqt5则是用于在本地化操作。
4. 各部分功能说明(图文结合)
本项目有两部分上位机构成,分别叙述如下:
4.1 pyqt5本地化上位机
pyqt5本地化上位机的界面基于的是RepRaptor上位机界面。RepRaptor 是用 Qt5编写的的。 RepRaptor是一个可用于支持GCode指令3D打印上位机,它是用QT5 C++来编写的。之所以使用QT5来编写,这是因为开发者希望它能够任何硬件上运行。因此,RepRaptor也可以用于控制RepRap 来实现3D模型的打印。因为RepRaptor v0.3.8以后就没有再进行继续更新了,且考虑简便易用,这里我们就使用pyqt5来实现repraptor的界面,界面在开发机器上运行出来是这样的:
从图中可以看到有多个控件。这个界面上的各个控件实际上就是对应了向3D打印主板发送的各个指令。
4.2 Flask远程上位机
flask端属于远程访问控制端,运行流程如下, 首次登录会要求注册一个账号:
登录到web端之后注册账户:
使用注册的账户登录到系统中:
随即会进行系统,上传g-code界面:
选择要上传的文件,并点击上传,文件上传完毕显示如下界面,界面中有一个打印的按钮,点击这个按钮后后端程序就会读取g-code文件,并向3D打印机主板发送逐行发送g-code中的串口数据。
5. 视频演示(视频简介+链接)
6. 项目源码
项目源码将打包放在云盘中:
链接:https://pan.baidu.com/s/1PYxagwCWU1nHrxUNi4XwpA
提取码:1234
7.发布的博文(附上标题和平头哥发布链接)
8. 项目总结(对作品完成度、技术探索、创新点等方面进行总结)
这个项目可扩张性非常的强。目前是将整个流程运行通过,验证了设想的可行性。