开源改变世界!!

WiFi功能讨论 #22

推推 grbl 2年前 (2023-01-29) 237次浏览
关闭
bdring 打开了这个问题 2018 年 8 月 22 日 · 17条评论
关闭

WiFi功能讨论#22

bdring 打开了这个问题 2018 年 8 月 22 日 · 17条评论

注释

WiFi功能讨论 #22
所有者

是时候开始考虑如何实现 WiFi 了。我看到有两个基本领域可以开始讨论。

WiFi 网络类型

  • 它是一个接入点(就像一些运动相机)
    • 优点
      • 没有设置
      • 不需要现有网络
    • 缺点
      • 您必须离开现有网络才能使用它。
  • 它在现有网络上
    • 优点
      • 您不必经常在网络之间切换
    • 缺点
      • 你需要一个简单的方法来给它 SSID 和 PWD
      • 你需要一个现有的网络

你如何使用它

  • 类似LaserGRbl 的Web Socket支持
    • 优点
      • 一些软件已经支持它。
    • 缺点
      • 这是流式传输,连接需要稳健。
  • Web 界面就像非常基本的 Octoprint
    • 优点
      • 完全独立。
      • 无需应用程序
      • 不用担心跨平台问题。你只需要一个浏览器。
    • 缺点
      • 复杂项目
      • 可能会占用大量内存和性能
WiFi功能讨论 #22  添加 增强 新功能或要求讨论 标签 2018 年 8 月 22 日
WiFi功能讨论 #22
合作者

我可以为 GRBL-ESP32移植https://github.com/luc-github/ESP3D-WEBUI
它是 ESP8266 / ESP32 插件板的原始版本(如http://www.panucatt.com/azteeg_X5_mini_reprap_3d_printer_controller_p/ax5mini.htm)但我已经为 Marlin-ESP32 FW 移植了它:https ://github.com/luc-github/Marlin/issues/1

我认为 GRBL-ESP32 的移植会更容易,因为它使用 ESP32 SD 库,不像 Marlin-ESP32

不确定串行命令是否也有配置 WiFi 的空间,在 Marlin 上我使用了重制版:https://raw.githubusercontent.com/luc-github/Marlin/esp32/Marlin/src/HAL/HAL_ESP32/ESP32_GCODE。文本

可能是一个很好的杠杆,因为很多工作已经完成。

一个使用 AP 模式的评论 – 这对初始配置很有用,但它很容易被淹没,因为计算机在后台进行大量查询 – 许多应用程序会进行一些自动检查,并且可以使 AP 无所事事,因为它是网关或需要设置绕过它们的假网关 IP

WiFi功能讨论 #22
所有者作者

@luc-github这是非常令人印象深刻的。这似乎是一个很好的起点。感谢您提供有关 AP 模式的提示。

WiFi功能讨论 #22
合作者

酷^_^。谢谢

WiFi功能讨论 #22
合作者

我会尽快检查 Grbl_Esp32 代码,但如果我参考我在 marlin 移植方面的经验,理论上需要 4/5 个入口点:
1 – 初始化 wifi 第
2 部分的入口点 – 主循环中的可选入口点,用于非关键操作,不是强制性的方便
3 – 如果你想通过串行管理 wifi,gcode 解释器中一组命令的可选入口点,不是强制性的但非常方便
4 – 手动注入 GCODE 的功能 – 可能这个功能已经存在,抱歉我没有checked yet
5 – 捕获发送到 Serial 的内容的入口点 – 允许获取先前函数注入的命令的结果

我调用入口点是因为如果定义了它们,那么任何库,不仅是 ESP3D,都可以挂在它们上,从而提供灵活性——这也是一种出于调试原因禁用 wifi 的简单方法,例如

只是我的 2 美分

WiFi功能讨论 #22
所有者作者

伟大的。我建议使用 SD 卡分支。在相同的代码中使用蓝牙、串行和 SD 可能会使现有的入口点对您来说更加明显。

  1. 一些基本的 inits() 在 setup() 函数中。在loop()函数的开头也有一些。loop() 的开头仅在 Grbl 重置后运行。在loop()结束时,protocol_main_loop();连续运行直到复位。

如果您只想 init() 一次,请将其放入设置中。如果你想在 Grbl 进行软重置时重新启动某些东西,请将其放在 loop() 的顶部

  1. protocol_main_loop() 是执行非关键操作的好地方。这是 Grbl 从蓝牙和串行端口读取的地方。

  2. gc_execute_line(char *line) 是注入 gcode 的好地方。这也是将钩子放入 wifi 代码的好地方。

  3. gc_execute_line(char *line) 可能会做你想做的事。

  4. 任务读取的传入串行数据,serialCheckTask(void *pvParameters)。检查基本的“实时”命令,然后将数据放入缓冲区。然后由 protocol_main_loop() 读取缓冲区。

WiFi功能讨论 #22
合作者

太好了 ^_^ – 谢谢 – 看起来一切都准备好了😸

WiFi功能讨论 #22
合作者
luc-github 评论了 2018 年 8 月 23 日  

嗨,我已经开始阅读代码,我有一个问题:
大约 5 – 实际上是需要的串行输出,而不是输入,但没关系,因为我发现:void grbl_send(char *text)这看起来像我需要的

但我也看到有几个部分直接使用Serial.printfSerial.print– print.cpp(主要)不使用 grbl_send 的任何原因?

WiFi功能讨论 #22
所有者作者

你是对的。grbl_send(0 应该被使用。我会尽快解决这个问题。

现在,所有数据,无论来源如何,都以相同的方式处理。我认为最终 grbl 需要知道数据的来源。

喜欢…如果蓝牙要求状态,只返回状态到蓝牙。

WiFi功能讨论 #22
合作者

是的,知道命令来自哪里会很好,所以答案会转到同一个“管道”而不是 poluate 其他“管道”(串行/BT/WEB/等…)但这可能会使代码复杂化 – 我做到了在 ESP3D https://github.com/luc-github/ESP3D/blob/2.0/src/espcom.h但 ESP3D 有很多“PIPES”

typedef enum {
    NO_PIPE = 0,
    SERIAL_PIPE = 2,
    SERIAL1_PIPE = 3,
    SERIAL2_PIPE = 4,
#ifdef TCP_IP_DATA_FEATURE
    TCP_PIPE = 5,
#endif
#ifdef WS_DATA_FEATURE
    WS_PIPE = 6,
#endif
#ifdef ESP_OLED_FEATURE
    OLED_PIPE = 7,
#endif
    WEB_PIPE = 8,
    PRINTER_PIPE = 9
} tpipe;

WiFi功能讨论 #22
所有者作者

这可能就是为什么我没有在 Grbl 控制器(蓝牙)中得到 [FILE:…] 响应的原因😄

WiFi功能讨论 #22

嗨,也想在这里帮忙,

我目前正在创建具有集成用户界面的绘图机(一种 AxiDraw 克隆)。

所以我的想法是构建某种在 ESP 上运行的 Web 应用程序,允许用户将 GCODE 上传到 SD 卡并提供一种从 SD 开始打印的方法。+ 简单的控制(就像一个非常简化的 octoprint)

唯一的“负面”点:我不知道这将如何影响性能,所以我会先尝试创建一个 POC。

此外,在启动时,电路板将尝试连接到已配置的 SSID,如果失败或未配置 SSID,它将以 AP 模式启动,允许用户连接并配置它。

让我知道我是否可以在 wifi/web 服务器部分提供帮助,请邀请我放松。

WiFi功能讨论 #22
合作者
luc-github 评论了 2018 年 9 月 13 日  

嗨,WiFi 部分目前在这里:https
://github.com/luc-github/Grbl_Esp32/tree/SyncWebServer 仍然需要一些调整,但几乎所有功能都在那里

Web UI 在这里:https ://github.com/luc-github/ESP3D-WEBUI/tree/GRBL_ESP32 ,我现在正在研究它并希望下周完成

请随时测试和反馈

WiFi功能讨论 #22
所有者作者

@cemir 这是一个邀请链接。

WEBUI 即将完成。确实进行了大量实验以确保没有任何影响性能。

WiFi功能讨论 #22

你见过cnc.js吗?我不知道它是否可以压缩到足够小以在 esp 上运行,但如果你制作一个 cnc.js 插件(或者它可能已经支持 websockets?也许将它用于 PC/Linux 应用程序)它也会很棒? 我认为从 esp/sd 卡加载和运行 gcode 比在操作期间通过 websockets 流式传输更可靠。

WiFi功能讨论 #22
所有者作者

@jeffeb3谢谢你的建议。

我们可能会支持 cnc.js,但不会将其放在 ESP 上。允许这样的程序使用其现有的 websocket 方法进行连接可能会更好。

WiFi功能讨论 #22
合作者

关于 cncjs
,压缩的 src + 静态目录提供 1 436KB,这确实超过了当前的 SPIFFS 容量,所以我认为需要一些工作来调整以适应大小

我还认为它还需要从 ESP 本身执行一个大的重写并监控 SD 打印而不是作为主机,因为我完全同意:

我认为从 esp/sd 卡加载和运行 gcode 比在操作期间通过 websockets 流式传输更可靠。

WiFi功能讨论 #22
所有者作者

结束,作为关于 ESP3D Web-UI 的新一期开始