Перейти к содержанию
    

Firmware платы управления 3D-принтером

6 hours ago, jcxz said:

А Вы сами - взяли отдельно Марлин и портировали его на эту плату?

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

6 hours ago, jcxz said:

Да кстати - а как получилось 120 кб/с? Это кбит или килобайт?

120 КБайт/сек. То есть мегабайтный файл передается за 8-9 сек. Как я уже написал - я взял чужие исходники для Вайфай, глубоко в них не вникал. Видел, что там задействуется DMA с двойным буфером, слегка подразобрался для небольших модификаций и все. Да, стоит родная ESP8266 🙂 Сейчас она, правда, перепрошита для получения веб-интерфейса, но на скорость это не повлияло. Вот эта - https://github.com/xreef/beeprint_3d_printer_web_interface

7 hours ago, jcxz said:

Я могу поделиться своими наработками. Если интересно.

Теоретически, конечно, было бы интересно взглянуть, но не сейчас 🙂 Да и меня сейчас по прошивке почти все устраивает, если честно, особенно после появления ИнпутШейпера. Хотя я его пока толком не настроил, не до того пока 🙂 Но в прошивку уже перенес из Марлина 🙂 Если Вам интересно, можете изучать - https://github.com/Andy-Big/Marlin_FB_Reborn 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 часов назад, AndyBig сказал:

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

Круто! :good:  Это грандиозная работа. Наверное. :smile:

Я пока только исходники работы с WiFi переписал. Почти полностью (за исключением обновления прошивки ESP). В других местах - только локальные правки внёс. Исправив совсем уж откровенно халтурные места, которые нашёл. К сожалению - на большее нет времени.  :sad:

5 часов назад, AndyBig сказал:

120 КБайт/сек. То есть мегабайтный файл передается за 8-9 сек. Как я уже написал - я взял чужие исходники для Вайфай, глубоко в них не вникал. Видел, что там задействуется DMA с двойным буфером, слегка подразобрался для небольших модификаций и все.

А какой файл передаётся? Произвольный? А если попробовать какой-нить сжатый архиватором файл передать - какая будет скорость?

И как именно измеряли скорость?

Просто - та прошивка, что в моём ESP8266 - работает на 115200 по UART. И естественно даже теоретически не позволит передавать со скоростью 120 кБ/с. Хоть с DMA хоть без. Единственная возможность - если там используется сжатие (.GCODE-файлы должны хорошо сжиматься; я даже уже почти продумал алгоритм сжатия :smile:  но всё равно имхо - 120 кБ/с даже со сжатием - малореально без поднятия скорости UART).

5 часов назад, AndyBig сказал:

Да, стоит родная ESP8266 🙂 Сейчас она, правда, перепрошита для получения веб-интерфейса, но на скорость это не повлияло. Вот эта - https://github.com/xreef/beeprint_3d_printer_web_interface

По этой ссылке - вроде только исходники web-интерфейса, а не сама прошивка? Как я понимаю - прошивка в ESP состоит из двух частей: собственно прошивки (код для процессора ESP) + web-интерфейс. Вторая часть на скорость передачи по UART ESP никак не влияет.

 

5 часов назад, AndyBig сказал:

Теоретически, конечно, было бы интересно взглянуть, но не сейчас 🙂 Да и меня сейчас по прошивке почти все устраивает, если честно, особенно после появления ИнпутШейпера. Хотя я его пока толком не настроил, не до того пока 🙂 Но в прошивку уже перенес из Марлина 🙂 Если Вам интересно, можете изучать - https://github.com/Andy-Big/Marlin_FB_Reborn 

Надо будет глянуть как время появится.

Меня вообще-то в моей текущей прошивке тоже почти всё устраивает (работает и ладно). Кроме одного: невозможности удалённого доступа через WiFi к SD-карте (изначально не было возможности, сейчас я добавил). Именно из-за этого я и затеял всю возню с прошивкой - просто надоело дёргать туда-суда SD-карту. А сейчас доступ уже есть, но теперь не устраивает его скорость.  :biggrin:

 

PS: А Вы можете в своих исходниках посмотреть - на какой скорости инициализируется UART? Может ваша прошивка ESP действительно работает на гораздо более высокой скорости UART. Ведь ничего этому не должно мешать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, jcxz said:

Это грандиозная работа. Наверное.

Ну в общем не маленькая, да 🙂 Особенно учитывая, что я не просто адаптировал Марлин, но еще и частично переделал его внутренности в тех моментах, которые мне не нравились 🙂

1 hour ago, jcxz said:

А какой файл передаётся? Произвольный? А если попробовать какой-нить сжатый архиватором файл передать - какая будет скорость?

Да какой угодно. Сейчас вот попробовал передать архив .zip: файл размером 4.673.463 байта передался за 37 секунд.

1 hour ago, jcxz said:

И как именно измеряли скорость?

Просто засекал время, за которое файл передается, и делил на него размер файла 🙂

1 hour ago, jcxz said:

Просто - та прошивка, что в моём ESP8266 - работает на 115200 по UART.

Честно говоря, не могу ничего толком сказать. Может быть прошивки ESP у наших Робинов отличаются? Хотя маловероятно, но все же возможно...

1 hour ago, jcxz said:

По этой ссылке - вроде только исходники web-интерфейса

Прошу прощения, зацепил первую попавшуюся ссылку 🙂 Вот вроде оно - https://github.com/xreef/MKS_WIFI_upgrade_with_BeePrint_web_interface

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

41 минуту назад, AndyBig сказал:

Прошу прощения, зацепил первую попавшуюся ссылку 🙂 Вот вроде оно - https://github.com/xreef/MKS_WIFI_upgrade_with_BeePrint_web_interface

По-быстрому проглядел исходники. Нашёл в них изначально:

Serial.begin(115200);

а потом для TRANSFER_GET_FILE:

Serial.begin(1958400);

Похоже там на время передачи файла скорость по UART повышается. Да уж... решение так себе.  :unknw:

Похоже - можно поставить дефолтную скорость 1958400 и перекомпилить эту прошивку. Но это блин придётся разбираться с компиляцией всего этого добра.  :sad:

 

PS: Вобщем - подумаю каким путём идти из:

  1. Разбираться с компиляцией этой прошивки ESP и перекомпилить её на бОльшую скорость.
  2. Реализовать сжатие на лету передаваемых файлов (и тем повысить скорость).
  3. Вообще залить в ESP AT-командную прошивку и переписать WiFi-драйвер принтера на работу через неё (а она позволяет менять скорость по UART).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

16 hours ago, jcxz said:

Реализовать сжатие на лету передаваемых файлов

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 часов назад, AndyBig сказал:

Ну не знаю... Не уверен, что те алгоритмы, которые влезут в контроллер, будут достаточно эффективно сжимать.

Я же говорю не о каких-то сторонних универсальных алгоритмах. Зачем нам они?. А о специализированном. Заточенном именно на формат .GCODE-файла. Ведь передавать на SD-карту принтера нужно как правило .GCODE-файлы. А специализированный можно придумать эффективным. Зная характер данных. И не требующим больших ресурсов от МК. Будет время - сделаю. Формат я уже примерно обдумал. Примерная прогнозируемая степень сжатия - думаю не менее 4...5-кратной.

5 часов назад, AndyBig сказал:

К тому же еще тогда можно будет попрощаться с поддержкой передачи файлов из слайсеров 🙂

А Вы её реально используете?

Я на своём пробовал несколько раз. Но после того, как в процессе одной печати не особо большой детали (менее часа суммарного времени), печать просто остановилась ни с того ни с сего (принтер никто не трогал и комп работал, не засыпая) - больше не использую. Оно и немудрено - там в исходниках такой глюкодром(!), что непонятно как они вообще хоть как-то работают. Совсем не улыбается перспектива - потратить на печать большой детали часов десять, чтобы потом всё остановилось за каких-нить полчаса до конца. :dash2: Из-за кривого ПО.

Хоть оффлайн-печать работает более-менее - и ладно. Поэтому и решил - лучше сперва закинуть файл на SD-карту по WiFi, а потом печатать уже с SD-карты.

 

PS: А вообще - в контроллер уровня Cortex-M запросто влезает декодер MP3 и AAC+ -кодеков. Которые по сути - тоже алгоритмы сжатия. К тому же - выполняемые в реалтайм. И тем не менее - Cortex-M справляется. Правда для AAC+ требуется ОЗУ довольно много...

320 кб/с MP3 - на 96МГц-ом CM4 занимает всего ~25% загрузки ядра. И это - параллельно с отрисовкой на ЖКИ 320x240.

Думаю - STM32F103 в моей "MKS-Robin-Nano" должен справиться с распаковкой потока на 460800 бод. А может - и выше. Но уж распаковать поток на 115200 бод - однозначно должен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 10/12/2023 at 11:20 AM, jcxz said:

А Вы её реально используете?

Да, постоянно 🙂 Я в принципе в последнее время даже не сохраняю результат слайсинга на комп, а сразу отправляю его на принтер. Слайсер - Прюша, если что 🙂

On 10/12/2023 at 11:20 AM, jcxz said:

о после того, как в процессе одной печати не особо большой детали (менее часа суммарного времени), печать просто остановилась ни с того ни с сего

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

On 10/12/2023 at 11:20 AM, jcxz said:

Но уж распаковать поток на 115200 бод - однозначно должен.

Было бы здорово если бы у Вас получилось, очень интересно было бы взглянуть на результат 🙂

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 часа назад, AndyBig сказал:

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

Если бы мой принтер такое умел изначально, я может даже не стал искать исходники его прошивки. :wink:

Нет, в прошивке моего принтера загрузка файлов изначально отключена. Там видно (по исходникам) что её пытались сделать, но видимо что-то не смогли и так там это брошено, недоделано, а потом все попытки закомментарены.

4 часа назад, AndyBig сказал:

Было бы здорово если бы у Вас получилось, очень интересно было бы взглянуть на результат 🙂

Наибольшая проблема здесь - для распаковки нужен довольно приличный буфер в ОЗУ (для словаря). А быдлокодеры почти всю ОЗУ там израсходовали. Изначально, в найденной прошивке, оставалось чуть больше килобайта свободной ОЗУ. Правда уже, перетряхивая тот быдлокод, я освободил 4КБ. Посмотрим, может получится использовать какую-то ОЗУ, используемую для графики (временно, для распаковки).

 

PS: Хотел ещё Вам задать вопрос (раз вы разбирались с Марлином, может знаете): ПО там построено по принципу суперлупа и как я понимаю - этот цикл и задаёт дискретность управления всеми процессами принтера? В том числе - этот цикл определяет дискретность управления моторами и всяческими перемещениями при печати? Т.е. - очень важно, чтобы этот цикл не тормозился никакой из вызываемых функций более чем на какое-то время?

В исходниках я видел какие-то дефайны типа "время цикла == 1 мс". Я так понял это - максимальная длительность прохода цикла суперлупа. Я замерил фактическое время прохода цикла (принтер находился в состоянии простоя) - получилось немного менее 0.5мс (что-то вроде 0.46 мс). Не можете подсказать - как именно влияет изменение этого времени на процесс печати? Получается, что алгоритм Марлина должен быть рассчитан на то, что вызываться он может не с жёстко фиксированным временем цикла, а с плавающим. Но всё равно наверное какие-то требования к цикличности вызова у него должны быть?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 hours ago, jcxz said:

А быдлокодеры почти всю ОЗУ там израсходовали.

Даже дополнительные 64 Кб, которая CCM? Там же стоит контроллер stm32f40x?

4 hours ago, jcxz said:

этот цикл и задаёт дискретность управления всеми процессами принтера?

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

4 hours ago, jcxz said:

как именно влияет изменение этого времени на процесс печати?

Точно ответить не смогу. Вроде бы ничего такого критичного от времени цикла суперлупа там не должно зависеть. Ну разве что ПИД-регуляторы температуры.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

20 минут назад, AndyBig сказал:

Даже дополнительные 64 Кб, которая CCM? Там же стоит контроллер stm32f40x?

К сожалению там всего лишь STM32F103VE. А значит - всего 64 КБ.

Но у меня такое ощущение, что даже если бы там была ещё ОЗУ, то они и её бы израсходовали под 0. Такое ощущение, что остановились они только когда память всю исчерпали (почему и не доделано там многое). Там кстати и флешь почти полностью занята (менее 10КБ свободно оставалось).

20 минут назад, AndyBig сказал:

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

Точно ответить не смогу. Вроде бы ничего такого критичного от времени цикла суперлупа там не должно зависеть. Ну разве что ПИД-регуляторы температуры.

Спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 hours ago, jcxz said:

К сожалению там всего лишь STM32F103VE

Оу, тогда печально 😞

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кто не хочет ставить клипер , может раскошелится на другую плату

На ней

Цитата

Wifi модуль на ESP32, обеспечивающий передачу данных на скорости до 1.8MiB/s.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...