commit 1b0804df9d739c25e6708484c68ddbc512f8464f Author: klipper Date: Mon Jan 20 23:41:07 2025 +0100 New Backup on boot - 20.01.2025 - 23:41:00 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e55ca4e --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +.env +secrets.conf +*.swp +*.tmp +printer-[0-9]*_[0-9]*.cfg +*.bak +*.bkp +*.csv +*.zip diff --git a/README.md b/README.md new file mode 100644 index 0000000..c975ae8 --- /dev/null +++ b/README.md @@ -0,0 +1,4 @@ +# Klipper-Backup 💾 +Klipper backup script for manual or automated GitHub backups + +This backup is provided by [Klipper-Backup](https://github.com/Staubgeborener/klipper-backup). diff --git a/printer_data/config/KAMP_Settings.cfg b/printer_data/config/KAMP_Settings.cfg new file mode 100644 index 0000000..a9742d7 --- /dev/null +++ b/printer_data/config/KAMP_Settings.cfg @@ -0,0 +1,36 @@ +# Below you can include specific configuration files depending on what you want KAMP to do: + +# [include ./KAMP/Adaptive_Meshing.cfg] # Include to enable adaptive meshing configuration. +[include ./KAMP/Line_Purge.cfg] # Include to enable adaptive line purging configuration. +#[include ./KAMP/Voron_Purge.cfg] # Include to enable adaptive Voron logo purging configuration. +# [include ./KAMP/Smart_Park.cfg] # Include to enable the Smart Park function, which parks the printhead near the print area for final heating. + +[gcode_macro _KAMP_Settings] +description: This macro contains all adjustable settings for KAMP + +# The following variables are settings for KAMP as a whole. +variable_verbose_enable: True # Set to True to enable KAMP information output when running. This is useful for debugging. + +# The following variables are for adjusting adaptive mesh settings for KAMP. +variable_mesh_margin: 0 # Expands the mesh size in millimeters if desired. Leave at 0 to disable. +variable_fuzz_amount: 10 # Slightly randomizes mesh points to spread out wear from nozzle-based probes. Leave at 0 to disable. + +# The following variables are for those with a dockable probe like Klicky, Euclid, etc. # ---------------- Attach Macro | Detach Macro +variable_probe_dock_enable: False # Set to True to enable the usage of a dockable probe. # --------------------------------------------- +variable_attach_macro: 'Attach_Probe' # The macro that is used to attach the probe. # Klicky Probe: 'Attach_Probe' | 'Dock_Probe' +variable_detach_macro: 'Dock_Probe' # The macro that is used to store the probe. # Euclid Probe: 'Deploy_Probe' | 'Stow_Probe' + # Legacy Gcode: 'M401' | 'M402' + +# The following variables are for adjusting adaptive purge settings for KAMP. +variable_purge_height: 0.8 # Z position of nozzle during purge, default is 0.8. +variable_tip_distance: 0 # Distance between tip of filament and nozzle before purge. Should be similar to PRINT_END final retract amount. +variable_purge_margin: 10 # Distance the purge will be in front of the print area, default is 10. +variable_purge_amount: 30 # Amount of filament to be purged prior to printing. +variable_flow_rate: 12 # Flow rate of purge in mm3/s. Default is 12. + +# The following variables are for adjusting the Smart Park feature for KAMP, which will park the printhead near the print area at a specified height. +variable_smart_park_height: 10 # Z position for Smart Park, default is 10. + +gcode: # Gcode section left intentionally blank. Do not disturb. + + {action_respond_info(" Running the KAMP_Settings macro does nothing, it is only used for storing KAMP settings. ")} diff --git a/printer_data/config/KlipperScreen.conf b/printer_data/config/KlipperScreen.conf new file mode 100644 index 0000000..3447a26 --- /dev/null +++ b/printer_data/config/KlipperScreen.conf @@ -0,0 +1,21 @@ + +#~# --- Do not edit below this line. This section is auto generated --- #~# +#~# +#~# [main] +#~# theme = material-darker +#~# print_estimate_method = file +#~# screen_blanking = 300 +#~# screen_blanking_printing = 300 +#~# font_size = small +#~# confirm_estop = True +#~# show_heater_power = True +#~# move_speed_xy = 500 +#~# move_speed_z = 30 +#~# print_sort_dir = date_desc +#~# language = pl +#~# +#~# [graph Printer] +#~# temperature_sensor raspberry_pi = False +#~# temperature_sensor mcu_temp = False +#~# extruder = False +#~# diff --git a/printer_data/config/cartographer.cfg b/printer_data/config/cartographer.cfg new file mode 100644 index 0000000..6a55bbf --- /dev/null +++ b/printer_data/config/cartographer.cfg @@ -0,0 +1,54 @@ +[cartographer] + +canbus_uuid: fa54c42a161b + +speed: 40. +# Z probing dive speed. +lift_speed: 5. +# Z probing lift speed. +backlash_comp: 0.00833 +# Backlash compensation distance for removing Z backlash before measuring +# the sensor response. +x_offset: 2 +# X offset of cartographer from the nozzle. +y_offset: 21.1 +# Y offset of cartographer from the nozzle. +trigger_distance: 2. +# cartographer trigger distance for homing. +trigger_dive_threshold: 1.5 +# Threshold for range vs dive mode probing. Beyond `trigger_distance + +# trigger_dive_threshold` a dive will be used. +trigger_hysteresis: 0.006 +# Hysteresis on trigger threshold for untriggering, as a percentage of the +# trigger threshold. +cal_nozzle_z: 0.1 +# Expected nozzle offset after completing manual Z offset calibration. +cal_floor: 0.1 +# Minimum z bound on sensor response measurement. +cal_ceil:5. +# Maximum z bound on sensor response measurement. +cal_speed: 1.0 +# Speed while measuring response curve. +cal_move_speed: 10. +# Speed while moving to position for response curve measurement. +default_model_name: default +# Name of default cartographer model to load. +mesh_main_direction: x +# Primary travel direction during mesh measurement. +#mesh_overscan: -1 +# Distance to use for direction changes at mesh line ends. Omit this setting +# and a default will be calculated from line spacing and available travel. +mesh_cluster_size: 1 +# Radius of mesh grid point clusters. +mesh_runs: 2 +# Number of passes to make during mesh scan. + + +[adxl345] +cs_pin: cartographer:PA3 +spi_bus: spi1 + +[resonance_tester] +accel_chip: adxl345 +probe_points: + 125, 125, 20 \ No newline at end of file diff --git a/printer_data/config/crowsnest.conf b/printer_data/config/crowsnest.conf new file mode 100644 index 0000000..a494dae --- /dev/null +++ b/printer_data/config/crowsnest.conf @@ -0,0 +1,44 @@ +#### crowsnest.conf +#### This is a typical default config. +#### Also used as default in mainsail / MainsailOS +#### See: +#### https://github.com/mainsail-crew/crowsnest/blob/master/README.md +#### for details to configure to your needs. + + +##################################################################### +#### ##### +#### Information about ports and according URL's ##### +#### ##### +##################################################################### +#### ##### +#### Port 8080 equals /webcam/?action=[stream/snapshot] ##### +#### Port 8081 equals /webcam2/?action=[stream/snapshot] ##### +#### Port 8082 equals /webcam3/?action=[stream/snapshot] ##### +#### Port 8083 equals /webcam4/?action=[stream/snapshot] ##### +#### ##### +##################################################################### + + +[crowsnest] +log_path: ~/printer_data/logs/crowsnest.log +log_level: verbose # Valid Options are quiet/verbose/debug +delete_log: false # Deletes log on every restart, if set to true + +[cam android] +mode: mjpg # mjpg/rtsp +port: 80 # Port +device: http://192.168.0.117:4747/video # See Log for available ... +resolution: 640x480 # widthxheight format +max_fps: 15 # If Hardware Supports this it will be forced, otherwise ignored/coerced. +#custom_flags: # You can run the Stream Services with custom flags. +#v4l2ctl: # Add v4l2-ctl parameters to setup your camera, see Log what your cam is capable of. + +[cam c930] +mode: mjpg # mjpg/rtsp +port: 8080 # Port +device: /dev/video0 # See Log for available ... +resolution: 1280x720 # widthxheight format +max_fps: 30 # If Hardware Supports this it will be forced, otherwise ignored/coerced. +#custom_flags: # You can run the Stream Services with custom flags. +#v4l2ctl: # Add v4l2-ctl parameters to setup your camera, see Log what your cam is capable of. diff --git a/printer_data/config/inputShaper.cfg b/printer_data/config/inputShaper.cfg new file mode 100644 index 0000000..4ec431e --- /dev/null +++ b/printer_data/config/inputShaper.cfg @@ -0,0 +1,16 @@ +[mcu adxl] +# Change to whatever you found above. For example, +# usb-Klipper_rp2040_E661640843545B2E-if00 +serial: /dev/serial/by-id/usb-Klipper_rp2040_E6625495535A5232-if00 + +[adxl345] +cs_pin: adxl:gpio9 +spi_software_sclk_pin: adxl:gpio10 +spi_software_mosi_pin: adxl:gpio11 +spi_software_miso_pin: adxl:gpio12 +axes_map: x,-z,y + +[resonance_tester] +accel_chip: adxl345 +probe_points: + 125, 125, 20 \ No newline at end of file diff --git a/printer_data/config/moonraker.conf b/printer_data/config/moonraker.conf new file mode 100644 index 0000000..58e6240 --- /dev/null +++ b/printer_data/config/moonraker.conf @@ -0,0 +1,112 @@ +[server] +host: 0.0.0.0 +port: 7125 +klippy_uds_address: /home/biqu/printer_data/comms/klippy.sock + +[authorization] +trusted_clients: + 10.0.0.0/8 + 127.0.0.0/8 + 169.254.0.0/16 + 172.16.0.0/12 + 192.168.0.0/16 + FE80::/10 + ::1/128 +cors_domains: + *.lan + *.local + *://localhost + *://localhost:* + *://my.mainsail.xyz + *://app.fluidd.xyz + +[octoprint_compat] + +[history] + +[update_manager] +channel: dev +refresh_interval: 168 + +[update_manager mainsail-config] +type: git_repo +primary_branch: master +path: ~/mainsail-config +origin: https://github.com/mainsail-crew/mainsail-config.git +managed_services: klipper + +[update_manager mainsail] +type: web +channel: stable +repo: mainsail-crew/mainsail +path: ~/mainsail + +[update_manager crowsnest] +type: git_repo +path: ~/crowsnest +origin: https://github.com/mainsail-crew/crowsnest.git +install_script: tools/install.sh + +# Sonar update_manager entry +[update_manager sonar] +type: git_repo +path: ~/sonar +origin: https://github.com/mainsail-crew/sonar.git +primary_branch: main +managed_services: sonar +install_script: tools/install.sh + +[update_manager timelapse] +type: git_repo +primary_branch: main +path: ~/moonraker-timelapse +origin: https://github.com/mainsail-crew/moonraker-timelapse.git +managed_services: klipper moonraker + +[update_manager KlipperScreen] +type: git_repo +path: ~/KlipperScreen +origin: https://github.com/jordanruthe/KlipperScreen.git +env: ~/.KlipperScreen-env/bin/python +requirements: scripts/KlipperScreen-requirements.txt +install_script: scripts/KlipperScreen-install.sh +managed_services: KlipperScreen + +[update_manager Klipper-Adaptive-Meshing-Purging] +type: git_repo +channel: dev +path: ~/Klipper-Adaptive-Meshing-Purging +origin: https://github.com/kyleisah/Klipper-Adaptive-Meshing-Purging.git +managed_services: klipper +primary_branch: main + +[update_manager klipper_tmc_autotune] +type: git_repo +channel: dev +path: ~/klipper_tmc_autotune +origin: https://github.com/andrewmcgr/klipper_tmc_autotune.git +managed_services: klipper +primary_branch: main +install_script: install.sh + +[update_manager cartographer] +type: git_repo +path: ~/cartographer-klipper +channel: dev +origin: https://github.com/Cartographer3D/cartographer-klipper.git +env: ~/klippy-env/bin/python +requirements: requirements.txt +install_script: install.sh +is_system_service: False +managed_services: klipper +info_tags: + desc=Cartographer Probe + +[file_manager] +enable_object_processing: True +[update_manager klipper-backup] +type: git_repo +path: ~/klipper-backup +origin: https://github.com/Staubgeborener/klipper-backup.git +managed_services: moonraker +primary_branch: main \ No newline at end of file diff --git a/printer_data/config/motorsCalibrate.cfg b/printer_data/config/motorsCalibrate.cfg new file mode 100644 index 0000000..39e35e0 --- /dev/null +++ b/printer_data/config/motorsCalibrate.cfg @@ -0,0 +1,16 @@ +# [autotune_tmc stepper_x] +# motor: moons-ms17hd6p4200 +# [autotune_tmc stepper_y] +# motor: moons-ms17hd6p4200 + +# [autotune_tmc stepper_z] +# motor: moons-ms17hd6p4200 +# [autotune_tmc stepper_z1] +# motor: moons-ms17hd6p4200 +# [autotune_tmc stepper_z2] +# motor: moons-ms17hd6p4200 +# [autotune_tmc stepper_z3] +# motor: moons-ms17hd6p4200 + +# [autotune_tmc extruder] +# motor: moons-cse14hra1l410a \ No newline at end of file diff --git a/printer_data/config/printer.cfg b/printer_data/config/printer.cfg new file mode 100644 index 0000000..24823e1 --- /dev/null +++ b/printer_data/config/printer.cfg @@ -0,0 +1,916 @@ +# This file contains common pin mappings for the BigTreeTech Octopus V1. +# To use this config, the firmware should be compiled for the STM32F446 with a "32KiB bootloader" +# Enable "extra low-level configuration options" and select the "12MHz crystal" as clock reference + +# after running "make", copy the generated "klipper/out/klipper.bin" file to a +# file named "firmware.bin" on an SD card and then restart the OctoPus with that SD card. + +# See docs/Config_Reference.md for a description of parameters. + +## Voron Design VORON2 250/300/350mm BigTreeTech OctoPus V1 TMC2209 UART config + +## *** THINGS TO CHANGE/CHECK: *** +## MCU paths [mcu] section +## Thermistor types [extruder] and [heater_bed] sections - See https://www.klipper3d.org/Config_Reference.html#common-thermistors for common thermistor types +## Hotend heater pin [extruder] section +## Z Endstop Switch location [safe_z_home] section +## Homing end position [gcode_macro G32] section +## Z Endstop Switch offset for Z0 [stepper_z] section +## Stepper Z1 enable pin [stepper_z1] section +## Probe points [quad_gantry_level] section +## Min & Max gantry corner postions [quad_gantry_level] section +## PID tune [extruder] and [heater_bed] sections +## Probe pin [probe] section +## Fine tune E steps [extruder] section + +[include stealthburner_leds.cfg] +[include KAMP_Settings.cfg] +#[include inputShaper.cfg] +[include motorsCalibrate.cfg] +[include cartographer.cfg] +[include sample-bigtreetech-ebb-sb-rp2040-canbus-v1.0.cfg] +[exclude_object] + + + +[mcu] +## Obtain definition by "ls -l /dev/serial/by-id/" then unplug to verify +##-------------------------------------------------------------------- +serial: /dev/serial/by-id/usb-Klipper_stm32f407xx_2B0024001150304235343520-if00 +restart_method: command +##-------------------------------------------------------------------- + +[printer] +kinematics: corexy +max_velocity: 750 +max_accel: 8000 #Max 4000 +max_z_velocity: 30 #Max 15 for 12V TMC Drivers, can increase for 24V +max_z_accel: 350 +square_corner_velocity: 5.0 + +[input_shaper] +#shaper_freq_x: 58.8 +#shaper_type_x: mzv +#shaper_freq_y: 52.6 +#shaper_type_y: mzv + +##################################################################### +# X/Y Stepper Settings +##################################################################### + +## B Stepper - Left +## Connected to MOTOR_0 +## Endstop connected to DIAG_0 +[stepper_x] +step_pin: PF13 +dir_pin: PF12 +enable_pin: !PF14 +rotation_distance: 40 +microsteps: 32 +full_steps_per_rotation:200 #set to 400 for 0.9 degree stepper +endstop_pin: EBBCan:gpio24 +position_min: 0 +##-------------------------------------------------------------------- + +##Uncomment below for 250mm build +position_endstop: 250 +position_max: 250 + +## Uncomment for 300mm build +#position_endstop: 300 +#position_max: 300 + +## Uncomment for 350mm build +#position_endstop: 350 +#position_max: 350 + +##-------------------------------------------------------------------- +homing_speed: 100 #Max 100 +homing_retract_dist: 5 +homing_positive_dir: true + +## Make sure to update below for your relevant driver (2208 or 2209) +[tmc2209 stepper_x] +uart_pin: PC4 +interpolate: true +run_current: 1.4 +sense_resistor: 0.110 +stealthchop_threshold: 0 + +## A Stepper - Right +## Connected to MOTOR_1 +## Endstop connected to DIAG_1 +[stepper_y] +step_pin: PG0 +dir_pin: PG1 +enable_pin: !PF15 +rotation_distance: 40 +microsteps: 32 +full_steps_per_rotation:200 #set to 400 for 0.9 degree stepper +endstop_pin: PG9 +position_min: 0 +##-------------------------------------------------------------------- + +## Uncomment for 250mm build +position_endstop: 254 +position_max: 254 + +## Uncomment for 300mm build +#position_endstop: 300 +#position_max: 300 + +## Uncomment for 350mm build +#position_endstop: 350 +#position_max: 350 + +##-------------------------------------------------------------------- +homing_speed: 100 #Max 100 +homing_retract_dist: 5 +homing_positive_dir: true + +## Make sure to update below for your relevant driver (2208 or 2209) +[tmc2209 stepper_y] +uart_pin: PD11 +interpolate: true +run_current: 1.4 +sense_resistor: 0.110 +stealthchop_threshold: 0 + +##################################################################### +# Z Stepper Settings +##################################################################### + +## Z0 Stepper - Front Left +## Connected to MOTOR_2 +## Endstop connected to DIAG_2 +[stepper_z] +step_pin: PF11 +dir_pin: PG3 +enable_pin: !PG5 +rotation_distance: 40 +gear_ratio: 80:16 +microsteps: 32 +endstop_pin: probe:z_virtual_endstop +## Z-position of nozzle (in mm) to z-endstop trigger point relative to print surface (Z0) +## (+) value = endstop above Z0, (-) value = endstop below +## Increasing position_endstop brings nozzle closer to the bed +## After you run Z_ENDSTOP_CALIBRATE, position_endstop will be stored at the very end of your config +#position_endstop: -0.5 +##-------------------------------------------------------------------- + +## Uncomment below for 250mm build +position_max: 230 + +## Uncomment below for 300mm build +#position_max: 260 + +## Uncomment below for 350mm build +#position_max: 310 + +##-------------------------------------------------------------------- +position_min: -5 +homing_speed: 100 +second_homing_speed: 2 +homing_retract_dist: 0 + +## Make sure to update below for your relevant driver (2208 or 2209) +[tmc2209 stepper_z] +uart_pin: PC6 +interpolate: true +run_current: 1.4 +sense_resistor: 0.110 +stealthchop_threshold: 0 + +## Z1 Stepper - Rear Left +## Connected to MOTOR_3 +[stepper_z1] +step_pin: PG4 +dir_pin: !PC1 +## Octopus 1.0 & 1.1. Octopus PRO 1.0 +enable_pin: !PA0 +## Octopus PRO 1.1 +#enable_pin: !PA2 +rotation_distance: 40 +gear_ratio: 80:16 +microsteps: 32 + +## Make sure to update below for your relevant driver (2208 or 2209) +[tmc2209 stepper_z1] +uart_pin: PC7 +interpolate: true +run_current: 1.4 +sense_resistor: 0.110 +stealthchop_threshold: 0 + +## Z2 Stepper - Rear Right +## Connected to MOTOR_4 +[stepper_z2] +step_pin: PF9 +dir_pin: PF10 +enable_pin: !PG2 +rotation_distance: 40 +gear_ratio: 80:16 +microsteps: 32 +## Make sure to update below for your relevant driver (2208 or 2209) +[tmc2209 stepper_z2] +uart_pin: PF2 +interpolate: true +run_current: 1.4 +sense_resistor: 0.110 +stealthchop_threshold: 0 + +## Z3 Stepper - Front Right +## Connected to MOTOR_5 +[stepper_z3] +step_pin: PC13 +dir_pin: !PF0 +enable_pin: !PF1 +rotation_distance: 40 +gear_ratio: 80:16 +microsteps: 32 + +## Make sure to update below for your relevant driver (2208 or 2209) +[tmc2209 stepper_z3] +uart_pin: PE4 +interpolate: true +run_current:1.4 +sense_resistor: 0.110 +stealthchop_threshold: 0 + + +[filament_switch_sensor switch_sensor] +switch_pin: ^PG12 +pause_on_runout: True +runout_gcode: + PAUSE # [pause_resume] is required in printer.cfg + M117 Filament switch runout +insert_gcode: + M117 Filament switch inserted + +[filament_motion_sensor encoder_sensor] +switch_pin: ^PG13 +detection_length: 4.5 # accuracy of motion sensor 2.88mm +extruder: extruder +pause_on_runout: False +runout_gcode: + PAUSE # [pause_resume] is required in printer.cfg + M117 Filament encoder runout +insert_gcode: + M117 Filament encoder inserted + +[extruder] +## Update value below when you perform extruder calibration +## If you ask for 100mm of filament, but in reality it is 98mm: +## rotation_distance = * / 100 +## 22.6789511 is a good starting point +rotation_distance: 22.6789511 #Bondtech 5mm Drive Gears +## Update Gear Ratio depending on your Extruder Type +## Use 50:10 for Stealthburner/Clockwork 2 +## Use 50:17 for Afterburner/Clockwork (BMG Gear Ratio) +## Use 80:20 for M4, M3.1 +gear_ratio: 50:10 +microsteps: 32 +full_steps_per_rotation: 200 #200 for 1.8 degree, 400 for 0.9 degree +nozzle_diameter: 0.400 +filament_diameter: 1.75 +max_extrude_only_distance: 50 +min_temp: 10 +max_temp: 300 +max_power: 1.0 +min_extrude_temp: 170 +max_extrude_cross_section: 5 +#control = pid +#pid_kp = 26.213 +#pid_ki = 1.304 +#pid_kd = 131.721 +## Try to keep pressure_advance below 1.0 +pressure_advance: 0.022 +## Default is 0.040, leave stock +#pressure_advance_smooth_time: 0.040 +step_pin: EBBCan:gpio18 +dir_pin: EBBCan:gpio19 +enable_pin: !EBBCan:gpio17 +heater_pin: EBBCan:gpio7 +#control: pid +#pid_Kp: 21.527 +#pid_Ki: 1.063 +#pid_Kd: 108.982 +sensor_type: MAX31865 +sensor_pin: EBBCan:gpio9 +spi_software_sclk_pin: EBBCan:gpio10 +spi_software_mosi_pin: EBBCan:gpio8 +spi_software_miso_pin: EBBCan:gpio11 +rtd_nominal_r: 1000 +rtd_reference_r: 4300 +rtd_num_of_wires: 2 + + +##################################################################### +# Bed Heater +##################################################################### + +## SSR Pin - HE1 +## Thermistor - TB +[heater_bed] +## Uncomment the following line if using the default SSR wiring from the docs site +heater_pin: PA3 +## Other wiring guides may use BED_OUT to control the SSR. Uncomment the following line for those cases +#heater_pin: PA1 +## Check what thermistor type you have. See https://www.klipper3d.org/Config_Reference.html#common-thermistors for common thermistor types. +## Use "Generic 3950" for Keenovo heaters +sensor_type: Generic 3950 +sensor_pin: PF3 +## Adjust max_power so it doesn't exceed the SSR rating. The Omron G3NA-210B-DC5 SSR is rated at 4 amps without a heatsink. +## The formula is "4 / (Wattage_of_bed_heater / Mains_voltage) = max_power" +## If max_power is greater than 1.0, use 1.0 +max_power: 0.8 +min_temp: 0 +max_temp: 120 +control: pid +pid_kp: 58.437 +pid_ki: 2.347 +pid_kd: 363.769 + + +[bed_mesh] +speed: 400 +horizontal_move_z: 5 +mesh_min: 35, 22 +mesh_max: 228, 198 +probe_count: 10,10 +algorithm: bicubic +adaptive_margin: 5 + + +##################################################################### +# Fan Control +##################################################################### + +## Print Cooling Fan - FAN0 +# [fan] +# pin: PA8 +# kick_start_time: 0.5 +# ## Depending on your fan, you may need to increase this value +# ## if your fan will not start. Can change cycle_time (increase) +# ## if your fan is not able to slow down effectively +# off_below: 0.10 + + +## Hotend Fan - FAN1 +# [heater_fan hotend_fan] +# pin: PE5 +# max_power: 1.0 +# kick_start_time: 0.5 +# heater: extruder +# heater_temp: 50.0 +## If you are experiencing back flow, you can reduce fan_speed +#fan_speed: 1.0 + +## Controller fan - FAN2 +[controller_fan controller_fan_1] +pin: PD12 +kick_start_time: 0.5 +idle_speed: 0.6 +max_power: 1 +heater: heater_bed + +[temperature_fan chamber] +pin: PD14 +max_power: 1.0 +shutdown_speed: 0.0 +cycle_time: 0.0005 #2 kHz PWM signal +hardware_pwm: False +kick_start_time: 0 +sensor_type: Generic 3950 +sensor_pin: EBBCan:gpio27 +min_temp: 0 +max_temp: 80 +target_temp: 0 +max_speed: 0.7 #0.7 +min_speed: 0 +control: pid +pid_Kp: 2.0 ;40 +pid_Ki: 5.0 ;0.2 +pid_Kd: 0.5 ;0.1 +pid_deriv_time: 2.0 +gcode_id: C + + + +[temperature_sensor raspberry_pi] +sensor_type: temperature_host +max_temp: 100 + +[temperature_sensor mcu_temp] +sensor_type: temperature_mcu +max_temp: 100 + +[fan_generic nevermore] +## Nevermore - FAN5 on Octopus +## Adjust if you use a different board or a different terminal. +pin: PD13 + + +##################################################################### +# Homing and Gantry Adjustment Routines +##################################################################### + +[idle_timeout] +timeout: 1800 + +[safe_z_home] +## XY Location of the Z Endstop Switch +## Update -10,-10 to the XY coordinates of your endstop pin +## (such as 157,305) after going through Z Endstop Pin +## Location Definition step. +home_xy_position: 125, 125 +speed:100 +z_hop:10 + + +## Use QUAD_GANTRY_LEVEL to level a gantry. +## Min & Max gantry corners - measure from nozzle at MIN (0,0) and +## MAX (250, 250), (300,300), or (350,350) depending on your printer size +## to respective belt positions +[quad_gantry_level] + +#-------------------------------------------------------------------- +## Gantry Corners for 250mm Build +## Uncomment for 250mm build +gantry_corners: + -60,-10 + 310, 320 +## Probe points +points: + 50,25 + 50,175 + 200,175 + 200,25 + +## Gantry Corners for 300mm Build +## Uncomment for 300mm build +#gantry_corners: +# -60,-10 +# 360,370 +## Probe points +#points: +# 50,25 +# 50,225 +# 250,225 +# 250,25 + +## Gantry Corners for 350mm Build +## Uncomment for 350mm build +#gantry_corners: +# -60,-10 +# 410,420 +## Probe points +#points: +# 50,25 +# 50,275 +# 300,275 +# 300,25 + +#-------------------------------------------------------------------- +speed: 400 +horizontal_move_z: 5 +retries: 5 +retry_tolerance: 0.0075 +max_adjust: 10 + +######################################## +# EXP1 / EXP2 (display) pins +######################################## + +[board_pins] +aliases: + # EXP1 header + EXP1_1=PE8, EXP1_2=PE7, + EXP1_3=PE9, EXP1_4=PE10, + EXP1_5=PE12, EXP1_6=PE13, # Slot in the socket on this side + EXP1_7=PE14, EXP1_8=PE15, + EXP1_9=, EXP1_10=<5V>, + + # EXP2 header + EXP2_1=PA6, EXP2_2=PA5, + EXP2_3=PB1, EXP2_4=PA4, + EXP2_5=PB2, EXP2_6=PA7, # Slot in the socket on this side + EXP2_7=PC15, EXP2_8=, + EXP2_9=, EXP2_10=<5V> + +##################################################################### +# Displays +##################################################################### + +## Uncomment the display that you have +#-------------------------------------------------------------------- + + +## RepRapDiscount 128x64 Full Graphic Smart Controller +#[display] +#lcd_type: st7920 +#cs_pin: EXP1_4 +#sclk_pin: EXP1_5 +#sid_pin: EXP1_3 +#menu_timeout: 40 +#encoder_pins: ^EXP2_5, ^EXP2_3 +#click_pin: ^!EXP1_2 + +#[output_pin beeper] +#pin: EXP1_1 + +#-------------------------------------------------------------------- + + +## mini12864 LCD Display +#[display] +#lcd_type: uc1701 +#cs_pin: EXP1_3 +#a0_pin: EXP1_4 +#rst_pin: EXP1_5 +#encoder_pins: ^EXP2_5, ^EXP2_3 +#click_pin: ^!EXP1_2 +#contrast: 63 +#spi_software_miso_pin: EXP2_1 +#spi_software_mosi_pin: EXP2_6 +#spi_software_sclk_pin: EXP2_2 + +## To control Neopixel RGB in mini12864 display +#[neopixel btt_mini12864] +#pin: EXP1_6 +#chain_count: 3 +#initial_RED: 0.1 +#initial_GREEN: 0.5 +#initial_BLUE: 0.0 +#color_order: RGB + +## Set RGB values on boot up for each Neopixel. +## Index 1 = display, Index 2 and 3 = Knob +#[delayed_gcode setdisplayneopixel] +#initial_duration: 1 +#gcode: +# SET_LED LED=btt_mini12864 RED=1 GREEN=1 BLUE=1 INDEX=1 TRANSMIT=0 +# SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=2 TRANSMIT=0 +# SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=3 + +#-------------------------------------------------------------------- + +[virtual_sdcard] +path: ~/printer_data/gcodes +[display_status] +[pause_resume] + + +##################################################################### +# Macros +##################################################################### +[gcode_macro start_heating] +gcode: + STATUS_HOMING + G28 + STATUS_HEATING + nvmOn + SET_HEATER_TEMPERATURE HEATER=extruder TARGET=50 + SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET=115 + SET_TEMPERATURE_FAN_TARGET TEMPERATURE_FAN=chamber TARGET=55 + G1 Z50 + M106 S79 + +[gcode_macro nvmOn] +gcode: + SET_FAN_SPEED FAN=nevermore SPEED=1 + +[gcode_macro nvmOff] +gcode: + SET_FAN_SPEED FAN=nevermore SPEED=0 + +[gcode_macro PARK] +gcode: + {% set th = printer.toolhead %} + G0 X{th.axis_maximum.x//2} Y{th.axis_maximum.y//2} Z30 + +[gcode_macro G32] +gcode: + SAVE_GCODE_STATE NAME=STATE_G32 + G90 + G28 + QUAD_GANTRY_LEVEL + G28 + PARK + RESTORE_GCODE_STATE NAME=STATE_G32 + +[gcode_macro PRINT_START] +# Use PRINT_START for the slicer starting script - please customise for your slicer of choice +gcode: + # Parameters + {% set bedtemp = params.BED|int %} + {% set hotendtemp = params.EXTRUDER|int %} + {% set chambertemp = params.CHAMBER|default(0)|int %} + + STATUS_HOMING + G28 + STATUS_HEATING + M190 S{bedtemp} + M109 S{hotendtemp} + ; wait for bed temp + {% if bedtemp > 95 %} + nvmOn + TEMPERATURE_WAIT SENSOR="temperature_fan chamber" MINIMUM={chambertemp} ; wait for chamber temp + {% endif %} + G32 ; home all axes + STATUS_MESHING + BED_MESH_CALIBRATE + {% set FL_SIZE = params.SIZE|default("0_0_0_0")|string %} + ; move nozzle away from bed + LINE_PURGE + +[gcode_macro PRINT_END] +# Use PRINT_END for the slicer ending script - please customise for your slicer of choice +gcode: + # safe anti-stringing move coords + {% set th = printer.toolhead %} + {% set x_safe = th.position.x + 20 * (1 if th.axis_maximum.x - th.position.x > 20 else -1) %} + {% set y_safe = th.position.y + 20 * (1 if th.axis_maximum.y - th.position.y > 20 else -1) %} + {% set z_safe = [th.position.z + 2, th.axis_maximum.z]|min %} + + SAVE_GCODE_STATE NAME=STATE_PRINT_END + + M400 ; wait for buffer to clear + G92 E0 ; zero the extruder + G1 E-8.0 F1800 ; retract filament + # STATUS_CLEANING + # clean_nozzle + + TURN_OFF_HEATERS + nvmOff + + G90 ; absolute positioning + G0 X{x_safe} Y{y_safe} Z{z_safe} F20000 ; move nozzle to remove stringing + G0 X{th.axis_maximum.x//2} Y{th.axis_maximum.y - 2} F3600 ; park nozzle at rear + M107 ; turn off fan + + BED_MESH_CLEAR + + # The purpose of the SAVE_GCODE_STATE/RESTORE_GCODE_STATE + # command pair is to restore the printer's coordinate system + # and speed settings since the commands above change them. + # However, to prevent any accidental, unintentional toolhead + # moves when restoring the state, explicitly set MOVE=0. + RESTORE_GCODE_STATE NAME=STATE_PRINT_END MOVE=0 + + # Home, get position, throw around toolhead, home again. +# If MCU stepper positions (first line in GET_POSITION) are greater than a full step different (your number of microsteps), then skipping occured. +# We only measure to a full step to accomodate for endstop variance. +# Example: TEST_SPEED SPEED=300 ACCEL=5000 ITERATIONS=10 + +[gcode_macro TEST_SPEED] +gcode: + # Speed + {% set speed = params.SPEED|default(printer.configfile.settings.printer.max_velocity)|int %} + # Iterations + {% set iterations = params.ITERATIONS|default(5)|int %} + # Acceleration + {% set accel = params.ACCEL|default(printer.configfile.settings.printer.max_accel)|int %} + # Bounding inset for large pattern (helps prevent slamming the toolhead into the sides after small skips, and helps to account for machines with imperfectly set dimensions) + {% set bound = params.BOUND|default(20)|int %} + # Size for small pattern box + {% set smallpatternsize = SMALLPATTERNSIZE|default(20)|int %} + + # Large pattern + # Max positions, inset by BOUND + {% set x_min = printer.toolhead.axis_minimum.x + bound %} + {% set x_max = printer.toolhead.axis_maximum.x - bound %} + {% set y_min = printer.toolhead.axis_minimum.y + bound %} + {% set y_max = printer.toolhead.axis_maximum.y - bound %} + + # Small pattern at center + # Find X/Y center point + {% set x_center = (printer.toolhead.axis_minimum.x|float + printer.toolhead.axis_maximum.x|float ) / 2 %} + {% set y_center = (printer.toolhead.axis_minimum.y|float + printer.toolhead.axis_maximum.y|float ) / 2 %} + + # Set small pattern box around center point + {% set x_center_min = x_center - (smallpatternsize/2) %} + {% set x_center_max = x_center + (smallpatternsize/2) %} + {% set y_center_min = y_center - (smallpatternsize/2) %} + {% set y_center_max = y_center + (smallpatternsize/2) %} + + # Save current gcode state (absolute/relative, etc) + SAVE_GCODE_STATE NAME=TEST_SPEED + + # Output parameters to g-code terminal + { action_respond_info("TEST_SPEED: starting %d iterations at speed %d, accel %d" % (iterations, speed, accel)) } + + # Home and get position for comparison later: + M400 # Finish moves - https://github.com/AndrewEllis93/Print-Tuning-Guide/issues/66 + G28 + # QGL if not already QGLd (only if QGL section exists in config) + {% if printer.configfile.settings.quad_gantry_level %} + {% if printer.quad_gantry_level.applied == False %} + QUAD_GANTRY_LEVEL + G28 Z + {% endif %} + {% endif %} + # Move 50mm away from max position and home again (to help with hall effect endstop accuracy - https://github.com/AndrewEllis93/Print-Tuning-Guide/issues/24) + G90 + G1 X{printer.toolhead.axis_maximum.x-50} Y{printer.toolhead.axis_maximum.y-50} F{30*60} + M400 # Finish moves - https://github.com/AndrewEllis93/Print-Tuning-Guide/issues/66 + G28 X Y + G0 X{printer.toolhead.axis_maximum.x-1} Y{printer.toolhead.axis_maximum.y-1} F{30*60} + G4 P1000 + GET_POSITION + + # Go to starting position + G0 X{x_min} Y{y_min} Z{bound + 10} F{speed*60} + + # Set new limits + SET_VELOCITY_LIMIT VELOCITY={speed} ACCEL={accel} ACCEL_TO_DECEL={accel / 2} + + {% for i in range(iterations) %} + # Large pattern diagonals + G0 X{x_min} Y{y_min} F{speed*60} + G0 X{x_max} Y{y_max} F{speed*60} + G0 X{x_min} Y{y_min} F{speed*60} + G0 X{x_max} Y{y_min} F{speed*60} + G0 X{x_min} Y{y_max} F{speed*60} + G0 X{x_max} Y{y_min} F{speed*60} + + # Large pattern box + G0 X{x_min} Y{y_min} F{speed*60} + G0 X{x_min} Y{y_max} F{speed*60} + G0 X{x_max} Y{y_max} F{speed*60} + G0 X{x_max} Y{y_min} F{speed*60} + + # Small pattern diagonals + G0 X{x_center_min} Y{y_center_min} F{speed*60} + G0 X{x_center_max} Y{y_center_max} F{speed*60} + G0 X{x_center_min} Y{y_center_min} F{speed*60} + G0 X{x_center_max} Y{y_center_min} F{speed*60} + G0 X{x_center_min} Y{y_center_max} F{speed*60} + G0 X{x_center_max} Y{y_center_min} F{speed*60} + + # Small patternbox + G0 X{x_center_min} Y{y_center_min} F{speed*60} + G0 X{x_center_min} Y{y_center_max} F{speed*60} + G0 X{x_center_max} Y{y_center_max} F{speed*60} + G0 X{x_center_max} Y{y_center_min} F{speed*60} + {% endfor %} + + # Restore max speed/accel/accel_to_decel to their configured values + SET_VELOCITY_LIMIT VELOCITY={printer.configfile.settings.printer.max_velocity} ACCEL={printer.configfile.settings.printer.max_accel} ACCEL_TO_DECEL={printer.configfile.settings.printer.max_accel_to_decel} + + # Re-home and get position again for comparison: + M400 # Finish moves - https://github.com/AndrewEllis93/Print-Tuning-Guide/issues/66 + G28 # This is a full G28 to fix an issue with CoreXZ - https://github.com/AndrewEllis93/Print-Tuning-Guide/issues/12 + # Go to XY home positions (in case your homing override leaves it elsewhere) + G90 + G0 X{printer.toolhead.axis_maximum.x-1} Y{printer.toolhead.axis_maximum.y-1} F{30*60} + G4 P1000 + GET_POSITION + + # Restore previous gcode state (absolute/relative, etc) + RESTORE_GCODE_STATE NAME=TEST_SPEED + +[gcode_macro CLEAN_NOZZLE] +variable_start_x: 103 +variable_start_y: 251 +variable_start_z: 4.5 +variable_wipe_dist: -50 +variable_wipe_qty: 10 +variable_wipe_spd: 200 +variable_raise_distance: 30 + +gcode: + {% if "xyz" not in printer.toolhead.homed_axes %} + G28 + {% endif %} + + G90 ; absolute positioning + ## Move nozzle to start position + G1 X{start_x} Y{start_y} F6000 + G1 Z{start_z} F1500 + + ## Wipe nozzle + {% for wipes in range(1, (wipe_qty + 1)) %} + G1 X{start_x + wipe_dist} F{wipe_spd * 60} + G1 X{start_x} F{wipe_spd * 60} + {% endfor %} + + ## Raise nozzle + G1 Z{raise_distance} + +[gcode_macro PAUSE] +rename_existing: BASE_PAUSE +gcode: + # Parameters + {% set z = params.Z|default(10)|int %} ; z hop amount + + {% if printer['pause_resume'].is_paused|int == 0 %} + SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=zhop VALUE={z} ; set z hop variable for reference in resume macro + SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=etemp VALUE={printer['extruder'].target} ; set hotend temp variable for reference in resume macro + + SET_FILAMENT_SENSOR SENSOR=encoder_sensor ENABLE=0 ; disable filament sensor + SAVE_GCODE_STATE NAME=PAUSE ; save current print position for resume + BASE_PAUSE ; pause print + {% if (printer.gcode_move.position.z + z) < printer.toolhead.axis_maximum.z %} ; check that zhop doesn't exceed z max + G91 ; relative positioning + G1 Z{z} F900 ; raise Z up by z hop amount + {% else %} + { action_respond_info("Pause zhop exceeds maximum Z height.") } ; if z max is exceeded, show message and set zhop value for resume to 0 + SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=zhop VALUE=0 + {% endif %} + G90 ; absolute positioning + G1 X{printer.toolhead.axis_maximum.x/2} Y{printer.toolhead.axis_minimum.y+5} F6000 ; park toolhead at front center + SAVE_GCODE_STATE NAME=PAUSEPARK ; save parked position in case toolhead is moved during the pause (otherwise the return zhop can error) + M104 S0 ; turn off hotend + SET_IDLE_TIMEOUT TIMEOUT=43200 ; set timeout to 12 hours + {% endif %} + +[gcode_macro RESUME] +rename_existing: BASE_RESUME +variable_zhop: 0 +variable_etemp: 0 +gcode: + # Parameters + {% set e = params.E|default(2.5)|int %} ; hotend prime amount (in mm) + + {% if printer['pause_resume'].is_paused|int == 1 %} + SET_FILAMENT_SENSOR SENSOR=encoder_sensor ENABLE=1 ; enable filament sensor + #INITIAL_RGB ; reset LCD color + SET_IDLE_TIMEOUT TIMEOUT={printer.configfile.settings.idle_timeout.timeout} ; set timeout back to configured value + {% if etemp > 0 %} + M109 S{etemp|int} ; wait for hotend to heat back up + {% endif %} + RESTORE_GCODE_STATE NAME=PAUSEPARK MOVE=1 MOVE_SPEED=100 ; go back to parked position in case toolhead was moved during pause (otherwise the return zhop can error) + G91 ; relative positioning + M83 ; relative extruder positioning + {% if printer[printer.toolhead.extruder].temperature >= printer.configfile.settings.extruder.min_extrude_temp %} + G1 Z{zhop * -1} E{e} F900 ; prime nozzle by E, lower Z back down + {% else %} + G1 Z{zhop * -1} F900 ; lower Z back down without priming (just in case we are testing the macro with cold hotend) + {% endif %} + RESTORE_GCODE_STATE NAME=PAUSE MOVE=1 MOVE_SPEED=60 ; restore position + BASE_RESUME ; resume print + {% endif %} + + +[gcode_macro PROBE_CALIBRATE] +gcode: + CARTOGRAPHER_CALIBRATE + +#*# <---------------------- SAVE_CONFIG ----------------------> +#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated. +#*# +#*# [probe] +#*# z_offset = -1.170 +#*# +#*# [bed_mesh default] +#*# version = 1 +#*# points = +#*# 0.064202, 0.073628, 0.080160, 0.058273, 0.063152, 0.047099, 0.048263, 0.086925, 0.072920, 0.061667 +#*# 0.027252, 0.047345, 0.043357, 0.025439, 0.023619, 0.021234, 0.009974, 0.057771, 0.038332, 0.027761 +#*# 0.005631, 0.029719, 0.024722, -0.003534, 0.001286, -0.000731, -0.017407, 0.029543, 0.015677, -0.001572 +#*# -0.003574, 0.015593, 0.010836, -0.015084, -0.010510, -0.017328, -0.031765, 0.016308, -0.000738, -0.021112 +#*# -0.007915, 0.005843, 0.003054, -0.024169, -0.020044, -0.029893, -0.044833, 0.008086, -0.012567, -0.037353 +#*# -0.010842, 0.000295, -0.003783, -0.019731, -0.014248, -0.024010, -0.044773, 0.009547, -0.011141, -0.034192 +#*# -0.006923, 0.005430, 0.001545, -0.019345, -0.010985, -0.019847, -0.040806, 0.010011, -0.007301, -0.032368 +#*# 0.005507, 0.017199, 0.013864, -0.014625, -0.010141, -0.022816, -0.033957, 0.023591, 0.012849, -0.006465 +#*# 0.013806, 0.029346, 0.021736, -0.002594, -0.005385, -0.014511, -0.027379, 0.030217, 0.020012, 0.001312 +#*# 0.036933, 0.051830, 0.044820, 0.017668, 0.014671, 0.006155, -0.008779, 0.050753, 0.038192, 0.030523 +#*# x_count = 10 +#*# y_count = 10 +#*# mesh_x_pps = 2 +#*# mesh_y_pps = 2 +#*# algo = bicubic +#*# tension = 0.2 +#*# min_x = 35.0 +#*# max_x = 228.0 +#*# min_y = 22.0 +#*# max_y = 198.0 +#*# +#*# [extruder] +#*# control = pid +#*# pid_kp = 26.069 +#*# pid_ki = 2.119 +#*# pid_kd = 80.162 +#*# +#*# [cartographer model default] +#*# model_coef = 1.40736970918377, +#*# 1.8287541865450379, +#*# 0.7277613817883675, +#*# 0.2686854322202044, +#*# 0.4567425290732896, +#*# 0.7013325369234794, +#*# -0.3765663994023861, +#*# -0.7970258394806334, +#*# 0.33402490231374365, +#*# 0.4489628751352224 +#*# model_domain = 3.2168580351509496e-07,3.346867688692275e-07 +#*# model_range = 0.100000,5.000000 +#*# model_temp = 54.393822 +#*# model_offset = 0.39000 +#*# +#*# [input_shaper] +#*# shaper_type_x = zv +#*# shaper_freq_x = 61.4 +#*# shaper_type_y = zv +#*# shaper_freq_y = 43.0 diff --git a/printer_data/config/sample-bigtreetech-ebb-sb-rp2040-canbus-v1.0.cfg b/printer_data/config/sample-bigtreetech-ebb-sb-rp2040-canbus-v1.0.cfg new file mode 100644 index 0000000..ae40205 --- /dev/null +++ b/printer_data/config/sample-bigtreetech-ebb-sb-rp2040-canbus-v1.0.cfg @@ -0,0 +1,49 @@ +# This file contains common pin mappings for the BIGTREETECH EBBCan +# Canbus board. To use this config, the firmware should be compiled for the +# RP2040 with "USB" or "CAN bus (on gpio4/gpio5)". +# The "EBB Can" micro-controller will be used to control the components on the nozzle. + +# See docs/Config_Reference.md for a description of parameters. + +[mcu EBBCan] +canbus_uuid: c56f89ac8cb9 + +[temperature_sensor EBB_NTC] +sensor_type: Generic 3950 +sensor_pin: EBBCan:gpio28 + +# [adxl345] +# cs_pin: EBBCan:gpio1 +# spi_software_sclk_pin: EBBCan:gpio2 +# spi_software_mosi_pin: EBBCan:gpio0 +# spi_software_miso_pin: EBBCan:gpio3 +# axes_map: z,-y,x + +# [resonance_tester] +# probe_points: 100, 100, 20 +# accel_chip: adxl345 + + + + +[tmc2209 extruder] +uart_pin: EBBCan:gpio20 +run_current: 0.7 +stealthchop_threshold: 0 + +[fan] +pin: EBBCan:gpio13 +kick_start_time: 0.5 +hardware_pwm: false +cycle_time: 0.01 +off_below: 0.1 + +[heater_fan hotend_fan] +pin: EBBCan:gpio14 +heater: extruder +heater_temp: 50.0 +max_power: 1.0 +kick_start_time: 0.5 + + + diff --git a/printer_data/config/sonar.conf b/printer_data/config/sonar.conf new file mode 100644 index 0000000..0c71ab1 --- /dev/null +++ b/printer_data/config/sonar.conf @@ -0,0 +1,17 @@ +#### Sonar - A WiFi Keepalive daemon +#### +#### Written by Stephan Wendel aka KwadFan +#### Copyright 2022 +#### https://github.com/mainsail-crew/sonar +#### +#### This File is distributed under GPLv3 +#### + +[sonar] +enable: false # false to disable till next reboot (will stop again if not set to true) +debug_log: false # if set to true, sonar will log ever ping with triptime and date/time +persistant_log: false # If true logs in /var/log/sonar.log, false logs to systemd +target: auto # IP Address, URL or auto as ping target +count: 3 # How often should be pinged? +interval: 60 # Ping again after X seconds +restart_treshold: 10 # If failed, restart WiFi after X seconds diff --git a/printer_data/config/stealthburner_leds.cfg b/printer_data/config/stealthburner_leds.cfg new file mode 100644 index 0000000..a5b6897 --- /dev/null +++ b/printer_data/config/stealthburner_leds.cfg @@ -0,0 +1,295 @@ +# Macros for setting the status leds on the Voron StealthBurner toolhead (or for any neopixel-type leds). +# +# You will need to configure a neopixel (or other addressable led, such as dotstar). See +# https://www.klipper3d.org/Config_Reference.html#neopixel for configuration details. + + +##################################### +# INSTRUCTIONS # +##################################### +# How to use all this stuff: +# +# 1. Copy this .cfg file into your Klipper config directory and then add [include stealthburner_leds.cfg] +# to the top of your printer.cfg in order to register the LEDs and macros with Klipper. +# 2. Define your LEDs by editing [neopixel sb_leds] below and entering the data pin from your control board +# as well as the color order. +# +# Note: RGB and RGBW are different and must be defined explicitly. RGB and RGBW are also not able to +# be mix-and-matched in the same chain. A separate data line would be needed for proper functioning. +# +# RGBW LEDs will have a visible yellow-ish phosphor section to the chip. If your LEDs do not have +# this yellow portion, you have RGB LEDs. +# +# 3. Save your config and restart Klipper. +# +# Note: We set RED and BLUE to 1.0 to make it easier for users and supporters to detect +# misconfigurations or miswiring. The default color format is for Neopixels with a dedicated +# white LED. On startup, all three SB LEDs should light up. +# +# If you get random colors across your LEDs, change the color_order to GRB and restart. Then +# omit the W for each suggested color_order in the next paragraph. +# +# If you get MAGENTA, your color order is correct. If you get CYAN, you need to use RGBW. If +# you get YELLOW, you need to use BRGW (note that BRG is only supported in the latest Klipper +# version). +# +# 4. Once you have confirmed that the LEDs are set up correctly, you must now decide where you want +# these macros called up...which means adding them to your existing gcode macros. NOTHING will happen +# unless you add the STATUS_????? macros to your existing gcode macros. +# +# Example: add STATUS_LEVELING to the beginning of your QGL gcode macro, and then add STATUS_READY +# to the end of it to set the logo LED and nozzle LEDs back to the `ready` state. +# +# Example: add STATUS_CLEANING to the beginning of your nozzle-cleaning macro, and then STATUS_READY +# to the end of it to return the LEDs back to `ready` state. +# +# 5. Feel free to change colors of each macro, create new ones if you have a need to. The macros provided below +# are just an example of what is possible. If you want to try some more complex animations, you will most +# likely have to use WLED with Moonraker and a small micro-controller +# +##################################### +# END INSTRUCTRUCTIONS # +##################################### + +[led my_led] + +white_pin: PB10 +# The pin controlling the given LED color. At least one of the above +# parameters must be provided. +cycle_time: 0.010 +# The amount of time (in seconds) per PWM cycle. It is recommended +# this be 10 milliseconds or greater when using software based PWM. +# The default is 0.010 seconds. +#hardware_pwm: False +# Enable this to use hardware PWM instead of software PWM. When +# using hardware PWM the actual cycle time is constrained by the +# implementation and may be significantly different than the +# requested cycle_time. The default is False. +#initial_RED: 0.0 +#initial_GREEN: 0.0 +#initial_BLUE: 0.0 +initial_WHITE: 1.0 +# Sets the initial LED color. Each value should be between 0.0 and +# 1.0. The default for each color is 0. + +[neopixel leds_light] +pin: PB0 +# The pin connected to the neopixel. This parameter must be provided. +chain_count: 55 +# The number of Neopixel chips that are "daisy chained" to the +# provided pin. The default is 1 (which indicates only a single +# Neopixel is connected to the pin). +color_order: GRB +# Set the pixel order required by the LED hardware. Options are GRB, +# RGB, GRBW, or RGBW. The default is GRB. +initial_RED: 1.0 +initial_GREEN: 1.0 +initial_BLUE: 1.0 +initial_WHITE: 0.0 +# Sets the initial LED color of the Neopixel. Each value should be +# between 0.0 and 1.0. The WHITE option is only available on RGBW +# LEDs. The default for each color is 0.# + +# Most configuration for the macros can be done by modifying the variables in the _sb_vars macro +# at the start of this file. + +[neopixel sb_leds] +pin: EBBCan:gpio16 +# The pin connected to the neopixel. This parameter must be provided. +chain_count: 3 +# The number of Neopixel chips that are "daisy chained" to the +# provided pin. The default is 1 (which indicates only a single +# Neopixel is connected to the pin). +color_order: GRB +# Set the pixel order required by the LED hardware. Options are GRB, +# RGB, GRBW, or RGBW. The default is GRB. +initial_RED: 1.0 +initial_GREEN: 1.0 +initial_BLUE: 1.0 +initial_WHITE: 0.0 +# Sets the initial LED color of the Neopixel. Each value should be +# between 0.0 and 1.0. The WHITE option is only available on RGBW +# LEDs. The default for each color is 0.# + +# Most configuration for the macros can be done by modifying the variables in the _sb_vars macro +# at the start of this file. + +########## +# MACROS # +########## + +# The following status macros are available (these go inside of your macros): +# +# STATUS_READY +# STATUS_OFF +# STATUS_BUSY +# STATUS_HEATING +# STATUS_LEVELING +# STATUS_HOMING +# STATUS_CLEANING +# STATUS_MESHING +# STATUS_CALIBRATING_Z +# +# With additional macros for basic control: +# +# SET_NOZZLE_LEDS_ON +# SET_LOGO_LEDS_OFF +# SET_NOZZLE_LEDS_OFF +# +# Contributed by Voron discord users wile.e, Tetsunosuke, and etherwalker + + +[gcode_macro _sb_vars] +# User settings for the StealthBurner status leds. You can change the status colors and led +# configurations for the logo and nozzle here. +variable_colors: { + 'logo': { # Colors for logo states + 'busy': {'r': 0.4, 'g': 0.0, 'b': 0.0, 'w': 0.0}, + 'cleaning': {'r': 0.0, 'g': 0.02, 'b': 0.5, 'w': 0.0}, + 'calibrating_z': {'r': 0.8, 'g': 0., 'b': 0.35, 'w': 0.0}, + 'heating': {'r': 0.3, 'g': 0.18, 'b': 0.0, 'w': 0.0}, + 'homing': {'r': 0.0, 'g': 0.6, 'b': 0.2, 'w': 0.0}, + 'leveling': {'r': 0.5, 'g': 0.1, 'b': 0.4, 'w': 0.0}, + 'meshing': {'r': 0.2, 'g': 1.0, 'b': 0.0, 'w': 0.0}, + 'off': {'r': 0.0, 'g': 0.0, 'b': 0.0, 'w': 0.0}, + 'printing': {'r': 1.0, 'g': 0.0, 'b': 0.0, 'w': 0.0}, + 'standby': {'r': 0.01, 'g': 0.01, 'b': 0.01, 'w': 0.1}, + }, + 'nozzle': { # Colors for nozzle states + 'heating': {'r': 0.8, 'g': 0.35, 'b': 0.0, 'w':0.0}, + 'off': {'r': 0.0, 'g': 0.0, 'b': 0.0, 'w': 0.0}, + 'on': {'r': 0.8, 'g': 0.8, 'b': 0.8, 'w':1.0}, + 'standby': {'r': 0.6, 'g': 0.0, 'b': 0.0, 'w':0.0}, + }, + 'thermal': { + 'hot': {'r': 1.0, 'g': 0.0, 'b': 0.0, 'w': 0.0}, + 'cold': {'r': 0.3, 'g': 0.0, 'b': 0.3, 'w': 0.0} + } + } +variable_logo_led_name: "sb_leds" +# The name of the addressable LED chain that contains the logo LED(s) +variable_logo_idx: "1" +# A comma-separated list of indexes LEDs in the logo +variable_nozzle_led_name: "sb_leds" +# The name of the addressable LED chain that contains the nozzle LED(s). This will +# typically be the same LED chain as the logo. +variable_nozzle_idx: "2,3" +# A comma-separated list of indexes of LEDs in the nozzle +gcode: + # This section is required. Do Not Delete. + + +[gcode_macro _set_sb_leds] +gcode: + {% set red = params.RED|default(0)|float %} + {% set green = params.GREEN|default(0)|float %} + {% set blue = params.BLUE|default(0)|float %} + {% set white = params.WHITE|default(0)|float %} + {% set led = params.LED|string %} + {% set idx = (params.IDX|string).split(',') %} + {% set transmit_last = params.TRANSMIT|default(1) %} + + {% for led_index in idx %} + {% set transmit=transmit_last if loop.last else 0 %} + set_led led={led} red={red} green={green} blue={blue} white={white} index={led_index} transmit={transmit} + {% endfor %} + +[gcode_macro _set_sb_leds_by_name] +gcode: + {% set leds_name = params.LEDS %} + {% set color_name = params.COLOR %} + {% set color = printer["gcode_macro _sb_vars"].colors[leds_name][color_name] %} + {% set led = printer["gcode_macro _sb_vars"][leds_name + "_led_name"] %} + {% set idx = printer["gcode_macro _sb_vars"][leds_name + "_idx"] %} + {% set transmit = params.TRANSMIT|default(1) %} + + _set_sb_leds led={led} red={color.r} green={color.g} blue={color.b} white={color.w} idx="{idx}" transmit={transmit} + +[gcode_macro _set_logo_leds] +gcode: + {% set red = params.RED|default(0)|float %} + {% set green = params.GREEN|default(0)|float %} + {% set blue = params.BLUE|default(0)|float %} + {% set white = params.WHITE|default(0)|float %} + {% set led = printer["gcode_macro _sb_vars"].logo_led_name %} + {% set idx = printer["gcode_macro _sb_vars"].logo_idx %} + {% set transmit=params.TRANSMIT|default(1) %} + + _set_sb_leds led={led} red={red} green={green} blue={blue} white={white} idx="{idx}" transmit={transmit} + +[gcode_macro _set_nozzle_leds] +gcode: + {% set red = params.RED|default(0)|float %} + {% set green = params.GREEN|default(0)|float %} + {% set blue = params.BLUE|default(0)|float %} + {% set white = params.WHITE|default(0)|float %} + {% set led = printer["gcode_macro _sb_vars"].nozzle_led_name %} + {% set idx = printer["gcode_macro _sb_vars"].nozzle_idx %} + {% set transmit=params.TRANSMIT|default(1) %} + + _set_sb_leds led={led} red={red} green={green} blue={blue} white={white} idx="{idx}" transmit={transmit} + +[gcode_macro set_logo_leds_off] +gcode: + {% set transmit=params.TRANSMIT|default(1) %} + _set_logo_leds red=0 blue=0 green=0 white=0 transmit={transmit} + +[gcode_macro set_nozzle_leds_on] +gcode: + {% set transmit=params.TRANSMIT|default(1) %} + _set_sb_leds_by_name leds="nozzle" color="on" transmit={transmit} + +[gcode_macro set_nozzle_leds_off] +gcode: + {% set transmit=params.TRANSMIT|default(1) %} + _set_sb_leds_by_name leds="nozzle" color="off" transmit={transmit} + +[gcode_macro status_off] +gcode: + set_logo_leds_off transmit=0 + set_nozzle_leds_off + +[gcode_macro status_ready] +gcode: + _set_sb_leds_by_name leds="logo" color="standby" transmit=0 + _set_sb_leds_by_name leds="nozzle" color="standby" transmit=1 + +[gcode_macro status_busy] +gcode: + _set_sb_leds_by_name leds="logo" color="busy" transmit=0 + set_nozzle_leds_on + +[gcode_macro status_heating] +gcode: + _set_sb_leds_by_name leds="logo" color="heating" transmit=0 + _set_sb_leds_by_name leds="nozzle" color="heating" transmit=1 + +[gcode_macro status_leveling] +gcode: + _set_sb_leds_by_name leds="logo" color="leveling" transmit=0 + set_nozzle_leds_on + +[gcode_macro status_homing] +gcode: + _set_sb_leds_by_name leds="logo" color="homing" transmit=0 + set_nozzle_leds_on + +[gcode_macro status_cleaning] +gcode: + _set_sb_leds_by_name leds="logo" color="cleaning" transmit=0 + set_nozzle_leds_on + +[gcode_macro status_meshing] +gcode: + _set_sb_leds_by_name leds="logo" color="meshing" transmit=0 + set_nozzle_leds_on + +[gcode_macro status_calibrating_z] +gcode: + _set_sb_leds_by_name leds="logo" color="calibrating_z" transmit=0 + set_nozzle_leds_on + +[gcode_macro status_printing] +gcode: + _set_sb_leds_by_name leds="logo" color="printing" transmit=0 + set_nozzle_leds_on \ No newline at end of file