Sergey
f2c69b6950
|
3 years ago | |
---|---|---|
.github | 3 years ago | |
Marlin | 3 years ago | |
buildroot | 3 years ago | |
config | 3 years ago | |
docker | 4 years ago | |
docs | 4 years ago | |
ini | 3 years ago | |
.editorconfig | 4 years ago | |
.gitattributes | 4 years ago | |
.gitignore | 4 years ago | |
LICENSE | 4 years ago | |
Makefile | 4 years ago | |
README.md | 4 years ago | |
STM32F103.svd | 4 years ago | |
docker-compose.yml | 4 years ago | |
get_test_targets.py | 4 years ago | |
jlink.cmd | 4 years ago | |
platformio.ini | 3 years ago | |
process-palette.json | 5 years ago |
README.md
Marlin 3D Printer Firmware for Flying Bear 4S and 5
Это конфигурация официального Marlin для принтера Flying Bear Ghost 4S и 5 (плата MKS Robin Nano 1.x).
Эта ветка содержит дополнительный код для работы с модулем MKS WIFI, установленным в FB4S и FB5. Загрузка файлов через стандартный plugin в Cura.
Прошивка работает на принтерах Flying Bear Ghost 4S и 5. Экран работает. WIFI работает.
Если у вас есть какие-то вопросы по настройке прошивки или по ее использованию, вы можете задать свой вопрос в telegram группе.
MKS WIFI модуль
Работает
- Отображение температуры в Cura
- Просмотр содержимого SD карты
- Удаление файлов с SD карты
- Загрузка файлов на SD карту
- Автоматический запуск печати при загрузке файла.
- Настройка WIFI модуля (сеть и пароль)
Не работает
- Имена файлов на русском Переименуйте файл в Cura
- Работает только с картами стандарта SD card v2.0 и новее. Это все карты от 1Гб и больше.
- Отображение состояния принтера (печатает, не печатает) в Cura
Как работает, как настроить
Варианты прошивки
Если вас устраивает типовой вариант конфигурации, можно взять готовые файлы прошивки можно в разделе Releases
Вернуть стандартную прошивку можно в любой момент. Просто запишите ее на SD и включите принтер.
Для настройки под свои нужды, прошивку нужно собрать самостоятельно.
Первое, что нужно сделать, после прошивки
Первое, что нужно сделать после прошивки, это проинициализировать EEPROM (память внутри принтера), сбросив настройки по-умолчанию. После прошивки там находится мусор, который может привести к совершенно необъяснимому поведению.
Делается это через меню Configuration -> Advanced settings -> Initialize eeprom.
Как собрать прошивку самому
Видео Дмитрия Соркина
Нужная плата, Robin Nano, уже выбрана в качестве платы по-умолчанию. В меню Platformio можно не выбирать плату, а использовать сочетание клавиш Ctrl+Alt+B.
После компиляции, готовая прошивка лежит в .pio/build/mks_robin_nano35/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, если вы используете готовую прошивку
Настройки сети хранятся в самом ESP-модуле. Есть несколько вариантов настройки:
- Если модуль уже был настроен, то возможно никакая настройка не понадобится
- Если модуль не был настроен, либо по какой-то причине не смог подключиться к сети, то он запустится в режиме точки доступа с именем сети MKSWIFI??? (вместо ? будут произвольные символы). Подключитесь к этой сети, откройте страницу по адресу 192.168.4.1 и установите нужные настройки сети.
- Если вы собираете прошивку сами, есть возможность передать модулю настройки при запуске. Для этого в файле mks_wifi_settings.h можно задать параметры WIFI сети. Для того, чтобы эти настройки применялись при включении, "MKS_WIFI_ENABLED_WIFI_CONFIG" должен быть включен.
Состояние 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 отключен. О подключении Bltouch.
Firmware retract
Без использования опции "firmware retract" слайсер делает ретракты командами движения G1. В том месте, где нужно выполнить ректракт вставляются команды:
G1 E-2 F2100 ; "Откатить" 2мм со скоростью 35мм/с (2100 мм/мин)
команды движения
G1 E2 F2100 ; Вернуть обратно 2мм со скоростью 35мм/с (2100 мм/мин)
Для ректрактов в Marlin поддерживаются специальные команды - G10 и G11. В слайсере нужно включить поддержку firmware retract и тогда в том месте, где нужно "откатить" пластик будет вставлена команда G10, а там, где нужно его вернуть G11. Если никакие дополнительные параметры не установлены, будут использованы параметры из прошивки (2мм, 35мм/с).
Установить параметры можно командами M207 и M208.
Для того, чтобы можно было настраивать ретракт в слайсере, в стартовый код нужно добавить M207. Как правило, слайсеры позволяют добавить макрос в качестве параметров команды.
Firmware retract позволяет изменять значения ректракта из меню принтера прямо во время печати.
В Marlin есть функция автоматического распознования ректрактов командами G1 и замена их на G10/G11. Это функция отключена.
Если в слайсере не включена поддержка firmware retract, все будет работать как обычно.
Драйвера 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. Для выбора интерфейса нужно выбрать тип экрана и тип интерфейса в Configuration.h, в разделе Graphical TFTs (около 2270 строки).
Для экрана на FB4S и FB5 тип экрана - MKS_ROBIN_TFT35:
/**
* TFT Type - Select your Display type
*
* Available options are:
* MKS_TS35_V2_0,
* MKS_ROBIN_TFT24, MKS_ROBIN_TFT28, MKS_ROBIN_TFT32, MKS_ROBIN_TFT35,
* MKS_ROBIN_TFT43, MKS_ROBIN_TFT_V1_1R
* TFT_TRONXY_X5SA, ANYCUBIC_TFT35, LONGER_LK_TFT28
* TFT_GENERIC
*
* For TFT_GENERIC, you need to configure these 3 options:
* Driver: TFT_DRIVER
* Current Drivers are: AUTO, ST7735, ST7789, ST7796, R61505, ILI9328, ILI9341, ILI9488
* Resolution: TFT_WIDTH and TFT_HEIGHT
* Interface: TFT_INTERFACE_FSMC or TFT_INTERFACE_SPI
*/
#define MKS_ROBIN_TFT35
Есть 3 варианта интерфейса, которые можно выбрать:
- Классический Marlin, "текстовый" интерфейс. Включение:
#define TFT_CLASSIC_UI
- Новый, графический интерфейс, расчитанные под тач-экраны:
#define TFT_COLOR_UI
- Графический интерфейс от MKS. Этот интерфейс требует изменений в конфигурации. Кроме того, поддержка WIFI на данный момент есть только в ветке "для разработчиков". В связи с этим, вариант прошивки с этим интерфейсом сделан отдельно
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
Загрузка настроек в EEPROM из файла
При обновлении прошивки рекомендуется делать сброс настроек к значению по-умолчанию и устанавливать их заново. Для того, чтобы не делать это при каждом обновлении вручную, можно создать на sd карте файл с нужными командами и просто запускать его на печать. Пример файла с настройками:
M502 ;Сброс настроек
M500 ;Сохранить настройки (аналог Initialize eeprom)
M92 X80 Y80 Z400 E421 ;Установка шагов Step/mm по осям
M301 P19 I1 D64 ;PID сопла
M304 P26 I4 D102 ;PID стола
M851 X37 Y-20 Z-0.95 ;Probe offset
M906 X700 Y800 Z800 ;Ток драйверов шаговых двигателей
M906 T0 E450
M603 L150 U150 ;Длина загрузки-выгрузки филамента
M500 ;Сохранить настройки
Отслеживание состояния печати по WIFI
Во время печати прием данных от WIFI модуля отключен. Это сделано для того, чтобы в очередь команд не попал никакой мусор от от esp. Однако в обратную сторону, от МК к esp, передача работает. Поэтому если нужно отслеживать состояние печати удаленно, в стартовый код нужно добавить команду M155 для отображения температуры и M27 для отображения прогресса печати в байтах. В этом случае МК сам, через указанное в параметрах количество секунд, будет слать отчеты. Получать их можно подключившись к сокету на порт 8080. Модуль MKS WIFI поддерживает только одно соединение одновременно, поэтому Cura должна быть закрыта.
Для получения информации о текущей высоте, нужно добавить пост-процессинг в слайсере. В Cura это можно сделать в Extentions->Post processing->Modify G-code. Добавить скрипт на "Insert at layer change" и команду M114.