Купила баба порося… MKS Robin nano / Sapphire PRO

12

Здравствуйте, уважаемые! Эта запись о переписанной прошивке для платы MKS Robin nano, модуле управления питанием и модуле WiFi. Попытка начать описание проделанной работы.

Началось все как у всех: купил принтер Sapphire PRO… Как по мне, так отличный аппарат за исключением того, что прошивка в нем на столько ужасна, на сколько это только можно представить. Нет, она, конечно работает, если надо просто записать файл на флешку и запустить, но хочется и “рюшечек”.

Для начала подключил датчик обрыва филамента – не работает. Попробовал попищать командой M300 – не пищит. Подключил светодиод на вывод управления питанием, мол по окончании печати можно сделать автоматическое выключение (M81) – ноль внимания, фунт презрения. Плагин для CURA от Makerbase (производитель платы и прошивки) дополняет gcode данными, которые потом прошивка использует для формирования картинки предварительного просмотра печатаемой модели (на экранчике при печати показывается). Данные формирутся, а вот оторбажаются они в виде шума отдаленно напоминающем вид печатаемой модели. По задумке производителя, такие же превьюшки должны были быть на пиктограммах файлов в листинге.

Перепрошил принтер под “летающего медведя”. Стало чуть лучше, по другому раскрашен интерфейс, но на этом и все. Отличие прошивок минимально, и представляет из себя лишь замену картинок и настроек используемых цветов.

Тем временем, Makerbase выпустило прошивку V2, и вместе с этим открыла исходный код. Отлично! Можно препарировать.

Не буду рассказывать “кошмарный сон программиста”, но то, что я увидел в исходниках это “спагетти код” в худшем его виде.

Для начала я починил алгоритм обработки датчика филамента, затем пищалку, потом формирование сигнала, который можно использовать для выключения питания по окончании печати.

Получилось то, к чему уже можно присоединять свои железки, уж очень хотелось чтобы принтер сам выключался.

Пока ждал комплектующие для разработанного модуля управления питанием переписывал прошивку. Полностью заменил код создания и управления пользовательским интефейсом, но сам интерфейс остался по функционалу тем же или шире.

  • Код прошивки уменьшился более чем на 100к ~-25% (не потому, что стало меньше функционала, а за счет замены спагетти кода)
  • Датчик филамента работает
  • Пищалкой можно управлять (M300)
  • Дисплей переходит в режим “без подсветки” если по нему не тапать 10 минут (опционально)
  • По окончании печати принтер выключается (опционально или по M81)
  • Работает превью
  • Для печатаемого файла можно посмотреть сколько пластика на него нужно, сколько уже использовано и т.д. (эту информацию прописывает CURA в GCODE в виде комментариев)

На этом можно было бы и остановиться. Однажды анализируя трафик домашней сети, я обнаружил, что принтер держит соединение с каким-то китайским сайтом, и по статистике это соединение было лидером в объеме обмена. Запретил принтеру выходить во внешнюю сеть, но осадочек остался. По все видимости, это обмен с облаком, о котором китайцы заявляли в описании принтера. А оно мне надо?

Китайская плата c WiFi стоит 500-600р при комлектующий на менее 100. Понятное дело, что за прошивку тоже надо платить. Спаял такую же плату, вставил в принтер, обновил прошивку штатным способом через флешку. Плата завелась, подключается к сети, но выдает ошибку. Логично. Китайцы защитились от копирования. Не буду описывать как была сделана защита, скажу лишь, что получить рабочую версию мне удалось (не для использования, а ради спортивного интереса).

Так как исходный код прошивки материнской платы принтера открыт, то соотвественно, открыт и протокол обмена с модулем WiFi, чем я и воспользовался, повторив функционал в собственной реализации оставив все, кроме обмена с облаком. Сделал отображение прогресса при передаче файла на принтер. Дополнительно встроил поддержку NTP (Network Time Protocol) и теперь принтер у меня показыват точное время. В планах подключить MQTT и WebDAV.

Приглашаю желающий посмотреть проделанную работу. Именно этой прошивкой я пользуюсь сам. Интересные идеи допишем, а найденные ошибки исправим ;).

Прошивку для MKS Robin nano можно взять у меня на github https://github.com/vyacheslav-shubin/mks-robin-nano35-binary/tree/master/2020-07-03

Конфигурационный файл от моего принтера, а там я уже сменил драйверы шаговых двигателей. Поэтому инверсию осей и типы концевых датчиков, возможно потребуется поправить. Установка картинок обязательна.

Штатная прошивка от Makerbase:  https://github.com/makerbase-mks/MKS-Robin-Nano/tree/master/Nano%20firmware%20v2.x.x

Кстати, в прошивке v2, на которую идет ссылка многие параметры принтера, которые задаются в конфигурационном файле можно изменять через пользовательский интерфейс. В моей прошивке это тоже есть, но в большем объеме.

О том, как сделан модуль управления питанием и особенносях WiFi модуля, напишу отдельно, если будет интересно.

И фото:

Модуль управления питанием:

Общий вид изнутри:

Принтер, в правом нижнем углу кнопка выключения питания (без фиксации):

Ссылка на источник
Читайте также