Kevin
Kevin

目录

在ESP32开发板上安装Marlin

ESP32是一块性价比极高的开发芯片,一块板子里面集成了Wifi,蓝牙等无线连接,而且价格才三四十元就有交易了,性价比极高。最近Marlin 2.0.x发布,Marlin宣布开始支持ESP32系列的3D打印机主板,抱着一颗好奇的心,试验一下用ESP32来控制一下我的3D打印机。

开发工具

我推荐使用VS Code + PlatformIO IDE作为开发和编译的工具,虽然Arduino也能进行编译和上传。VS Code更友好的界面和Platform IO的各种构建任务,令我瞬间爱上这款开发工具。以下的开发环境都会根据VS Code + PlatformIO IDE介绍。

(VS Code和PlatformIO的安装我会在另一篇文章介绍,本文专注Marlin编译)

ESP 32驱动程序

要上传代码的话,要先安装ESP32的驱动程序
https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers
我用Mac Pro编译,选择Macintosh
file
检查以下PlatformIO的PIO Home->Devices->Refresh一下就能看到ESP32通过USB连上了。
file

源代码

由于Marlin的ESP 32支持还算是在开发阶段,因为在最新的Marlin代码中,即使你编译都完了,但是用不了最新但ESP3D Web界面的。因此,Git Clone完Marlin代码时要把代码改成 bugfix-2.0.x分支。

git clone -b bugfix-2.0.x https://github.com/MarlinFirmware/Marlin.git

如果将来bugfix都改好来,相信这些代码会汇入主干。
打开VS Code后,要检查左下角的branch是否已经指向bugfix-2.0.x
file

修改环境参数来构建ESP32版Marlin

  1. 在platformio.ini,修改default_envs变成esp32

    [platformio]
    src_dir      = Marlin
    boards_dir   = buildroot/share/PlatformIO/boards
    default_envs = esp32
  2. 修改 Configuration.h, 把MOTHERBOARD改成ESP32

    #ifndef MOTHERBOARD
    // #define MOTHERBOARD BOARD_MKS_BASE
    #define MOTHERBOARD BOARD_ESPRESSIF_ESP32
    #endif
  3. 把LCD相关的地方注释,位置在Configuration.h

    // #define REPRAP_DISCOUNT_SMART_CONTROLLER
  4. 把Configuration_adv.h中TX_BUFFER_SIZE设成64

    #define TX_BUFFER_SIZE 64
  5. 把Configuration_adv.h中的ESP3D_WIFISUPPORT去除注释,WIFI_SUPPORT保持注释,然后填入要接入的wifi SSID和密码

    //#define WIFISUPPORT
    #define ESP3D_WIFISUPPORT
    #if EITHER(WIFISUPPORT, ESP3D_WIFISUPPORT)
    #define WIFI_SSID "WIFI_SSID"
    #define WIFI_PWD  "PASSWORD"
    #define WEBSUPPORT          // Start a webserver (which may include auto-discovery)
    #define OTASUPPORT          // Support over-the-air firmware updates
    #define WIFI_CUSTOM_COMMAND // Accept feature config commands (e.g., WiFi ESP3D) from the host
    #endif
  6. 为了在未接打印机传感器时启动编译,我先把Configuration.h的extruder变成0,TEMP_SENSOR_BED变成0,如果接线了就应该变会相应设置

    #define EXTRUDERS 0

    #define TEMP_SENSOR_BED 0
  7. 为了在未接打印机传感器时启动编译,我把Marlin的SD卡功能屏蔽,要把Configuration.h的SDSUPPORT变成0。

    #define SDSUPPORT

编译和上传

PlatformIO底部提供了快捷的Build和Upload快捷键,如果只是编译代码是问题不大的,但要Upload的话,我建议使用Project Tasks的Upload and Monitor,可以通过点击左侧外星人头像进入,因为上传完通常需要马上检查输出,才直到是否正常连上wifi。
file
file

启动ESP32和上传ESP3D的网页界面

编译完成后,如果wifi也正常连上了,可以在路由器找到esp32的IP,在浏览器直接打开。
file
等网页时提示index.html.gz缺失,需要从ESP3D下载再上传。
下载地址:https://github.com/luc-github/ESP3D-WEBUI/raw/660d09fdde2a72b52db191d6adea2e29636a1fcd/index.html.gz

然后就可以打开ESP3D的界面

file
ESP3D支持打印机控制,Gcode打印,Wifi相关设置,也支持AP Mode的设置,麻雀虽小,五脏俱全。

ESP32 Pin连线

关于ESP32 Pin的接线,可以在Marlin\src\pins\esp32\pins_ESP32.h文件中找到定义,但发现Pin部分大于100的Pin,应该是不正确的。因为ESP32 pin口只有42个,再看看文件最后修改日期是半年前,那应该不准确了。于是,我参考主板MRR ESPA,进行重新定义,列出来给大家参考。
file