开源改变世界!!

在 Raspberry PI 上实现自定义功能 #1544

推推 grbl 2年前 (2023-01-28) 117次浏览
关闭
krupis 打开了这个问题 2021 年 2 月 23 日 · 5 条评论
关闭

在 Raspberry PI 上实现自定义功能#1544

krupis 打开了这个问题 2021 年 2 月 23 日 · 5 条评论

注释

在 Raspberry PI 上实现自定义功能 #1544

您好,我正在做一个项目,我在 ESP32 上运行 grblHAL,在 Raspberry pi 上运行 G 代码发送器。

我想让 Raspberry PI 与一些外部拾取和放置机器通信,这些机器被编程为放置到 CNC 机器内的物品。

所以最初,我会在机器中加载 G 代码,然后启动取放机器。
机器正在检查各种传感器/状态,并成功地将需要铣削的物品放入支架内,并准备好启动 G 代码。

我不想手动按下按钮,而是希望自动化该过程并使用拾放机械向树莓派发送信号。Raspberry PI 收到该信号后,它将启动 g 代码并铣削零件。铣削完成后,CNC 进入空闲状态,等待放置另一个项目。

此外,我希望 Raspberry PI 在进行探测 XYZ 测试时能够发送消息或切换引脚。如果出于某种原因(钻头损坏或其他原因)的探测测试失败,G 代码发送器应执行一些 G 代码,将主轴移向操作员,以便他可以检查出了什么问题。此外,一条消息将发送到外部机器,该机器将被编程为在从树莓派接收到一些消息时显示消息“PROBE TEST FAILED”。

有人可以建议如何实现这一目标!感谢任何帮助

在 Raspberry PI 上实现自定义功能 #1544
合作者

我认为您可以使用 UGS 中的挂件 API 来实现其中的大部分。没有太多关于它的文档(我从来没有能够将 Swagger 包含在 netbeans 模块中)但是代码很容易解释:
https ://github.com/winder/Universal-G-Code-Sender/tree /master/ugs-pendant/src/main/java/com/willwinder/universalgcodesender/pendantui/v1/resources

API 中没有任何推送功能,例如 websockets,因此您必须轮询机器状态。让我们知道是否缺少任何 API 方法。例如,我不知道您是否能够使用 API 获取探测状态。

在 Raspberry PI 上实现自定义功能 #1544
作者

你好。感谢你的回答。你能澄清一下你提到的几件事吗?

我认为我不需要知道机器状态?如果一切正常并准备好启动 g 代码,外部拾放机将向 Raspberry PI 发送命令,如果未准备好,则不会向 Raspberry PI 发送命令,因此它将保持空闲状态。

此外,在探测期间,我不需要知道探测状态,如果出现问题,我只需在我的机器上显示消息“出现问题”。我不需要知道到底出了什么问题。

主要关心的是如何在收到外部命令后启动 g 代码,以及如何从 Raspberry PI 输出信号到我的外部贴片机。

骨架代码:

“外部机器检查一切”
If(READY)
start_gcode();
否则什么都不
做();

在 Raspberry PI 上实现自定义功能 #1544
合作者

使用 Web 挂件使用的相同 HTTP/RPC API:
在 Raspberry PI 上实现自定义功能 #1544

所以你start_gcode()可以使用带有 curl 的脚本来完成:

上传文件:
curl -v -F file=@my-gcode-file.gcode http://localhost:8080/api/v1/files/uploadAndOpen

运行它:
curl -v -X POST http://localhost:8080/api/v1/files/send

在 Raspberry PI 上实现自定义功能 #1544
作者

谢谢回复。如果我的机器不使用网络怎么办?这些命令是否需要将树莓派连接到互联网?

在 Raspberry PI 上实现自定义功能 #1544
合作者

不,它不应该需要互联网连接,但确保最简单的方法是启动 UGS 并使用http://localhost:8080/. 只需确保在 UGS 设置中激活 Web 挂件即可在启动时启动。

现在我想到了,UGS 有一种无头模式,它可以在没有 GUI 的终端中启动程序。这将允许您使用命令行启动文件传输,或者您可以在守护程序模式下启动它,这将允许您使用相同的 Pendant API 控制 CNC。我更喜欢 API,因为这将与 CNC 机器保持实时连接。它的文档有点过时,您可能想在第二步中尝试此操作:https ://github.com/winder/Universal-G-Code-Sender/tree/master/ugs-cli