开源改变世界!!

WiFi 功能讨论 #22

推推 grbl 2年前 (2022-10-19) 313次浏览 0个评论
关闭
bdring 打开了这个问题 on 22 Aug 2018 · 17 条评论
关闭

WiFi功能讨论#22

bdring 打开了这个问题 on 22 Aug 2018 · 17 条评论

注释

WiFi 功能讨论 #22
所有者

婚戒 评论 on 22 Aug 2018

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

WiFi网络类型

  • 它是一个接入点(如一些动作摄像头)
    • 优点
      • 无设置
      • 不需要现有网络
    • 缺点
      • 您必须离开现有网络才能使用它。
  • 它在现有网络上
    • 优点
      • 您不必经常在网络之间切换
    • 缺点
      • 您需要一种简单的方法来为其指定 SSID 和 PWD
      • 您需要一个现有的网络

你如何使用它

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

luc-github 评论 on 22 Aug 2018

我可以为 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 上,我使用了 reprap 的命令:https://raw.githubusercontent.com/luc-github/Marlin/esp32/Marlin/src/HAL/HAL_ESP32/ESP32_GCODE。文本

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

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

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

婚戒 评论 2018 年 8 月 22 日

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

WiFi 功能讨论 #22
合作者

luc-github 评论 2018 年 8 月 22 日

酷^_^。谢谢

WiFi 功能讨论 #22
合作者

luc-github 评论 2018 年 8 月 22 日

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

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

只是我的 2 美分

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

婚戒 评论 2018 年 8 月 22 日

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

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

如果您只想 init() 一次,请将其放入 setup.xml 中。如果您想在 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
合作者

luc-github 评论 2018 年 8 月 22 日

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

WiFi 功能讨论 #22
合作者

luc-github 评论 2018 年 8 月 23 日  

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

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

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

婚戒 评论 2018 年 8 月 23 日

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

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

像…如果蓝牙要求状态,只返回状态给蓝牙。

WiFi 功能讨论 #22
合作者

luc-github 评论 2018 年 8 月 23 日

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

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
所有者作者

婚戒 评论 2018 年 8 月 23 日

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

WiFi 功能讨论 #22

你好,也想在这里帮忙,

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

所以我的 id 是构建某种在 ESP 上运行的 webapp,允许用户将 GCODE 上传到 SD 卡并提供一种从 sd 开始打印的方法。+ 简单的控制(如非常简化的八字)

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

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

让我知道我是否可以在 wifi/webserver 部分提供帮助,请邀请我放松一下。

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
所有者作者

婚戒 评论 2018 年 9 月 13 日

@cemir 这是一个邀请链接。

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

WiFi 功能讨论 #22

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

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

婚戒 评论 2018 年 9 月 16 日

@jeffeb3谢谢你的建议。

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

WiFi 功能讨论 #22
合作者

luc-github 评论 2018 年 9 月 16 日

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

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

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

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

婚戒 评论 2018 年 9 月 17 日

结束,从一个关于 ESP3D Web-UI 的新问题开始

WiFi 功能讨论 #22
喜欢 (0)

您必须 登录 才能发表评论!