The Positron system consists of three PCBs, a touch controller and the umbilical cables. A simplified wiring diagram is shown below:
A Klipper Configuation can be found in the PositronHardware github repo here.
Device/Port | PCB Label | Connector Type | RP2040 Pin | Description |
X/Y/Z Endstop | Endstop | JST-XH2.5 2P | gpio16/25/3(X/Y/Z) | Connects to the X, Y and Z endstop. X endstop is gpio16, Y endstop is gpio25 and Z endstop is gpio3 . |
E0 Endstop | Endstop | JST-PH2.0 2P | gpio4 | Connects to the E endstop. |
X Motor | X | JST-XH2.5 4P | gpio14/13/15/8/9 (step/dir/ena/uart/tx) | A stepper motor port for the X Motor. |
Y Motor | Y | JST-XH2.5 4P | gpio19/28/2/8/9 (step/dir/ena/uart/tx) | A stepper motor port for the Y Motor. |
Z Motor | Z | JST-XH 2.5 4P | gpio6/5/7/8/9 (step/dir/ena/uart/tx) | A stepper motor port for the Z Motor. |
E Motor | E0 | JST-XH 2.5 4P | gpio11/10/12/8/9 (step/dir/ena/uart/tx) | A stepper motor port for the E Motor. |
Fan | Fan1/2/3 |
Fan1: gpio18/20 (fan/tacho) Fan2: gpio17/23 (fan/tacho) Fan3: gpio17/0 (fan/tacho) |
Connects to cooling fans. | |
Z-Probe | Z-PROBE | JST-PH2.0 3P | gpio1 | Probe for bed leveling and/or Z sensing. |
Neopixel | RGB | JST-PH2.0 3P | gpio24 | Connects to neopixel LEDs. |
Buzzer | BUZZER | N/A | gpio22 | Connects to Buzzer. |
Hotend Thermistor | TH0 | JST-PH2.0 2P | gpio27 | Connects to the hotend heater. Uses a 2.2kΩ pull up resistor. |
SERVOS | SERVOS | JST-PH2.0 3P | gpio29 | Connects to the servos. |
THB& BED | THB& BED | XT30(2+2) | gpio26/gpio21 | Connects to the heatpad. Uses a 4.7kΩ pull up resistor. |
Toolhead Cable | XT30(2+2) | An USB port for toolhead. | ||
Z-Probe V Selector | Selects the supply voltage of the Z Probe. Selection of 24V or 5V. | |||
Fan/1/2/3 V Selector | Selects the supply voltage of the fans. Selection of 24V or 5V. | |||
Endstop SIG Selector | Selects the supply voltage of the endstop. Selection of STOP or ADIG. |
Device/Port | PCB Label | Connector Type | RP2040 Pin | Description |
Hotend Heater | HE0 | E0506 Ferrule | gpio9 | Connects to the hotend heater. |
Hotend Thermistor | TH0 | JST-XH2.5 2P | gpio29 | Connects to the hotend thermistor. Uses a 2.2kΩ pull up resistor. |
Part Fan | PCF | JST-PH2.0 3P | gpio6/17 (fan/tacho) | Connects to part cooling fan. The fan control pin is gpio6 and the tachometer sensor pin is gpio17. |
Hotend Fan | HEF | JST-PH2.0 3P | gpio5/16 (fan/tacho) | Connects to hotend fan. The fan control pin is gpio5 and the tachometer sensor pin is gpio16. |
IR Probe | PROBE | N/A | gpio24 | Connects to the probe. |
Neopixel | GRB | N/A | gpio7 | Connects to neopixel LEDs. |
Toolhead | XT30(2+2) | An USB port for toolhead. | ||
Accelerometer | N/A | N/A |
gpio21/18/20/19 (cs/clk/mosi/miso) |
ADXL345 accelerometer for input shaping. Controlled via software SPI. |
Activity LED | ACT | N/A | gpio8 | A small software controlled onboard LED. Active low. |
Parameter | Symbol | Minimum | Typical | Maximum | Unit | Comments |
Power Supply Input | Vin | 20 | 24 | 28 | V | power input for the toolboard. |
5V Current | Irpi | 5 | A | current output for the 5V buck converter. | ||
Fan Current | Ifan | TBD | A | current rating for each fan port (HEF and PCF). | ||
Bed Current | Ihe | TBD | A | limited by max. continuous current of mosfet. | ||
Hotend Current | Ihe | TBD | A | limited by max. continuous current of mosfet |
The firmware for Positron consists of two components: Katapult and Klipper. Katapult is a bootloader designed specifically for Klipper, it ensures that the software on the RP2040 MCU boots up smoothly and allows for easy updating of the Klipper firmware. You can learn more about Katapult here. Klipper is the main firmware that runs on the RP2040 MCU, you can learn more here.
Your Positron will come shipped with both Katapult and Klipper installed. Ideally, you will only ever need to occasionally update the Klipper firmware and never have to touch Katapult. If the Katapult bootloader was erased or is not present for any reason, you can check this section for instructions on how to reupload Katapult.
No special setup is required for installing either Klipper or Katapult. Positron simply needs to be hooked up as it operates normally in your 3D printer, with the boards connected to your Klipper host device (e.g. Raspberry Pi). You also need access to the two buttons (RESET and BOOT0) on the boards.
PV3 Toolhead PCB comes with an ACT indicator light, which will be important later. Reference the photo below to find the buttons and LEDs.
The following instructions are for compiling and upload new Klipper firmware to your board. You need to perform these steps if you want to update your klipper firmware to the newest version or if you are doing a fresh install and just uploaded Katapult (see the previous sections). Before compiling the firmware, you will need to have Klipper already installed on your host device (e.g. Raspberry Pi).
ssh
command in their command line terminal. Run the following commands to open the firmware configuration interface:cd ~/klipper
make menuconfig
16KiB bootloader
offset. Otherwise you will erase the Katapult bootloader!Q
to quit and confirm with Y
es when prompted to save. And run the following to generate the firmware file:make clean
make
~/klipper/out
. You are now ready to upload this firmware to the board. The recommended method is uploading via the make flash
command.ls /dev/serial/by-id
to find the USB ID of your board. The USB ID should have a format similar to this: usb-Klipper_rp2040_1234567890000000-if00
.python
, pip
, and the pyserial
python module if it is not present. You may receive an error: externally managed environment
when running the last command. This simply means pyserial
has already been installed and you may move on to the next step.sudo apt install python3 python3-pip
pip install pyserial
cd ~/klipper
sudo service klipper stop
make flash FLASH_DEVICE=/dev/serial/by-id/<your USB ID>
sudo service klipper start
In this section we will use an alternative method to upload klipper firmware using the Katapult bootloader. If your boad is missing the Katapult bootloader for any reason, you should follow the next section to install it first.
test -e ~/katapult && (cd ~/katapult && git pull) || (cd ~ && git clone https://github.com/Arksine/katapult) ; cd ~
virtualenv -p python3 ~/katapult-env
~/katapult-env/bin/pip3 install pyserial
~/katapult-env/
and installs the module pyserial
which is required to run the upload script.ls /dev/serial/by-id/
. You should see something like usb-katapult_rp2040_A1234567898D1234-if00
- note that the address contains the word katapult
. If not, this means either your board did not have Katapult installed or you did not enter the Katapult bootloader properly. Copy the address down for the next step, do not exit the bootloader yet.Flash Success
at the end.~/katapult-env/bin/python3 ~/katapult/scripts/flashtool.py -d /dev/serial/by-id/usb-katapult_rp2040_A1234567898D1234-if00
As a finally verification, run ls /dev/serial/by-id/
. you should see a Klipper USB serial address in the form of usb-Klipper_rp2040_E1234567A12D9835-if00
.
In this section we will compile and upload the Katapult Bootloader. Note that your board normally ships with Katapult pre-installed and you only need to perform the following operations if Katapult was inadvertently overwritten or lost.
test -e ~/katapult && (cd ~/katapult && git pull) || (cd ~ && git clone https://github.com/Arksine/katapult) ; cd ~
cd ~/katapult
make menuconfig
Q
to quit and confirm with Y
es when prompted to save. next run the following command to compile and generate the Katapult binary files:make clean
make
katapult.uf2
will now be created in the location ~/katapult/out/
. Our next job is to upload this file into the RP2040 MCU on the board.ls /dev/sda*
to confirm. You should see something like /dev/sda/ dev/sda1
. If you get something like ls: cannot access '/dev/sda*': No such file or directory
this means either board didn't enter boot mode or there is a problem with the physical connection between the Raspberry Pi and the board.sudo mkdir -p /mnt/pico
sudo mount /dev/sda1 /mnt/pico
sudo cp ~/katapult/out/katapult.uf2 /mnt/pico
sudo sync
sudo umount /mnt/pico
ls /dev/serial/by-id
. You should see something like: usb-katapult_rp2040_A1234567898D1234-if00
which is USB serial address of board running Katapult. A few small details to note here: