开源改变世界!!

考虑 LCD/OLED 显示支持 #214

推推 grbl 2年前 (2022-10-20) 295次浏览 0个评论
打开
bdring 打开了这个问题 on 12 Sep 2019 · 41 条评论
打开

考虑 LCD/OLED 显示支持#214

bdring 打开了这个问题 on 12 Sep 2019 · 41 条评论

注释

考虑 LCD/OLED 显示支持 #214
所有者

婚戒 评论 on 12 Sep 2019

我正在考虑添加对本地显示的支持。我正在研究可能有意义的硬件和接线选项。我欢迎任何建议。

我认为这个有线接口应该支持一个显示器、几个按钮,可能还有 SD 卡。这将允许一个功能齐全的本地控制或挂件。

我判断解决方案的标准之一是对 ESP32 的 I/O 要求最少。理想情况下,它是单个 I2C 或 SPI 连接。这排除了许多现有的 RepRap 解决方案。

考虑 LCD/OLED 显示支持 #214

嗨,巴特,

我认为这是一个很棒的点子。我会想到 Nextion 的一些东西。这样,如果像我这样的菜鸟想要更大的屏幕或不同的东西,我们可以配置它。
https://nextion.tech/

考虑 LCD/OLED 显示支持 #214
合作者

luc-github 评论 on 12 Sep 2019  

我已经测试过 Nextion,对我来说,它不适合使用串行、特定协议,并且屏幕反应性不如 spi 模式下的 ILI9143 + xtp2046 好 – 我为 esp3d 放弃了它的 devt,nextion
唯一不错的是用于 UI 设计的 IDE

使用 I2C oled 128×64 很容易集成,有几个库适用于 ESP32,另一种可能性是带有 SPI 的 TFT,它使用 CS + DC + MISO/SCK/MOSI,它们有很好的库,ESP32 也有

我现在正在为 ESP3D 开发触摸屏,所以我做了几个台架和测试。
只是我的 2 美分

考虑 LCD/OLED 显示支持 #214

@LUC-Github 很高兴知道。我正要去买一个哈哈。

考虑 LCD/OLED 显示支持 #214
合作者

luc-github 评论 on 12 Sep 2019

我有几个——即使是一个带有 rtc 和 gpio 的,你需要为每个分辨率做一个固件,所以最后没有真正的收益——而且它们并不便宜

考虑 LCD/OLED 显示支持 #214
合作者

luc-github 评论 2019 年 9 月 12 日  

有非常好的库来获得相同级别的 UI – https://littlevgl.com/ 真的很棒
,但我认为对于 GRBL 简单的 UI 就可以了,I2C 可以满足需求:就像这适用于 esp 32 https://github .com/ThingPulse/esp8266-oled-ssd1306

对于我使用的 TFT:https ://github.com/Bodmer/TFT_eSPI

考虑 LCD/OLED 显示支持 #214

詹姆斯牛顿 评论 2019 年 9 月 12 日  

请考虑将 USB OTG 用于旧手机或廉价平板电脑。只需 10 美元的电缆,您就可以拥有一个带有您喜欢的任何功能的漂亮显示器,而无需占用额外的引脚。如果不想写app,可以用DroidScript之类的app,用JavaScript写app,插上USB OTG后自动在手机上运行。也可以编译成app(小额捐款) ) 如果你想做一个独立的。

根据您的成本,成本可能低至零,实际上不会超过 Nextion。手机在 eBay 上几乎一无所获,等等……例如 Galaxy S3 将花费您 20 美元。它有一个窍门:您必须使用一个既可以在一根 USB 电缆上充电又可以运行 OTG 的设备。列表和其他一些选项位于:
http ://techref.massmind.org/techref/io/usb/OTG.htm

举个例子(请记住,可以支持任何图形/前面板外观,这种简约的布局正是我想要的)
http://techref.massmind.org/techref/language/DroidScript/BusPirate/index。 htm
(向下滚动查看图片)

我现在正在扩展该 DroidScript“应用程序”以支持无头 Linux 机器(又名 RasPi 零):
https ://github.com/JamesNewton/nixPanel

我真的很想看到一些通用的 /graphics/ 终端应用程序,比如 Nextron 的 UI 部分,但我目前没有时间专注于那个,老实说,我很无能为力来到 GUI 设计。但我可以想象一些既可以用作文本又可以用作 GUI 界面的东西。例如,ESP32 可以说:

Menu: Select Mode
1. Configuration
2. Jog
3. Run Job
Input: mode #

这会在您的串行终端上显示得很好。但如果手机/平板电脑通过OTG连接到同一个USB端口,并且应用程序正在运行,它会看到“菜单:”并抓取标题,然后查找数字项并从中制作按钮,然后抓取“输入:”之后的文本,如果用户按下“慢跑”按钮,它会将“模式 2”喷回到 ESP32。

希望我传达的是总体思路:开发一种适用于标准终端上的人机交互的语法,以及在应用程序中制作控制面板的线索。这具有(严重的)优势,不需要在 ESP32 上使用一堆额外的 GUI 代码。并且…允许用户自定义控制面板的外观和感觉以及大小。

还有很多其他方法可以做到这一点。例如,当应用程序启动时,它可以向 ESP32(或其他设备)发出请求以获取信息。例如“echo $PANEL_SETTINGS”并期望返回一系列描述符,这些描述符定义了控制面板的布局。

嵌入其中将是菜单的描述以及应为每个菜单选择发送什么字符串。如上例。

状态字段和要查找的字符串以获取值以更新 GUI 上的状态。例如,如果 ESP32 发送:“LIMIT SWITCH 1 PRESSED”然后打开“X LIMIT”图标。这可能是 PANEL_SETTINGS 中的一个字符串,例如Icon: warning @upperright highlight: "LIMIT SWITCH 1 PRESSED" normal: "LIMIT SWITCH 1 CLEARED". 希望你明白这一点。

任意数量的其他标准 GUI 界面项目:滑块、Inc/Dec、TextIn、TextOut 等…

是的,这听起来像是自己的项目,但我认为它可以从非常简单的控件开始。只需几个按钮和状态字段。然后它可以自己生长。我很乐意提供帮助,我现在无法启动它。

考虑 LCD/OLED 显示支持 #214
所有者作者

婚戒 评论 2019 年 9 月 12 日

@JamesNewton

这么长时间以来我一直抵制有线显示器的主要原因是我一直觉得平板电脑、PC 或智能手机是更好的选择。

蓝牙已经得到支持并提供了非常高的性能。有几个非常好的应用程序已经兼容。

WebUI 也很好用。虽然更新速度比蓝牙慢,但无需为 Android、IOS、Windows 等开发应用程序。如果你有浏览器,它就可以工作。

像 ESP32 这样的设备上的 USB OTG 是一项艰巨的任务。我知道该系列的最新版本可能拥有它,但那是一个单核处理器,不太可能能够运行我们现在拥有的东西。

虽然我不是 100% 在有线显示器上销售,但我可以看到一个坚固且密封的吊坠,带有一个老式的急停装置,也许一个慢速滚轮有它的优势。这些功能在固件中,因此只需要一个代码库。

考虑 LCD/OLED 显示支持 #214

@bdring叹。你完全错过了我评论的重点。对不起,我没有像往常一样有效地沟通。

USB OTG 不适用于 ESP32,它适用于手机/平板电脑。它允许手机/平板电脑代替 PC 连接到 ESP 32,并以低得多的成本提供专用的显示器/界面。您不需要在…上实现 USB OTG

没关系。如果它不明显,就没有理由继续试图解释它。

考虑 LCD/OLED 显示支持 #214
所有者作者

婚戒 评论 2019 年 9 月 12 日

@JamesNewton对不起,我让你叹了口气。您说“将 USB OTG 用于旧手机” 您对“to”的使用让我失望。

我之前在平板电脑上使用过 USB OTG 连接到 Grbl 很多次。对于 ESP32 开发模块附带的一些 USB 芯片,我在平板电脑的驱动程序可用性方面遇到了问题。

在这里,我有一个便宜的中国平板电脑通过 USB OTG 集成到 Inventables X-Controller 中。我也连接了视频慢跑控制器。我大约在 4 年前做过这个。

考虑 LCD/OLED 显示支持 #214

考虑 LCD/OLED 显示支持 #214 bdring 添加了 讨论 标签 2019 年 9 月 12 日
考虑 LCD/OLED 显示支持 #214
合作者

luc-github 评论 2019 年 9 月 12 日  

但是屏幕需要输入,所以也需要 i2c 键盘 – 对吧?
或 3×4 键盘 3 根电线,但意味着需要另一根电线

考虑 LCD/OLED 显示支持 #214

米桑 评论 2019 年 9 月 12 日  

如果我明白@JamesNewton建议正确,手机上运行的应用程序将发送串行命令,因此不需要 I2C。输入将通过 USB 串行到 ESP 完成。

该应用程序可以通过串行查询 ESP 以保持应用程序上的信息配置也更新。有点像 Candle 或 bCNC 等 PC 程序。

我猜这里使用 OTG 而不是蓝牙的目的也是为了给手机电池充电。否则,使用蓝牙的工作方式类似。

考虑 LCD/OLED 显示支持 #214
所有者作者

婚戒 评论 2019 年 9 月 12 日

您现在可以在不更改固件的情况下进行 OTG。如果你想让它充电,你需要让控制器保持通电,即使在不使用时也是如此。这是硬件问题,不是固件问题。我建议使用带有单独充电插头的普通双电缆。

如果您有有线连接,只需将其连接为充电电源并使用蓝牙。

这两种方法都得到了充分的支持,性能很好。这个线程是关于一个可能的固件解决方案。

考虑 LCD/OLED 显示支持 #214

本地显示显示谁连接或连接情况?机械状态?可以帮助操作者解决使用中的一些问题。

考虑 LCD/OLED 显示支持 #214

我认为这是一个不错的选择,我希望你分叉这个 repo,添加更多 LCD 支持,并添加更多未来
https://github.com/mstrens/grbl_controller_esp32

考虑 LCD/OLED 显示支持 #214

我认为这是一个不错的选择,我希望你分叉这个 repo,添加更多 LCD 支持,并添加更多未来
https://github.com/mstrens/grbl_controller_esp32

执照 ?

考虑 LCD/OLED 显示支持 #214

@Engineer2Designer未提及所有者许可证

考虑 LCD/OLED 显示支持 #214

屏幕输入可以改成下面的针脚吗?
#define CONTROL_RESET_PIN GPIO_NUM_2 // Uno A0
#define CONTROL_FEED_HOLD_PIN GPIO_NUM_4 // Uno A1
#define CONTROL_CYCLE_START_PIN GPIO_NUM_35 // Uno A2 … ESP32 需要外部上拉
用户旋转编码

考虑 LCD/OLED 显示支持 #214

使用串行将允许使用 gcode 命令进行慢跑、家庭等…并且 grbl 通过串行报告它的状态和位置以进行显示。

仅慢跑的另一个最小选择是通过 i2c 的 Wii nunchuk。它有一个用于 x/y 微动的小操纵杆和 2 个用于 z 向上/向下的按钮。

考虑 LCD/OLED 显示支持 #214

小提示:使用平板电脑或手机通过 OTG 进行显示的另一个优点(正如我上面建议的那样)是它们具有进行可视化的处理能力。例如,您可以放入许多开源 G-CODE 渲染 Javascript 中的任何一个,并根据位置报告(正如 derFrickler 提到的)进行实时更新的漂亮预览。而且由于它都是 JS,因此您可以对 Web 界面使用相同的开发工作。通过一些工作,您可以将 Web 界面重新用作前面板界面。如果您决定需要更适合较小屏幕的布局,或者重新使用其中的一部分。而且…一个好的 USB OTG 适配器可以支持/多个/设备,因此您可以插入鼠标、键盘、XBOX 控制器等…

考虑 LCD/OLED 显示支持 #214

是的,但这是一个不同的目的,
真正的按钮和操纵杆比触摸屏更适合慢跑。
不想错过我另一台机器上的挂件。
https://der-frickler.net/_media/technik/railmill/img_20190824_181457.jpg

考虑 LCD/OLED 显示支持 #214

叹息我不明白为什么人们不能理解我在说什么。

  1. ESP32 GRBL 通过 USB OTG 连接到平板电脑/手机
  2. XBOX 等… 还通过 USB OTG 连接到平板电脑/手机
  3. 您按下“真正的按钮和操纵杆”,平板电脑/手机将 g 代码将机器慢跑到 ESP32,它“比触摸屏更适合慢跑”……因为我不建议使用触摸屏到…

我不会写英文吗?

关键点:ESP32 不需要额外的代码或 IO 引脚来支持“附加的另一件事”,因此它可以只专注于获取 G-CODE 和生成脉冲。

考虑 LCD/OLED 显示支持 #214
所有者作者

婚戒 评论 2019 年 9 月 24 日

@JamesNewton是的,我们可以理解你。请尽量不要如此对抗。

你所说的已经被支持了。这个线程是关于完全不同的东西。这将是可选的,并且与您描述的方法不冲突。

考虑 LCD/OLED 显示支持 #214

抱歉,我不明白这个线程仅限于添加硬件并排除现有的 USB 接口。我会说我并没有真正获得这种方法的优势,但如果你想研究它,我会取消这个问题并停止纠缠。

考虑 LCD/OLED 显示支持 #214

德弗里克勒 评论 2019 年 9 月 24 日  

@james抱歉,牛顿一定也错过了您在 OTG 上使用硬件控制器的部分。
多年来,我一直在使用 grbl,而不是通过 OTG 在平板电脑上使用它,而是在带有 GRBL 控制器和 UGS 的 Raspi(第一代 265mB)上使用它,工作正常,但需要在运行 GCode Sender 的机器上进行设置。

使用 Grbl_Esp32,我真的很喜欢从 SD 卡运行作业并使用任何设备查看 Web 界面的想法。意味着拥有完整的 CNC 机器,无需在任何其他机器/设备上进行必要的配置。

考虑 LCD/OLED 显示支持 #214

是的!ssd1306 in spi 或 i2c (:

PCF8574 或 MCP23008 over i2c 上的编码器或按钮(:

考虑 LCD/OLED 显示支持 #214

霍金斯 评论 2019 年 10 月 17 日  

在 My fork 中,我添加了一个 i2c oled 显示器,主要用于显示连接信息(ipaddress 等)。,我使用的是 heltec wifikit 32,它在封装上使用 i2c 在引脚 4 和 15 上显示。

连接蓝牙的手机怎么样?例如,周围有很多 android 应用程序可以对蓝牙进行 grbl 控制

https://github.com/zeevy/grblcontroller

它主要是为标准 AVR Grbl 设计的,HC05 蓝牙串行模块连接到其 rx/tx 引脚。但是考虑到 esp32 有板载蓝牙,增加对它的支持可能会让人有些痒痒。

@JamesNewton ,它也支持直接 otg usb,所以理论上你只需插入一个 otg 引线,插入一个 microusb 以在其中键入 A 并启动应用程序,它应该可以正常工作,这将解决你的要求。

考虑 LCD/OLED 显示支持 #214

我会喜欢这个设置上的原生 LCD!对我来说,一个 2004 年的 LCD 就足够了

考虑 LCD/OLED 显示支持 #214

分裂2 评论 2020 年 2 月 5 日  

嘿,我刚刚将此 GRBL ESP32 编译到 M5STACK 模块上。该模块有 3 个按钮和一个 I2C LCD 和一些 gpio 引脚。它可能是最好的现成控制器,非常整洁。我正在建造一台便携式 24 伏电池供电的机器,上面的液晶显示器是理想的。无论如何,伙计们值得深思。http://www.m5stack.com我刚拿到了基本的核心单元、一个电池模块和一些继电器,我印象深刻。我什至让 GRBL 伺服器使用 pwm 工作,在示波器上 pwm 看起来又漂亮又干净。做得很好,感谢所有人!

考虑 LCD/OLED 显示支持 #214

我还想要一个 LCD 显示器,并且能够以独立模式(无头)控制 CNC。我在 3D 打印机上有这个,能够插入 SD 卡并告诉它运行真的很有帮助。从我在 GRBL 代码中可以看到,SD 阅读器代码有一个内置的 gcode 发送器,这使得这成为可能。

关注点:
做过 ESP32 编程和中断处理,我非常尊重 Bart 和他所取得的成就。我最难克服看门狗超时!我担心任何可能影响时间的额外代码。如果我理解正确,添加 LCD 将需要 GRBL 进行额外的处理(排队和发送额外的命令以及可能处理更多的命令来创建显示/慢跑/SD 功能。这看起来像是在 GRBL 中推动了很多额外的工作处理器带来意想不到的后果。

建议:
在我看来,GRBL_ESP32 中的一切都已经到位。在之前向 Bart 索取了使用型号信息后,听起来与 GRBL 日常交互的最佳方式是通过 USB 接口。这消除了 Telnet/WiFi 或蓝牙可能发生的许多计时问题。如果机器的典型“头部”将是硬连线 (USB),这将释放 WiFi 和蓝牙以用于其他功能。最棒的是 USB 和蓝牙/Wifi 可以同时工作。
我建议仅将蓝牙用于“Pendant”或“DRO”。我很快把一些看起来效果很好的东西放在一起。我使用 ESP32 并将其连接到触摸屏(我有一个我构建的开发板,这使得这很容易)。然后我可以添加操纵杆、按钮、旋转编码器来创建我想要的任何功能。最棒的是所有处理都是远程完成的(在我的挂件 ESP32 上),我只需通过蓝牙向 GRBL 发送命令,在那里它们可以以正常方式排队和处理。
如果您使用的是 ESP32 板 1.04 或更高版本(在 Arduino IDE 中),您可以将蓝牙设置为主设备并硬编码 GRBL 蓝牙名称,以便自动连接。

总结:
与其添加额外的硬件接口,不如利用已有的硬件接口。这非常酷,因为您可以构建具有几乎无限能力的不受限制的 DRO!

问题:
如果可以的话,我确实有几个问题想在这里发布:

  1. 看起来 GRBL 不会在没有请求的情况下向蓝牙发送通用信息(位置、状态等)。这个对吗?看起来UGS和其他控制器必须定期查询。
  2. 为了找到 DRO 显示器的 WPos,我发送了一个“?”。这是正确的方法吗?我目前正在发送“?” 每 5 秒一次,但需要加快速度。希望每 0.5 秒一次不会太多。如果它正在做同样的事情,这将如何影响 UGS?
  3. 当我从“?”返回一个字符串时 命令,我需要处理它。我看到有时我会在字符串中得到 WCO,有时却没有。我假设只有在它发生变化时才会发送 WCO?我还看到在我发送 G92(更改 WCO)之类的命令与收到反映该更改的 WCO 之间存在延迟。我需要做一些不同的事情吗?
  4. 有没有办法强制 WCO 回复?
  5. 从文档看来,我可以使用 WPos 和 WCO 并快速计算机器坐标。我还可以使用“$G”命令来查找我可能需要的其他数据(我所在的工作坐标系)。这是正确的方法吗?
  6. 我有任何需要担心的争用问题吗?比如一个正在运行的程序?不小心慢跑?换句话说,如果某些东西正在运行,我是否需要限制功能(我只打算发送点动命令进行移动)?我会让触摸屏能够发送复位、G92、清除等…

提前致谢!

考虑 LCD/OLED 显示支持 #214
考虑 LCD/OLED 显示支持 #214

@mfarabee这或多或少正是我正在做的事情。我正在使用 ESP8266(带 TFT Shield 的 WEmos D1 Mini)作为小型 DRO 显示器。我将它连接到 GRBL_ESP32 控制器的 RX/TX,因为我没有使用 USB 端口。刚刚上传了我非常简单的代码,如果你想看看:
https ://github.com/derFrickler/grblLCD 现在它非常基本,只显示一些信息和 2 个用于启动/保持的按钮。到目前为止工作得很好。

我已经为基于 ESP32 的第二个版本焊接了一些硬件,ILI9341 2.4″ TFT 触摸和旋转编码器,但没有时间为它编写一些代码……现在有很多项目。

考虑 LCD/OLED 显示支持 #214

@thawkins, 而不是 Android studio,你看过 MIT App Inventor 吗?非常棒,您可以使用 Scratch 编程非常快速地开发 Android 应用程序。我这样做是为了为高中机器人团队建造的一些 Arduino 汽车创建不同的驾驶应用程序。他们能够很快掌握并开发自己的应用程序。
对于我的 DRO/Pendant,我不想使用手机应用程序,因为我想结合物理按钮和操纵杆。上面提到的其他人,我认为您对慢跑的触摸屏有更好的感觉和控制。触摸屏对于菜单选择和一些命令仍然很方便。我遵循与@derFrickler. 一旦我完成并清理了代码,我将很高兴分享它。

考虑 LCD/OLED 显示支持 #214
考虑 LCD/OLED 显示支持 #214

@thawkinsScratch 是块编程的一种形式。您拖动块并将它们连接起来以创建您的代码。他们用它来教孩子们,但即使是经验丰富的程序员也可以使用它:-) MIT App Inventor 非常强大,而且很容易做到。几个 youtube 视频,您将成为专家!

考虑 LCD/OLED 显示支持 #214

@thawkins, 而不是 Android studio,你看过 MIT App Inventor 吗?非常棒,您可以使用 Scratch 编程非常快速地开发 Android 应用程序。我这样做是为了为高中机器人团队建造的一些 Arduino 汽车创建不同的驾驶应用程序。他们能够很快掌握并开发自己的应用程序。
对于我的 DRO/Pendant,我不想使用手机应用程序,因为我想结合物理按钮和操纵杆。上面提到的其他人,我认为您对慢跑的触摸屏有更好的感觉和控制。触摸屏对于菜单选择和一些命令仍然很方便。我遵循与@derFrickler. 一旦我完成并清理了代码,我将很高兴分享它。

如果您使用的是主机 PC,那么我建议使用快捷键编程的“pro micro”板,因为该板具有本机隐藏功能并且价格便宜。我使用了其中的 2 个并涵盖了几乎需要的 io。您甚至可以为进给率和主轴倍率的旋转编码器编程。顺便说一句,我在 rpi4 中使用 cncjs 与 grbl_esp32 和 USB 连接。

考虑 LCD/OLED 显示支持 #214

硬按钮是必须的,但很高兴在下一行显示当前位置……这家伙在 ESP32 GRBl https://www.youtube.com/watch?v=Wu9etRQ5MxU上实现了 HMI+LCD

考虑 LCD/OLED 显示支持 #214

这就是您将位置报告给 Nextion 显示器所需添加的全部内容。(在 p373r 注释之间。)。
Nextion 增强版也有 8 个 gpios .. 我用它们来慢跑。

report.cpp
line 702 // 报告机器位置
if (bit_istrue(settings.status_report_mask,BITFLAG_RT_STATUS_POSITION_TYPE)) {
strcat(status, “|MPos:”);
} else {
#ifdef FWD_KINEMATICS_REPORTING
forward_kinematics(print_position);
#endif
strcat(状态,“|WPos:”);
}

report_util_axis_values(打印位置,温度);
strcat(状态,温度);
//##########################P373R#################### ##############

char out[100];
memset(out, 0, sizeof(100));
char * chars_array = strtok(temp, ",");
uint8_t in = 0;
byte b1 = 0xff;
sprintf(out, "%c%c%c", b1, b1, b1);


while (chars_array != NULL)
{
	
	
	char tm[30];
	sprintf(tm, "t%d.txt=\"%s\"%c%c%c", in, chars_array, b1, b1, b1);
	strcat(out, tm);
	chars_array = strtok(NULL, ",");
	in++;
}
strcat(out, "\r\n");
Serial.print(out);
//###########################END P373R##################################

// 返回规划器和串行读取缓冲区状态。

https://www.youtube.com/watch?v=vxQ5UpJoltM

考虑 LCD/OLED 显示支持 #214

@xP373Rx, 有没有更多关于 Grbl_ESP32 所有使用 Nextion 的操作的开源和案例资料?我用的是Nextion,但是Grbl_ESP32有很多问题,希望有更多的资料丰富他。

考虑 LCD/OLED 显示支持 #214

考虑使用常见且便宜的 arduino uno tft shield:
TFT LCD,2,4″ 320×240,Ultra HD,ILI9341,Arduino Mega2560 UNO R3
https://a.aliexpress.com/_m0wQJVD

考虑 LCD/OLED 显示支持 #214

xP373Rx 评论 2021 年 3 月 5 日  

那不是SPI,它是并行的。使用很多引脚,如 10 或 11

http://www.lcdwiki.com/2.8inch_SPI_Module_ILI9341_SKU:MSP2807 我在我的 esp32 收音机上使用这个,它是 spi 并且有 sd 卡插槽 +touch。cosos 12块钱左右。

考虑 LCD/OLED 显示支持 #214
喜欢 (0)

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