Retool A2
Contents
Description
Retool A2 is a USB based tool head that works well with Recore. It has
- 1 TMC2209 stepper motor driver for an extruder
- 1 ADXL343 accelerometer for input shaping
- 1 Mosfet for a heater
- 1 Input for thermistor
- 3 Fan outputs with tach feedback
- 1 Peltier cooling output
- 1 inductive probe input
- 1 Neopixel output
- 2 End stop inputs
- USB-C with Power delivery, up to 24 V, 5 A.
It comes with Resend A2
- 24 V injector
- USB Power delivery
- Over current protection
Pinout diagram
Pinout table
Name | GPIO | Number | Name | GPIO | Number | Name | GPIO | Number |
---|---|---|---|---|---|---|---|---|
STEP | GPIO6 | 6 | END STOP 1 | GPIO4 | 4 | FAN 1 PWM | GPIO1 | 1 |
DIR | GPIO5 | 5 | END STOP 2 | GPIO11 | 229 | FAN 2 PWM | GPIO12 | 12 |
ENN | GPIO10 | 10 | NEOPIXEL | GPIO20 | 230 | FAN 3 PWM | GPIO21 | 21 |
CLK | GPIO8 | 8 | NEOPIXEL DIR | GPIO19 | 231 | HEATER PWM | GPIO0 | 0 |
DIAG | GPIO9 | 9 | PELTIER EN | GPIO14 | 232 | THERM 1 | GPIO28 | 28 |
UART | GPIO7 | 9 | PELTIER V | GPIO2 | 233 | CURRENT MEASURE | GPIO29 | 29 |
INDUCTIVE | GPIO19 | 19 |
Wire diagram
3D model
3D model for using Retool A2 with Voron 2.4/Stealthburner https://www.printables.com/model/1190587-voron-24-retool-a2-holder
Klipper config
[mcu retool] serial: /dev/serial/by-id/usb-Klipper_rp2040_E661AC8863905924-if00 [static_digital_output retool_led] pins: retool:gpio2 [output_pin fan_r_1] pin: retool:gpio1 [output_pin fan_r_2] pin: retool:gpio12 [output_pin fan_r_3] pin: retool:gpio21 [tmc2209 extruder3] uart_pin: retool:gpio7 uart_address: 0 run_current: 0.500 hold_current: 0.500 sense_resistor: 0.1 stealthchop_threshold: 250 #endstop_pin: retool:gpio4 #enable_pin: !retool:gpio10 #rotation_distance: 40 #microsteps: 16 #position_endstop: 0 #position_max: 200 #homing_speed: 20.0 [extruder3] step_pin: retool:gpio6 dir_pin: retool:gpio5 heater_pin: retool:gpio0 sensor_type: EPCOS 100K B57560G104F sensor_pin: retool:gpio28 rotation_distance: 40 microsteps: 16 nozzle_diameter: 0.400 filament_diameter: 1.75 control: pid pid_Kp: 22.2 pid_Ki: 1.08 pid_Kd: 114 min_extrude_temp: 30 min_temp: -272 max_temp: 300 [verify_heater extruder3] check_gain_time: 2400 [adc_temperature retool_fan_current_0] temperature1: 0 voltage1: 0 temperature2: 33 voltage2: 3.3 [temperature_sensor retool_fan_current_0] adc_voltage: 3.3 sensor_pin: remote:gpio29 sensor_type: remote_fan_current_0 max_temp: 2.0 gcode_id: RemoteFanCurrent0 [adxl345] cs_pin: remote:gpio25 spi_bus: spi1c [resonance_tester] accel_chip: adxl345 probe_points: 100, 100, 20 # an example [probe] pin: remote:gpio22 #-------------------------------------------------------------------- x_offset: 0 y_offset: 25.0 z_offset: 0 speed: 10.0 samples: 3 samples_result: median sample_retract_dist: 3.0 samples_tolerance: 0.01 samples_tolerance_retries: 3 # Set this high to use GPIO20 as high frequency input [static_digital_output Relit_direction] pins: !remote:gpio19 [neopixel relit] pin: remote:gpio20 chain_count: 12 [fan peltier] pin: remote:gpio3 max_power: 0.1 cycle_time: 0.00001 #0.01 hardware_pwm: True
serial: /dev/serial/by-id/usb-Klipper_rp2040_E66368651B257D22-if00 [static_digital_output remote_led] pins: remote:gpio2 [static_digital_output nepixel_dir] pins: !remote:gpio19 [fan] pin: remote:gpio21 tachometer_pin: remote:gpio23 cycle_time: 0.10 [fan_generic peltier] pin: remote:gpio3 hardware_pwm: True cycle_time: 0.000001 [heater_fan hotend_fan] pin: remote:gpio1 heater: extruder heater_temp: 50.0 [tmc2209 extruder] uart_pin: remote:gpio7 uart_address: 0 run_current: 0.800 hold_current: 0.500 sense_resistor: 0.1 stealthchop_threshold: 0 [extruder] step_pin: remote:gpio6 dir_pin: remote:gpio5 enable_pin: !remote:gpio10 heater_pin: remote:gpio0 sensor_type: ATC Semitec 104GT-2 sensor_pin: remote:gpio28 ## Update value below when you perform extruder calibration ## If you ask for 100mm of filament, but in reality it is 98mm: ## rotation_distance = <previous_rotation_distance> * <actual_extrude_distance> / 100 ## 22.6789511 is a good starting point rotation_distance: 22.6789511 #Bondtech 5mm Drive Gears gear_ratio: 50:10 #BMG Gear Ratio microsteps: 16 nozzle_diameter: 0.800 filament_diameter: 1.75 control: pid pid_Kp=28.278 pid_Ki=1.611 pid_Kd=124.070 min_extrude_temp: 15 min_temp: -273 max_temp: 500 pressure_advance: 0.03 ## Default is 0.040, leave stock pressure_advance_smooth_time: 0.040 [adc_temperature remote_current] temperature1: 0 voltage1: 0 temperature2: 10 voltage2: 1.0 [temperature_sensor remote_current] adc_voltage: 3.3 sensor_pin: remote:gpio29 sensor_type: remote_current max_temp: 3.0 [temperature_sensor remote_mcu] sensor_type: temperature_mcu sensor_mcu: remote [adxl345] cs_pin: remote:gpio25 spi_bus: spi1c [resonance_tester] accel_chip: adxl345 probe_points: 125, 125, 20 [probe] pin: remote:gpio4 x_offset: 0 y_offset: 25.0 z_offset: 0 speed: 10.0 samples: 3 samples_result: median sample_retract_dist: 3.0 samples_tolerance: 0.01 samples_tolerance_retries: 3 [neopixel relit_head] pin: remote:gpio20 chain_count: 4 initial_RED: 1.0 initial_GREEN: 1.0 initial_BLUE: 1.0
Klipper firmware compilation
The unit comes with firmware pre-installed. If you want to upgrade the firmware, these are the steps to reproduce. This can be done directly from Recore, or from a regular computer. If the device ID doesn't match, the board is not in DFU mode, and needs to be manually started that way. Use a paperclip or some wire, unplug the USB of the device, short the two round pads on the back of the PCB and plug in the USB. At that point the RP2040 will be in DFU mode, allowing it to be flashed.
cd /home/debian/klipper cp test/configs/rp2040.config .config make olddefconfig make -j make flash FLASH_DEVICE="2e8a:0003"
After that, the board should be visible as OpenMoko, Inc. rp2040
Enter boot mode from the command line
cd /home/debian/klipper/scripts python3 -c 'import flash_usb as u; u.enter_bootloader("<DEVICE>")' Entering bootloader on <DEVICE>
<DEVICE> is typically "/dev/ttyACM0" or similar.