Это конфигурация [официального Marlin](https://github.com/MarlinFirmware/Marlin) для принтера Flying Bear Ghost 4S и 5. На данный момент поддерживаются платы MKS Robin Nano 1.x, MKS Robin Nano v2, MKS Robin Nano-s v1.3, MKS Robin Nano v1.3
* [FB4S_WIFI](https://github.com/Sergey1560/Marlin_FB4S/tree/FB4S_WIFI) - эта, основная ветка. Эта ветка содержит дополнительный код для работы с модулем [MKS WIFI](https://github.com/makerbase-mks/MKS-WIFI), установленным в FB4S и FB5. Загрузка файлов через стандартный plugin в Cura. Классический интерфейс Color UI.
* [vanilla_fb_2.1.x](https://github.com/Sergey1560/Marlin_FB4S/tree/vanilla_fb_2.1.x) - ветка на основе 2.1.x ветки Marlin. Никаких изменений в коде. Все изменения только в файлах конфигурации, под платы robin nano и принтеры Flying Bear. Классический интерфейс Color UI. WIFI модуль не работает.
* [MKS_UI](https://github.com/Sergey1560/Marlin_FB4S/tree/MKS_UI) - ветка на основе 2.1.x ветки Marlin. В коде есть очень небольшое изменение размера буфера, для сборки на STM32F1. На STM32F4 никаких изменений в коде нет. Все изменения только в файлах конфигурации, под платы robin nano и принтеры Flying Bear. Интерфейс MKS UI. WIFI модуль работает.
Если вас устраивает типовой вариант конфигурации, можно взять готовые файлы прошивки в разделе [Releases](https://github.com/Sergey1560/Marlin_FB4S/releases)
Вернуть стандартную прошивку можно в любой момент. Просто запишите ее на SD и включите принтер. Взять стандартную прошивку для нужной платы можно [тут](https://sergey1560.github.io/fb4s_howto/mks_board/)
Первое, что нужно сделать после прошивки, это проинициализировать EEPROM (память внутри принтера), сбросив настройки по-умолчанию. После прошивки там находится мусор, который может привести к совершенно необъяснимому поведению.
Делается это через меню Configuration -> Advanced settings -> Initialize eeprom.
Плата, Robin Nano v1.1 (1.2), уже выбрана в качестве платы по-умолчанию. Для плат Robin Nano-s v1.3 и Robin Nano v1.3 нужно изменить параметры сборки (описано выше).
После компиляции, готовая прошивка лежит в .pio/build/mks_robin_nano35/Robin_nano35.bin для плат Robin Nano v1.1(1.2) и в .pio/build/mks_robin_nano_v1_3/Robin_nano35.bin для плат Robin Nano-s v1.3 и Robin Nano v1.3
Нужно настроить направления движения по осям под свои драйвера в файле [Configuration.h](./Marlin/Configuration.h) (параметры INVERT_?_DIR, строка 1373).
* Если модуль уже был настроен, то возможно никакая настройка не понадобится
* Если модуль не был настроен, либо по какой-то причине не смог подключиться к сети, то он запустится в режиме точки доступа с именем сети MKSWIFI??? (вместо ? будут произвольные символы). Подключитесь к этой сети, откройте страницу по адресу 192.168.4.1 и установите нужные настройки сети.
* Если вы собираете прошивку сами, есть возможность передать модулю настройки при запуске. Для этого в файле [mks_wifi_settings.h](./Marlin/src/module/mks_wifi/mks_wifi_settings.h) можно задать параметры WIFI сети.
Для того, чтобы эти настройки применялись при включении, "MKS_WIFI_ENABLED_WIFI_CONFIG" должен быть включен.
При успешном подключении к сети (или создании сети в режиме точки доступа) в стандартный UART, который выведен на USB разъем принтера, будет выведен IP адрес и название сети, а так же IP адрес будет отображен на экране принтера.
Без использования опции "firmware retract" слайсер делает ретракты командами движения G1. В том месте, где нужно выполнить ректракт вставляются команды:
```
G1 E-2 F2100 ; "Откатить" 2мм со скоростью 35мм/с (2100 мм/мин)
команды движения
G1 E2 F2100 ; Вернуть обратно 2мм со скоростью 35мм/с (2100 мм/мин)
```
Для ректрактов в Marlin поддерживаются специальные команды - [G10](https://marlinfw.org/docs/gcode/G010.html) и [G11](https://marlinfw.org/docs/gcode/G011.html). В слайсере нужно включить поддержку firmware retract и тогда в том месте, где нужно "откатить" пластик будет вставлена команда G10, а там, где нужно его вернуть G11. Если никакие дополнительные параметры не установлены, будут использованы параметры из прошивки (2мм, 35мм/с).
Установить параметры можно командами [M207](https://marlinfw.org/docs/gcode/M207.html) и [M208](https://marlinfw.org/docs/gcode/M208.html).
Для того, чтобы можно было настраивать ретракт в слайсере, в стартовый код нужно добавить M207. Как правило, слайсеры позволяют добавить макрос в качестве параметров команды.
Firmware retract позволяет изменять значения ректракта из меню принтера прямо во время печати.
В Marlin есть функция автоматического распознования ректрактов командами G1 и замена их на G10/G11. Это функция отключена.
Если в слайсере не включена поддержка firmware retract, все будет работать как обычно.
По-умолчанию прошивка настроена на работу с драйверами шаговых двигателей без программного управления. В случае применения драйверов TMC 2209 или TMC 2208 можно включить управление по UART. Подробнее о [настройке и подключении](https://sergey1560.github.io/fb4s_howto/tmc_uart/).
Размер данных, которые сохраняются в EEPROM зависит от включенных опций. При сохранении настроек командой M500, в ответе есть размер сохраняемых данных.
Для включения в [Configuration.h](./Marlin/Configuration.h) в разделе EEPROM нужно указать нужный define. Возможные варианты указаны в комментарии. Пример:
Есть возможность отправлять прошивку на принтер через WIFI. Для этого в файле [platformio.ini](./platformio.ini) в разделе [env:mks_robin_nano35] нужно указать IP адрес принтера в опции upload_flags.
Передача файла происходит при помощи curl, поэтому надо или добавить curl в $PATH, либо указать полный путь в файле [mks_robin_nano35.py](./buildroot/share/PlatformIO/scripts/mks_robin_nano35.py) в строке 43.
При обновлении прошивки рекомендуется делать сброс настроек к значению по-умолчанию и устанавливать их заново. Для того, чтобы не делать это при каждом обновлении вручную, можно создать на sd карте файл с нужными командами и просто запускать его на печать. Пример файла с настройками:
M906 X700 Y800 Z800 ;Ток драйверов шаговых двигателей
M906 T0 E450
M603 L150 U150 ;Длина загрузки-выгрузки филамента
M500 ;Сохранить настройки
```
## Отслеживание состояния печати по WIFI
Во время печати прием данных от WIFI модуля отключен. Это сделано для того, чтобы в очередь команд не попал никакой мусор от от esp. Однако в обратную сторону, от МК к esp, передача работает. Поэтому если нужно отслеживать состояние печати удаленно, в стартовый код нужно добавить команду [M155](https://marlinfw.org/docs/gcode/M155.html) для отображения температуры и [M27](https://marlinfw.org/docs/gcode/M027.html) для отображения прогресса печати в байтах. В этом случае МК сам, через указанное в параметрах количество секунд, будет слать отчеты. Получать их можно подключившись к сокету на порт 8080. Модуль MKS WIFI поддерживает только одно соединение одновременно, поэтому Cura должна быть закрыта.
Для получения информации о текущей высоте, нужно добавить пост-процессинг в слайсере. В Cura это можно сделать в Extentions->Post processing->Modify G-code. Добавить скрипт на "Insert at layer change" и команду M114.