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的驱动程序
驱动程序
我用Mac Pro编译,选择Macintosh
检查以下PlatformIO的PIO Home->Devices->Refresh一下就能看到ESP32通过USB连上了。
源代码
由于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
修改环境参数来构建ESP32版Marlin
-
在platformio.ini,修改default_envs变成esp32
[platformio] src_dir = Marlin boards_dir = buildroot/share/PlatformIO/boards default_envs = esp32
-
修改 Configuration.h, 把MOTHERBOARD改成ESP32
#ifndef MOTHERBOARD // #define MOTHERBOARD BOARD_MKS_BASE #define MOTHERBOARD BOARD_ESPRESSIF_ESP32 #endif
-
把LCD相关的地方注释,位置在Configuration.h
// #define REPRAP_DISCOUNT_SMART_CONTROLLER
-
把Configuration_adv.h中TX_BUFFER_SIZE设成64
#define TX_BUFFER_SIZE 64
-
把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
-
为了在未接打印机传感器时启动编译,我先把Configuration.h的extruder变成0,TEMP_SENSOR_BED变成0,如果接线了就应该变会相应设置
#define EXTRUDERS 0
和
#define TEMP_SENSOR_BED 0
-
为了在未接打印机传感器时启动编译,我把Marlin的SD卡功能屏蔽,要把Configuration.h的SDSUPPORT变成0。
#define SDSUPPORT
编译和上传
PlatformIO底部提供了快捷的Build和Upload快捷键,如果只是编译代码是问题不大的,但要Upload的话,我建议使用Project Tasks的Upload and Monitor,可以通过点击左侧外星人头像进入,因为上传完通常需要马上检查输出,才直到是否正常连上wifi。
启动ESP32和上传ESP3D的网页界面
编译完成后,如果wifi也正常连上了,可以在路由器找到esp32的IP,在浏览器直接打开。
等网页时提示index.html.gz缺失,需要从ESP3D下载再上传。
下载地址
然后就可以打开ESP3D的界面
ESP3D支持打印机控制,Gcode打印,Wifi相关设置,也支持AP Mode的设置,麻雀虽小,五脏俱全。
ESP32 Pin连线
关于ESP32 Pin的接线,可以在Marlin\src\pins\esp32\pins_ESP32.h文件中找到定义,但发现Pin部分大于100的Pin,应该是不正确的。因为ESP32 pin口只有42个,再看看文件最后修改日期是半年前,那应该不准确了。于是,我参考主板MRR ESPA,进行重新定义,列出来给大家参考。