Вкратце
Расширительная плата — это плата разработки, предназначенная для добавления расширенных и пользовательских функций для Bambu Lab. Она в первую очередь совместима с серией P1P, и все обновления и итерации продукта в первую очередь ориентированы на совместимость с серией P1P. Ниже вы можете увидеть несколько примеров добавления функций, которые могут служить ориентиром для других моделей.
Что вам понадобится
- Комплект расширительной платы
- Светодиод (Необязательно)
- Охлаждающий вентилятор (Необязательно)
- Камера и совместимый кабель затвора (Необязательно)
Для реализации функций может потребоваться несколько строк G-кода. Следуйте инструкциям ниже, скопируйте пример кода или обратитесь к нашей странице WIKI для продвинутого программирования.
Как применить G-код к расширительной плате
- Включите настройку 'Advanced' в Bambu Studio.

- Нажмите значок 'edit' для настройки G-кода.
.png)
- В G-коде документальные комментарии задаются после точки с запятой. Вы можете вставить свой код в начале печати, в конце печати, во время смены слоя или филамента и т.д. При запуске задачи печати информация конфигурации будет записана в расширительную плату.
.png)
Интерфейс расширительной платы
На фото представлена схема распиновки расширительной платы Bambu Lab:

Предустановки расширительной платы
Плата предустанавливает некоторые конфигурации следующим образом:
- Переключатель #0 может одновременно управлять включением и выключением двух интерфейсов светодиодов. Ползунковый потенциометр #0 может управлять яркостью двух светодиодов, цвет светодиодов по умолчанию белый.
- Переключатель #1 может управлять включением и выключением четырех вентиляторов. Ползунковый потенциометр #1 может управлять скоростью двух 4-контактных вентиляторов.
- Если вы хотите управлять только одним каналом, например, использовать переключатель #0 и ползунковый потенциометр #0 для управления светодиодом #0, вы можете применить следующий код в начале G-кода принтера. Вы можете внести дальнейшие изменения, просмотрев обширную документацию Справочника G-кода расширительной платы.
; M1004 is commanding the Extension board. Configure #0 switch(I=0) to control LED(F=1) of #0(D=0)
M1004 S7 I0 F1 D0
; Configure #0 Slide(I=0) to control LED(F=0) of #0(D=0)
M1004 S6 I0 F0 D0
Примеры
Используйте переключатель для включения и выключения реле.
- Подключите реле к электрическим компонентам или устройствам, которые вы хотите контролировать.
- Вставьте M1004 S7 I0 F3 D0 в конец G-кода запуска принтера. I0 представляет переключатель #0, F3 управляет реле, D0 представляет реле #0 (D0 можно опустить). Кроме того, если вы хотите сохранить конфигурацию после отключения питания, вставьте M1004 S0 P1.
M1004 S7 I0 F3 D0
M1004 S0 P1
.png)
Управление затвором камеры для создания таймлапс-видео.
Если вы хотите получить идеальный таймлапс с помощью собственной камеры, вам нужно делать по одному снимку после завершения печати каждого слоя головкой инструмента.
- Подключите вашу камеру и плату расширения с помощью кабеля спуска затвора камеры.
- Вставьте код в G-код смены слоя для выполнения снимка.
Перед съемкой необходимо установить затвор в ручной режим и не позволять камере автоматически переходить в спящий режим.
Обратите внимание, что может возникнуть конфликт между командой съемки камеры и логикой кодов таймлапса, использующими встроенную камеру. Выберите позицию для вставки кода в соответствии со следующими условиями.
Встроенные команды для таймлапса следующие. Условный оператор if-else будет выполняться каждый раз при смене слоя. Если режим таймлапса 0 (традиционный режим), встроенная камера сделает снимок немедленно (команда M971 управляет встроенной камерой). Если режим 1 (плавный режим), головка инструмента переместится в определенное положение, и встроенная камера сделает снимок.
M622.1 S1 ; for prev firmware, default turned on
M1002 judge_flag timelapse_record_flag
M622 J1
{if timelapse_type == 0} ; timelapse without wipe tower
M971 S11 C10 O0
{elsif timelapse_type == 1} ; timelapse with wipe tower
G92 E0
G1 E-[retraction_length] F1800
G17
G2 Z{layer_z + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little
G1 X65 Y245 F12000 ; move to safe pos
G17
G2 Z{layer_z} I0.86 J0.86 P1 F10000
G1 Y265 F3000
M400 P100
M971 S11 C10 O0
G92 E0
G1 E[retraction_length] F300
G1 X100 F5000
G1 Y255
{endif}
M623
Случай 1
Если вы не используете встроенную камеру (режим плавного таймлапса P1P еще не выпущен), вы можете вставить следующий код в начало кода смены слоя:
Случайный снимок
; take a photo
M1004 S5 P1
Таймлапс, когда головка инструмента находится на башне очистки
; timelapse with wipe tower
G92 E0
G1 E-[retraction_length] F1800
G17
G2 Z{layer_z + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little
G1 X65 Y245 F12000 ; move to safe pos
G17
G2 Z{layer_z} I0.86 J0.86 P1 F10000
G1 Y265 F3000
M400 P100 ; wait for 100 ms
M1004 S5 P1 ; take a photo
G92 E0
G1 E[retraction_length] F300
G1 X100 F5000
G1 Y255
Случай 2
Если вы хотите использовать встроенную камеру вместе со своей камерой одновременно, вы можете вставить код (выделенный зеленым) в существующие операторы if-else в зависимости от фактических условий. В этом случае функция таймлапса должна быть включена в Bambu Studio.
M622.1 S1 ; for prev firmware, default turned on
M1002 judge_flag timelapse_record_flag
M622 J1
{if timelapse_type == 0} ; timelapse without wipe tower
M971 S11 C10 O0
{elsif timelapse_type == 1} ; timelapse with wipe tower
G92 E0
G1 E-[retraction_length] F1800
G17
G2 Z{layer_z + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little
G1 X65 Y245 F12000 ; move to safe pos
G17
G2 Z{layer_z} I0.86 J0.86 P1 F10000
G1 Y265 F3000
M400 P100
M971 S11 C10 O0
M1004 S5 P1; only executed when smooth timelapse is on and take a photo while toolhead is at wipe tower
G92 E0
G1 E[retraction_length] F300
G1 X100 F5000
G1 Y255
{endif}
M623
Программирование пользовательских светодиодов
Светодиоды будут постепенно менять цвет на каждом слое.
- Подключите светодиод к плате расширения.
- Вставьте строки в начале G-кода смены слоя.
; change the led color slightly with the number of layers
M1004 S1 L0 M0 B{30 + layer_num * 200 / total_layer_count} ; set red between 30-200
M1004 S1 L1 M0 B{255 - layer_num * 200 / total_layer_count} ; set green between 255 and 55
M1004 S1 L2 M0 B{55 + layer_num * 100 / total_layer_count} ; set blue between 55 and 155
.png)
