Установка marlin на blue pill stm32f103cbt6

Marlin Platformio Morpheus STM32

В этой статье рассмотрю возможность установки Marlin на blue pill stm32f103cbt6. Это позволяет сделать очень дешевые и компактные платы управления 3D принтером. Стоимость голубой таблетки 120-150р. и при желании драйвера шаговых двигателей можно припаять к ней даже проводами, а нагрев стола и хотенда выполнять при помощи модуля для ардуино, состоящего их мосфета с обвязкой.

Я же для принтера QUBOID делал плату расширения QUBOID SHIELD, которую я описывал здесь Самые дешевые 32 бита для 3D принтера. Схема и печатная плата. Изготовление платы я заказывал в Китае, так как было лень заниматься этим дома, да и подходящего куска текстолита у меня не было.

А схему подключения периферии мною описана здесь: Как подключить принтер к плате QUBOID SHIELD.

Сам marlin на голубой таблетке запускается при помощи проекта Morpheus-STM32.

Теперь о настройке прошивки. Я использовал последнюю версию Marlin 2.0 на GitHub . В принципе можете скачать уже настроенную версию марлина со всеми правками, ссылка в конце статьи.

Сам проект собирается в VC Code с установленным Platformio. Как это сделать читайте здесь Установка platformio в Visual Studio Code., там ничего сложного нет. После прошивки потребуется залить прошивку в плату, как это сделать я описывал здесь Как и чем прошить STM32 STM32F103C8T6 на примере blue pill.

Ну а теперь сами настройки Marlin.

Вначале я расскажу как настроить прошивку с нуля. Если не хотите возиться с этим, можете скачать архив вконце статьи с внесенными правками, и останется только настроить ваш тип кинематики, ускорения и т.д. Не нужно будет возитья с настройками, для запуска платы. Ну а для любителей покопаться текст ниже.

После распаковки исходников, в них нужно подменить несколько файлов. Все файлы в конце статьи.

Первое, это файл с настройками под плату pins_MORPHEUS.h. В этом файле прописаны пины blue pill, какой для чего используется на плате. Если у вас своя разводка платы, отличная от моей, то пропустите этот шаг и настраивайте файл по своему.

Второе, это файл platformio.ini, в Marlin е этот файл есть, но его стоит заменить, для правильной компиляции.

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

Configuration.h

Включаем Morpheus (blue pill) #define MOTHERBOARD 1806 – MOTHERBOARD 1806 это название платы Morpheus.

135  #ifndef MOTHERBOARD
136    #define MOTHERBOARD 1806
137  #endif

А дальше настраиваете железо, которое собираетесь подключать к плате. Для использования дисплея раскомментировать указанные строки в Configuration.h и в pins_MORPHEUS.h

Для дисплея MKS MINI 12864

MKS MINI
MKS MINI

Configuration.h:

1500   #define SDSUPPORT
1816   #define MKS_MINI_12864

pins_MORPHEUS.h:

 106 #define DOGLCD_CS         PA3
 107 #define DOGLCD_A0         PB10

Для дисплея  RepRapDiscount Smart Controller

RepRapDiscount Smart Controller
RepRapDiscount Smart Controller

Configuration.h:

1500 #define SDSUPPORT
1603 #define REPRAP_DISCOUNT_SMART_CONTROLLER

pins_MORPHEUS.h:

97  #define LCD_PINS_RS PB12
98  #define LCD_PINS_ENABLE PB13
99  #define LCD_PINS_D4 PB14
100 #define LCD_PINS_D5 PA3
101 #define LCD_PINS_D6 PB10
102 #define LCD_PINS_D7 PB11

Для дисплея   OLED SSD1306 (0.96)

OLED SSD1306 (0.96)
OLED SSD1306 (0.96)

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

файле Wire.cpp <Системный диск>:\Users\<Пользователь>/.platformio/packages/framework-arduinoststm32/STM32F1/libraries/Wire

заменить TwoWire Wire(1); на TwoWire Wire(2);

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

Configuration.h:

1500 #define SDSUPPORT
1619 #define ULTIPANEL
1790 #define U8GLIB_SSD1306

Для дисплея (платы управления) MKS TFT

Mks TFT 32
Mks TFT 32

Configuration.h

Это не дисплей, а плата управления, и она работает с голубой таблеткой, как работал бы компьютер (внешний контроллер с дисплеем, флешкой и т.д.). Общение происходит по протоколу UART , а плата использует контроллер USART3, его необходимо активировать, но при его активации обязательно отключать SD карту и поддержку дисплея OLED SSD1306, если он был включен ранее, иначе получите ошибку при компиляции:

116 #define SERIAL_PORT_2 3
117 #define NUM_SERIAL 2

Теперь нужно донастроить кое какую переферию.

Для того что бы заработал ШИМ на нагреватели и вентиллятор обдува детали, необходимо:

В файле HAL_timers_Stm32f1.h в папке \Marlin\src\HAL\HAL_STM32F1\ 

исправить

58 #define TEMP_TIMER_NUM 2  // index of timer to use for temperature

на

58 #define TEMP_TIMER_NUM 1  // index of timer to use for temperature

Пины PB3, PB4, PA15 в моей плате управляют драйверами, но по умолчанию в проекте заняты JTAGом, поэтому его нужно отключить, чтобы задействовать эти пины для управления драйвером ШД.

Для этого в файле

<Системный диск>:\Users\<Пользователь>/.platformio/packages/framework-arduinoststm32/STM32F1/variantsgeneric_stm32f103c/board.cpp

Заменить строку

#ifndef CONFIG_MAPLE_MINI_NO_DISABLE_DEBUG

на

#ifdef CONFIG_MAPLE_MINI_NO_DISABLE_DEBUG

а в файле

<Системный диск>:\Users\<Пользователь>/.platformio/packages/framework-arduinoststm32/STM32F1/system/libmaple/stm32f1/include/series/gpio.h

заменить строку:

AFIO_DEBUG_NONE = AFIO_MAPR_SWJ_CFG_NO_JTAG_NO_SW

на:

AFIO_DEBUG_NONE = AFIO_MAPR_SWJ_CFG_NO_JTAG_SW

На этом настройка прошивки закончена, и в зависимости от конфигурации и используемого дисплея, может не хватить памяти. Например при использовании MKS TFT с управлением по UART, ничего больше делать не нужно, если использовать OLED дисплей, то в памяти нужно будет еще хранить все графические отображения символов и букв, а это сильно кушает память. Если памяти не хватило, то можно отключить что то “не очень важное”

в файле Marlim/ Configuration_adv.h можно отключить поддержку G2/G3 Arc Support

Для этого всего лишь нужно закомментировав строку:

#define ARC_SUPPORT

Ну а теперь более легкий способ, если вы собираетесь использовать мою плату, либо RABPS, с которым я делал совместимую плату, и на который опирался при разработке 32-bit своими руками, шилд RABPS.

Можно скачать уже настроенный MARLIN. Это моя сборка под MKS TFT, но я проверял его на работоспособность с oled дисплеем, SD картой и энкодером. Просто переконфигурируйте под свой дисплей. Поддержку G2/G3 Arc Support уже отключена, потребуется только перенастроить свой дисплей, ну и под свою кинематику и под свои ускорения. Но эта статья эти настройки не рассматривает, так как в интернете по этому поводу полно информации, это штатные настройки Marlin.

Скачать настроенный марлин можно здесь r13-project.ru/files/3D_PRT/Marlin-bugfix-2.0_(CUBOID_1.0).zip

И что бы не ковырять настройки Platformio, замените папку <Системный диск>:\Users\<Пользователь>\.platformio\packages\framework-arduinoststm32\STM32F1

На папку из вот этого архива r13-project.ru/files/3D_PRT/STM32F1.zip

Предварительно сохраните свою папку STM32F1, на случай, если , что то пойдет не так, иначе придется переустанавливать Platformio.

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

Вопросы можно задать на форуме https://r13-project.ru/chat_room/index.php?topic=4.0

Или в группе в ВК Как сделать

Автор: Ryazanec13

8 комментариев для “Установка marlin на blue pill stm32f103cbt6

    1. Драйвера на виртуальный ком порт стоят? СТМ-ка прикидывается виртуальным ком портом. Я проверял, у меня работает, так же подписчик одни настраивал – у него другая проблема была, но именно через юэсби работало все.

  1. Спасибо за проделанную работу! Нашел максимальную версию марлина, которая собирается по данной инструкции – это 2.0.4.4
    У меня мат плата RABPS и экран RepRapDiscount Smart Controller, вот с ним проблемы, если питать плату от usb, то все хорошо, если питание с БП, то кракозябры на экране. Как побороть пока не нашел.
    Хотел написать на форуме, но ваша регистрация какая то жесть, либо я тупой )

    1. Смотреть помехи по питанию, смотреть откуда контроллер получает это питание. Возможно с инициальзацией дисплея проблема. Это порверить можно так – подать питание на контроллер отдельно а потом подключить голубую таблетку, получится задержка. Проблема скорее всего не программная.

      1. Я тоже сначала подумал на питание, может да, а возможно и нет )
        Проделал эксперимент, подключил RepRapDiscount Smart Controller напрямую к BluePill, чтобы исключить возможное влияние мат платы.
        Сделал простенький проект Hello world!
        Если компилить в platform.io со стандартным ядром, то все ок, если с maple, то результат непредсказуемый: крякозябры и текст не там где надо.
        Пробовал разные библиотеки LiquidCrystal, один и тот же результат.
        Кстати, последний Марлин легко компилится с актуальной версией платформы ststm32 и через repeater-host видно, что работает.
        Но с моим экраном абсолютно такая же проблема .

  2. Может кто компилировал проект под RepRapDiscount Smart Controller? Поделитесь пожалуйста а то у меня не получается? Собрал а не работает!?
    Спасибо всем кто откликнется!

  3. Только экран светится, а при нажатии на энкодер на дисплее, моргает лампочка на контроллере???

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *