17 KiB
Marlin 3D Printer Firmware for Flying Bear 4S and 5
Это конфигурация официального Marlin для принтера Flying Bear Ghost 4S и 5 (плата MKS Robin Nano).
Эта ветка содержит дополнительный код для работы с модулем MKS WIFI, установленным в FB4S и FB5. Загрузка файлов через стандартный plugin в Cura.
MKS WIFI модуль
Работает
- Отображение температуры в Cura
- Просмотр содержимого SD карты
- Удаление файлов с SD карты
- Загрузка файлов на SD карту
- Автоматический запуск печати при загрузке файла.
- Настройка WIFI модуля (сеть и пароль)
Не работает
- Имена файлов на русском Переименуйте файл в Cura
- Работает только с картами стандарта SD card v2.0 и новее. Это все карты от 1Гб и больше.
- Отображение состояния принтера (печатает, не печатает) в Cura
Как работает, как настроить
Варианты прошивки
Если вас устраивает типовой вариант конфигурации, можно взять готовые файлы прошивки:
- Для FB4S с стандартными драйверами Robin_nano35.bin
- Для FB5 с стандартными драйверами Robin_nano35.bin
- Если установлены все 4 драйвера 2208 или 2209 Robin_nano35.bin
Разница в прошивках, только в направлении движения осей.
Для установки прошивки файл Robin_nano35.bin нужно записать в корень SD карты и включить принтер.
Вернуть стандартную прошивку можно в любой момент. Просто запишите ее на SD и включите принтер.
Для настройки под свои нужды, прошивку нужно собрать самостоятельно.
Первое, что нужно сделать, после прошивки
Первое, что нужно сделать после прошивки, это проинициализировать EEPROM (память внутри принтера), сбросив настройки по-умолчанию. После прошивки там находится мусор, который может привести к совершенно необъяснимому поведению.
Делается это через меню Configuration -> Advanced settings -> Initialize eeprom.
Как собрать прошивку самому
Видео Дмитрия Соркина youtube
Нужная плата, Robin Nano, уже выбрана в качестве платы по-умолчанию. В меню Platformio можно не выбирать плату, а нажать Build на самом верху. Или использовать сочетание клавиш Ctrl+Alt+B.
После компиляции, готовая прошивка лежит в .pio/build/mks_robin_nano/Robin_nano35.bin
На SD карту нужно записывать именно Robin_nano35.bin, а не firmaware.bin
Что нужно настроить, если собираете сами
Нужно настроить направления движения по осям под свои драйвера в файле Configuration.h (параметры INVERT_?_DIR, строка 1125).
По умолчанию стоят настройки под драйвера 2208/2209 на всех осях. В файле Configuration.h уже есть несколько готовых наборов настроек:
- ALL_DRV_2208 - если установлены драйвера TMC 2208 или TMC 2209 на всех осях
- FB_4S_STOCK - если установлены драйвера A4988 на всех осях. Это конфигурация для FB4S с стандартными драйверами.
- FB_5_STOCK - конфигурация для FB 5 (2208 на осях X,Y и A4988 на Z,E)
В строке 1098 нужно выбрать только один из вариантов:
#define ALL_DRV_2208
//#define FB_4S_STOCK
//#define FB_5_STOCK
Настройки WIFI, если вы используете готовую прошивку
Если модуль уже был настроен, то возможно никакая настройка не понадобится.
Если модуль не был настроен, либо по какой-то причине не смог подключиться к сети, то он запустится в режиме точки доступа с именем сети MKSWIFI??? (вместо ? будут произвольные символы). Подключитесь к этой сети, откройте страницу по адресу 192.168.4.1 и установите нужные настройки.
Настройки WIFI, если вы собираете прошивку сами
В файле mks_wifi_settings.h можно задать параметры WIFI сети.
Для того, чтобы эти настройки применялись при включении, "MKS_WIFI_ENABLED_WIFI_CONFIG" должен быть раскомментирован. Если закомментировать "#define MKS_WIFI_ENABLED_WIFI_CONFIG", при запуске настройки ESP модулю отправляться не будут.
Настройки сети хранятся в самом MKS WIFI модуле, поэтому отправлять настройки модулю при каждом старте не нужно.
Состояние WIFI
При успешном подключении к сети (или создании сети в режиме точки доступа) в стандартный UART, который выведен на USB разъем принтера, будет выведен IP адрес и название сети.
IP адрес так же будет на экране.
Как понять, что WIFI работает
При включении принтера, на экране отобразится статус "WIFI init"
Если ESP модулю удалось подключиться к сети, на экране будет IP адрес.
При старте передачи файла отображается "Upload file", в процессе загрузки отображается прогресс в процентах.
Если файл успешно принят отобразится "Upload done" и прозвучит один звуковой сигнал
Если во время приема файла были ошибки, отобразится надпись "Upload Failed" и прозвучит три звуковых сигнала
Отключение кода связанного с WIFI модулем
Для отключения всего кода, который связан с WIFI модулем нужно в файле Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO.h отключить "#define MKS_WIFI". После этого в коде останутся только несколько незначительных изменений, которые не должны влиять на стабильность работы. Если нужен абсолютно чистый код, без каких либо изменений, взять его можно из оффициального репозитория Marlin и использовать файлы Configuration.h и Configuration_adv.h как образец.
BLTouch
В прошивке по-умолчанию включена поддержка Bltouch. Парковка стола по оси Z настроена по стандартному концевику (а не по датчику), поэтому если у вас нет датчика, то мешать это не будет. Просто не трогайте настройки Z Offset (должно быть 0).
Прошивка настроена на подключение датчика к разъему ZMax (концевик датчика) и PB2 (управление сервой). Подробнее о подключении Bltouch.
Драйвера TMC2209
По-умолчанию прошивка настроена на работу с драйверами шаговых двигателей без программного управления. В случае применения драйвером TMC 2209 или TMC 2208 можно включить управление по UART. Подробнее о настройке и подключении.
EEPROM
На FB4S установлена плата MKS Robin Nano v.1.1. На плате установленно 2 микросхемы флеш памяти: AT24C16 (2кб, подключена по I2C) и W25Q64 (подключена по SPI).
Размер данных, которые сохраняются в EEPROM зависит от включенных опций. При сохранении настроек командой M500, в ответе есть размер сохраняемых данных.
В качестве места хранения EEPROM в Marlin доступны несколько вариантов:
- SD карта
- I2C EEPROM. Этот вариант не используется, драйвер отключен.
- SPI_EEPROM. Хранение в W25Q64BV подключенной по SPI. Этот вариант используется по-умолчанию.
- FLASH_EEPROM_EMULATION. Это хранение EEPROM в flash памяти STM32. Этот вариант не работает.
- SRAM_EEPROM_EMULATION. Этот вариант не работает.
Для включения в Configuration.h в разделе EEPROM нужно указать нужный define. Возможные варианты указаны в комментарии. Пример:
#if ENABLED(EEPROM_SETTINGS)
/*
MKS Robin EEPROM:
EEPROM_SD
EEPROM_W25Q
*/
#define EEPROM_W25Q
#if ENABLED(EEPROM_W25Q)
#undef SDCARD_EEPROM_EMULATION
#undef USE_REAL_EEPROM
#undef FLASH_EEPROM_EMULATION
#undef SRAM_EEPROM_EMULATION
#undef I2C_EEPROM_AT24C16
#define SPI_EEPROM_W25Q
#define SPI_EEPROM
#define SPI_EEPROM_OFFSET 0x700000
#define USE_WIRED_EEPROM 1
#define MARLIN_EEPROM_SIZE 2048
#endif
#if ENABLED(EEPROM_SD)
#define SDCARD_EEPROM_EMULATION
#undef USE_REAL_EEPROM
#undef FLASH_EEPROM_EMULATION
#undef SRAM_EEPROM_EMULATION
#undef I2C_EEPROM_AT24C16
#undef SPI_EEPROM_W25Q
#undef USE_WIRED_EEPROM
#define MARLIN_EEPROM_SIZE 4096
#endif
#define EEPROM_AUTO_INIT // Init EEPROM automatically on any errors.
#endif
Для изменения места хранения EEPROM нужно заменить "#define EEPROM_W25Q" на другой вариант.
Загрузка прошивки по WIFI
Есть возможность отправлять прошивку на принтер через WIFI. Для этого в файле platformio.ini в разделе [env:mks_robin_nano35] нужно указать IP адрес принтера в опции upload_flags.
Передача файла происходит при помощи curl, поэтому надо или добавить curl в $PATH, либо указать полный путь в файле mks_robin_nano35.py в строке 43.
После настройки, для отправки прошивки на принтер, в меню platformio нужно выбрать Upload или нажать Ctrl+Alt+U.
После успешной передачи файла принтер перезагрузится автоматически.
Выбор графического интерфейса
В коде Marlin есть 3 варианта графического интерфейса, которые работают на FB4S и FB5. Для выбора интерфейса нужно выбрать соответствующий параметр, а остальные выключить.
- Классический Marlin, "текстовый" интерфейс. Включение:
#define FSMC_GRAPHICAL_TFT
- Классический Marlin, "графический" интерфейс.
#define TFT_480x320
На данный момент с работой этого варианта есть проблемы issues/19233 и использовать его пока не рекомендуется.
- Графический интерфейс от MKS. Этот вариант использует библиотеку LVGL и видео буфер большого размера. В МК практически не остается свободной памяти. Конфигурация размера видео буфера сделана внутри библиотеки, которую автоматически скачивает platformio и не предполагает настройки. Оставшейся памяти не достаточно для работы с WIFI модулем, поэтому этот вариант не работает c WIFI. Для его сборки необходимо выключить WIFI.
Для работы интерфейса нужны изображения и шрифты. После сборки прошивки они находятся в .pio/build/mks_robin_nano35/assets Для загрузки изображений, папку assets нужно положить в корень карты памяти.
Для сборки прошивки с графическим интерфейсом от MKS нужно сделать следующие настройки:
- В файле Marlin/Configuration.h, выключить #define FSMC_GRAPHICAL_TFT и #define TFT_480x320
- В файле Marlin/Configuration.h, включить #define TFT_LVGL_UI_FSMC
- В файле Marlin/Configuration.h, выключить #define TOUCH_BUTTONS
- В файле Marlin/Configuration.h, выключить #define LCD_BED_LEVELING
- В файле Marlin/Configuration_adv.h, выключить #define ADVANCED_PAUSE_FEATURE
WIFI модуль, отправка команд и файлов
Для отправки команд и файлов на принтер не обязательно использовать Cura. Для отправки можно использовать простые инструменты - curl и netcat.
Для отправки команд используется tcp socket на порт 8080. Пример с netcat:
nc 192.168.0.105 8080
Вместо netcat можно использовать telnet.
Можно отправлять g-код команды, и получать ответ.
Для отправки файлов можно воспользоваться curl:
curl -v -H "Content-Type:application/octet-stream" http://192.168.0.105/upload?X-Filename=sd_file.gcode --data-binary @local_file.gcode
- sd_file.gcode - имя файла под которым будет сохранение на sd карте
- local_file.gcode - имя файла для отправки
В данном примере на принтер с IP 192.168.0.105 будет отправлен файл local_file.gcode, который будет сохранен на sd карте под именем sd_file.gcode