|
62355| 0
|
[教程] 跟着思兼学习Klipper(23) 玩一玩必趣 BTT Pi 上位机 |

跟着思兼学习Klipper(23) 玩一玩必趣 BTT Pi 上位机前言本文感谢必趣 (BigtreeTech) 赞助的 BTT Pi 上位机。此款设备很早之前就开始接触了,目前淘宝上是最新的v1.2版。 <img src="https://www.klipper3d.org/img/sponsors/BTT_BTT.png" style="zoom: 25%;" /> 原创文章,转载引用请务必注明链接,水平有限,如有疏漏,欢迎指正交流。 文章如有更新请访问 DFRobot 社区 或者 cnblogs 博客园。 欢迎对 Klipper 固件,以及对改版 CNC 加工的 Voron 三叉戟、v0、v2.4 感兴趣的朋友加群交流(QQ Group:490111638)。 我们约定: BTT Pi 相当于原来的 本文介绍如下内容:
0、文档资料
BTT Pi 软件系统上沿用 CB1 的资源。所以部分资料互通,可供参考。注意两者部分引脚顺序不同:
1、外观规格对比目前 3 大主板厂商都有了自己的上位机,我们大概对比一下:
以前觉得 MKS Pi 带屏幕套餐性价比高,但是对比以及使用过 MKS Skipr 后发现其软硬件提升空间很大。BTT Pi 板载 WiFi 好评,少占用一个 USB 接口,另外178的价格真不是故意的吗 xD。 2、硬件规格、部分芯片及备注
2.1 硬件杂谈
【Arm Mali 图像处理器性能天梯】可见 H616 使用的 G31 性能强于 其他两者使用的 Mali-450,来源:ARM GPU mali系列产品规划图或天梯图。G31 支持HDMI 2.0a up to 4K @ 60Hz,Mali450-MP4 支持到 HDMI 1.4。
3、软件系统目前可以使用官方系统,也可以使用 RatOS for CB1(底层也是官方系统,版本略有滞后)。由于做了裁剪与优化,系统启动与关机速度很快。
这里主要介绍 RatOS,主要特性包括:
3.1 RatOS Configurator 介绍首次启动后如果没有连接网络,则会创建名为 “RatOS” 的热点,连接后访问 http://ratos.local/configure 即可打开 RatOS 配置器。 目前还在持续开发中,支持 1. 无线网络设置 2. 主板固件烧录 3. 工具板固件烧录与连接 4. 打印机设置与初始化
RatOS 既往仅支持 树莓派,近来更新实验性支持必趣 CB1,所以也支持 BTT Pi。更是支持了大量必趣的 3D 打印机主板,从而对于组装上述打印机的用户来说,BTT Pi/CB1 + Manta 成为一个非常值得选择的高性价比组合。 BTT Pi 和之前版本的对比,可以看到整体布局差异还是很大的,相当于重新设计,不知道出自哪位大佬之手。
3.2 BTT Pi 系统自带设备树
3.3 BTT Pi 系统简析这里就不深入谈了。
4、手机无线 KlipperScreen 屏(Yet Another)本方案借助 NoMachine 软件实现桌面共享,最早在 树莓派400 上进行测试,树莓派强制开启 HDMI 输出(不需要 HDMI 诱骗器),启用 GPU 从而支持硬件解码,支持硬件加速,显示效果良好。
后来看到网上有另一个方案,就是与在手机上安装 X-Server 如 XSDL ,此方案比想象中的简单多了。详情见《跟着思兼学习Klipper(14) 卷起来了,手机与Klipper的四次结缘 》 一文。 4.1 X-Server:XSDL 的缺点
此方案相当于图像转发到手机上的 X-Server 软件上,本身图像没有进行压缩,且受到无线内网通讯质量的影响,当分辨率设置较高时,传输图像数据量较大,导致响应卡顿,实际使用效果差强人意。 4.2 远程桌面KlipperScreen 有一个特点,为了节省资源,没有完整桌面环境。这里想到三种方案:VNC、NoMachine、AnyDesk/TeamViewer/向日葵/RustDesk,虽然都属于远程桌面,但是还是有不同的。此外桌面共享和远程桌面的概念也不同。我们首先以所有设备在同一无线局域网内为例,后面拓展。我们想要找一种 <u>跨平台,高性能,低延迟,多功能的方案</u>,这里对多种连接方式、多种显示方案进行比较。
分述如下: 4.2.1 VNC使用配置可以参考官方文档 VNC (Virtual Network Computing)。主观评价:免费版不支持音频,功能较少。相当于截图传输,图像质量及流畅性上差一些。支持 Headless 无显示器使用 4.2.2 Anydesk类似 Teamviewer,下载的deb安装包会提示缺少依赖,需要在 Client 设置启用一些选项
主观评价:操作流畅,无需安装,支持 MineCraft 显示。支持远程连接。但是由于我们没有安装完整桌面环境,所以初步测试使用不了,登不进去。 4.2.3 Nomachine注意 arm7hf 是针对 32 位系统,arm8 是针对 64 位系统。其采用 NX 协议。传输视频流编码可选择付费的 H.264 和免费的 VP8,H.264 需要授权,但是 Nomachine 支付了这笔费用。
主观评价:之前讲 LattePanda 用法的时候介绍过,对于默认无法启用硬件加速的设备比较友好。由于树莓派硬件加速支持比较好,所以这点上优势不是那么明显。支持功能更丰富。免费版服务端每次仅允许创建一个会话。文档异常丰富。 4.2.4 常见问题
树莓派连接到网络之后,需要知道它的 IP 地址例如
我猜想自动发现是借助
之前介绍 LattePanda 时提到一个东西叫做 HDMI假负载/显卡欺骗器,为的是使设备启用 GPU 并输出视频信号,否则就会看到黑屏。 <img src="https://raw.iqiq.io/sjqlwy/blog_imgs/default/images/202305281351680.png" alt="image-20230528135042795" style="zoom:25%;" /> 解决方法1: 针对 VNC,在树莓派上运行以下命令:
而运行 AnyDesk 和 Nomachine Client 时会提示你是否自动创建一个虚拟显示。此方法的缺点是,没有实际启用 GPU,创建的虚拟显示无法启用硬件加速,视频解码、图像绘制都是通过 CPU 软件渲染,导致极大降低性能。不过 Nomachine 借助 VirtualGL 实现类似硬件加速的性能一定程度上缓解此问题。 4.3 使用 NoMachine综合下来我们选择 NoMachine。 4.3.1 安装 NoMachine
没接 HDMI 显示器的话插电启动,发现默认分辨率非常低,原因是:
4.3.2 解决分辨率低的问题有两种方案,一是强制 HDMI 输出,一是使用 xorg-video-dummy 驱动。
|
| 软件名称 | 安装依赖大小 |
|---|---|
| 向日葵 | 39.9M |
| Todesk | 88.2M |
| Rustdesk | 18.4G |
| Anydesk | 192MB |
结论:除了 Windows 用户和 Rust 开发者,不建议用 RustDesk。
了解 WiFi 棒子的过程中,由于其默认只有 4G 存储,多数情况下不够用,除了物理更换存储进行扩容,还可以利用网盘,这种方案的要求就是稳定且选择速度快的网盘服务,同时网络质量要好,也支持使用内网 NAS。最初想到 rclone,但对国内网盘支持少且配置略嫌麻烦。后来想到另一个流行的软件:Alist,看了一下配置简单且对国内网盘支持好,用起来非常棒。

挂载网盘扩容:
这里以 天翼云盘 进行演示。
## 安装 Alist,自动下载对应平台的版本,支持自动启动。https://alist.nn.ci/zh/guide/install/script.html
sudo bash -c "curl -fsSL "https://alist.nn.ci/v3.sh" | bash -s install"
Alist 安装成功!
访问地址:http://YOUR_IP:5244/
配置文件路径:/opt/alist/data/config.json
---------管理员信息--------
INFO[2023-05-25 07:29:59] reading config file: data/config.json
INFO[2023-05-25 07:29:59] config file not exists, creating default config file
INFO[2023-05-25 07:29:59] load config from env with prefix: ALIST_
INFO[2023-05-25 07:29:59] init logrus...
INFO[2023-05-25 07:30:04] Successfully created the admin user and the initial password is: rqmswxGn
INFO[2023-05-25 07:30:04] admin user's info:
username: admin
password: rqmswxGn
--------------------------
启动服务中
查看状态:systemctl status alist
启动服务:systemctl start alist
重启服务:systemctl restart alist
停止服务:systemctl stop alist
温馨提示:如果端口无法正常访问,请检查 服务器安全组、本机防火墙、Alist状态
安装完毕后会自动生成访问密码:

控制面板并修改访问密码,添加天翼网盘。

目前我们已经可以访问网盘内容了,但是需要挂载到本地才能被 Klipper 访问。好在 Alist 支持 WebDAV,参考文档配置即可。目前有两款软件:davfs2 比较小巧,rclone 配置复杂些,都来试试。
参考 ArchWiki:davfs2、davfs挂载与使用缺陷
sudo apt install davfs2
# mount -t davfs http://address:<port>/path /mount/point
# 挂载 alist webdav
sudo mount -t davfs http://localhost:5244/dav /home/pi/printer_data/gcodes/alist -o uid=1000,gid=1000
# 读取并预处理 gcode 文件测试,需要已连接打印机
time ~/klippy-env/bin/python ~/klipper/klippy/klippy.py ~/printer_data/config/printer.cfg -i ~/printer_data/gcodes/alist/kklipper/stls/STH-36_sherpa_mini_mounting_plate_strain_relief.gcode -o /dev/null -d out/klipper.dict
# 测试失败,报错读写错误
OSError: [Errno 5] Input/output error: '/home/pi/printer_data/gcodes/alist/189/kklipper/stls/STH-36_sherpa_mini_mounting_plate_strain_relief.gcode'
换 rclone 上场,参考文档 WebDAV 和 rclone mount。
其中 VFS File Buffering 很关键,将网盘文件下载并放入内存中缓存。
Each open file will try to keep the specified amount of data in memory at all times.
If the buffer is empty, only a small amount of memory will be used.
vfs-cache-mode 很重要
至于有没有缓存到本地磁盘,有待进一步验证
## 下载并配置 rclone
wget https://downloads.rclone.org/v1.62.2/rclone-v1.62.2-linux-arm64.zip
unzip rclone-v1.62.2-linux-arm64.zip && cd rclone-v1.62.2-linux-arm64
sudo cp rclone /usr/bin/
sudo chown root:root /usr/bin/rclone
sudo chmod 755 /usr/bin/rclone
## 添加 alist webdav 存储
rclone config
# http://localhost:5244/dav # 密码手动输入不能黏贴
- type: webdav
- url: http://localhost:5244/dav
- vendor: other
- user: admin
- pass: *** ENCRYPTED ***
# 列举网盘文件,请将 "189"更改为你设置的名字
rclone ls 189:
## 挂载 webdav 到本地存储
sudo apt install fuse3
# rclone mount 189:189 /home/biqu/189 --vfs-cache-mode full
# 以下为手动后台挂载,可以设置开机等待联网后自动挂载,参考 nm dispatch
rclone mount 189:189 /home/biqu/printer_data/gcodes/alist/ --vfs-cache-mode full --daemon
## 卸载挂载点
fusermount -u /home/biqu/printer_data/gcodes/alist/
具体选项根据实际选择,如 46 webdav,不清楚的留空即可,不需要进入高级模式。
如下图所示,我们在网页 Gcode 标签可以看到网盘中的文件,实际打印也没问题。

成品展示:

Klipper 支持配置文件 内置开始/结束 Gcode,以及 固件回抽(Firmware Retract) ,一定程度上对于相近的打印机,可以实现一个 Gcode 文件被多台打印机使用。
BTT Pi 板载一个红外接收器(Infrared Remote,IR),比如可以实现红外遥控器控制灯光、播放 Music、开始打印、关闭打印机(需要二次确认)等操作。
萌萌哒新人
活跃会员
宣传大使
版主限定
牛X认证
老版主限定
创作达人
小蘑菇
编辑选择奖
ARD DAY
编辑选择奖
摸鱼团员
编辑选择奖
志“童”道合
编辑选择奖
编辑选择奖
编辑选择奖
沪公网安备31011502402448© 2013-2026 Comsenz Inc. Powered by Discuz! X3.4 Licensed