ESP3D. Управление 3D принтером через WiFi
Введение
ESP3D - это программное обеспечение, которое позволяет управлять 3D-принтером с помощью платформы ESP8266 или ESP32. Оно предоставляет удобный интерфейс для настройки и управления принтером через веб-браузер, а также поддерживает функции мониторинга и управления печатью из удаленной сети. ESP3D имеет множество функций, включая настройку параметров принтера, просмотр и управление печатью, а также возможность загружать и сохранять файлы на SD-карту принтера по W-Fi.. В этой статье мы рассмотрим как работает ESP3D, как его настроить и подключить к вашей системе.
Основные возможности прошивки
- Веб интерфейс управления (терминал / локальное обновление FS / обновление прошивки ESP3D)
- Поддержка WebUI
- Поддержка ESP8285 / ESP8266 / ESP32 / ESP32-S2 / ESP32-S3 / ESP32-C3
- Поддержка Wi-Fi / Ethernet
- Поддержка Raw TCP / Serial bridge (light telnet)
- Настройка задержки загрузки
- Поддержка Websocket / Serial bridge
- Поддержка Serial / Serial bridge интерфейсов
- Поддержка Bluetooth Serial Bridge (при наличии BT на плате)
- Поддержка последовательного протокола MKS
- Конфигурации последовательных команд
- Поддержка аутентификации (администратор / пользователь)
- Поддержка FTP (ограничено 1 подключением одновременно)
- Поддержка WebDAV
- Локальная поддержка FS:
- Little FS
- Fat (только для ESP32)
- Поддержка SD
- Интерфейсы
- Нативный SPI
- Собственный SDIO (только для ESP32)
- SdFat 2.x
- Подключение
- Прямое подключение
- например: ESP32cam
- Совместное использование соединения с помощью аппаратного коммутатора
- например: Panucatt Wifi Backpack / Azteeg X5 WiFi
- Быстрая загрузка MKS по последовательному порту
- Прямое подключение
- Интерфейсы
- Глобальная FS под FTP / Webdav: SD + Локальная FS в том же каталоге
- Поддержка вывода звуковых сигналов через спикер
- Управление выводами платы с помощью команд
- Поддержка камеры ESP32 (только с PSRAM)
- Базовая поддержка OLED-экрана
- I2C SSD1306 128x64
- I2C SSDSH1106 132x64
- Базовая поддержка TFT-экрана
- SPI ST7789 135x240
- SPI ST7789 240x240
- Поддержка синхронизации времени (вручную / на интернет-сервере)
- Поддержка интерпретатора Lua
- Поддержка уведомлений
- WebUI
- TFT/OLED
- Электронная почта
- Линия
- Telegram
- Толчок
- IFTTT
- Поддержка датчиков
- DHT 11/22
- Аналоговый
- BMX280
- Поддержка автозагрузки скриптов при запуске
- Потоковая передача GCODE с хоста для макросов , размещенных в локальной FS
- Обновление
- Конфигурация ESP3D с использованием ini-файла на SD
- Обновление ESP3D с использованием двоичного файла на SD
- Поддержка OTA
- Обновление через WebUI
Аппаратная часть
Прежде чем приступать к настройке и прошивке, следует немного рассказать об аппаратной части.
Выбор микроконтроллера
ESP3D имеет небольшой размер и легко устанавливается на микроконтроллеры ESP8266 и ESP32. Однако, по моему личному мнению, ESP32 предпочтительнее из-за своих более высоких характеристик.
Размер прошивки ESP3D зависит от настроек и используемых модулей, но обычно он составляет около 1 МБ для ESP8266 и 1,5 МБ для ESP32. Это может занять значительную часть памяти микроконтроллера, особенно если вы хотите использовать другие дополнительные функции вместе с ESP3D. Но для большинства проектов это не является проблемой.
По скорости работы ESP3D на ESP32 работает быстрее, чем на ESP8266. Это связано с тем, что ESP32 имеет двухъядерную архитектуру, что позволяет ему обрабатывать задачи быстрее и более эффективно. Кроме того, ESP32 имеет более высокую частоту ядра процессора и более высокоскоростной интерфейс Wi-Fi и Bluetooth, что также ускоряет работу. Однако скорость работы зависит от конкретного проекта и используемых модулей, поэтому рекомендуется проводить тестирование и оптимизацию проекта для достижения наилучшей производительности.
Я тестировал прошивку как на ESP-01s с его 1мб флеш памяти в минимальной конфигурации, так и на более продвинутых Wemos D1 Mini, NodeMCU V3, ESP32-WROOM и ESP32-CAM.
В целом даже на ESP-01s работало все неплохо. Были некоторые фризы и зависания интерфейса, команды обрабатывались с небольшой задержкой, пару раз модуль самопроизвольно перезагружался, передача gcode файлов на принтер занимала целую вечность, но в целом работало все довольно неплохо. Wemos D1 Mini и Node MCU имеют те же проблемы, но за счет большего объема флеш памяти и дополнительных пинов можно собрать полную версию прошивки и использовать дополнительные плюшки типа FTP, WebDAV, подключения SD карты непосредственно к ESP8266, пользоваться прошивкой намного приятнее. Ну и самый оптимальный вариант это ESP32. Фризов практически нет, все работает быстро и доступен максимальный набор компонентов. К тому же если использовать ESP32-CAM, то появляется возможность еще и своими глазами наблюдать процесс печати дистанционно. В общем, для себя выбор сделал в пользу ESP32-CAM и в дальнейшем все , что касается настройки и подключения я буду писать, относительно этого модуля.
Подключение к материнской плате 3D принтера
ESP3D работает с материнской платой через UART интерфейс и для подключения модуля вам потребуется выполнить несколько шагов:
- Убедиться, что ваша материнская плата поддерживает подключение по UART.
- Подключить ESP3D модуль к плате 3D принтера через UART интерфейс, используя пины TX и RX.
- Настроить параметры ESP3D модуля с помощью конфигурационного файла прошивки.
- Подключиться к ESP3D модулю через веб-интерфейс для управления принтером.
Однако, убедительная просьба следовать инструкциям и рекомендациям, приведенным в документации к вашей конкретной плате и модулю ESP3D, чтобы избежать непредвиденных проблем.
Следует заметить, что на большинстве современных материнских плат для 3D принтера, производителем уже предусмотрена возможность подключения внешнего WiFi модуля. Например, на платах BigTreeTech серии SKR, уже распаян разъем для подключения модуля ESP-01S. Вам достаточно только прошить модуль под ESP3D и просто вставить разъем на плате.
На моей материнской плате SKR 1.4 Turbo это выглядит так. На схеме он выделен красным квадратом.
На других платах BTT и MKS. Он чаще всего тоже присутствует. Просто внимательно изучите схему платы на сайте производителя.
Для подключения других модулей, например Wemos D1 Mini я просто использовал провода с Dupont разъемами для соединения контактов на материнской плате с соответствующими пинами микроконтроллера.Хотя можно и распаять все на макетной плате и вставлять в разъем уже её. И следует заметить, что RX контакт на материнской плате следует соединять с TX микроконтроллера, а ТХ платы с RX микроконтроллера.
Также обратите внимание, что питание на этот разъем подается 3.3 вольта. Для ESP8266 и ESP32 этого вполне достаточно, но ESP32-CAM у меня почему-то отказалась стартовать, хотя производителем указано, что это ее рабочее напряжение. Пришлось брать 5 вольт из рядом расположенного разъема I2C а и подавать его на пин 5V ESP32-CAM.
Также отмечу, если на вашей материнской плате разъема WiFi все же не оказалось, но к ней подключен внешний сенсорный дисплей от BigTreeTech, то этот разъем иногда бывает распаян на нем.
Если же ни на материнской плате, ни на плате дисплея разъема WifFi так найти не удалось, то изучите досконально документацию к вашей материнской плате. Чаще всего разъем UART все же присутствует в том или ином виде. С более подробной информацие по подключению к различным материнским платам вы можете ознакомиться здесь.
Программная часть
Выбрав микроконтроллер и разобравшись с подключением перейдем непосредственно к программной части.
Для описания процесса настройки и установки прошивки, я выбрал последнюю и самую актуальную на данный момент версию ESP3D - 3.0. Параллельно ей также развивается и версия 2.1. Она более стабильная и законченная, чем 3.0, которая все еще находится в стадии альфа версии, но функционал у тройки чуть поинтереснее и интерфейс немного красивее и продуманнее. Да и общая оптимизация и скорость работы по моим ощущениям гораздо лучше.
В качестве микроконтроллера для установки прошивки я.буду использовать модуль ESP32-CAM. У него помимо всех достоинств ESP32, в наличии есть еще и встроенная камера, позволяющая дистанционно следить за процессом печати.
Распространяется ESP3D в виде архива с исходными кодами. Поэтому собирать прошивку под выбранный микроконтроллер вам придется самостоятельно. Сделать это можно как традиционно через Arduino IDE, так и более удобным способом через Visual Studio Code. Рассмотрим оба способа более подробно.
Сборка прошивки в Arduino IDE
Версия Arduino IDE должна быть не менее 1.8.X
Установите ядро ESP, в зависимости от используемой платы.
Распакуйте архив с исходниками в удобное место и перейдите в каталог с извлеченными файлами. Вы увидите следующую структуру каталогов:
В папке libraries содержатся все необходимые библиотеки для компиляции прошивки. Скопируйте ее содержимое в C:\Users\Имя пользователя\Documents\Arduino\libraries, либо в C:\Program Files (x86)\Arduino\libraries.
В папке extra-libraries содержатся библиотеки для работы с файловой системой fat для sd карты. Скопируйте их тоже, если планируете использовать в вашей прошивке данную возможность.
В папке images находятся фото с иллюстрациями способов подключения модулей ESP32 к различным материнским платам.
В папке esp3d находятся, непосредственно, исходники прошивки. Перейдите в нее и откройте файл esp3d.ino в Arduino IDE.
На вкладке configuration.h настройте параметры прошивки. Более подробно этот шаг разберем немного позже.
Настройте параметры ядра для используемой платы:
Для ESP8266 с 4MB флеш памяти
- Board: Generic ESP8266 Module
- Upload Speed: 115200
- CPU frequency: 160 MHz
- Flash Size: 4M (2M SPIFFS)
- Flash Mode: DIO
- Flash Frequency: 40Mhz
- Reset Method: CK
- Debug Port: Disabled
- Debug Level: None
Для ESP8266 с 1MB флеш памяти Веб обновление прошивки не поддерживается из-за малого размера флеш памяти)
- Board: Generic ESP8266 Module
- Upload Speed: 115200
- CPU frequency: 160 MHz
- Flash Size: 1M (128K SPIFFS)
- Flash Mode: DIO
- Flash Frequency: 40Mhz
- Reset Method: CK
- Debug Port: Disabled
- Debug Level: None
Для ESP32 с 4MB флеш памяти
- Board: ESP32 Dev Module
- Upload Speed: 115200
- CPU frequency: 240 MHz
- Flash Frequency: 80Mhz
- Flash Mode: QIO
- Flash Size: 4MB
- Partition Scheme: Default 4MB with SPIFFS
- Core Debug Level: None
- PSRAM: Disabled
Для ESP32-CAM
- Board: ESP32 Dev Module
- Upload Speed: 115200
- CPU frequency: 240 MHz
- Flash Frequency: 80Mhz
- Flash Mode: QIO
- Flash Size: 4MB
- Partition Scheme: Default 4MB with SPIFFS
- Core Debug Level: None
- PSRAM: Enabled
Выберите порт, к которому подключено ваше устройство, и выберите Загрузка в меню программы для компиляции и прошивки.
Сборка прошивки в VSCode и Platformio
Откройте папку с исходниками в VSCode:
При первом запуске произойдет автоматическая загрузка и установка всех необходимых файлов и библиотек для компиляции. Этот процесс занимает какое-то время, так что наберитесь терпения.
Настройте параметры прошивки в esp3d/configuration.hВыберите целевую платформу в VSCode:
- [env: esp32dev] для плат ESP32
- [env: esp32cam] для плат ESP32-CAM
- [env: esp32-TTGO_T_Display] для плат ESP32 с дисплеем TTGO_T
- [env: esp32-ST7789] для плат ESP32 с дисплеем ST7789
- [env: esp32-s2]для плат ESP32-S2
- [env: esp32-s3]для плат ESP32-S3
- [env: esp32-c3]для плат ESP32-C3
- [env: esp8266] для плат ESP8266 с 4 МБ флэш-памяти
- [env: esp01s_160mhz] для плат ESP8266 с 1 МБ флэш-памяти
Подключите плату к ПК по USB и нажмите Upload and Monitor для загрузки прошивки:
Настройка параметров прошивки в configuration.h
Откройте esp3d/configuration.h и установите нужные функции.
Вы также можете сгенерировать его, используя конфигуратор ESP3D, который значительно упрощает этот шаг.
В данном файле достаточно много комментариев от автора с описанием всех доступных функций и их параметров, так что процесс настройки довольно прост, но все же укажу основные параметры на которые стоит обратить внимание.
Настройки для подключения к вашей WiFi сети
#define STATION_WIFI_SSID "********"
#define STATION_WIFI_PASSWORD "*********"
По умолчанию закомментированы и устройство стартует в режиме точки доступа с SSID ESP3D без пароля. Веб интерфейс доступен через браузер по адресу 192.168.0.1 при подключении к данной точке доступа
Если логин и пароль указаны, то ESP3D при старте сразу подключается к вашей WiFi сети и веб интерфейс доступен в браузере, по адресу выданному устройству роутером.
#define DEFAULT_FW MARLIN
Здесь указываем прошивку на которой работает ваш 3D принтер. Возможные значения:
- UNKNOWN_FW
- GRBL
- MARLIN
- SMOOTHIEWARE
- REPETIER
Далее указываем физические сетевые интерфейсы по которым вы планируете соединяться с ESP3D. На выбор WiFi, LAN bи Bluetooth:
#define WIFI_FEATURE
//#define ETH_FEATURE
//#define BLUETOOTH_FEATURE
Далее список программных интерфейсов для подключения к ESP3D. Веб интерфейс, Telnet, Web Socket:
#define HTTP_FEATURE
#define TELNET_FEATURE
//#define WS_DATA_FEATURE
Тип файловой системы используемый ESP3D для хранения данных:
#define FILESYSTEM_FEATURE ESP_LITTLEFS_FILESYSTEM
Возможные варианты:
- ESP_SPIFFS_FILESYSTEM (Deprecated)
- ESP_FAT_FILESYSTEM (ESP32 only with large partitions)
- ESP_LITTLEFS_FILESYSTEM (Default)
Настройка SD карты
#define SD_DEVICE_CONNECTION ESP_SHARED_SD
Возможные варианты:
- ESP_NO_SD (без sd карты)
- ESP_DIRECT_SD (ESP3D видит только подключенную к нему SD карту)
- ESP_SHARED_SD (ESP3D видит также и SD карту подключенную к материнской плате принтера)
Интерфейс для работы с sd картой ESP3D:
#define SD_DEVICE ESP_SDFAT2
Возможные варианты:
- ESP_SD_NATIVE //esp32 / esp8266
- ESP_SDIO //только esp32
- ESP_SDFAT2 //esp8266 / esp32
Настройки удаленной работы с SD картой и флеш памятью ESP3D по протоколам WebDav и FTP:
#define GLOBAL_FILESYSTEM_FEATURE
#define WEBDAV_FEATURE FS_ROOT
#define FTP_FEATURE FS_ROOT
Список параметров для WEBDAV_FEATURE и FTP_FEATURE:
- FS_ROOT (доступно чтение и запись содержимого SD карты и флеш памяти. Требует установки параметра GLOBAL_FILESYSTEM_FEATURE)
- FS_FLASH (только флеш память)
- FS_SD (только SD карта)
Настройки способа обновления прошивки:
#define OTA_FEATURE //OTA обновление
#define WEB_UPDATE_FEATURE // через WEB интерфейс
#define SD_UPDATE_FEATURE //с помощью SD карты. Скопируйте бинарный файл прошивки с именем esp3dfw.bin в корень SD карты
Если вы используете модуль ESP32-CAM укажите здесь вашу модель
#define CAMERA_DEVICE CAMERA_MODEL_AI_THINKER
Возможные варианты:
- CAMERA_MODEL_CUSTOM (Любая другая модель камеры. Настройте используемы пины в include/pins.h)
- CAMERA_MODEL_ESP_EYE
- CAMERA_MODEL_M5STACK_PSRAM
- CAMERA_MODEL_M5STACK_V2_PSRAM
- CAMERA_MODEL_M5STACK_WIDE
- CAMERA_MODEL_AI_THINKER //ESP32-CAM
- CAMERA_MODEL_WROVER_KIT
- CAMERA_MODEL_ESP32_CAM_BOARD
- CAMERA_MODEL_ESP32S2_CAM_BOARD
- CAMERA_MODEL_ESP32S3_CAM_LCD
- CAMERA_MODEL_ESP32S3_EYE
Веб интерфейс
После прошивки вашей платы, при попытке зайти в Веб интерфейс вас встретит вот такое окно:
Это означает, что на устройстве не найдены файлы для отображения веб интерфейса. К счастью, это довольно легко исправляется. Скачайте архив по кнопке Дополнительно из вложений к данной статье и распакуйте его.
Перейдите в папку \dist\Printer3D и найдите каталог с названием прошивки, используемой в вашем 3D принтере. Откройте данную папку. В ней содержится всего один файл index.html.gz
Загрузите его на вашу плату ESP3D через Web интерфейс, нажав на кнопку отмеченную красной стрелкой на скриншоте выше. Можете сразу же загрузить и файл русификации, предварительно скачав его здесь. После успешной загрузки, обновите страницу.
Вы должны увидеть следующее:
ESP3D настроен и готов к работе.
Подключение камеры
Для подключения камеры требуется выполнить несколько шагов:
- Перейти в Веб интерфейс ESP3D
- Открыть Настройки, вкладка Интерфейс
- Найти панель Дополнительный контент и нажать кнопку Добавить контент
- В поле Имя введите название панели.
- Нажав на кнопку Иконка выберите значок для панели.
- В поле Вывод выберите куда выводить изображение с камеры (панель или отдельная страница).
- Если используется внешняя IP камера, то в поле URL адрес введите ее IP адрес, если ESP32-CAM, то оставьте поле пустым.
- В поле Тип для ESP32-CAM выберите ESP32 CAM. Для внешней камеры Изображение или Содержимое
- Время обновления рекомендуется ставить не менее 200 мс, чтобы излишне не нагружать модуль
- Закончив настройки, нажмите кнопку Сохранить
После сохранения настроек, в Панели управление веб интерфейса должно появиться изображение с камеры
Решение возможных проблем
Если ESP3D не получает данные от принтера, то, возможно, в прошивке материнской платы не открыт серийный порт.
Для прошивки Marlin это делается следующим образом.
- Откройте папку с исходниками
- Внесите в Marlin\Configuration.h следующие изменения:
#define SERIAL_PORT 3 #define SERIAL_PORT_2 0
- Соберите прошивку и прошейте вашу материнскую плату
После этого, обмен данными с принтером через серийный порт должен появиться. Если не сработало, то можно попробовать вручную переназначить номера выводов материнской платы. Для SKR 1.4 это делается следующим образом:
Идём по адресу:
C:\Users\вашПК\.platformio\packages\framework-arduino-lpc176x\cores\arduino\HARDWARESERIAL.h
Назначаем там на этот третий порт номера выводов:
Строки 106 и дальше:
// Initialize UART pin connect
PinCfg.Funcnum = 3;
PinCfg.OpenDrain = 0;
PinCfg.Pinmode = 0;
PinCfg.Pinnum = 28;
PinCfg.Portnum = 4;
PINSEL_ConfigPin(&PinCfg);
PinCfg.Pinnum = 29;
PINSEL_ConfigPin(&PinCfg);
В этом файле содержится вся раскладка UART выводов. Номера выводов для других плат, смотрите в документации к материнской плате.
Полезные ссылки по теме
Github репозиторий ESP3D
Github репозиторий ESP3D-WebUI
Генератор Configuration.h для ESP3D
Документация ESP3D