本页介绍如何使用 PlatformIO 和 VSCode 编译 Grbl_Esp32。
您的起点
- 强制的
- 具有一定的 C++ 编程经验
- 基本 CNC 知识
- 带 USB 线缆的 ESP32 DevKit 开发板
- 选修的
- 像Bart 的 Tindie 板一样的完整硬件
- 一台正在工作的数控机床(包括电机驱动器、步进器、按钮等)
Arduino IDE是一个易于使用的“集成开发环境”(IDE),用于微控制器软件开发。IDE 意味着代码编辑、程序编译、将编译后的代码下载到微处理器以及测试都可以在一个环境中完成。它最初是为 Arduino 硬件设计的,但现在已适用于包括 ESP32 在内的许多不同的微控制器。它稳定、文档齐全,并且非常易于小型项目使用。对于较大的项目,它的简单性可能会成为限制。
Grbl_Esp32 是一个相对较大的项目,它突破了 Arduino IDE 的极限。一个主要的烦恼是,如果你更改任何内容,Arduino IDE 会重新编译所有代码,即使是未更改的部分。这需要花费时间,这阻碍了开发,因为开发通常需要进行一系列小的更改并快速测试它们。此外,Arduino IDE 对专业代码管理实践(如版本控制、代码审查、多个程序员之间的合作以及问题跟踪)没有很好的支持。
为了克服这些限制,Grbl_Esp32 核心开发人员改用PlatformIO微控制器编译系统,并结合使用Visual Studio Code (VSCode) 编辑系统。PlatformIO 负责设置微控制器编译器、开发框架、库和板配置、将代码加载到微控制器以及测试等细节。VSCode 拥有大量用于编辑和管理源代码的工具,并可通过点击方式集成到 PlatformIO 和源代码管理系统(如 git 和 GitHub)。PlatformIO 和 VSCode 的组合为 Arduino IDE 提供了一种替代方案,它速度更快(初始设置后),功能更强大。
(PlatformIO 还可以与其他编辑系统配合使用,如 Atom、Sublime Text、EMACS、Visual Studio 和 vi。如果您更喜欢其中某个编辑器,请在网上搜索有关在您的编辑器中使用 PlatformIO 的说明。为简单起见,本文档仅介绍 VSCode 的情况。)
VSCode 有许多扩展可用于处理常见的编程情况。除了 PlatformIO 扩展之外,本文档还推荐了一些特别适合与 Grbl_Esp32 配合使用的扩展。
让我们进行一次全新安装,最后将 Grbl_Esp32 上传到 ESP32 进行首次测试。
Grbl_ESP32 项目使用Git版本控制系统来跟踪代码更改,并结合 GitHub Web 服务将代码存储在云中。使用 git 并非绝对必要 – 您可以只下载包含给定版本源代码的 .zip 文件 – 但 git 有很多优点。您可以轻松跟踪不同版本的代码,在已发布的代码和实验性代码之间来回切换,将建议的更改发送回核心开发人员等。
如果你的机器上已经有 git,VSCode 将使用现有安装。如果没有,请先安装 git。有关 Git 的更多信息,请参阅Git 文档。
按照文档安装Visual Studio Code。在 Windows 中,VSCode 的全新安装如下所示。
点击左下角的“齿轮”图标并选择扩展,打开 VSCode 扩展选项卡。在顶部的“在 Marketplace 中搜索扩展”框中,输入“platformio”,选择“PlatformIO IDE”扩展,然后使用蓝色的“安装”按钮进行安装。
GitLens扩展提供了代码比较和 VSCode 的 git 的全部功能。这对于需要详细了解代码随时间变化情况的开发人员特别有用。在扩展管理器中搜索“GitLens”,如上所示,然后安装它。见下图。
Grbl_Esp32 源代码大部分是用 C/C++ 编写的。有各种不同的扩展程序可帮助进行 C/C++ 开发 – 突出显示关键字、实时错误检查、显示函数参数等。Microsoft的C/C++扩展程序运行良好。见下图。
至此,安装已完成。下一步是项目设置。
Grbl_Esp32 源代码包含一个“platformio.ini”文件,它告诉 PlatformIO 如何编译它。
如果您的计算机上已经有 Grbl_Esp32 源代码,只需从顶部菜单栏转到文件>打开文件夹,然后选择包含 Grbl_Esp32 的文件夹。该文件夹中的“platformio.ini”将激活 PlatformIO 扩展。
如果您还没有源代码,可以直接从 VSCode 中获取。在 VSCode 侧栏中,单击 PlatformIO 的“外星人”图标以调出“PLATFORMIO:快速访问”面板,然后选择克隆 Git 项目。
在顶部,您将看到一个框,上面写着“提供存储库 URL 或选择存储库源”。将https://github.com/bdring/Grbl_Esp32粘贴到该框中,然后单击其下方显示的从 URL 克隆…行。
这将打开一个文件选择器对话框,您可以在其中选择包含新“Grbl_Esp32”子目录的目录。然后您将看到
然后
单击打开,VSCode 将连接到 Grbl_Esp32 源代码。
每台 CNC 机器都需要一些特定的机器设置。Grbl_ESP32 默认为无所事事的“test_drive.h”机器定义。您最终将需要设置一个真正的机器定义文件。
文件Grbl_Esp32/src/Machine.h包含行#include "src/Machines/test_drive.h"
。它选择“test_drive”机器 – 一个虚拟的 3 轴机器,您可以单独在 ESP32 开发模块上或连接到任何硬件上安全地使用它。它实际上不会改变任何引脚的状态,因此可以安全使用,而不必担心浮动输入引脚或短路输出引脚。
要与实际硬件一起使用,您必须使用 Grbl_Esp32/src/Machines/ 子目录中现有的机器定义文件之一,或者创建自己的文件。例如,Grbl_ESP32 开发板使用文件 Machines/3axis_v4.h。如果您的硬件与预定义的机器之一不匹配,您可以创建自己的文件,也许可以使用预定义的文件之一作为起点。请参阅此wiki 页面。在 Machine.h 中,#include 您的文件而不是 Machines/test_drive.h。
您可以使用 VSCode 编辑该文件,如下所示
VSCode PlatformIO 扩展在窗口底部的状态栏中添加了一些图标
您可以将鼠标悬停在图标上以验证其功能。
“复选标记”图标表示从源代码编译(“构建”)固件,但不会将其上传到 ESP32 模块。编译过程以及由此产生的任何错误都会显示在 VSCode 的“TERMINAL”窗格中。
“右箭头”图标表示编译成功,然后上传到 ESP32 模块。这是您最常使用的图标。
“垃圾桶”图标执行“清理”步骤。在大多数情况下,PlatformIO 可以检测到源文件何时发生变化,并且只会重新编译已更改的文件,从而加快您进行小幅更改后后续重新编译的过程。在少数情况下 – 特别是当您在 Custom/ 文件夹中进行更改时 – 更改检测不起作用,因此您必须强制 PlatformIO 重新编译所有内容。这就是“清理”的作用 – 它会丢弃所有以前的编译结果,因此编译过程从头开始并编译所有内容。
“电源插头”图标启动连接到 ESP32 串行端口的串行监视器,以便您可以与 Grbl_Esp32 进行串行交互。
正常过程是“上传”(自动执行编译步骤),然后是“串行监视器”。
- 如果您之前已安装 PlatformIO,则旧安装可能会干扰新工作。PlatformIO 在UserHomeDirectory /.platformio 目录中存储了许多工具。(在 Windows 上,UserHomeDirectory通常是“C:/Users/YourUserName”)。这些工具的旧版本可能无法正常工作。在这种情况下,您可以尝试删除或重命名旧的 .platformio 目录。然后,您必须使用 VSCode 的扩展管理器卸载并(重新)安装 PlatformIO 扩展。系统可能会提示您重新加载 VSCode 几次;请在网上咨询如何操作。
现在通过 USB 将 ESP32 开发板连接到 PC。请记住,此基本步骤与芯片有关,而不是开发板。换句话说,您可以
- Espressif DevKit 开发板
- Bart 的 Grbl_ESP32 CNC 开发板 V4.1
- 您自己的董事会
此步骤不适用于出厂时刚出厂的 ESP32 芯片。首次使用 Grbl_Esp32 进行刷新后,这是一个非常有用的功能,因为无需物理访问硬件即可刷新机器。
先决条件
- Grbl_Esp32 首次烧写
- Grbl_Esp32 中启用 OTA
- 路由器、安全……设置
- 天线已连接(如适用)
- Grbl_Esp32 Web UI 可通过 WIFI 访问
- 通过 Web UI 手动上传固件进行试驾,确保其可以正常工作
话虽如此,请将这些行添加到主文件夹中的platformio.ini文件中
[env]
upload_protocol = espota
upload_port = 192.168.xx.xx
upload_port是您的机器的 IP 地址。
单击蓝色功能区中的PlatformIO::Upload按钮
Uploading: [============================================================] 99%
Uploading: [============================================================] 99%
Uploading: [============================================================] 100% Done...
13:31:35 [INFO]: Waiting for result...
13:31:36 [INFO]: Result: OK
13:31:36 [INFO]: Success
一旦 ESP32 Web UI 正常工作,您还可以通过 Web UI上传生成的firmware.bin文件。
- 可能需要调整电脑的防火墙以允许传入流量(问题)
- 测试 ESP32 连接。例如通过 USB 连接,预期结果如下所示
- 将一个正常工作的 firmware.bin 文件和一个正常工作的存储库一起存档作为备份可能会有所帮助。以防万一出现问题,你需要回到最近定义的起点
- 主分支是稳定的环境,打开 GitHub 网站时就会看到。还有其他分支,例如devt或用于尝试特定功能的分支。
- 更新 Grbl_Esp32
- 更新 ESP32 固件(当前版本 AT 2.1)
- Fork Grbl_Esp32 并使用 GitHub 维护自己的编程
- 简单程序,例如小型用户定义函数(标头,.c 文件)