Close

The Cricut Keyboard, Explained

A project log for Cricut Hacking

Putting Marlin 2.x on the Cricut Expression because, well, why not? Also, some reverse engineering on CRV001

jc-nelsonJ.C. Nelson 10/07/2022 at 23:150 Comments

I'll be the first to admit, the keyboard made no sense to me. Not that the FreeExpression code failed (sort of, once I switched to the cake version). Sometimes, the obvious isn't obvious (to me). I have said I gave up on the CRV001. I was simply tired of fighting the hardware. But the more I thought about it, the more the keyboard represented an opportunity to examine it and understand how it worked.

FreeExpression's comments are *exactly* correct if you aren't me. Let's look at the CRV001 keyboard and make some sense out of it.

Here's the card edge connector (which is a 10 pin header in the Expression:

The key things we need to know: Power, Ground, a separate pin for STOP, one to enable the LEDs, a clock pin, a data pin, and five data pins numbered 0-4. How does this work? The data pins are mapped to a port and read as a set (0-4) and each corresponds to one row (You probably will note there's an 0-4 numbering on the right side). The two chips are serial to parallel shift registers...and here's how it works.

You raise the data line for a 1, and toggle the clock pin. This makes the 0 output of the top SR turn on, which leads to the LED set, which can then be read. Clock it again, the 1 goes to the second column output and if the switch is on, you'll read it on the corresponding data pin, Keep clocking forward, eventually you can read all 14 columns.

How do you address the LEDs? They're column 0 and 1. 

There's not a great way to make a generic "Cricut keyboard" handler - the PCBs for the Expression V1 (and cake) are each moderately different from the CRV001.

Discussions