Difference between revisions of "Retool A2"
(→Firmware for Resend) |
|||
| (13 intermediate revisions by 2 users not shown) | |||
| Line 2: | Line 2: | ||
[[File:Retool and Resend A2.png]] | [[File:Retool and Resend A2.png]] | ||
</div> | </div> | ||
| − | + | ==Description== | |
| − | Retool is a USB based tool head that works well with Recore. It has | + | Retool A2 is a USB based tool head that works well with Recore. It has |
* 1 TMC2209 stepper motor driver for an extruder | * 1 TMC2209 stepper motor driver for an extruder | ||
* 1 ADXL343 accelerometer for input shaping | * 1 ADXL343 accelerometer for input shaping | ||
| Line 14: | Line 14: | ||
* 2 End stop inputs | * 2 End stop inputs | ||
* USB-C with Power delivery, up to 24 V, 5 A. | * 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 | ||
| + | ==Shcematics== | ||
| + | [https://github.com/intelligent-agent/Recore/blob/master/Schematics/Retool_A2.pdf Retool_A2]<br/> | ||
| + | [https://github.com/intelligent-agent/Recore/blob/master/Schematics/Resend_A2.pdf Resend_A2] | ||
| + | ==3D models== | ||
| + | [https://raw.githubusercontent.com/intelligent-agent/Recore/refs/heads/master/3D-files/Retool_A2.step Retool_A2.step]<br/> | ||
| + | [https://raw.githubusercontent.com/intelligent-agent/Recore/refs/heads/master/3D-files/Resend_A2.step Resend_A2.step] | ||
==Pinout diagram== | ==Pinout diagram== | ||
| Line 23: | Line 33: | ||
! Name !! GPIO !!style="border-right:solid 2px;"| Number !! Name !! GPIO !!style="border-right:solid 2px;"| Number !! Name !! GPIO !! Number | ! Name !! GPIO !!style="border-right:solid 2px;"| Number !! Name !! GPIO !!style="border-right:solid 2px;"| Number !! Name !! GPIO !! Number | ||
|- | |- | ||
| − | | STEP || GPIO6 ||style="border-right:solid 2px;"| 6 || END STOP 1 || GPIO4 ||style="border-right:solid 2px;"| 4 || FAN 1 PWM || GPIO1 || | + | | STEP || GPIO6 ||style="border-right:solid 2px;"| 6 || END STOP 1 || GPIO4 ||style="border-right:solid 2px;"| 4 || FAN 1 PWM || GPIO1 || 1 |
|- | |- | ||
| − | | DIR || GPIO5 ||style="border-right:solid 2px;"| 5 || END STOP 2 || GPIO11 ||style="border-right:solid 2px;"| 229 || FAN 2 PWM || GPIO12 || | + | | DIR || GPIO5 ||style="border-right:solid 2px;"| 5 || END STOP 2 || GPIO11 ||style="border-right:solid 2px;"| 229 || FAN 2 PWM || GPIO12 || 12 |
|- | |- | ||
| − | | ENN || GPIO10 ||style="border-right:solid 2px;"| 10 || NEOPIXEL || GPIO20 ||style="border-right:solid 2px;"| 230 || FAN 3 PWM || GPIO21 || | + | | ENN || GPIO10 ||style="border-right:solid 2px;"| 10 || NEOPIXEL || GPIO20 ||style="border-right:solid 2px;"| 230 || FAN 3 PWM || GPIO21 || 21 |
|- | |- | ||
| − | | CLK || GPIO8 ||style="border-right:solid 2px;"| 8 || NEOPIXEL DIR || GPIO19 ||style="border-right:solid 2px;"| 231 || HEATER PWM || GPIO0 || | + | | CLK || GPIO8 ||style="border-right:solid 2px;"| 8 || NEOPIXEL DIR || GPIO19 ||style="border-right:solid 2px;"| 231 || HEATER PWM || GPIO0 || 0 |
|- | |- | ||
| − | | DIAG || GPIO9 ||style="border-right:solid 2px;"| 9 || PELTIER EN || GPIO14 ||style="border-right:solid 2px;"| 232 || THERM 1 || GPIO28 || | + | | DIAG || GPIO9 ||style="border-right:solid 2px;"| 9 || PELTIER EN || GPIO14 ||style="border-right:solid 2px;"| 232 || THERM 1 || GPIO28 || 28 |
|- | |- | ||
| − | | UART || GPIO7 ||style="border-right:solid 2px;"| 9 || PELTIER V || GPIO2 ||style="border-right:solid 2px;"| 233 || CURRENT MEASURE || GPIO29 || | + | | UART || GPIO7 ||style="border-right:solid 2px;"| 9 || PELTIER V || GPIO2 ||style="border-right:solid 2px;"| 233 || CURRENT MEASURE || GPIO29 || 29 |
|- | |- | ||
| || ||style="border-right:solid 2px;"| || INDUCTIVE || GPIO19 ||style="border-right:solid 2px;"| 19 || || || | | || ||style="border-right:solid 2px;"| || INDUCTIVE || GPIO19 ||style="border-right:solid 2px;"| 19 || || || | ||
| Line 43: | Line 53: | ||
[[File:Retool A2 wire diagram.png]] | [[File:Retool A2 wire diagram.png]] | ||
</div> | </div> | ||
| + | |||
| + | Note about fan outputs: the middle pin is meant to be a tachometer input only. If you only have 2 wires, use only the pins labelled + and -. | ||
==3D model== | ==3D model== | ||
| Line 258: | Line 270: | ||
initial_BLUE: 1.0 | initial_BLUE: 1.0 | ||
</pre> | </pre> | ||
| + | |||
| + | ==Firmware== | ||
| + | Retool uses Klipper firmware. Make sure it matches the version on Recore. | ||
| + | Resend has a custom firmware. | ||
=== Klipper firmware compilation === | === Klipper firmware compilation === | ||
| Line 274: | Line 290: | ||
</div> | </div> | ||
| − | ===Enter boot mode from the command line === | + | ====Enter boot mode from the command line ==== |
<pre> | <pre> | ||
cd /home/debian/klipper/scripts | cd /home/debian/klipper/scripts | ||
| Line 281: | Line 297: | ||
</pre> | </pre> | ||
<DEVICE> is typically "/dev/ttyACM0" or similar. | <DEVICE> is typically "/dev/ttyACM0" or similar. | ||
| + | |||
| + | ===Firmware for Resend=== | ||
| + | The Resend board has an ATTiny-1616-M. This MCU can be programmed with UPDI. A UPDI programmer can be made with a USB to TTY adapter and a 1K resistor between the Tx and the Rx pin. | ||
| + | |||
| + | To flash new firmware on Resend, use the following command from Linux: | ||
| + | <pre> | ||
| + | avrdude -p t1616 -c serialupdi -P /dev/ttyUSB0 -b 57600 -U flash:w:simple.hex:i | ||
| + | </pre> | ||
| + | |||
| + | The firmware is very simple for now. It enables the 24 V output without any checking at all. There is support for full USB Power Delivery capabilities, but this requires integration in Klipper, which is an upstream task. | ||
| + | |||
| + | Here is the firmware in .hex format. Named simple, because it does work, but bypasses some of the safety mechanisms (checking if the device on the other hand can tolerate 24 V). As long as you connect a Retool to the other end, it is OK. | ||
| + | |||
| + | [https://raw.githubusercontent.com/intelligent-agent/Recore/refs/heads/master/binaries/Resend/simple.hex simple.hex] | ||
Latest revision as of 16:49, 18 January 2026
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
Shcematics
3D models
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
Note about fan outputs: the middle pin is meant to be a tachometer input only. If you only have 2 wires, use only the pins labelled + and -.
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
Firmware
Retool uses Klipper firmware. Make sure it matches the version on Recore. Resend has a custom firmware.
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.
Firmware for Resend
The Resend board has an ATTiny-1616-M. This MCU can be programmed with UPDI. A UPDI programmer can be made with a USB to TTY adapter and a 1K resistor between the Tx and the Rx pin.
To flash new firmware on Resend, use the following command from Linux:
avrdude -p t1616 -c serialupdi -P /dev/ttyUSB0 -b 57600 -U flash:w:simple.hex:i
The firmware is very simple for now. It enables the 24 V output without any checking at all. There is support for full USB Power Delivery capabilities, but this requires integration in Klipper, which is an upstream task.
Here is the firmware in .hex format. Named simple, because it does work, but bypasses some of the safety mechanisms (checking if the device on the other hand can tolerate 24 V). As long as you connect a Retool to the other end, it is OK.




