FreeExpression Firmware Roadmap

Now that I have the base code working, and all the moving parts moving, I am planning the full firmware roadmap.  The original expression machine is a very capable machine but it is designed to be used with the manufacturer’s cartridges.  My ambition with this project is of course to break that cord and use the machine with open source software (Inkscape) in a user friendly manner.  Previous attempts by other people to use these machines with third party software have either been incredibly tedious, or resulted in litigation (yuck).

My approach is quite different.  I have decided to completely write new software that is installed onto the machine itself, erasing the manufacturer’s software (to avoiding copyright infringement) and implement my own grand design for the machine.

cricutkeypad4

Let’s talk about the user controls on the machine:

Dials

There are three dials marked Speed, Size, Pressure.  These are convenient because while the software (Inkscape) can manage these as well through the Export/Plot interface, it seems logical to support this functionality through the dials.

Size

The size dial is an interesting one.  In the original machine’s design,  you load a shape from a cartridge and then you use the size dial to resize it.  In this new paradigm, where you are using Inkscape, you simply would set your design size in Inkscape.  So the Size dial is kind of useless unless I implement some other feature (see below) that could make use of it.

Pressure

The pressure dial is very useful, as it allows us to set the pressure in one of four (five??) increments.  This would tell the firmware to adjust the voltage going to the solenoid that pushes the knife head down.  This in turn controls how hard the solenoid “presses” on the knife.

Speed

Adjusting the speed of a cut can help with thicker materials that require more delicate handling, or with thinner materials that can handle faster cutting.  It makes sense to allow the user to adjust the speed before the cut begins. I’m not sure if it should adjust the speed during the cut….

Keypad

The keypad has numerous keys that perform a wide range of functions.  Many of these keys are used to select a shape from the cartridge library.  Without the need for cartridges, there is a lot of keypad real estate that is going to be unused.

The main keys, A-B, 0-9, and some basic shapes (from Wingdings library) will allow the user to cut using a standard font (Comic Sans).

Direction keys

These keys allow you to position the cutting head over a specific area of your material

Stop key

This key will stop the cutting process completely and basically aborts your project, returning the machine to its home position and ejecting the mat.  There is no way to stop the incoming stream, so the machine will just have to ignore the remaining data and allow the internal buffers to clear out until it receives the final “end of job” HPGL command.

Cut key

There really is no current plan for this key.  Cutting is started at the computer.

Option keys

These keys are just to the right of the display and control things like multi-cut, portrait, mix n match, quantity, auto fill, fit to page and fit to length.  I’m not sure what possible use these can have in the future, but I’ll try to implement some of the options if they make sense.

Display

The display works fine in my current firmware, so I will continue to use it for user input/output.  On the original expression, when a user selects a shape, the machine shows a small image of what they selected.  This will not be possible since the main goal of this project is to allow you to cut whatever you want, the code could not possibly interpret your image completely and display it.  So, the display will just be for menu prompts and confirmations.

Onboard memory

Since the machine has 512k bytes of on board memory storage, I have considered the option to allow the user to save their favorite projects and shapes into the memory, and allow them to easily retrieve them through the keypad or use the speed wheel to browse through the their custom shape library.  If this is implemented, then several of the option keys have meaning again, as well as the size wheel.

SD Card add on

sdcard

Another interesting possibility is the addition of an SD card port at the cartridge port.  The cartridge port is ideally designed to allow expansion, and in fact the Atmel AVR control pins that are connected to the cartridge port are the very same pins that standard SD card readers use.  The feature would work like this:

User inserts an SD card, and the machine reads the list of files, giving them a menu to browse through them using the speed wheel.  Once a file is selected, they can have the option of storing it, or cutting it.  If they store it, it will be placed into the machine’s on-board permanent memory.  This is useful for those stars, squares, hearts, snowflakes that we use every day 🙂

 

2 thoughts on “FreeExpression Firmware Roadmap”

  1. I’ve been to your page a few times 🙂 Nice to finally cross paths! I’d like to see the project through though. I have some issues with the graphics display library that are driving me nuts.

    The motherboard on the create and the expression are almost identical except for the display connection.

    I’ve tried to contact the original author but he is nowhere to be found. Felt bad to fork his code and give it my own name, but it wouldnt make sense to do a pull request since my code is specific to the expression.

    Keep in touch!
    Mark

Leave a Reply