Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rustypicoCNC

embassy-rp firmware for the RP2350 (Pico 2) that interprets G-code to puppeteer a lobotomized Cricut Joy 2 drag knife cutter.

This crate showcases:

AI Disclosure: rustypicoCNC would not have been built without DeepSeek V4.

The Joy 2 vinyl cutter ships with a cloud-only interface. You can't use it offline. You can't use it on Linux. This project turns it back into what should have shipped from the factory in the first place: a compact, hackable, USB-enabled drag knife cutter.

rustypicoCNC follows in the footsteps of TeensyCNC, TeensyCNC2, CutCutGo, and FreeExpression.

Quickstart

You will need a recent version of rustc + cargo, modern probe-rs, and the thumbv8m toolchain.

  • cargo install probe-rs-tools
  • rustup target add thumbv8m.main-none-eabihf

Test the core suite:

  • cd knifeplotter-core && cargo test

Flash your unit:

  • Connect Pico 2 and Pico Debug Probe via USB.
  • cd joy2-brain-replacement && cargo run --release

NOTICE

To use this project, you must first remove the brain of your Joy 2 -- its PIC32 and its Bluetooth module -- with hot air, thereby purifying it of all unwanted proprietary encrypted firmware.

This will void your warranty.

The authors of this crate do not claim any ownership over the design of the Joy 2. Without rustypicoCNC, the Joy 2 would simply be e-waste.

Hardware Map

All pin functionality has been determined by looking at the two-layer circuit board, applying external signals with a Pico 2, and using common sense. No firmware was extracted or analyzed.

Function TP # Pico 2 GPIO Notes
White LED TP21 2
Red LED TP22 3
Blue LED TP23 4
X axis H-bridge TP66, TP71 5 (A), 6 (B) PWM2B, PWM3A
Y axis H-bridge TP69, TP70 7 (A), 8 (B) PWM3B, PWM4A
Z axis H-bridge TP72, TP73 9 (A), 10 (B) PWM4B, PWM5A
X encoder TP61, TP63 11 (A), 12 (B) PIO SM0
Y encoder TP67, TP68 13 (A), 14 (B) PIO SM1
Z encoder TP91, TP97 15 (A), 16 (B) PIO SM2
Y eye enable TP49 19 38 kHz IR drive for paper detection
Y eye "top" output TP42 20 Active low photodetector, before roller
Y eye "bottom" output TP57 21 Active low photodetector behind roller
Cutting head LED enable TP101 17 PWM0B

Notes

  • The Pico 2 receives g-code over the RP2350's built-in USB CDC interface, so no external adapter is needed except for flashing.
  • H-bridges max out at ~800 Hz PWM. Don't try to drive faster.
  • Optical sensors driven at 38 kHz.
  • Z axis height determines cutting pressure: paper cuts well around 2.5mm from top of range.
  • Loading the mat straightens it if misaligned, but it can be damaged if loaded crooked.
  • Axis ranges of motion in encoder counts: X <4000, Y <∞, Z <420.
  • Axis ranges of motion in mm: X <120, Y <∞, Z <6.

Status & Roadmap

  • Validate X, Y, Z motor and encoder pin mappings
  • Validate ranges of motion of each axis
  • Repeatable homing at boot
  • Y-axis zeroing repeatability +/-1mm
  • Validate G0/G1 command execution on all axes
  • Validate G2/G3 commands on X & Y
  • Showcase materials cut with this firmware
  • Showcase a CAM suite for SVG->gcode
  • Optimize PID tuning for different materials
  • Request a "real" USB VID from pid.codes
  • Design & validate adapter bracket for hard mounting Pico to board
  • Enable and validate OTA over USB
  • Identify lower-cost methods to remove PIC32 and BT (hammer + chisel?)
  • Illustrated install guide
  • Add RP2040 (Pico 1) support

LICENSE

See LICENSE.

About

embassy-rp firmware for a RP2350 brain replacement of the Cricut Joy 2.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages