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.
Let’s talk about the user controls on the machine:
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.
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.
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.
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….
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).
These keys allow you to position the cutting head over a specific area of your material
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.
There really is no current plan for this key. Cutting is started at the computer.
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.
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.
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
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 🙂